From 91c894c7a260c6f401b3ff0a6985cad0d4afdafc Mon Sep 17 00:00:00 2001 From: Rui Rua Date: Thu, 7 Nov 2024 14:16:28 +0000 Subject: [PATCH] Updates --- asset-manifest.json | 6 +++--- index.html | 2 +- service-worker.js | 2 +- static/js/main.22d1248a.js.map | 1 - static/js/{main.22d1248a.js => main.a9f48d8c.js} | 6 +++--- ...22d1248a.js.LICENSE.txt => main.a9f48d8c.js.LICENSE.txt} | 0 static/js/main.a9f48d8c.js.map | 1 + 7 files changed, 9 insertions(+), 9 deletions(-) delete mode 100644 static/js/main.22d1248a.js.map rename static/js/{main.22d1248a.js => main.a9f48d8c.js} (95%) rename static/js/{main.22d1248a.js.LICENSE.txt => main.a9f48d8c.js.LICENSE.txt} (100%) create mode 100644 static/js/main.a9f48d8c.js.map diff --git a/asset-manifest.json b/asset-manifest.json index 3b2870a..159e9f7 100644 --- a/asset-manifest.json +++ b/asset-manifest.json @@ -1,7 +1,7 @@ { "files": { "main.css": "/cv_os/static/css/main.d67bcdd1.css", - "main.js": "/cv_os/static/js/main.22d1248a.js", + "main.js": "/cv_os/static/js/main.a9f48d8c.js", "static/media/octocat.png": "/cv_os/static/media/octocat.3e264aba5c92d1a2dc78.png", "static/media/folder-icon-windows.png": "/cv_os/static/media/folder-icon-windows.8c62db3a63ef3b910e1b.png", "static/media/folder-icon-macos.png": "/cv_os/static/media/folder-icon-macos.d33ac30ee69620497dac.png", @@ -13,10 +13,10 @@ "static/media/terminal-icon.png": "/cv_os/static/media/terminal-icon.a695be0b97e70962e513.png", "index.html": "/cv_os/index.html", "main.d67bcdd1.css.map": "/cv_os/static/css/main.d67bcdd1.css.map", - "main.22d1248a.js.map": "/cv_os/static/js/main.22d1248a.js.map" + "main.a9f48d8c.js.map": "/cv_os/static/js/main.a9f48d8c.js.map" }, "entrypoints": [ "static/css/main.d67bcdd1.css", - "static/js/main.22d1248a.js" + "static/js/main.a9f48d8c.js" ] } \ No newline at end of file diff --git a/index.html b/index.html index fdb8d4a..39d0132 100644 --- a/index.html +++ b/index.html @@ -1 +1 @@ -CV OS
\ No newline at end of file +CV OS
\ No newline at end of file diff --git a/service-worker.js b/service-worker.js index 6ad03b9..7359548 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 F 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(F.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!==F.copyRedirectedCacheableResponsesPlugin&&(n===F.defaultPrecacheCacheabilityPlugin&&(e=s),n.cacheWillUpdate&&t++);0===t?this.plugins.push(F.defaultPrecacheCacheabilityPlugin):t>1&&null!==e&&this.plugins.splice(e,1)}}F.defaultPrecacheCacheabilityPlugin={async cacheWillUpdate(e){let{response:t}=e;return!t||t.status>=400?null:t}},F.copyRedirectedCacheableResponsesPlugin={async cacheWillUpdate(e){let{response:t}=e;return t.redirected?await g(t):t}};class H{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 F({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 H),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':'4991aa00b35bd243d9bb5667bead2d5e','url':'/cv_os/index.html'},{'revision':null,'url':'/cv_os/static/css/main.d67bcdd1.css'},{'revision':null,'url':'/cv_os/static/js/main.22d1248a.js'},{'revision':null,'url':'/cv_os/static/media/academic-icon.536aead5d42c99f6a44b.png'},{'revision':null,'url':'/cv_os/static/media/folder-icon-macos.d33ac30ee69620497dac.png'},{'revision':null,'url':'/cv_os/static/media/folder-icon-ubuntu.4b18e202c6c82d5413f5.png'},{'revision':null,'url':'/cv_os/static/media/folder-icon-windows.8c62db3a63ef3b910e1b.png'},{'revision':null,'url':'/cv_os/static/media/octocat.3e264aba5c92d1a2dc78.png'},{'revision':null,'url':'/cv_os/static/media/pdf-icon.666ee1b4ac9eb31bd955.png'},{'revision':null,'url':'/cv_os/static/media/terminal-icon.a695be0b97e70962e513.png'},{'revision':null,'url':'/cv_os/static/media/user-icon.8d49e377c7c342895ec2.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="/cv_os/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 F 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(F.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!==F.copyRedirectedCacheableResponsesPlugin&&(n===F.defaultPrecacheCacheabilityPlugin&&(e=s),n.cacheWillUpdate&&t++);0===t?this.plugins.push(F.defaultPrecacheCacheabilityPlugin):t>1&&null!==e&&this.plugins.splice(e,1)}}F.defaultPrecacheCacheabilityPlugin={async cacheWillUpdate(e){let{response:t}=e;return!t||t.status>=400?null:t}},F.copyRedirectedCacheableResponsesPlugin={async cacheWillUpdate(e){let{response:t}=e;return t.redirected?await g(t):t}};class H{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 F({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 H),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':'6fd3820309dbdc6ff9bb68be4d0d51f0','url':'/cv_os/index.html'},{'revision':null,'url':'/cv_os/static/css/main.d67bcdd1.css'},{'revision':null,'url':'/cv_os/static/js/main.a9f48d8c.js'},{'revision':null,'url':'/cv_os/static/media/academic-icon.536aead5d42c99f6a44b.png'},{'revision':null,'url':'/cv_os/static/media/folder-icon-macos.d33ac30ee69620497dac.png'},{'revision':null,'url':'/cv_os/static/media/folder-icon-ubuntu.4b18e202c6c82d5413f5.png'},{'revision':null,'url':'/cv_os/static/media/folder-icon-windows.8c62db3a63ef3b910e1b.png'},{'revision':null,'url':'/cv_os/static/media/octocat.3e264aba5c92d1a2dc78.png'},{'revision':null,'url':'/cv_os/static/media/pdf-icon.666ee1b4ac9eb31bd955.png'},{'revision':null,'url':'/cv_os/static/media/terminal-icon.a695be0b97e70962e513.png'},{'revision':null,'url':'/cv_os/static/media/user-icon.8d49e377c7c342895ec2.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="/cv_os/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/js/main.22d1248a.js.map b/static/js/main.22d1248a.js.map deleted file mode 100644 index fc4d5fb..0000000 --- a/static/js/main.22d1248a.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"static/js/main.22d1248a.js","mappings":"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","sources":["../node_modules/clsx/dist/clsx.m.js","../node_modules/extend/index.js","../node_modules/inline-style-parser/index.js","../node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/prop-types/index.js","../node_modules/prop-types/lib/ReactPropTypesSecret.js","../node_modules/react-dom/cjs/react-dom.production.min.js","../node_modules/react-dom/client.js","../node_modules/react-dom/index.js","../node_modules/react-draggable/build/cjs/Draggable.js","../node_modules/react-draggable/build/cjs/DraggableCore.js","../node_modules/react-draggable/build/cjs/cjs.js","../node_modules/react-draggable/build/cjs/utils/domFns.js","../node_modules/react-draggable/build/cjs/utils/getPrefix.js","../node_modules/react-draggable/build/cjs/utils/log.js","../node_modules/react-draggable/build/cjs/utils/positionFns.js","../node_modules/react-draggable/build/cjs/utils/shims.js","../node_modules/react-resizable/build/Resizable.js","../node_modules/react-resizable/build/ResizableBox.js","../node_modules/react-resizable/build/propTypes.js","../node_modules/react-resizable/build/utils.js","../node_modules/react-resizable/index.js","../node_modules/react/cjs/react-jsx-runtime.production.min.js","../node_modules/react/cjs/react.production.min.js","../node_modules/react/index.js","../node_modules/react/jsx-runtime.js","../node_modules/scheduler/cjs/scheduler.production.min.js","../node_modules/scheduler/index.js","../node_modules/style-to-object/src/index.ts","assets|sync|/^/.//folder/-icon.*/.png$","../webpack/bootstrap","../webpack/runtime/compat get default export","../webpack/runtime/define property getters","../webpack/runtime/hasOwnProperty shorthand","../webpack/runtime/make namespace object","../webpack/runtime/publicPath","view/dock/DockIcon.js","view/apps/AppWindow.js","data/data.js","hooks/useNetworkStatus.js","constants/enums.js","hooks/useTheme.js","utils/utils.js","view/apps/WindowAppBar.js","factories/OSComponentFactory.js","hooks/useOSFeel.js","hooks/AppContext.js","view/dock/Dock.js","view/desktopArea/DesktopIcon.js","constants/strings.js","../node_modules/estree-util-is-identifier-name/lib/index.js","../node_modules/hast-util-whitespace/lib/index.js","../node_modules/property-information/lib/util/schema.js","../node_modules/property-information/lib/util/merge.js","../node_modules/property-information/lib/normalize.js","../node_modules/property-information/lib/util/info.js","../node_modules/property-information/lib/util/types.js","../node_modules/property-information/lib/util/defined-info.js","../node_modules/property-information/lib/util/create.js","../node_modules/property-information/lib/xlink.js","../node_modules/property-information/lib/xml.js","../node_modules/property-information/lib/util/case-sensitive-transform.js","../node_modules/property-information/lib/util/case-insensitive-transform.js","../node_modules/property-information/lib/xmlns.js","../node_modules/property-information/lib/aria.js","../node_modules/property-information/lib/html.js","../node_modules/property-information/lib/svg.js","../node_modules/property-information/index.js","../node_modules/property-information/lib/find.js","../node_modules/property-information/lib/hast-to-react.js","../node_modules/style-to-object/esm/index.mjs","../node_modules/unist-util-position/lib/index.js","../node_modules/unist-util-stringify-position/lib/index.js","../node_modules/vfile-message/lib/index.js","../node_modules/hast-util-to-jsx-runtime/lib/index.js","../node_modules/comma-separated-tokens/index.js","../node_modules/space-separated-tokens/index.js","../node_modules/html-url-attributes/lib/index.js","../node_modules/mdast-util-to-string/lib/index.js","../node_modules/micromark-util-chunked/index.js","../node_modules/micromark-util-subtokenize/lib/splice-buffer.js","../node_modules/micromark-util-subtokenize/index.js","../node_modules/micromark-util-combine-extensions/index.js","../node_modules/micromark-util-character/index.js","../node_modules/micromark-factory-space/index.js","../node_modules/micromark/lib/initialize/content.js","../node_modules/micromark/lib/initialize/document.js","../node_modules/micromark-core-commonmark/lib/blank-line.js","../node_modules/micromark-core-commonmark/lib/content.js","../node_modules/micromark/lib/initialize/flow.js","../node_modules/micromark/lib/initialize/text.js","../node_modules/micromark-util-resolve-all/index.js","../node_modules/micromark/lib/create-tokenizer.js","../node_modules/micromark-core-commonmark/lib/thematic-break.js","../node_modules/micromark-core-commonmark/lib/list.js","../node_modules/micromark-core-commonmark/lib/block-quote.js","../node_modules/micromark-factory-destination/index.js","../node_modules/micromark-factory-label/index.js","../node_modules/micromark-factory-title/index.js","../node_modules/micromark-factory-whitespace/index.js","../node_modules/micromark-util-normalize-identifier/index.js","../node_modules/micromark-core-commonmark/lib/definition.js","../node_modules/micromark-core-commonmark/lib/code-indented.js","../node_modules/micromark-core-commonmark/lib/heading-atx.js","../node_modules/micromark-core-commonmark/lib/setext-underline.js","../node_modules/micromark-util-html-tag-name/index.js","../node_modules/micromark-core-commonmark/lib/html-flow.js","../node_modules/micromark-core-commonmark/lib/code-fenced.js","../node_modules/decode-named-character-reference/index.dom.js","../node_modules/micromark-core-commonmark/lib/character-reference.js","../node_modules/micromark-core-commonmark/lib/character-escape.js","../node_modules/micromark-core-commonmark/lib/line-ending.js","../node_modules/micromark-core-commonmark/lib/label-end.js","../node_modules/micromark-core-commonmark/lib/label-start-image.js","../node_modules/micromark-util-classify-character/index.js","../node_modules/micromark-core-commonmark/lib/attention.js","../node_modules/micromark-core-commonmark/lib/autolink.js","../node_modules/micromark-core-commonmark/lib/html-text.js","../node_modules/micromark-core-commonmark/lib/label-start-link.js","../node_modules/micromark-core-commonmark/lib/hard-break-escape.js","../node_modules/micromark-core-commonmark/lib/code-text.js","../node_modules/micromark/lib/constructs.js","../node_modules/micromark/lib/parse.js","../node_modules/micromark/lib/preprocess.js","../node_modules/micromark-util-decode-numeric-character-reference/index.js","../node_modules/micromark-util-decode-string/index.js","../node_modules/mdast-util-from-markdown/lib/index.js","../node_modules/micromark/lib/postprocess.js","../node_modules/remark-parse/lib/index.js","../node_modules/@ungap/structured-clone/esm/types.js","../node_modules/@ungap/structured-clone/esm/deserialize.js","../node_modules/@ungap/structured-clone/esm/serialize.js","../node_modules/@ungap/structured-clone/esm/index.js","../node_modules/micromark-util-sanitize-uri/index.js","../node_modules/mdast-util-to-hast/lib/footer.js","../node_modules/unist-util-is/lib/index.js","../node_modules/unist-util-visit-parents/lib/index.js","../node_modules/unist-util-visit/lib/index.js","../node_modules/mdast-util-to-hast/lib/revert.js","../node_modules/mdast-util-to-hast/lib/handlers/list-item.js","../node_modules/trim-lines/index.js","../node_modules/mdast-util-to-hast/lib/handlers/index.js","../node_modules/mdast-util-to-hast/lib/handlers/blockquote.js","../node_modules/mdast-util-to-hast/lib/handlers/break.js","../node_modules/mdast-util-to-hast/lib/handlers/code.js","../node_modules/mdast-util-to-hast/lib/handlers/delete.js","../node_modules/mdast-util-to-hast/lib/handlers/emphasis.js","../node_modules/mdast-util-to-hast/lib/handlers/footnote-reference.js","../node_modules/mdast-util-to-hast/lib/handlers/heading.js","../node_modules/mdast-util-to-hast/lib/handlers/html.js","../node_modules/mdast-util-to-hast/lib/handlers/image-reference.js","../node_modules/mdast-util-to-hast/lib/handlers/image.js","../node_modules/mdast-util-to-hast/lib/handlers/inline-code.js","../node_modules/mdast-util-to-hast/lib/handlers/link-reference.js","../node_modules/mdast-util-to-hast/lib/handlers/link.js","../node_modules/mdast-util-to-hast/lib/handlers/list.js","../node_modules/mdast-util-to-hast/lib/handlers/paragraph.js","../node_modules/mdast-util-to-hast/lib/handlers/root.js","../node_modules/mdast-util-to-hast/lib/handlers/strong.js","../node_modules/mdast-util-to-hast/lib/handlers/table.js","../node_modules/mdast-util-to-hast/lib/handlers/table-cell.js","../node_modules/mdast-util-to-hast/lib/handlers/table-row.js","../node_modules/mdast-util-to-hast/lib/handlers/text.js","../node_modules/mdast-util-to-hast/lib/handlers/thematic-break.js","../node_modules/mdast-util-to-hast/lib/state.js","../node_modules/mdast-util-to-hast/lib/index.js","../node_modules/remark-rehype/lib/index.js","../node_modules/bail/index.js","../node_modules/unified/node_modules/is-plain-obj/index.js","../node_modules/trough/lib/index.js","../node_modules/vfile/lib/minpath.browser.js","../node_modules/vfile/lib/minproc.browser.js","../node_modules/vfile/lib/minurl.shared.js","../node_modules/vfile/lib/minurl.browser.js","../node_modules/vfile/lib/index.js","../node_modules/unified/lib/callable-instance.js","../node_modules/unified/lib/index.js","../node_modules/react-markdown/lib/index.js","view/apps/FileApp.js","view/misc/Listbox.js","view/apps/AppFolder.js","view/desktopArea/DesktopArea.js","terminal_commands/Commands.js","terminal_commands/NixCommands/CatCommand.js","terminal_commands/NixCommands/index.js","terminal_commands/NixCommands/LsCommand.js","terminal_commands/NixCommands/CdCommand.js","terminal_commands/NixCommands/PwdCommand.js","terminal_commands/NixCommands/ExitCommand.js","terminal_commands/NixCommands/ClearCommand.js","terminal_commands/CustomCommands.js","view/apps/TerminalApp.js","view/desktopArea/OpenWindowsSpace.js","view/apps/SettingsApp.js","App.js","serviceWorkerRegistration.js","index.js"],"sourcesContent":["function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e))for(t=0;tb}return!1}function v(a,b,c,d,e,f,g){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f;this.removeEmptyString=g}var z={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){z[a]=new v(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];z[b]=new v(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){z[a]=new v(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){z[a]=new v(a,2,!1,a,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){z[a]=new v(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){z[a]=new v(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){z[a]=new v(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){z[a]=new v(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){z[a]=new v(a,5,!1,a.toLowerCase(),null,!1,!1)});var ra=/[\\-:]([a-z])/g;function sa(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(ra,\nsa);z[b]=new v(b,1,!1,a,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!1,!1)});\nz.xlinkHref=new v(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!0,!0)});\nfunction ta(a,b,c,d){var e=z.hasOwnProperty(b)?z[b]:null;if(null!==e?0!==e.type:d||!(2h||e[g]!==f[h]){var k=\"\\n\"+e[g].replace(\" at new \",\" at \");a.displayName&&k.includes(\"\")&&(k=k.replace(\"\",a.displayName));return k}while(1<=g&&0<=h)}break}}}finally{Na=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?Ma(a):\"\"}\nfunction Pa(a){switch(a.tag){case 5:return Ma(a.type);case 16:return Ma(\"Lazy\");case 13:return Ma(\"Suspense\");case 19:return Ma(\"SuspenseList\");case 0:case 2:case 15:return a=Oa(a.type,!1),a;case 11:return a=Oa(a.type.render,!1),a;case 1:return a=Oa(a.type,!0),a;default:return\"\"}}\nfunction Qa(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case ya:return\"Fragment\";case wa:return\"Portal\";case Aa:return\"Profiler\";case za:return\"StrictMode\";case Ea:return\"Suspense\";case Fa:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case Ca:return(a.displayName||\"Context\")+\".Consumer\";case Ba:return(a._context.displayName||\"Context\")+\".Provider\";case Da:var b=a.render;a=a.displayName;a||(a=b.displayName||\nb.name||\"\",a=\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");return a;case Ga:return b=a.displayName||null,null!==b?b:Qa(a.type)||\"Memo\";case Ha:b=a._payload;a=a._init;try{return Qa(a(b))}catch(c){}}return null}\nfunction Ra(a){var b=a.type;switch(a.tag){case 24:return\"Cache\";case 9:return(b.displayName||\"Context\")+\".Consumer\";case 10:return(b._context.displayName||\"Context\")+\".Provider\";case 18:return\"DehydratedFragment\";case 11:return a=b.render,a=a.displayName||a.name||\"\",b.displayName||(\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");case 7:return\"Fragment\";case 5:return b;case 4:return\"Portal\";case 3:return\"Root\";case 6:return\"Text\";case 16:return Qa(b);case 8:return b===za?\"StrictMode\":\"Mode\";case 22:return\"Offscreen\";\ncase 12:return\"Profiler\";case 21:return\"Scope\";case 13:return\"Suspense\";case 19:return\"SuspenseList\";case 25:return\"TracingMarker\";case 1:case 0:case 17:case 2:case 14:case 15:if(\"function\"===typeof b)return b.displayName||b.name||null;if(\"string\"===typeof b)return b}return null}function Sa(a){switch(typeof a){case \"boolean\":case \"number\":case \"string\":case \"undefined\":return a;case \"object\":return a;default:return\"\"}}\nfunction Ta(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction Ua(a){var b=Ta(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function Va(a){a._valueTracker||(a._valueTracker=Ua(a))}function Wa(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=Ta(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function Xa(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}\nfunction Ya(a,b){var c=b.checked;return A({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}function Za(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=Sa(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function ab(a,b){b=b.checked;null!=b&&ta(a,\"checked\",b,!1)}\nfunction bb(a,b){ab(a,b);var c=Sa(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?cb(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&cb(a,b.type,Sa(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction db(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction cb(a,b,c){if(\"number\"!==b||Xa(a.ownerDocument)!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}var eb=Array.isArray;\nfunction fb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e\"+b.valueOf().toString()+\"\";for(b=mb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction ob(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar pb={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,\nzoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},qb=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(pb).forEach(function(a){qb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);pb[b]=pb[a]})});function rb(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||pb.hasOwnProperty(a)&&pb[a]?(\"\"+b).trim():b+\"px\"}\nfunction sb(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=rb(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var tb=A({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction ub(a,b){if(b){if(tb[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(p(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(p(60));if(\"object\"!==typeof b.dangerouslySetInnerHTML||!(\"__html\"in b.dangerouslySetInnerHTML))throw Error(p(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(p(62));}}\nfunction vb(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}var wb=null;function xb(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}var yb=null,zb=null,Ab=null;\nfunction Bb(a){if(a=Cb(a)){if(\"function\"!==typeof yb)throw Error(p(280));var b=a.stateNode;b&&(b=Db(b),yb(a.stateNode,a.type,b))}}function Eb(a){zb?Ab?Ab.push(a):Ab=[a]:zb=a}function Fb(){if(zb){var a=zb,b=Ab;Ab=zb=null;Bb(a);if(b)for(a=0;a>>=0;return 0===a?32:31-(pc(a)/qc|0)|0}var rc=64,sc=4194304;\nfunction tc(a){switch(a&-a){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return a&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return a&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;\ndefault:return a}}function uc(a,b){var c=a.pendingLanes;if(0===c)return 0;var d=0,e=a.suspendedLanes,f=a.pingedLanes,g=c&268435455;if(0!==g){var h=g&~e;0!==h?d=tc(h):(f&=g,0!==f&&(d=tc(f)))}else g=c&~e,0!==g?d=tc(g):0!==f&&(d=tc(f));if(0===d)return 0;if(0!==b&&b!==d&&0===(b&e)&&(e=d&-d,f=b&-b,e>=f||16===e&&0!==(f&4194240)))return b;0!==(d&4)&&(d|=c&16);b=a.entangledLanes;if(0!==b)for(a=a.entanglements,b&=d;0c;c++)b.push(a);return b}\nfunction Ac(a,b,c){a.pendingLanes|=b;536870912!==b&&(a.suspendedLanes=0,a.pingedLanes=0);a=a.eventTimes;b=31-oc(b);a[b]=c}function Bc(a,b){var c=a.pendingLanes&~b;a.pendingLanes=b;a.suspendedLanes=0;a.pingedLanes=0;a.expiredLanes&=b;a.mutableReadLanes&=b;a.entangledLanes&=b;b=a.entanglements;var d=a.eventTimes;for(a=a.expirationTimes;0=be),ee=String.fromCharCode(32),fe=!1;\nfunction ge(a,b){switch(a){case \"keyup\":return-1!==$d.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"focusout\":return!0;default:return!1}}function he(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var ie=!1;function je(a,b){switch(a){case \"compositionend\":return he(b);case \"keypress\":if(32!==b.which)return null;fe=!0;return ee;case \"textInput\":return a=b.data,a===ee&&fe?null:a;default:return null}}\nfunction ke(a,b){if(ie)return\"compositionend\"===a||!ae&&ge(a,b)?(a=nd(),md=ld=kd=null,ie=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Je(c)}}function Le(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Le(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Me(){for(var a=window,b=Xa();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Xa(a.document)}return b}function Ne(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}\nfunction Oe(a){var b=Me(),c=a.focusedElem,d=a.selectionRange;if(b!==c&&c&&c.ownerDocument&&Le(c.ownerDocument.documentElement,c)){if(null!==d&&Ne(c))if(b=d.start,a=d.end,void 0===a&&(a=b),\"selectionStart\"in c)c.selectionStart=b,c.selectionEnd=Math.min(a,c.value.length);else if(a=(b=c.ownerDocument||document)&&b.defaultView||window,a.getSelection){a=a.getSelection();var e=c.textContent.length,f=Math.min(d.start,e);d=void 0===d.end?f:Math.min(d.end,e);!a.extend&&f>d&&(e=d,d=f,f=e);e=Ke(c,f);var g=Ke(c,\nd);e&&g&&(1!==a.rangeCount||a.anchorNode!==e.node||a.anchorOffset!==e.offset||a.focusNode!==g.node||a.focusOffset!==g.offset)&&(b=b.createRange(),b.setStart(e.node,e.offset),a.removeAllRanges(),f>d?(a.addRange(b),a.extend(g.node,g.offset)):(b.setEnd(g.node,g.offset),a.addRange(b)))}b=[];for(a=c;a=a.parentNode;)1===a.nodeType&&b.push({element:a,left:a.scrollLeft,top:a.scrollTop});\"function\"===typeof c.focus&&c.focus();for(c=0;c=document.documentMode,Qe=null,Re=null,Se=null,Te=!1;\nfunction Ue(a,b,c){var d=c.window===c?c.document:9===c.nodeType?c:c.ownerDocument;Te||null==Qe||Qe!==Xa(d)||(d=Qe,\"selectionStart\"in d&&Ne(d)?d={start:d.selectionStart,end:d.selectionEnd}:(d=(d.ownerDocument&&d.ownerDocument.defaultView||window).getSelection(),d={anchorNode:d.anchorNode,anchorOffset:d.anchorOffset,focusNode:d.focusNode,focusOffset:d.focusOffset}),Se&&Ie(Se,d)||(Se=d,d=oe(Re,\"onSelect\"),0Tf||(a.current=Sf[Tf],Sf[Tf]=null,Tf--)}function G(a,b){Tf++;Sf[Tf]=a.current;a.current=b}var Vf={},H=Uf(Vf),Wf=Uf(!1),Xf=Vf;function Yf(a,b){var c=a.type.contextTypes;if(!c)return Vf;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}\nfunction Zf(a){a=a.childContextTypes;return null!==a&&void 0!==a}function $f(){E(Wf);E(H)}function ag(a,b,c){if(H.current!==Vf)throw Error(p(168));G(H,b);G(Wf,c)}function bg(a,b,c){var d=a.stateNode;b=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in b))throw Error(p(108,Ra(a)||\"Unknown\",e));return A({},c,d)}\nfunction cg(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Vf;Xf=H.current;G(H,a);G(Wf,Wf.current);return!0}function dg(a,b,c){var d=a.stateNode;if(!d)throw Error(p(169));c?(a=bg(a,b,Xf),d.__reactInternalMemoizedMergedChildContext=a,E(Wf),E(H),G(H,a)):E(Wf);G(Wf,c)}var eg=null,fg=!1,gg=!1;function hg(a){null===eg?eg=[a]:eg.push(a)}function ig(a){fg=!0;hg(a)}\nfunction jg(){if(!gg&&null!==eg){gg=!0;var a=0,b=C;try{var c=eg;for(C=1;a>=g;e-=g;rg=1<<32-oc(b)+e|c<w?(x=u,u=null):x=u.sibling;var n=r(e,u,h[w],k);if(null===n){null===u&&(u=x);break}a&&u&&null===n.alternate&&b(e,u);g=f(n,g,w);null===m?l=n:m.sibling=n;m=n;u=x}if(w===h.length)return c(e,u),I&&tg(e,w),l;if(null===u){for(;ww?(x=m,m=null):x=m.sibling;var t=r(e,m,n.value,k);if(null===t){null===m&&(m=x);break}a&&m&&null===t.alternate&&b(e,m);g=f(t,g,w);null===u?l=t:u.sibling=t;u=t;m=x}if(n.done)return c(e,\nm),I&&tg(e,w),l;if(null===m){for(;!n.done;w++,n=h.next())n=q(e,n.value,k),null!==n&&(g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);I&&tg(e,w);return l}for(m=d(e,m);!n.done;w++,n=h.next())n=y(m,e,w,n.value,k),null!==n&&(a&&null!==n.alternate&&m.delete(null===n.key?w:n.key),g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);a&&m.forEach(function(a){return b(e,a)});I&&tg(e,w);return l}function J(a,d,f,h){\"object\"===typeof f&&null!==f&&f.type===ya&&null===f.key&&(f=f.props.children);if(\"object\"===typeof f&&null!==f){switch(f.$$typeof){case va:a:{for(var k=\nf.key,l=d;null!==l;){if(l.key===k){k=f.type;if(k===ya){if(7===l.tag){c(a,l.sibling);d=e(l,f.props.children);d.return=a;a=d;break a}}else if(l.elementType===k||\"object\"===typeof k&&null!==k&&k.$$typeof===Ha&&Ng(k)===l.type){c(a,l.sibling);d=e(l,f.props);d.ref=Lg(a,l,f);d.return=a;a=d;break a}c(a,l);break}else b(a,l);l=l.sibling}f.type===ya?(d=Tg(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=Rg(f.type,f.key,f.props,null,a.mode,h),h.ref=Lg(a,d,f),h.return=a,a=h)}return g(a);case wa:a:{for(l=f.key;null!==\nd;){if(d.key===l)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=Sg(f,a.mode,h);d.return=a;a=d}return g(a);case Ha:return l=f._init,J(a,d,l(f._payload),h)}if(eb(f))return n(a,d,f,h);if(Ka(f))return t(a,d,f,h);Mg(a,f)}return\"string\"===typeof f&&\"\"!==f||\"number\"===typeof f?(f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):\n(c(a,d),d=Qg(f,a.mode,h),d.return=a,a=d),g(a)):c(a,d)}return J}var Ug=Og(!0),Vg=Og(!1),Wg=Uf(null),Xg=null,Yg=null,Zg=null;function $g(){Zg=Yg=Xg=null}function ah(a){var b=Wg.current;E(Wg);a._currentValue=b}function bh(a,b,c){for(;null!==a;){var d=a.alternate;(a.childLanes&b)!==b?(a.childLanes|=b,null!==d&&(d.childLanes|=b)):null!==d&&(d.childLanes&b)!==b&&(d.childLanes|=b);if(a===c)break;a=a.return}}\nfunction ch(a,b){Xg=a;Zg=Yg=null;a=a.dependencies;null!==a&&null!==a.firstContext&&(0!==(a.lanes&b)&&(dh=!0),a.firstContext=null)}function eh(a){var b=a._currentValue;if(Zg!==a)if(a={context:a,memoizedValue:b,next:null},null===Yg){if(null===Xg)throw Error(p(308));Yg=a;Xg.dependencies={lanes:0,firstContext:a}}else Yg=Yg.next=a;return b}var fh=null;function gh(a){null===fh?fh=[a]:fh.push(a)}\nfunction hh(a,b,c,d){var e=b.interleaved;null===e?(c.next=c,gh(b)):(c.next=e.next,e.next=c);b.interleaved=c;return ih(a,d)}function ih(a,b){a.lanes|=b;var c=a.alternate;null!==c&&(c.lanes|=b);c=a;for(a=a.return;null!==a;)a.childLanes|=b,c=a.alternate,null!==c&&(c.childLanes|=b),c=a,a=a.return;return 3===c.tag?c.stateNode:null}var jh=!1;function kh(a){a.updateQueue={baseState:a.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}\nfunction lh(a,b){a=a.updateQueue;b.updateQueue===a&&(b.updateQueue={baseState:a.baseState,firstBaseUpdate:a.firstBaseUpdate,lastBaseUpdate:a.lastBaseUpdate,shared:a.shared,effects:a.effects})}function mh(a,b){return{eventTime:a,lane:b,tag:0,payload:null,callback:null,next:null}}\nfunction nh(a,b,c){var d=a.updateQueue;if(null===d)return null;d=d.shared;if(0!==(K&2)){var e=d.pending;null===e?b.next=b:(b.next=e.next,e.next=b);d.pending=b;return ih(a,c)}e=d.interleaved;null===e?(b.next=b,gh(d)):(b.next=e.next,e.next=b);d.interleaved=b;return ih(a,c)}function oh(a,b,c){b=b.updateQueue;if(null!==b&&(b=b.shared,0!==(c&4194240))){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nfunction ph(a,b){var c=a.updateQueue,d=a.alternate;if(null!==d&&(d=d.updateQueue,c===d)){var e=null,f=null;c=c.firstBaseUpdate;if(null!==c){do{var g={eventTime:c.eventTime,lane:c.lane,tag:c.tag,payload:c.payload,callback:c.callback,next:null};null===f?e=f=g:f=f.next=g;c=c.next}while(null!==c);null===f?e=f=b:f=f.next=b}else e=f=b;c={baseState:d.baseState,firstBaseUpdate:e,lastBaseUpdate:f,shared:d.shared,effects:d.effects};a.updateQueue=c;return}a=c.lastBaseUpdate;null===a?c.firstBaseUpdate=b:a.next=\nb;c.lastBaseUpdate=b}\nfunction qh(a,b,c,d){var e=a.updateQueue;jh=!1;var f=e.firstBaseUpdate,g=e.lastBaseUpdate,h=e.shared.pending;if(null!==h){e.shared.pending=null;var k=h,l=k.next;k.next=null;null===g?f=l:g.next=l;g=k;var m=a.alternate;null!==m&&(m=m.updateQueue,h=m.lastBaseUpdate,h!==g&&(null===h?m.firstBaseUpdate=l:h.next=l,m.lastBaseUpdate=k))}if(null!==f){var q=e.baseState;g=0;m=l=k=null;h=f;do{var r=h.lane,y=h.eventTime;if((d&r)===r){null!==m&&(m=m.next={eventTime:y,lane:0,tag:h.tag,payload:h.payload,callback:h.callback,\nnext:null});a:{var n=a,t=h;r=b;y=c;switch(t.tag){case 1:n=t.payload;if(\"function\"===typeof n){q=n.call(y,q,r);break a}q=n;break a;case 3:n.flags=n.flags&-65537|128;case 0:n=t.payload;r=\"function\"===typeof n?n.call(y,q,r):n;if(null===r||void 0===r)break a;q=A({},q,r);break a;case 2:jh=!0}}null!==h.callback&&0!==h.lane&&(a.flags|=64,r=e.effects,null===r?e.effects=[h]:r.push(h))}else y={eventTime:y,lane:r,tag:h.tag,payload:h.payload,callback:h.callback,next:null},null===m?(l=m=y,k=q):m=m.next=y,g|=r;\nh=h.next;if(null===h)if(h=e.shared.pending,null===h)break;else r=h,h=r.next,r.next=null,e.lastBaseUpdate=r,e.shared.pending=null}while(1);null===m&&(k=q);e.baseState=k;e.firstBaseUpdate=l;e.lastBaseUpdate=m;b=e.shared.interleaved;if(null!==b){e=b;do g|=e.lane,e=e.next;while(e!==b)}else null===f&&(e.shared.lanes=0);rh|=g;a.lanes=g;a.memoizedState=q}}\nfunction sh(a,b,c){a=b.effects;b.effects=null;if(null!==a)for(b=0;bc?c:4;a(!0);var d=Gh.transition;Gh.transition={};try{a(!1),b()}finally{C=c,Gh.transition=d}}function wi(){return Uh().memoizedState}\nfunction xi(a,b,c){var d=yi(a);c={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(zi(a))Ai(b,c);else if(c=hh(a,b,c,d),null!==c){var e=R();gi(c,a,d,e);Bi(c,b,d)}}\nfunction ii(a,b,c){var d=yi(a),e={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(zi(a))Ai(b,e);else{var f=a.alternate;if(0===a.lanes&&(null===f||0===f.lanes)&&(f=b.lastRenderedReducer,null!==f))try{var g=b.lastRenderedState,h=f(g,c);e.hasEagerState=!0;e.eagerState=h;if(He(h,g)){var k=b.interleaved;null===k?(e.next=e,gh(b)):(e.next=k.next,k.next=e);b.interleaved=e;return}}catch(l){}finally{}c=hh(a,b,e,d);null!==c&&(e=R(),gi(c,a,d,e),Bi(c,b,d))}}\nfunction zi(a){var b=a.alternate;return a===M||null!==b&&b===M}function Ai(a,b){Jh=Ih=!0;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}function Bi(a,b,c){if(0!==(c&4194240)){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nvar Rh={readContext:eh,useCallback:P,useContext:P,useEffect:P,useImperativeHandle:P,useInsertionEffect:P,useLayoutEffect:P,useMemo:P,useReducer:P,useRef:P,useState:P,useDebugValue:P,useDeferredValue:P,useTransition:P,useMutableSource:P,useSyncExternalStore:P,useId:P,unstable_isNewReconciler:!1},Oh={readContext:eh,useCallback:function(a,b){Th().memoizedState=[a,void 0===b?null:b];return a},useContext:eh,useEffect:mi,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return ki(4194308,\n4,pi.bind(null,b,a),c)},useLayoutEffect:function(a,b){return ki(4194308,4,a,b)},useInsertionEffect:function(a,b){return ki(4,2,a,b)},useMemo:function(a,b){var c=Th();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=Th();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};d.queue=a;a=a.dispatch=xi.bind(null,M,a);return[d.memoizedState,a]},useRef:function(a){var b=\nTh();a={current:a};return b.memoizedState=a},useState:hi,useDebugValue:ri,useDeferredValue:function(a){return Th().memoizedState=a},useTransition:function(){var a=hi(!1),b=a[0];a=vi.bind(null,a[1]);Th().memoizedState=a;return[b,a]},useMutableSource:function(){},useSyncExternalStore:function(a,b,c){var d=M,e=Th();if(I){if(void 0===c)throw Error(p(407));c=c()}else{c=b();if(null===Q)throw Error(p(349));0!==(Hh&30)||di(d,b,c)}e.memoizedState=c;var f={value:c,getSnapshot:b};e.queue=f;mi(ai.bind(null,d,\nf,a),[a]);d.flags|=2048;bi(9,ci.bind(null,d,f,c,b),void 0,null);return c},useId:function(){var a=Th(),b=Q.identifierPrefix;if(I){var c=sg;var d=rg;c=(d&~(1<<32-oc(d)-1)).toString(32)+c;b=\":\"+b+\"R\"+c;c=Kh++;0\\x3c/script>\",a=a.removeChild(a.firstChild)):\n\"string\"===typeof d.is?a=g.createElement(c,{is:d.is}):(a=g.createElement(c),\"select\"===c&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,c);a[Of]=b;a[Pf]=d;zj(a,b,!1,!1);b.stateNode=a;a:{g=vb(c,d);switch(c){case \"dialog\":D(\"cancel\",a);D(\"close\",a);e=d;break;case \"iframe\":case \"object\":case \"embed\":D(\"load\",a);e=d;break;case \"video\":case \"audio\":for(e=0;eGj&&(b.flags|=128,d=!0,Dj(f,!1),b.lanes=4194304)}else{if(!d)if(a=Ch(g),null!==a){if(b.flags|=128,d=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Dj(f,!0),null===f.tail&&\"hidden\"===f.tailMode&&!g.alternate&&!I)return S(b),null}else 2*B()-f.renderingStartTime>Gj&&1073741824!==c&&(b.flags|=128,d=!0,Dj(f,!1),b.lanes=4194304);f.isBackwards?(g.sibling=b.child,b.child=g):(c=f.last,null!==c?c.sibling=g:b.child=g,f.last=g)}if(null!==f.tail)return b=f.tail,f.rendering=\nb,f.tail=b.sibling,f.renderingStartTime=B(),b.sibling=null,c=L.current,G(L,d?c&1|2:c&1),b;S(b);return null;case 22:case 23:return Hj(),d=null!==b.memoizedState,null!==a&&null!==a.memoizedState!==d&&(b.flags|=8192),d&&0!==(b.mode&1)?0!==(fj&1073741824)&&(S(b),b.subtreeFlags&6&&(b.flags|=8192)):S(b),null;case 24:return null;case 25:return null}throw Error(p(156,b.tag));}\nfunction Ij(a,b){wg(b);switch(b.tag){case 1:return Zf(b.type)&&$f(),a=b.flags,a&65536?(b.flags=a&-65537|128,b):null;case 3:return zh(),E(Wf),E(H),Eh(),a=b.flags,0!==(a&65536)&&0===(a&128)?(b.flags=a&-65537|128,b):null;case 5:return Bh(b),null;case 13:E(L);a=b.memoizedState;if(null!==a&&null!==a.dehydrated){if(null===b.alternate)throw Error(p(340));Ig()}a=b.flags;return a&65536?(b.flags=a&-65537|128,b):null;case 19:return E(L),null;case 4:return zh(),null;case 10:return ah(b.type._context),null;case 22:case 23:return Hj(),\nnull;case 24:return null;default:return null}}var Jj=!1,U=!1,Kj=\"function\"===typeof WeakSet?WeakSet:Set,V=null;function Lj(a,b){var c=a.ref;if(null!==c)if(\"function\"===typeof c)try{c(null)}catch(d){W(a,b,d)}else c.current=null}function Mj(a,b,c){try{c()}catch(d){W(a,b,d)}}var Nj=!1;\nfunction Oj(a,b){Cf=dd;a=Me();if(Ne(a)){if(\"selectionStart\"in a)var c={start:a.selectionStart,end:a.selectionEnd};else a:{c=(c=a.ownerDocument)&&c.defaultView||window;var d=c.getSelection&&c.getSelection();if(d&&0!==d.rangeCount){c=d.anchorNode;var e=d.anchorOffset,f=d.focusNode;d=d.focusOffset;try{c.nodeType,f.nodeType}catch(F){c=null;break a}var g=0,h=-1,k=-1,l=0,m=0,q=a,r=null;b:for(;;){for(var y;;){q!==c||0!==e&&3!==q.nodeType||(h=g+e);q!==f||0!==d&&3!==q.nodeType||(k=g+d);3===q.nodeType&&(g+=\nq.nodeValue.length);if(null===(y=q.firstChild))break;r=q;q=y}for(;;){if(q===a)break b;r===c&&++l===e&&(h=g);r===f&&++m===d&&(k=g);if(null!==(y=q.nextSibling))break;q=r;r=q.parentNode}q=y}c=-1===h||-1===k?null:{start:h,end:k}}else c=null}c=c||{start:0,end:0}}else c=null;Df={focusedElem:a,selectionRange:c};dd=!1;for(V=b;null!==V;)if(b=V,a=b.child,0!==(b.subtreeFlags&1028)&&null!==a)a.return=b,V=a;else for(;null!==V;){b=V;try{var n=b.alternate;if(0!==(b.flags&1024))switch(b.tag){case 0:case 11:case 15:break;\ncase 1:if(null!==n){var t=n.memoizedProps,J=n.memoizedState,x=b.stateNode,w=x.getSnapshotBeforeUpdate(b.elementType===b.type?t:Ci(b.type,t),J);x.__reactInternalSnapshotBeforeUpdate=w}break;case 3:var u=b.stateNode.containerInfo;1===u.nodeType?u.textContent=\"\":9===u.nodeType&&u.documentElement&&u.removeChild(u.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(p(163));}}catch(F){W(b,b.return,F)}a=b.sibling;if(null!==a){a.return=b.return;V=a;break}V=b.return}n=Nj;Nj=!1;return n}\nfunction Pj(a,b,c){var d=b.updateQueue;d=null!==d?d.lastEffect:null;if(null!==d){var e=d=d.next;do{if((e.tag&a)===a){var f=e.destroy;e.destroy=void 0;void 0!==f&&Mj(b,c,f)}e=e.next}while(e!==d)}}function Qj(a,b){b=b.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){var c=b=b.next;do{if((c.tag&a)===a){var d=c.create;c.destroy=d()}c=c.next}while(c!==b)}}function Rj(a){var b=a.ref;if(null!==b){var c=a.stateNode;switch(a.tag){case 5:a=c;break;default:a=c}\"function\"===typeof b?b(a):b.current=a}}\nfunction Sj(a){var b=a.alternate;null!==b&&(a.alternate=null,Sj(b));a.child=null;a.deletions=null;a.sibling=null;5===a.tag&&(b=a.stateNode,null!==b&&(delete b[Of],delete b[Pf],delete b[of],delete b[Qf],delete b[Rf]));a.stateNode=null;a.return=null;a.dependencies=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.stateNode=null;a.updateQueue=null}function Tj(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction Uj(a){a:for(;;){for(;null===a.sibling;){if(null===a.return||Tj(a.return))return null;a=a.return}a.sibling.return=a.return;for(a=a.sibling;5!==a.tag&&6!==a.tag&&18!==a.tag;){if(a.flags&2)continue a;if(null===a.child||4===a.tag)continue a;else a.child.return=a,a=a.child}if(!(a.flags&2))return a.stateNode}}\nfunction Vj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=Bf));else if(4!==d&&(a=a.child,null!==a))for(Vj(a,b,c),a=a.sibling;null!==a;)Vj(a,b,c),a=a.sibling}\nfunction Wj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(Wj(a,b,c),a=a.sibling;null!==a;)Wj(a,b,c),a=a.sibling}var X=null,Xj=!1;function Yj(a,b,c){for(c=c.child;null!==c;)Zj(a,b,c),c=c.sibling}\nfunction Zj(a,b,c){if(lc&&\"function\"===typeof lc.onCommitFiberUnmount)try{lc.onCommitFiberUnmount(kc,c)}catch(h){}switch(c.tag){case 5:U||Lj(c,b);case 6:var d=X,e=Xj;X=null;Yj(a,b,c);X=d;Xj=e;null!==X&&(Xj?(a=X,c=c.stateNode,8===a.nodeType?a.parentNode.removeChild(c):a.removeChild(c)):X.removeChild(c.stateNode));break;case 18:null!==X&&(Xj?(a=X,c=c.stateNode,8===a.nodeType?Kf(a.parentNode,c):1===a.nodeType&&Kf(a,c),bd(a)):Kf(X,c.stateNode));break;case 4:d=X;e=Xj;X=c.stateNode.containerInfo;Xj=!0;\nYj(a,b,c);X=d;Xj=e;break;case 0:case 11:case 14:case 15:if(!U&&(d=c.updateQueue,null!==d&&(d=d.lastEffect,null!==d))){e=d=d.next;do{var f=e,g=f.destroy;f=f.tag;void 0!==g&&(0!==(f&2)?Mj(c,b,g):0!==(f&4)&&Mj(c,b,g));e=e.next}while(e!==d)}Yj(a,b,c);break;case 1:if(!U&&(Lj(c,b),d=c.stateNode,\"function\"===typeof d.componentWillUnmount))try{d.props=c.memoizedProps,d.state=c.memoizedState,d.componentWillUnmount()}catch(h){W(c,b,h)}Yj(a,b,c);break;case 21:Yj(a,b,c);break;case 22:c.mode&1?(U=(d=U)||null!==\nc.memoizedState,Yj(a,b,c),U=d):Yj(a,b,c);break;default:Yj(a,b,c)}}function ak(a){var b=a.updateQueue;if(null!==b){a.updateQueue=null;var c=a.stateNode;null===c&&(c=a.stateNode=new Kj);b.forEach(function(b){var d=bk.bind(null,a,b);c.has(b)||(c.add(b),b.then(d,d))})}}\nfunction ck(a,b){var c=b.deletions;if(null!==c)for(var d=0;de&&(e=g);d&=~f}d=e;d=B()-d;d=(120>d?120:480>d?480:1080>d?1080:1920>d?1920:3E3>d?3E3:4320>d?4320:1960*lk(d/1960))-d;if(10a?16:a;if(null===wk)var d=!1;else{a=wk;wk=null;xk=0;if(0!==(K&6))throw Error(p(331));var e=K;K|=4;for(V=a.current;null!==V;){var f=V,g=f.child;if(0!==(V.flags&16)){var h=f.deletions;if(null!==h){for(var k=0;kB()-fk?Kk(a,0):rk|=c);Dk(a,b)}function Yk(a,b){0===b&&(0===(a.mode&1)?b=1:(b=sc,sc<<=1,0===(sc&130023424)&&(sc=4194304)));var c=R();a=ih(a,b);null!==a&&(Ac(a,b,c),Dk(a,c))}function uj(a){var b=a.memoizedState,c=0;null!==b&&(c=b.retryLane);Yk(a,c)}\nfunction bk(a,b){var c=0;switch(a.tag){case 13:var d=a.stateNode;var e=a.memoizedState;null!==e&&(c=e.retryLane);break;case 19:d=a.stateNode;break;default:throw Error(p(314));}null!==d&&d.delete(b);Yk(a,c)}var Vk;\nVk=function(a,b,c){if(null!==a)if(a.memoizedProps!==b.pendingProps||Wf.current)dh=!0;else{if(0===(a.lanes&c)&&0===(b.flags&128))return dh=!1,yj(a,b,c);dh=0!==(a.flags&131072)?!0:!1}else dh=!1,I&&0!==(b.flags&1048576)&&ug(b,ng,b.index);b.lanes=0;switch(b.tag){case 2:var d=b.type;ij(a,b);a=b.pendingProps;var e=Yf(b,H.current);ch(b,c);e=Nh(null,b,d,a,e,c);var f=Sh();b.flags|=1;\"object\"===typeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof?(b.tag=1,b.memoizedState=null,b.updateQueue=\nnull,Zf(d)?(f=!0,cg(b)):f=!1,b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null,kh(b),e.updater=Ei,b.stateNode=e,e._reactInternals=b,Ii(b,d,a,c),b=jj(null,b,d,!0,f,c)):(b.tag=0,I&&f&&vg(b),Xi(null,b,e,c),b=b.child);return b;case 16:d=b.elementType;a:{ij(a,b);a=b.pendingProps;e=d._init;d=e(d._payload);b.type=d;e=b.tag=Zk(d);a=Ci(d,a);switch(e){case 0:b=cj(null,b,d,a,c);break a;case 1:b=hj(null,b,d,a,c);break a;case 11:b=Yi(null,b,d,a,c);break a;case 14:b=$i(null,b,d,Ci(d.type,a),c);break a}throw Error(p(306,\nd,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),cj(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),hj(a,b,d,e,c);case 3:a:{kj(b);if(null===a)throw Error(p(387));d=b.pendingProps;f=b.memoizedState;e=f.element;lh(a,b);qh(b,d,null,c);var g=b.memoizedState;d=g.element;if(f.isDehydrated)if(f={element:d,isDehydrated:!1,cache:g.cache,pendingSuspenseBoundaries:g.pendingSuspenseBoundaries,transitions:g.transitions},b.updateQueue.baseState=\nf,b.memoizedState=f,b.flags&256){e=Ji(Error(p(423)),b);b=lj(a,b,d,c,e);break a}else if(d!==e){e=Ji(Error(p(424)),b);b=lj(a,b,d,c,e);break a}else for(yg=Lf(b.stateNode.containerInfo.firstChild),xg=b,I=!0,zg=null,c=Vg(b,null,d,c),b.child=c;c;)c.flags=c.flags&-3|4096,c=c.sibling;else{Ig();if(d===e){b=Zi(a,b,c);break a}Xi(a,b,d,c)}b=b.child}return b;case 5:return Ah(b),null===a&&Eg(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:null,g=e.children,Ef(d,e)?g=null:null!==f&&Ef(d,f)&&(b.flags|=32),\ngj(a,b),Xi(a,b,g,c),b.child;case 6:return null===a&&Eg(b),null;case 13:return oj(a,b,c);case 4:return yh(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Ug(b,null,d,c):Xi(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),Yi(a,b,d,e,c);case 7:return Xi(a,b,b.pendingProps,c),b.child;case 8:return Xi(a,b,b.pendingProps.children,c),b.child;case 12:return Xi(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;f=b.memoizedProps;\ng=e.value;G(Wg,d._currentValue);d._currentValue=g;if(null!==f)if(He(f.value,g)){if(f.children===e.children&&!Wf.current){b=Zi(a,b,c);break a}}else for(f=b.child,null!==f&&(f.return=b);null!==f;){var h=f.dependencies;if(null!==h){g=f.child;for(var k=h.firstContext;null!==k;){if(k.context===d){if(1===f.tag){k=mh(-1,c&-c);k.tag=2;var l=f.updateQueue;if(null!==l){l=l.shared;var m=l.pending;null===m?k.next=k:(k.next=m.next,m.next=k);l.pending=k}}f.lanes|=c;k=f.alternate;null!==k&&(k.lanes|=c);bh(f.return,\nc,b);h.lanes|=c;break}k=k.next}}else if(10===f.tag)g=f.type===b.type?null:f.child;else if(18===f.tag){g=f.return;if(null===g)throw Error(p(341));g.lanes|=c;h=g.alternate;null!==h&&(h.lanes|=c);bh(g,c,b);g=f.sibling}else g=f.child;if(null!==g)g.return=f;else for(g=f;null!==g;){if(g===b){g=null;break}f=g.sibling;if(null!==f){f.return=g.return;g=f;break}g=g.return}f=g}Xi(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,d=b.pendingProps.children,ch(b,c),e=eh(e),d=d(e),b.flags|=1,Xi(a,b,d,c),\nb.child;case 14:return d=b.type,e=Ci(d,b.pendingProps),e=Ci(d.type,e),$i(a,b,d,e,c);case 15:return bj(a,b,b.type,b.pendingProps,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),ij(a,b),b.tag=1,Zf(d)?(a=!0,cg(b)):a=!1,ch(b,c),Gi(b,d,e),Ii(b,d,e,c),jj(null,b,d,!0,a,c);case 19:return xj(a,b,c);case 22:return dj(a,b,c)}throw Error(p(156,b.tag));};function Fk(a,b){return ac(a,b)}\nfunction $k(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.subtreeFlags=this.flags=0;this.deletions=null;this.childLanes=this.lanes=0;this.alternate=null}function Bg(a,b,c,d){return new $k(a,b,c,d)}function aj(a){a=a.prototype;return!(!a||!a.isReactComponent)}\nfunction Zk(a){if(\"function\"===typeof a)return aj(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===Da)return 11;if(a===Ga)return 14}return 2}\nfunction Pg(a,b){var c=a.alternate;null===c?(c=Bg(a.tag,b,a.key,a.mode),c.elementType=a.elementType,c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.pendingProps=b,c.type=a.type,c.flags=0,c.subtreeFlags=0,c.deletions=null);c.flags=a.flags&14680064;c.childLanes=a.childLanes;c.lanes=a.lanes;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;b=a.dependencies;c.dependencies=null===b?null:{lanes:b.lanes,firstContext:b.firstContext};\nc.sibling=a.sibling;c.index=a.index;c.ref=a.ref;return c}\nfunction Rg(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)aj(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case ya:return Tg(c.children,e,f,b);case za:g=8;e|=8;break;case Aa:return a=Bg(12,c,b,e|2),a.elementType=Aa,a.lanes=f,a;case Ea:return a=Bg(13,c,b,e),a.elementType=Ea,a.lanes=f,a;case Fa:return a=Bg(19,c,b,e),a.elementType=Fa,a.lanes=f,a;case Ia:return pj(c,e,f,b);default:if(\"object\"===typeof a&&null!==a)switch(a.$$typeof){case Ba:g=10;break a;case Ca:g=9;break a;case Da:g=11;\nbreak a;case Ga:g=14;break a;case Ha:g=16;d=null;break a}throw Error(p(130,null==a?a:typeof a,\"\"));}b=Bg(g,c,b,e);b.elementType=a;b.type=d;b.lanes=f;return b}function Tg(a,b,c,d){a=Bg(7,a,d,b);a.lanes=c;return a}function pj(a,b,c,d){a=Bg(22,a,d,b);a.elementType=Ia;a.lanes=c;a.stateNode={isHidden:!1};return a}function Qg(a,b,c){a=Bg(6,a,null,b);a.lanes=c;return a}\nfunction Sg(a,b,c){b=Bg(4,null!==a.children?a.children:[],a.key,b);b.lanes=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}\nfunction al(a,b,c,d,e){this.tag=b;this.containerInfo=a;this.finishedWork=this.pingCache=this.current=this.pendingChildren=null;this.timeoutHandle=-1;this.callbackNode=this.pendingContext=this.context=null;this.callbackPriority=0;this.eventTimes=zc(0);this.expirationTimes=zc(-1);this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0;this.entanglements=zc(0);this.identifierPrefix=d;this.onRecoverableError=e;this.mutableSourceEagerHydrationData=\nnull}function bl(a,b,c,d,e,f,g,h,k){a=new al(a,b,c,h,k);1===b?(b=1,!0===f&&(b|=8)):b=0;f=Bg(3,null,null,b);a.current=f;f.stateNode=a;f.memoizedState={element:d,isDehydrated:c,cache:null,transitions:null,pendingSuspenseBoundaries:null};kh(f);return a}function cl(a,b,c){var d=3\n//\nclass Draggable extends React.Component /*:: */{\n // React 16.3+\n // Arity (props, state)\n static getDerivedStateFromProps(_ref /*:: */, _ref2 /*:: */) /*: ?Partial*/{\n let {\n position\n } /*: DraggableProps*/ = _ref /*: DraggableProps*/;\n let {\n prevPropsPosition\n } /*: DraggableState*/ = _ref2 /*: DraggableState*/;\n // Set x/y if a new position is provided in props that is different than the previous.\n if (position && (!prevPropsPosition || position.x !== prevPropsPosition.x || position.y !== prevPropsPosition.y)) {\n (0, _log.default)('Draggable: getDerivedStateFromProps %j', {\n position,\n prevPropsPosition\n });\n return {\n x: position.x,\n y: position.y,\n prevPropsPosition: {\n ...position\n }\n };\n }\n return null;\n }\n constructor(props /*: DraggableProps*/) {\n super(props);\n _defineProperty(this, \"onDragStart\", (e, coreData) => {\n (0, _log.default)('Draggable: onDragStart: %j', coreData);\n\n // Short-circuit if user's callback killed it.\n const shouldStart = this.props.onStart(e, (0, _positionFns.createDraggableData)(this, coreData));\n // Kills start event on core as well, so move handlers are never bound.\n if (shouldStart === false) return false;\n this.setState({\n dragging: true,\n dragged: true\n });\n });\n _defineProperty(this, \"onDrag\", (e, coreData) => {\n if (!this.state.dragging) return false;\n (0, _log.default)('Draggable: onDrag: %j', coreData);\n const uiData = (0, _positionFns.createDraggableData)(this, coreData);\n const newState = {\n x: uiData.x,\n y: uiData.y,\n slackX: 0,\n slackY: 0\n };\n\n // Keep within bounds.\n if (this.props.bounds) {\n // Save original x and y.\n const {\n x,\n y\n } = newState;\n\n // Add slack to the values used to calculate bound position. This will ensure that if\n // we start removing slack, the element won't react to it right away until it's been\n // completely removed.\n newState.x += this.state.slackX;\n newState.y += this.state.slackY;\n\n // Get bound position. This will ceil/floor the x and y within the boundaries.\n const [newStateX, newStateY] = (0, _positionFns.getBoundPosition)(this, newState.x, newState.y);\n newState.x = newStateX;\n newState.y = newStateY;\n\n // Recalculate slack by noting how much was shaved by the boundPosition handler.\n newState.slackX = this.state.slackX + (x - newState.x);\n newState.slackY = this.state.slackY + (y - newState.y);\n\n // Update the event we fire to reflect what really happened after bounds took effect.\n uiData.x = newState.x;\n uiData.y = newState.y;\n uiData.deltaX = newState.x - this.state.x;\n uiData.deltaY = newState.y - this.state.y;\n }\n\n // Short-circuit if user's callback killed it.\n const shouldUpdate = this.props.onDrag(e, uiData);\n if (shouldUpdate === false) return false;\n this.setState(newState);\n });\n _defineProperty(this, \"onDragStop\", (e, coreData) => {\n if (!this.state.dragging) return false;\n\n // Short-circuit if user's callback killed it.\n const shouldContinue = this.props.onStop(e, (0, _positionFns.createDraggableData)(this, coreData));\n if (shouldContinue === false) return false;\n (0, _log.default)('Draggable: onDragStop: %j', coreData);\n const newState /*: Partial*/ = {\n dragging: false,\n slackX: 0,\n slackY: 0\n };\n\n // If this is a controlled component, the result of this operation will be to\n // revert back to the old position. We expect a handler on `onDragStop`, at the least.\n const controlled = Boolean(this.props.position);\n if (controlled) {\n const {\n x,\n y\n } = this.props.position;\n newState.x = x;\n newState.y = y;\n }\n this.setState(newState);\n });\n this.state = {\n // Whether or not we are currently dragging.\n dragging: false,\n // Whether or not we have been dragged before.\n dragged: false,\n // Current transform x and y.\n x: props.position ? props.position.x : props.defaultPosition.x,\n y: props.position ? props.position.y : props.defaultPosition.y,\n prevPropsPosition: {\n ...props.position\n },\n // Used for compensating for out-of-bounds drags\n slackX: 0,\n slackY: 0,\n // Can only determine if SVG after mounting\n isElementSVG: false\n };\n if (props.position && !(props.onDrag || props.onStop)) {\n // eslint-disable-next-line no-console\n console.warn('A `position` was applied to this , without drag handlers. This will make this ' + 'component effectively undraggable. Please attach `onDrag` or `onStop` handlers so you can adjust the ' + '`position` of this element.');\n }\n }\n componentDidMount() {\n // Check to see if the element passed is an instanceof SVGElement\n if (typeof window.SVGElement !== 'undefined' && this.findDOMNode() instanceof window.SVGElement) {\n this.setState({\n isElementSVG: true\n });\n }\n }\n componentWillUnmount() {\n this.setState({\n dragging: false\n }); // prevents invariant if unmounted while dragging\n }\n\n // React Strict Mode compatibility: if `nodeRef` is passed, we will use it instead of trying to find\n // the underlying DOM node ourselves. See the README for more information.\n findDOMNode() /*: ?HTMLElement*/{\n var _this$props$nodeRef$c, _this$props;\n return (_this$props$nodeRef$c = (_this$props = this.props) === null || _this$props === void 0 || (_this$props = _this$props.nodeRef) === null || _this$props === void 0 ? void 0 : _this$props.current) !== null && _this$props$nodeRef$c !== void 0 ? _this$props$nodeRef$c : _reactDom.default.findDOMNode(this);\n }\n render() /*: ReactElement*/{\n const {\n axis,\n bounds,\n children,\n defaultPosition,\n defaultClassName,\n defaultClassNameDragging,\n defaultClassNameDragged,\n position,\n positionOffset,\n scale,\n ...draggableCoreProps\n } = this.props;\n let style = {};\n let svgTransform = null;\n\n // If this is controlled, we don't want to move it - unless it's dragging.\n const controlled = Boolean(position);\n const draggable = !controlled || this.state.dragging;\n const validPosition = position || defaultPosition;\n const transformOpts = {\n // Set left if horizontal drag is enabled\n x: (0, _positionFns.canDragX)(this) && draggable ? this.state.x : validPosition.x,\n // Set top if vertical drag is enabled\n y: (0, _positionFns.canDragY)(this) && draggable ? this.state.y : validPosition.y\n };\n\n // If this element was SVG, we use the `transform` attribute.\n if (this.state.isElementSVG) {\n svgTransform = (0, _domFns.createSVGTransform)(transformOpts, positionOffset);\n } else {\n // Add a CSS transform to move the element around. This allows us to move the element around\n // without worrying about whether or not it is relatively or absolutely positioned.\n // If the item you are dragging already has a transform set, wrap it in a so \n // has a clean slate.\n style = (0, _domFns.createCSSTransform)(transformOpts, positionOffset);\n }\n\n // Mark with class while dragging\n const className = (0, _clsx.default)(children.props.className || '', defaultClassName, {\n [defaultClassNameDragging]: this.state.dragging,\n [defaultClassNameDragged]: this.state.dragged\n });\n\n // Reuse the child provided\n // This makes it flexible to use whatever element is wanted (div, ul, etc)\n return /*#__PURE__*/React.createElement(_DraggableCore.default, _extends({}, draggableCoreProps, {\n onStart: this.onDragStart,\n onDrag: this.onDrag,\n onStop: this.onDragStop\n }), /*#__PURE__*/React.cloneElement(React.Children.only(children), {\n className: className,\n style: {\n ...children.props.style,\n ...style\n },\n transform: svgTransform\n }));\n }\n}\nexports.default = Draggable;\n_defineProperty(Draggable, \"displayName\", 'Draggable');\n_defineProperty(Draggable, \"propTypes\", {\n // Accepts all props accepts.\n ..._DraggableCore.default.propTypes,\n /**\n * `axis` determines which axis the draggable can move.\n *\n * Note that all callbacks will still return data as normal. This only\n * controls flushing to the DOM.\n *\n * 'both' allows movement horizontally and vertically.\n * 'x' limits movement to horizontal axis.\n * 'y' limits movement to vertical axis.\n * 'none' limits all movement.\n *\n * Defaults to 'both'.\n */\n axis: _propTypes.default.oneOf(['both', 'x', 'y', 'none']),\n /**\n * `bounds` determines the range of movement available to the element.\n * Available values are:\n *\n * 'parent' restricts movement within the Draggable's parent node.\n *\n * Alternatively, pass an object with the following properties, all of which are optional:\n *\n * {left: LEFT_BOUND, right: RIGHT_BOUND, bottom: BOTTOM_BOUND, top: TOP_BOUND}\n *\n * All values are in px.\n *\n * Example:\n *\n * ```jsx\n * let App = React.createClass({\n * render: function () {\n * return (\n * \n *
Content
\n *
\n * );\n * }\n * });\n * ```\n */\n bounds: _propTypes.default.oneOfType([_propTypes.default.shape({\n left: _propTypes.default.number,\n right: _propTypes.default.number,\n top: _propTypes.default.number,\n bottom: _propTypes.default.number\n }), _propTypes.default.string, _propTypes.default.oneOf([false])]),\n defaultClassName: _propTypes.default.string,\n defaultClassNameDragging: _propTypes.default.string,\n defaultClassNameDragged: _propTypes.default.string,\n /**\n * `defaultPosition` specifies the x and y that the dragged item should start at\n *\n * Example:\n *\n * ```jsx\n * let App = React.createClass({\n * render: function () {\n * return (\n * \n *
I start with transformX: 25px and transformY: 25px;
\n *
\n * );\n * }\n * });\n * ```\n */\n defaultPosition: _propTypes.default.shape({\n x: _propTypes.default.number,\n y: _propTypes.default.number\n }),\n positionOffset: _propTypes.default.shape({\n x: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string]),\n y: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string])\n }),\n /**\n * `position`, if present, defines the current position of the element.\n *\n * This is similar to how form elements in React work - if no `position` is supplied, the component\n * is uncontrolled.\n *\n * Example:\n *\n * ```jsx\n * let App = React.createClass({\n * render: function () {\n * return (\n * \n *
I start with transformX: 25px and transformY: 25px;
\n *
\n * );\n * }\n * });\n * ```\n */\n position: _propTypes.default.shape({\n x: _propTypes.default.number,\n y: _propTypes.default.number\n }),\n /**\n * These properties should be defined on the child, not here.\n */\n className: _shims.dontSetMe,\n style: _shims.dontSetMe,\n transform: _shims.dontSetMe\n});\n_defineProperty(Draggable, \"defaultProps\", {\n ..._DraggableCore.default.defaultProps,\n axis: 'both',\n bounds: false,\n defaultClassName: 'react-draggable',\n defaultClassNameDragging: 'react-draggable-dragging',\n defaultClassNameDragged: 'react-draggable-dragged',\n defaultPosition: {\n x: 0,\n y: 0\n },\n scale: 1\n});","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar React = _interopRequireWildcard(require(\"react\"));\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\nvar _reactDom = _interopRequireDefault(require(\"react-dom\"));\nvar _domFns = require(\"./utils/domFns\");\nvar _positionFns = require(\"./utils/positionFns\");\nvar _shims = require(\"./utils/shims\");\nvar _log = _interopRequireDefault(require(\"./utils/log\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\n/*:: import type {EventHandler, MouseTouchEvent} from './utils/types';*/\n/*:: import type {Element as ReactElement} from 'react';*/\n// Simple abstraction for dragging events names.\nconst eventsFor = {\n touch: {\n start: 'touchstart',\n move: 'touchmove',\n stop: 'touchend'\n },\n mouse: {\n start: 'mousedown',\n move: 'mousemove',\n stop: 'mouseup'\n }\n};\n\n// Default to mouse events.\nlet dragEventFor = eventsFor.mouse;\n/*:: export type DraggableData = {\n node: HTMLElement,\n x: number, y: number,\n deltaX: number, deltaY: number,\n lastX: number, lastY: number,\n};*/\n/*:: export type DraggableEventHandler = (e: MouseEvent, data: DraggableData) => void | false;*/\n/*:: export type ControlPosition = {x: number, y: number};*/\n/*:: export type PositionOffsetControlPosition = {x: number|string, y: number|string};*/\n/*:: export type DraggableCoreDefaultProps = {\n allowAnyClick: boolean,\n disabled: boolean,\n enableUserSelectHack: boolean,\n onStart: DraggableEventHandler,\n onDrag: DraggableEventHandler,\n onStop: DraggableEventHandler,\n onMouseDown: (e: MouseEvent) => void,\n scale: number,\n};*/\n/*:: export type DraggableCoreProps = {\n ...DraggableCoreDefaultProps,\n cancel: string,\n children: ReactElement,\n offsetParent: HTMLElement,\n grid: [number, number],\n handle: string,\n nodeRef?: ?React.ElementRef,\n};*/\n//\n// Define .\n//\n// is for advanced usage of . It maintains minimal internal state so it can\n// work well with libraries that require more control over the element.\n//\n\nclass DraggableCore extends React.Component /*:: */{\n constructor() {\n super(...arguments);\n _defineProperty(this, \"dragging\", false);\n // Used while dragging to determine deltas.\n _defineProperty(this, \"lastX\", NaN);\n _defineProperty(this, \"lastY\", NaN);\n _defineProperty(this, \"touchIdentifier\", null);\n _defineProperty(this, \"mounted\", false);\n _defineProperty(this, \"handleDragStart\", e => {\n // Make it possible to attach event handlers on top of this one.\n this.props.onMouseDown(e);\n\n // Only accept left-clicks.\n if (!this.props.allowAnyClick && typeof e.button === 'number' && e.button !== 0) return false;\n\n // Get nodes. Be sure to grab relative document (could be iframed)\n const thisNode = this.findDOMNode();\n if (!thisNode || !thisNode.ownerDocument || !thisNode.ownerDocument.body) {\n throw new Error(' not mounted on DragStart!');\n }\n const {\n ownerDocument\n } = thisNode;\n\n // Short circuit if handle or cancel prop was provided and selector doesn't match.\n if (this.props.disabled || !(e.target instanceof ownerDocument.defaultView.Node) || this.props.handle && !(0, _domFns.matchesSelectorAndParentsTo)(e.target, this.props.handle, thisNode) || this.props.cancel && (0, _domFns.matchesSelectorAndParentsTo)(e.target, this.props.cancel, thisNode)) {\n return;\n }\n\n // Prevent scrolling on mobile devices, like ipad/iphone.\n // Important that this is after handle/cancel.\n if (e.type === 'touchstart') e.preventDefault();\n\n // Set touch identifier in component state if this is a touch event. This allows us to\n // distinguish between individual touches on multitouch screens by identifying which\n // touchpoint was set to this element.\n const touchIdentifier = (0, _domFns.getTouchIdentifier)(e);\n this.touchIdentifier = touchIdentifier;\n\n // Get the current drag point from the event. This is used as the offset.\n const position = (0, _positionFns.getControlPosition)(e, touchIdentifier, this);\n if (position == null) return; // not possible but satisfies flow\n const {\n x,\n y\n } = position;\n\n // Create an event object with all the data parents need to make a decision here.\n const coreEvent = (0, _positionFns.createCoreData)(this, x, y);\n (0, _log.default)('DraggableCore: handleDragStart: %j', coreEvent);\n\n // Call event handler. If it returns explicit false, cancel.\n (0, _log.default)('calling', this.props.onStart);\n const shouldUpdate = this.props.onStart(e, coreEvent);\n if (shouldUpdate === false || this.mounted === false) return;\n\n // Add a style to the body to disable user-select. This prevents text from\n // being selected all over the page.\n if (this.props.enableUserSelectHack) (0, _domFns.addUserSelectStyles)(ownerDocument);\n\n // Initiate dragging. Set the current x and y as offsets\n // so we know how much we've moved during the drag. This allows us\n // to drag elements around even if they have been moved, without issue.\n this.dragging = true;\n this.lastX = x;\n this.lastY = y;\n\n // Add events to the document directly so we catch when the user's mouse/touch moves outside of\n // this element. We use different events depending on whether or not we have detected that this\n // is a touch-capable device.\n (0, _domFns.addEvent)(ownerDocument, dragEventFor.move, this.handleDrag);\n (0, _domFns.addEvent)(ownerDocument, dragEventFor.stop, this.handleDragStop);\n });\n _defineProperty(this, \"handleDrag\", e => {\n // Get the current drag point from the event. This is used as the offset.\n const position = (0, _positionFns.getControlPosition)(e, this.touchIdentifier, this);\n if (position == null) return;\n let {\n x,\n y\n } = position;\n\n // Snap to grid if prop has been provided\n if (Array.isArray(this.props.grid)) {\n let deltaX = x - this.lastX,\n deltaY = y - this.lastY;\n [deltaX, deltaY] = (0, _positionFns.snapToGrid)(this.props.grid, deltaX, deltaY);\n if (!deltaX && !deltaY) return; // skip useless drag\n x = this.lastX + deltaX, y = this.lastY + deltaY;\n }\n const coreEvent = (0, _positionFns.createCoreData)(this, x, y);\n (0, _log.default)('DraggableCore: handleDrag: %j', coreEvent);\n\n // Call event handler. If it returns explicit false, trigger end.\n const shouldUpdate = this.props.onDrag(e, coreEvent);\n if (shouldUpdate === false || this.mounted === false) {\n try {\n // $FlowIgnore\n this.handleDragStop(new MouseEvent('mouseup'));\n } catch (err) {\n // Old browsers\n const event = ((document.createEvent('MouseEvents') /*: any*/) /*: MouseTouchEvent*/);\n // I see why this insanity was deprecated\n // $FlowIgnore\n event.initMouseEvent('mouseup', true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);\n this.handleDragStop(event);\n }\n return;\n }\n this.lastX = x;\n this.lastY = y;\n });\n _defineProperty(this, \"handleDragStop\", e => {\n if (!this.dragging) return;\n const position = (0, _positionFns.getControlPosition)(e, this.touchIdentifier, this);\n if (position == null) return;\n let {\n x,\n y\n } = position;\n\n // Snap to grid if prop has been provided\n if (Array.isArray(this.props.grid)) {\n let deltaX = x - this.lastX || 0;\n let deltaY = y - this.lastY || 0;\n [deltaX, deltaY] = (0, _positionFns.snapToGrid)(this.props.grid, deltaX, deltaY);\n x = this.lastX + deltaX, y = this.lastY + deltaY;\n }\n const coreEvent = (0, _positionFns.createCoreData)(this, x, y);\n\n // Call event handler\n const shouldContinue = this.props.onStop(e, coreEvent);\n if (shouldContinue === false || this.mounted === false) return false;\n const thisNode = this.findDOMNode();\n if (thisNode) {\n // Remove user-select hack\n if (this.props.enableUserSelectHack) (0, _domFns.removeUserSelectStyles)(thisNode.ownerDocument);\n }\n (0, _log.default)('DraggableCore: handleDragStop: %j', coreEvent);\n\n // Reset the el.\n this.dragging = false;\n this.lastX = NaN;\n this.lastY = NaN;\n if (thisNode) {\n // Remove event handlers\n (0, _log.default)('DraggableCore: Removing handlers');\n (0, _domFns.removeEvent)(thisNode.ownerDocument, dragEventFor.move, this.handleDrag);\n (0, _domFns.removeEvent)(thisNode.ownerDocument, dragEventFor.stop, this.handleDragStop);\n }\n });\n _defineProperty(this, \"onMouseDown\", e => {\n dragEventFor = eventsFor.mouse; // on touchscreen laptops we could switch back to mouse\n\n return this.handleDragStart(e);\n });\n _defineProperty(this, \"onMouseUp\", e => {\n dragEventFor = eventsFor.mouse;\n return this.handleDragStop(e);\n });\n // Same as onMouseDown (start drag), but now consider this a touch device.\n _defineProperty(this, \"onTouchStart\", e => {\n // We're on a touch device now, so change the event handlers\n dragEventFor = eventsFor.touch;\n return this.handleDragStart(e);\n });\n _defineProperty(this, \"onTouchEnd\", e => {\n // We're on a touch device now, so change the event handlers\n dragEventFor = eventsFor.touch;\n return this.handleDragStop(e);\n });\n }\n componentDidMount() {\n this.mounted = true;\n // Touch handlers must be added with {passive: false} to be cancelable.\n // https://developers.google.com/web/updates/2017/01/scrolling-intervention\n const thisNode = this.findDOMNode();\n if (thisNode) {\n (0, _domFns.addEvent)(thisNode, eventsFor.touch.start, this.onTouchStart, {\n passive: false\n });\n }\n }\n componentWillUnmount() {\n this.mounted = false;\n // Remove any leftover event handlers. Remove both touch and mouse handlers in case\n // some browser quirk caused a touch event to fire during a mouse move, or vice versa.\n const thisNode = this.findDOMNode();\n if (thisNode) {\n const {\n ownerDocument\n } = thisNode;\n (0, _domFns.removeEvent)(ownerDocument, eventsFor.mouse.move, this.handleDrag);\n (0, _domFns.removeEvent)(ownerDocument, eventsFor.touch.move, this.handleDrag);\n (0, _domFns.removeEvent)(ownerDocument, eventsFor.mouse.stop, this.handleDragStop);\n (0, _domFns.removeEvent)(ownerDocument, eventsFor.touch.stop, this.handleDragStop);\n (0, _domFns.removeEvent)(thisNode, eventsFor.touch.start, this.onTouchStart, {\n passive: false\n });\n if (this.props.enableUserSelectHack) (0, _domFns.removeUserSelectStyles)(ownerDocument);\n }\n }\n\n // React Strict Mode compatibility: if `nodeRef` is passed, we will use it instead of trying to find\n // the underlying DOM node ourselves. See the README for more information.\n findDOMNode() /*: ?HTMLElement*/{\n var _this$props, _this$props2;\n return (_this$props = this.props) !== null && _this$props !== void 0 && _this$props.nodeRef ? (_this$props2 = this.props) === null || _this$props2 === void 0 || (_this$props2 = _this$props2.nodeRef) === null || _this$props2 === void 0 ? void 0 : _this$props2.current : _reactDom.default.findDOMNode(this);\n }\n render() /*: React.Element*/{\n // Reuse the child provided\n // This makes it flexible to use whatever element is wanted (div, ul, etc)\n return /*#__PURE__*/React.cloneElement(React.Children.only(this.props.children), {\n // Note: mouseMove handler is attached to document so it will still function\n // when the user drags quickly and leaves the bounds of the element.\n onMouseDown: this.onMouseDown,\n onMouseUp: this.onMouseUp,\n // onTouchStart is added on `componentDidMount` so they can be added with\n // {passive: false}, which allows it to cancel. See\n // https://developers.google.com/web/updates/2017/01/scrolling-intervention\n onTouchEnd: this.onTouchEnd\n });\n }\n}\nexports.default = DraggableCore;\n_defineProperty(DraggableCore, \"displayName\", 'DraggableCore');\n_defineProperty(DraggableCore, \"propTypes\", {\n /**\n * `allowAnyClick` allows dragging using any mouse button.\n * By default, we only accept the left button.\n *\n * Defaults to `false`.\n */\n allowAnyClick: _propTypes.default.bool,\n children: _propTypes.default.node.isRequired,\n /**\n * `disabled`, if true, stops the from dragging. All handlers,\n * with the exception of `onMouseDown`, will not fire.\n */\n disabled: _propTypes.default.bool,\n /**\n * By default, we add 'user-select:none' attributes to the document body\n * to prevent ugly text selection during drag. If this is causing problems\n * for your app, set this to `false`.\n */\n enableUserSelectHack: _propTypes.default.bool,\n /**\n * `offsetParent`, if set, uses the passed DOM node to compute drag offsets\n * instead of using the parent node.\n */\n offsetParent: function (props /*: DraggableCoreProps*/, propName /*: $Keys*/) {\n if (props[propName] && props[propName].nodeType !== 1) {\n throw new Error('Draggable\\'s offsetParent must be a DOM Node.');\n }\n },\n /**\n * `grid` specifies the x and y that dragging should snap to.\n */\n grid: _propTypes.default.arrayOf(_propTypes.default.number),\n /**\n * `handle` specifies a selector to be used as the handle that initiates drag.\n *\n * Example:\n *\n * ```jsx\n * let App = React.createClass({\n * render: function () {\n * return (\n * \n *
\n *
Click me to drag
\n *
This is some other content
\n *
\n *
\n * );\n * }\n * });\n * ```\n */\n handle: _propTypes.default.string,\n /**\n * `cancel` specifies a selector to be used to prevent drag initialization.\n *\n * Example:\n *\n * ```jsx\n * let App = React.createClass({\n * render: function () {\n * return(\n * \n *
\n *
You can't drag from here
\n *
Dragging here works fine
\n *
\n *
\n * );\n * }\n * });\n * ```\n */\n cancel: _propTypes.default.string,\n /* If running in React Strict mode, ReactDOM.findDOMNode() is deprecated.\n * Unfortunately, in order for to work properly, we need raw access\n * to the underlying DOM node. If you want to avoid the warning, pass a `nodeRef`\n * as in this example:\n *\n * function MyComponent() {\n * const nodeRef = React.useRef(null);\n * return (\n * \n *
Example Target
\n *
\n * );\n * }\n *\n * This can be used for arbitrarily nested components, so long as the ref ends up\n * pointing to the actual child DOM node and not a custom component.\n */\n nodeRef: _propTypes.default.object,\n /**\n * Called when dragging starts.\n * If this function returns the boolean false, dragging will be canceled.\n */\n onStart: _propTypes.default.func,\n /**\n * Called while dragging.\n * If this function returns the boolean false, dragging will be canceled.\n */\n onDrag: _propTypes.default.func,\n /**\n * Called when dragging stops.\n * If this function returns the boolean false, the drag will remain active.\n */\n onStop: _propTypes.default.func,\n /**\n * A workaround option which can be passed if onMouseDown needs to be accessed,\n * since it'll always be blocked (as there is internal use of onMouseDown)\n */\n onMouseDown: _propTypes.default.func,\n /**\n * `scale`, if set, applies scaling while dragging an element\n */\n scale: _propTypes.default.number,\n /**\n * These properties should be defined on the child, not here.\n */\n className: _shims.dontSetMe,\n style: _shims.dontSetMe,\n transform: _shims.dontSetMe\n});\n_defineProperty(DraggableCore, \"defaultProps\", {\n allowAnyClick: false,\n // by default only accept left click\n disabled: false,\n enableUserSelectHack: true,\n onStart: function () {},\n onDrag: function () {},\n onStop: function () {},\n onMouseDown: function () {},\n scale: 1\n});","\"use strict\";\n\nconst {\n default: Draggable,\n DraggableCore\n} = require('./Draggable');\n\n// Previous versions of this lib exported as the root export. As to no-// them, or TypeScript, we export *both* as the root and as 'default'.\n// See https://github.com/mzabriskie/react-draggable/pull/254\n// and https://github.com/mzabriskie/react-draggable/issues/266\nmodule.exports = Draggable;\nmodule.exports.default = Draggable;\nmodule.exports.DraggableCore = DraggableCore;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.addClassName = addClassName;\nexports.addEvent = addEvent;\nexports.addUserSelectStyles = addUserSelectStyles;\nexports.createCSSTransform = createCSSTransform;\nexports.createSVGTransform = createSVGTransform;\nexports.getTouch = getTouch;\nexports.getTouchIdentifier = getTouchIdentifier;\nexports.getTranslation = getTranslation;\nexports.innerHeight = innerHeight;\nexports.innerWidth = innerWidth;\nexports.matchesSelector = matchesSelector;\nexports.matchesSelectorAndParentsTo = matchesSelectorAndParentsTo;\nexports.offsetXYFromParent = offsetXYFromParent;\nexports.outerHeight = outerHeight;\nexports.outerWidth = outerWidth;\nexports.removeClassName = removeClassName;\nexports.removeEvent = removeEvent;\nexports.removeUserSelectStyles = removeUserSelectStyles;\nvar _shims = require(\"./shims\");\nvar _getPrefix = _interopRequireWildcard(require(\"./getPrefix\"));\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n/*:: import type {ControlPosition, PositionOffsetControlPosition, MouseTouchEvent} from './types';*/\nlet matchesSelectorFunc = '';\nfunction matchesSelector(el /*: Node*/, selector /*: string*/) /*: boolean*/{\n if (!matchesSelectorFunc) {\n matchesSelectorFunc = (0, _shims.findInArray)(['matches', 'webkitMatchesSelector', 'mozMatchesSelector', 'msMatchesSelector', 'oMatchesSelector'], function (method) {\n // $FlowIgnore: Doesn't think elements are indexable\n return (0, _shims.isFunction)(el[method]);\n });\n }\n\n // Might not be found entirely (not an Element?) - in that case, bail\n // $FlowIgnore: Doesn't think elements are indexable\n if (!(0, _shims.isFunction)(el[matchesSelectorFunc])) return false;\n\n // $FlowIgnore: Doesn't think elements are indexable\n return el[matchesSelectorFunc](selector);\n}\n\n// Works up the tree to the draggable itself attempting to match selector.\nfunction matchesSelectorAndParentsTo(el /*: Node*/, selector /*: string*/, baseNode /*: Node*/) /*: boolean*/{\n let node = el;\n do {\n if (matchesSelector(node, selector)) return true;\n if (node === baseNode) return false;\n // $FlowIgnore[incompatible-type]\n node = node.parentNode;\n } while (node);\n return false;\n}\nfunction addEvent(el /*: ?Node*/, event /*: string*/, handler /*: Function*/, inputOptions /*: Object*/) /*: void*/{\n if (!el) return;\n const options = {\n capture: true,\n ...inputOptions\n };\n // $FlowIgnore[method-unbinding]\n if (el.addEventListener) {\n el.addEventListener(event, handler, options);\n } else if (el.attachEvent) {\n el.attachEvent('on' + event, handler);\n } else {\n // $FlowIgnore: Doesn't think elements are indexable\n el['on' + event] = handler;\n }\n}\nfunction removeEvent(el /*: ?Node*/, event /*: string*/, handler /*: Function*/, inputOptions /*: Object*/) /*: void*/{\n if (!el) return;\n const options = {\n capture: true,\n ...inputOptions\n };\n // $FlowIgnore[method-unbinding]\n if (el.removeEventListener) {\n el.removeEventListener(event, handler, options);\n } else if (el.detachEvent) {\n el.detachEvent('on' + event, handler);\n } else {\n // $FlowIgnore: Doesn't think elements are indexable\n el['on' + event] = null;\n }\n}\nfunction outerHeight(node /*: HTMLElement*/) /*: number*/{\n // This is deliberately excluding margin for our calculations, since we are using\n // offsetTop which is including margin. See getBoundPosition\n let height = node.clientHeight;\n const computedStyle = node.ownerDocument.defaultView.getComputedStyle(node);\n height += (0, _shims.int)(computedStyle.borderTopWidth);\n height += (0, _shims.int)(computedStyle.borderBottomWidth);\n return height;\n}\nfunction outerWidth(node /*: HTMLElement*/) /*: number*/{\n // This is deliberately excluding margin for our calculations, since we are using\n // offsetLeft which is including margin. See getBoundPosition\n let width = node.clientWidth;\n const computedStyle = node.ownerDocument.defaultView.getComputedStyle(node);\n width += (0, _shims.int)(computedStyle.borderLeftWidth);\n width += (0, _shims.int)(computedStyle.borderRightWidth);\n return width;\n}\nfunction innerHeight(node /*: HTMLElement*/) /*: number*/{\n let height = node.clientHeight;\n const computedStyle = node.ownerDocument.defaultView.getComputedStyle(node);\n height -= (0, _shims.int)(computedStyle.paddingTop);\n height -= (0, _shims.int)(computedStyle.paddingBottom);\n return height;\n}\nfunction innerWidth(node /*: HTMLElement*/) /*: number*/{\n let width = node.clientWidth;\n const computedStyle = node.ownerDocument.defaultView.getComputedStyle(node);\n width -= (0, _shims.int)(computedStyle.paddingLeft);\n width -= (0, _shims.int)(computedStyle.paddingRight);\n return width;\n}\n/*:: interface EventWithOffset {\n clientX: number, clientY: number\n}*/\n// Get from offsetParent\nfunction offsetXYFromParent(evt /*: EventWithOffset*/, offsetParent /*: HTMLElement*/, scale /*: number*/) /*: ControlPosition*/{\n const isBody = offsetParent === offsetParent.ownerDocument.body;\n const offsetParentRect = isBody ? {\n left: 0,\n top: 0\n } : offsetParent.getBoundingClientRect();\n const x = (evt.clientX + offsetParent.scrollLeft - offsetParentRect.left) / scale;\n const y = (evt.clientY + offsetParent.scrollTop - offsetParentRect.top) / scale;\n return {\n x,\n y\n };\n}\nfunction createCSSTransform(controlPos /*: ControlPosition*/, positionOffset /*: PositionOffsetControlPosition*/) /*: Object*/{\n const translation = getTranslation(controlPos, positionOffset, 'px');\n return {\n [(0, _getPrefix.browserPrefixToKey)('transform', _getPrefix.default)]: translation\n };\n}\nfunction createSVGTransform(controlPos /*: ControlPosition*/, positionOffset /*: PositionOffsetControlPosition*/) /*: string*/{\n const translation = getTranslation(controlPos, positionOffset, '');\n return translation;\n}\nfunction getTranslation(_ref /*:: */, positionOffset /*: PositionOffsetControlPosition*/, unitSuffix /*: string*/) /*: string*/{\n let {\n x,\n y\n } /*: ControlPosition*/ = _ref /*: ControlPosition*/;\n let translation = \"translate(\".concat(x).concat(unitSuffix, \",\").concat(y).concat(unitSuffix, \")\");\n if (positionOffset) {\n const defaultX = \"\".concat(typeof positionOffset.x === 'string' ? positionOffset.x : positionOffset.x + unitSuffix);\n const defaultY = \"\".concat(typeof positionOffset.y === 'string' ? positionOffset.y : positionOffset.y + unitSuffix);\n translation = \"translate(\".concat(defaultX, \", \").concat(defaultY, \")\") + translation;\n }\n return translation;\n}\nfunction getTouch(e /*: MouseTouchEvent*/, identifier /*: number*/) /*: ?{clientX: number, clientY: number}*/{\n return e.targetTouches && (0, _shims.findInArray)(e.targetTouches, t => identifier === t.identifier) || e.changedTouches && (0, _shims.findInArray)(e.changedTouches, t => identifier === t.identifier);\n}\nfunction getTouchIdentifier(e /*: MouseTouchEvent*/) /*: ?number*/{\n if (e.targetTouches && e.targetTouches[0]) return e.targetTouches[0].identifier;\n if (e.changedTouches && e.changedTouches[0]) return e.changedTouches[0].identifier;\n}\n\n// User-select Hacks:\n//\n// Useful for preventing blue highlights all over everything when dragging.\n\n// Note we're passing `document` b/c we could be iframed\nfunction addUserSelectStyles(doc /*: ?Document*/) {\n if (!doc) return;\n let styleEl = doc.getElementById('react-draggable-style-el');\n if (!styleEl) {\n styleEl = doc.createElement('style');\n styleEl.type = 'text/css';\n styleEl.id = 'react-draggable-style-el';\n styleEl.innerHTML = '.react-draggable-transparent-selection *::-moz-selection {all: inherit;}\\n';\n styleEl.innerHTML += '.react-draggable-transparent-selection *::selection {all: inherit;}\\n';\n doc.getElementsByTagName('head')[0].appendChild(styleEl);\n }\n if (doc.body) addClassName(doc.body, 'react-draggable-transparent-selection');\n}\nfunction removeUserSelectStyles(doc /*: ?Document*/) {\n if (!doc) return;\n try {\n if (doc.body) removeClassName(doc.body, 'react-draggable-transparent-selection');\n // $FlowIgnore: IE\n if (doc.selection) {\n // $FlowIgnore: IE\n doc.selection.empty();\n } else {\n // Remove selection caused by scroll, unless it's a focused input\n // (we use doc.defaultView in case we're in an iframe)\n const selection = (doc.defaultView || window).getSelection();\n if (selection && selection.type !== 'Caret') {\n selection.removeAllRanges();\n }\n }\n } catch (e) {\n // probably IE\n }\n}\nfunction addClassName(el /*: HTMLElement*/, className /*: string*/) {\n if (el.classList) {\n el.classList.add(className);\n } else {\n if (!el.className.match(new RegExp(\"(?:^|\\\\s)\".concat(className, \"(?!\\\\S)\")))) {\n el.className += \" \".concat(className);\n }\n }\n}\nfunction removeClassName(el /*: HTMLElement*/, className /*: string*/) {\n if (el.classList) {\n el.classList.remove(className);\n } else {\n el.className = el.className.replace(new RegExp(\"(?:^|\\\\s)\".concat(className, \"(?!\\\\S)\"), 'g'), '');\n }\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.browserPrefixToKey = browserPrefixToKey;\nexports.browserPrefixToStyle = browserPrefixToStyle;\nexports.default = void 0;\nexports.getPrefix = getPrefix;\nconst prefixes = ['Moz', 'Webkit', 'O', 'ms'];\nfunction getPrefix() /*: string*/{\n var _window$document;\n let prop /*: string*/ = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'transform';\n // Ensure we're running in an environment where there is actually a global\n // `window` obj\n if (typeof window === 'undefined') return '';\n\n // If we're in a pseudo-browser server-side environment, this access\n // path may not exist, so bail out if it doesn't.\n const style = (_window$document = window.document) === null || _window$document === void 0 || (_window$document = _window$document.documentElement) === null || _window$document === void 0 ? void 0 : _window$document.style;\n if (!style) return '';\n if (prop in style) return '';\n for (let i = 0; i < prefixes.length; i++) {\n if (browserPrefixToKey(prop, prefixes[i]) in style) return prefixes[i];\n }\n return '';\n}\nfunction browserPrefixToKey(prop /*: string*/, prefix /*: string*/) /*: string*/{\n return prefix ? \"\".concat(prefix).concat(kebabToTitleCase(prop)) : prop;\n}\nfunction browserPrefixToStyle(prop /*: string*/, prefix /*: string*/) /*: string*/{\n return prefix ? \"-\".concat(prefix.toLowerCase(), \"-\").concat(prop) : prop;\n}\nfunction kebabToTitleCase(str /*: string*/) /*: string*/{\n let out = '';\n let shouldCapitalize = true;\n for (let i = 0; i < str.length; i++) {\n if (shouldCapitalize) {\n out += str[i].toUpperCase();\n shouldCapitalize = false;\n } else if (str[i] === '-') {\n shouldCapitalize = true;\n } else {\n out += str[i];\n }\n }\n return out;\n}\n\n// Default export is the prefix itself, like 'Moz', 'Webkit', etc\n// Note that you may have to re-test for certain things; for instance, Chrome 50\n// can handle unprefixed `transform`, but not unprefixed `user-select`\nvar _default = exports.default = (getPrefix() /*: string*/);","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = log;\n/*eslint no-console:0*/\nfunction log() {\n if (undefined) console.log(...arguments);\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.canDragX = canDragX;\nexports.canDragY = canDragY;\nexports.createCoreData = createCoreData;\nexports.createDraggableData = createDraggableData;\nexports.getBoundPosition = getBoundPosition;\nexports.getControlPosition = getControlPosition;\nexports.snapToGrid = snapToGrid;\nvar _shims = require(\"./shims\");\nvar _domFns = require(\"./domFns\");\n/*:: import type Draggable from '../Draggable';*/\n/*:: import type {Bounds, ControlPosition, DraggableData, MouseTouchEvent} from './types';*/\n/*:: import type DraggableCore from '../DraggableCore';*/\nfunction getBoundPosition(draggable /*: Draggable*/, x /*: number*/, y /*: number*/) /*: [number, number]*/{\n // If no bounds, short-circuit and move on\n if (!draggable.props.bounds) return [x, y];\n\n // Clone new bounds\n let {\n bounds\n } = draggable.props;\n bounds = typeof bounds === 'string' ? bounds : cloneBounds(bounds);\n const node = findDOMNode(draggable);\n if (typeof bounds === 'string') {\n const {\n ownerDocument\n } = node;\n const ownerWindow = ownerDocument.defaultView;\n let boundNode;\n if (bounds === 'parent') {\n boundNode = node.parentNode;\n } else {\n boundNode = ownerDocument.querySelector(bounds);\n }\n if (!(boundNode instanceof ownerWindow.HTMLElement)) {\n throw new Error('Bounds selector \"' + bounds + '\" could not find an element.');\n }\n const boundNodeEl /*: HTMLElement*/ = boundNode; // for Flow, can't seem to refine correctly\n const nodeStyle = ownerWindow.getComputedStyle(node);\n const boundNodeStyle = ownerWindow.getComputedStyle(boundNodeEl);\n // Compute bounds. This is a pain with padding and offsets but this gets it exactly right.\n bounds = {\n left: -node.offsetLeft + (0, _shims.int)(boundNodeStyle.paddingLeft) + (0, _shims.int)(nodeStyle.marginLeft),\n top: -node.offsetTop + (0, _shims.int)(boundNodeStyle.paddingTop) + (0, _shims.int)(nodeStyle.marginTop),\n right: (0, _domFns.innerWidth)(boundNodeEl) - (0, _domFns.outerWidth)(node) - node.offsetLeft + (0, _shims.int)(boundNodeStyle.paddingRight) - (0, _shims.int)(nodeStyle.marginRight),\n bottom: (0, _domFns.innerHeight)(boundNodeEl) - (0, _domFns.outerHeight)(node) - node.offsetTop + (0, _shims.int)(boundNodeStyle.paddingBottom) - (0, _shims.int)(nodeStyle.marginBottom)\n };\n }\n\n // Keep x and y below right and bottom limits...\n if ((0, _shims.isNum)(bounds.right)) x = Math.min(x, bounds.right);\n if ((0, _shims.isNum)(bounds.bottom)) y = Math.min(y, bounds.bottom);\n\n // But above left and top limits.\n if ((0, _shims.isNum)(bounds.left)) x = Math.max(x, bounds.left);\n if ((0, _shims.isNum)(bounds.top)) y = Math.max(y, bounds.top);\n return [x, y];\n}\nfunction snapToGrid(grid /*: [number, number]*/, pendingX /*: number*/, pendingY /*: number*/) /*: [number, number]*/{\n const x = Math.round(pendingX / grid[0]) * grid[0];\n const y = Math.round(pendingY / grid[1]) * grid[1];\n return [x, y];\n}\nfunction canDragX(draggable /*: Draggable*/) /*: boolean*/{\n return draggable.props.axis === 'both' || draggable.props.axis === 'x';\n}\nfunction canDragY(draggable /*: Draggable*/) /*: boolean*/{\n return draggable.props.axis === 'both' || draggable.props.axis === 'y';\n}\n\n// Get {x, y} positions from event.\nfunction getControlPosition(e /*: MouseTouchEvent*/, touchIdentifier /*: ?number*/, draggableCore /*: DraggableCore*/) /*: ?ControlPosition*/{\n const touchObj = typeof touchIdentifier === 'number' ? (0, _domFns.getTouch)(e, touchIdentifier) : null;\n if (typeof touchIdentifier === 'number' && !touchObj) return null; // not the right touch\n const node = findDOMNode(draggableCore);\n // User can provide an offsetParent if desired.\n const offsetParent = draggableCore.props.offsetParent || node.offsetParent || node.ownerDocument.body;\n return (0, _domFns.offsetXYFromParent)(touchObj || e, offsetParent, draggableCore.props.scale);\n}\n\n// Create an data object exposed by 's events\nfunction createCoreData(draggable /*: DraggableCore*/, x /*: number*/, y /*: number*/) /*: DraggableData*/{\n const isStart = !(0, _shims.isNum)(draggable.lastX);\n const node = findDOMNode(draggable);\n if (isStart) {\n // If this is our first move, use the x and y as last coords.\n return {\n node,\n deltaX: 0,\n deltaY: 0,\n lastX: x,\n lastY: y,\n x,\n y\n };\n } else {\n // Otherwise calculate proper values.\n return {\n node,\n deltaX: x - draggable.lastX,\n deltaY: y - draggable.lastY,\n lastX: draggable.lastX,\n lastY: draggable.lastY,\n x,\n y\n };\n }\n}\n\n// Create an data exposed by 's events\nfunction createDraggableData(draggable /*: Draggable*/, coreData /*: DraggableData*/) /*: DraggableData*/{\n const scale = draggable.props.scale;\n return {\n node: coreData.node,\n x: draggable.state.x + coreData.deltaX / scale,\n y: draggable.state.y + coreData.deltaY / scale,\n deltaX: coreData.deltaX / scale,\n deltaY: coreData.deltaY / scale,\n lastX: draggable.state.x,\n lastY: draggable.state.y\n };\n}\n\n// A lot faster than stringify/parse\nfunction cloneBounds(bounds /*: Bounds*/) /*: Bounds*/{\n return {\n left: bounds.left,\n top: bounds.top,\n right: bounds.right,\n bottom: bounds.bottom\n };\n}\nfunction findDOMNode(draggable /*: Draggable | DraggableCore*/) /*: HTMLElement*/{\n const node = draggable.findDOMNode();\n if (!node) {\n throw new Error(': Unmounted during event!');\n }\n // $FlowIgnore we can't assert on HTMLElement due to tests... FIXME\n return node;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.dontSetMe = dontSetMe;\nexports.findInArray = findInArray;\nexports.int = int;\nexports.isFunction = isFunction;\nexports.isNum = isNum;\n// @credits https://gist.github.com/rogozhnikoff/a43cfed27c41e4e68cdc\nfunction findInArray(array /*: Array | TouchList*/, callback /*: Function*/) /*: any*/{\n for (let i = 0, length = array.length; i < length; i++) {\n if (callback.apply(callback, [array[i], i, array])) return array[i];\n }\n}\nfunction isFunction(func /*: any*/) /*: boolean %checks*/{\n // $FlowIgnore[method-unbinding]\n return typeof func === 'function' || Object.prototype.toString.call(func) === '[object Function]';\n}\nfunction isNum(num /*: any*/) /*: boolean %checks*/{\n return typeof num === 'number' && !isNaN(num);\n}\nfunction int(a /*: string*/) /*: number*/{\n return parseInt(a, 10);\n}\nfunction dontSetMe(props /*: Object*/, propName /*: string*/, componentName /*: string*/) /*: ?Error*/{\n if (props[propName]) {\n return new Error(\"Invalid prop \".concat(propName, \" passed to \").concat(componentName, \" - do not set this, set it on the child.\"));\n }\n}","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\nvar React = _interopRequireWildcard(require(\"react\"));\nvar _reactDraggable = require(\"react-draggable\");\nvar _utils = require(\"./utils\");\nvar _propTypes = require(\"./propTypes\");\nvar _excluded = [\"children\", \"className\", \"draggableOpts\", \"width\", \"height\", \"handle\", \"handleSize\", \"lockAspectRatio\", \"axis\", \"minConstraints\", \"maxConstraints\", \"onResize\", \"onResizeStop\", \"onResizeStart\", \"resizeHandles\", \"transformScale\"];\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n// The base component.\n// This component does not have state and relies on the parent to set its props based on callback data.\nvar Resizable = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(Resizable, _React$Component);\n function Resizable() {\n var _this;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n _this.handleRefs = {};\n _this.lastHandleRect = null;\n _this.slack = null;\n return _this;\n }\n var _proto = Resizable.prototype;\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.resetData();\n };\n _proto.resetData = function resetData() {\n this.lastHandleRect = this.slack = null;\n }\n\n // Clamp width and height within provided constraints\n ;\n _proto.runConstraints = function runConstraints(width, height) {\n var _this$props = this.props,\n minConstraints = _this$props.minConstraints,\n maxConstraints = _this$props.maxConstraints,\n lockAspectRatio = _this$props.lockAspectRatio;\n // short circuit\n if (!minConstraints && !maxConstraints && !lockAspectRatio) return [width, height];\n\n // If constraining to min and max, we need to also fit width and height to aspect ratio.\n if (lockAspectRatio) {\n var ratio = this.props.width / this.props.height;\n var deltaW = width - this.props.width;\n var deltaH = height - this.props.height;\n\n // Find which coordinate was greater and should push the other toward it.\n // E.g.:\n // ratio = 1, deltaW = 10, deltaH = 5, deltaH should become 10.\n // ratio = 2, deltaW = 10, deltaH = 6, deltaW should become 12.\n if (Math.abs(deltaW) > Math.abs(deltaH * ratio)) {\n height = width / ratio;\n } else {\n width = height * ratio;\n }\n }\n var oldW = width,\n oldH = height;\n\n // Add slack to the values used to calculate bound position. This will ensure that if\n // we start removing slack, the element won't react to it right away until it's been\n // completely removed.\n var _ref = this.slack || [0, 0],\n slackW = _ref[0],\n slackH = _ref[1];\n width += slackW;\n height += slackH;\n if (minConstraints) {\n width = Math.max(minConstraints[0], width);\n height = Math.max(minConstraints[1], height);\n }\n if (maxConstraints) {\n width = Math.min(maxConstraints[0], width);\n height = Math.min(maxConstraints[1], height);\n }\n\n // If the width or height changed, we must have introduced some slack. Record it for the next iteration.\n this.slack = [slackW + (oldW - width), slackH + (oldH - height)];\n return [width, height];\n }\n\n /**\n * Wrapper around drag events to provide more useful data.\n *\n * @param {String} handlerName Handler name to wrap.\n * @return {Function} Handler function.\n */;\n _proto.resizeHandler = function resizeHandler(handlerName, axis) {\n var _this2 = this;\n return function (e, _ref2) {\n var node = _ref2.node,\n deltaX = _ref2.deltaX,\n deltaY = _ref2.deltaY;\n // Reset data in case it was left over somehow (should not be possible)\n if (handlerName === 'onResizeStart') _this2.resetData();\n\n // Axis restrictions\n var canDragX = (_this2.props.axis === 'both' || _this2.props.axis === 'x') && axis !== 'n' && axis !== 's';\n var canDragY = (_this2.props.axis === 'both' || _this2.props.axis === 'y') && axis !== 'e' && axis !== 'w';\n // No dragging possible.\n if (!canDragX && !canDragY) return;\n\n // Decompose axis for later use\n var axisV = axis[0];\n var axisH = axis[axis.length - 1]; // intentionally not axis[1], so that this catches axis === 'w' for example\n\n // Track the element being dragged to account for changes in position.\n // If a handle's position is changed between callbacks, we need to factor this in to the next callback.\n // Failure to do so will cause the element to \"skip\" when resized upwards or leftwards.\n var handleRect = node.getBoundingClientRect();\n if (_this2.lastHandleRect != null) {\n // If the handle has repositioned on either axis since last render,\n // we need to increase our callback values by this much.\n // Only checking 'n', 'w' since resizing by 's', 'w' won't affect the overall position on page,\n if (axisH === 'w') {\n var deltaLeftSinceLast = handleRect.left - _this2.lastHandleRect.left;\n deltaX += deltaLeftSinceLast;\n }\n if (axisV === 'n') {\n var deltaTopSinceLast = handleRect.top - _this2.lastHandleRect.top;\n deltaY += deltaTopSinceLast;\n }\n }\n // Storage of last rect so we know how much it has really moved.\n _this2.lastHandleRect = handleRect;\n\n // Reverse delta if using top or left drag handles.\n if (axisH === 'w') deltaX = -deltaX;\n if (axisV === 'n') deltaY = -deltaY;\n\n // Update w/h by the deltas. Also factor in transformScale.\n var width = _this2.props.width + (canDragX ? deltaX / _this2.props.transformScale : 0);\n var height = _this2.props.height + (canDragY ? deltaY / _this2.props.transformScale : 0);\n\n // Run user-provided constraints.\n var _this2$runConstraints = _this2.runConstraints(width, height);\n width = _this2$runConstraints[0];\n height = _this2$runConstraints[1];\n var dimensionsChanged = width !== _this2.props.width || height !== _this2.props.height;\n\n // Call user-supplied callback if present.\n var cb = typeof _this2.props[handlerName] === 'function' ? _this2.props[handlerName] : null;\n // Don't call 'onResize' if dimensions haven't changed.\n var shouldSkipCb = handlerName === 'onResize' && !dimensionsChanged;\n if (cb && !shouldSkipCb) {\n e.persist == null ? void 0 : e.persist();\n cb(e, {\n node: node,\n size: {\n width: width,\n height: height\n },\n handle: axis\n });\n }\n\n // Reset internal data\n if (handlerName === 'onResizeStop') _this2.resetData();\n };\n }\n\n // Render a resize handle given an axis & DOM ref. Ref *must* be attached for\n // the underlying draggable library to work properly.\n ;\n _proto.renderResizeHandle = function renderResizeHandle(handleAxis, ref) {\n var handle = this.props.handle;\n // No handle provided, make the default\n if (!handle) {\n return /*#__PURE__*/React.createElement(\"span\", {\n className: \"react-resizable-handle react-resizable-handle-\" + handleAxis,\n ref: ref\n });\n }\n // Handle is a function, such as:\n // `handle={(handleAxis) => }`\n if (typeof handle === 'function') {\n return handle(handleAxis, ref);\n }\n // Handle is a React component (composite or DOM).\n var isDOMElement = typeof handle.type === 'string';\n var props = _objectSpread({\n ref: ref\n }, isDOMElement ? {} : {\n handleAxis: handleAxis\n });\n return /*#__PURE__*/React.cloneElement(handle, props);\n };\n _proto.render = function render() {\n var _this3 = this;\n // Pass along only props not meant for the ``.`\n // eslint-disable-next-line no-unused-vars\n var _this$props2 = this.props,\n children = _this$props2.children,\n className = _this$props2.className,\n draggableOpts = _this$props2.draggableOpts,\n width = _this$props2.width,\n height = _this$props2.height,\n handle = _this$props2.handle,\n handleSize = _this$props2.handleSize,\n lockAspectRatio = _this$props2.lockAspectRatio,\n axis = _this$props2.axis,\n minConstraints = _this$props2.minConstraints,\n maxConstraints = _this$props2.maxConstraints,\n onResize = _this$props2.onResize,\n onResizeStop = _this$props2.onResizeStop,\n onResizeStart = _this$props2.onResizeStart,\n resizeHandles = _this$props2.resizeHandles,\n transformScale = _this$props2.transformScale,\n p = _objectWithoutPropertiesLoose(_this$props2, _excluded);\n\n // What we're doing here is getting the child of this element, and cloning it with this element's props.\n // We are then defining its children as:\n // 1. Its original children (resizable's child's children), and\n // 2. One or more draggable handles.\n return (0, _utils.cloneElement)(children, _objectSpread(_objectSpread({}, p), {}, {\n className: (className ? className + \" \" : '') + \"react-resizable\",\n children: [].concat(children.props.children, resizeHandles.map(function (handleAxis) {\n var _this3$handleRefs$han;\n // Create a ref to the handle so that `` doesn't have to use ReactDOM.findDOMNode().\n var ref = (_this3$handleRefs$han = _this3.handleRefs[handleAxis]) != null ? _this3$handleRefs$han : _this3.handleRefs[handleAxis] = /*#__PURE__*/React.createRef();\n return /*#__PURE__*/React.createElement(_reactDraggable.DraggableCore, _extends({}, draggableOpts, {\n nodeRef: ref,\n key: \"resizableHandle-\" + handleAxis,\n onStop: _this3.resizeHandler('onResizeStop', handleAxis),\n onStart: _this3.resizeHandler('onResizeStart', handleAxis),\n onDrag: _this3.resizeHandler('onResize', handleAxis)\n }), _this3.renderResizeHandle(handleAxis, ref));\n }))\n }));\n };\n return Resizable;\n}(React.Component);\nexports.default = Resizable;\nResizable.propTypes = _propTypes.resizableProps;\nResizable.defaultProps = {\n axis: 'both',\n handleSize: [20, 20],\n lockAspectRatio: false,\n minConstraints: [20, 20],\n maxConstraints: [Infinity, Infinity],\n resizeHandles: ['se'],\n transformScale: 1\n};","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\nvar React = _interopRequireWildcard(require(\"react\"));\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\nvar _Resizable = _interopRequireDefault(require(\"./Resizable\"));\nvar _propTypes2 = require(\"./propTypes\");\nvar _excluded = [\"handle\", \"handleSize\", \"onResize\", \"onResizeStart\", \"onResizeStop\", \"draggableOpts\", \"minConstraints\", \"maxConstraints\", \"lockAspectRatio\", \"axis\", \"width\", \"height\", \"resizeHandles\", \"style\", \"transformScale\"];\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nvar ResizableBox = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(ResizableBox, _React$Component);\n function ResizableBox() {\n var _this;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n _this.state = {\n width: _this.props.width,\n height: _this.props.height,\n propsWidth: _this.props.width,\n propsHeight: _this.props.height\n };\n _this.onResize = function (e, data) {\n var size = data.size;\n if (_this.props.onResize) {\n e.persist == null ? void 0 : e.persist();\n _this.setState(size, function () {\n return _this.props.onResize && _this.props.onResize(e, data);\n });\n } else {\n _this.setState(size);\n }\n };\n return _this;\n }\n ResizableBox.getDerivedStateFromProps = function getDerivedStateFromProps(props, state) {\n // If parent changes height/width, set that in our state.\n if (state.propsWidth !== props.width || state.propsHeight !== props.height) {\n return {\n width: props.width,\n height: props.height,\n propsWidth: props.width,\n propsHeight: props.height\n };\n }\n return null;\n };\n var _proto = ResizableBox.prototype;\n _proto.render = function render() {\n // Basic wrapper around a Resizable instance.\n // If you use Resizable directly, you are responsible for updating the child component\n // with a new width and height.\n var _this$props = this.props,\n handle = _this$props.handle,\n handleSize = _this$props.handleSize,\n onResize = _this$props.onResize,\n onResizeStart = _this$props.onResizeStart,\n onResizeStop = _this$props.onResizeStop,\n draggableOpts = _this$props.draggableOpts,\n minConstraints = _this$props.minConstraints,\n maxConstraints = _this$props.maxConstraints,\n lockAspectRatio = _this$props.lockAspectRatio,\n axis = _this$props.axis,\n width = _this$props.width,\n height = _this$props.height,\n resizeHandles = _this$props.resizeHandles,\n style = _this$props.style,\n transformScale = _this$props.transformScale,\n props = _objectWithoutPropertiesLoose(_this$props, _excluded);\n return /*#__PURE__*/React.createElement(_Resizable.default, {\n axis: axis,\n draggableOpts: draggableOpts,\n handle: handle,\n handleSize: handleSize,\n height: this.state.height,\n lockAspectRatio: lockAspectRatio,\n maxConstraints: maxConstraints,\n minConstraints: minConstraints,\n onResizeStart: onResizeStart,\n onResize: this.onResize,\n onResizeStop: onResizeStop,\n resizeHandles: resizeHandles,\n transformScale: transformScale,\n width: this.state.width\n }, /*#__PURE__*/React.createElement(\"div\", _extends({}, props, {\n style: _objectSpread(_objectSpread({}, style), {}, {\n width: this.state.width + 'px',\n height: this.state.height + 'px'\n })\n })));\n };\n return ResizableBox;\n}(React.Component);\nexports.default = ResizableBox;\n// PropTypes are identical to , except that children are not strictly required to be present.\nResizableBox.propTypes = _objectSpread(_objectSpread({}, _propTypes2.resizableProps), {}, {\n children: _propTypes.default.element\n});","\"use strict\";\n\nexports.__esModule = true;\nexports.resizableProps = void 0;\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\nvar _reactDraggable = require(\"react-draggable\");\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nvar resizableProps = {\n /*\n * Restricts resizing to a particular axis (default: 'both')\n * 'both' - allows resizing by width or height\n * 'x' - only allows the width to be changed\n * 'y' - only allows the height to be changed\n * 'none' - disables resizing altogether\n * */\n axis: _propTypes.default.oneOf(['both', 'x', 'y', 'none']),\n className: _propTypes.default.string,\n /*\n * Require that one and only one child be present.\n * */\n children: _propTypes.default.element.isRequired,\n /*\n * These will be passed wholesale to react-draggable's DraggableCore\n * */\n draggableOpts: _propTypes.default.shape({\n allowAnyClick: _propTypes.default.bool,\n cancel: _propTypes.default.string,\n children: _propTypes.default.node,\n disabled: _propTypes.default.bool,\n enableUserSelectHack: _propTypes.default.bool,\n offsetParent: _propTypes.default.node,\n grid: _propTypes.default.arrayOf(_propTypes.default.number),\n handle: _propTypes.default.string,\n nodeRef: _propTypes.default.object,\n onStart: _propTypes.default.func,\n onDrag: _propTypes.default.func,\n onStop: _propTypes.default.func,\n onMouseDown: _propTypes.default.func,\n scale: _propTypes.default.number\n }),\n /*\n * Initial height\n * */\n height: function height() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n var props = args[0];\n // Required if resizing height or both\n if (props.axis === 'both' || props.axis === 'y') {\n var _PropTypes$number;\n return (_PropTypes$number = _propTypes.default.number).isRequired.apply(_PropTypes$number, args);\n }\n return _propTypes.default.number.apply(_propTypes.default, args);\n },\n /*\n * Customize cursor resize handle\n * */\n handle: _propTypes.default.oneOfType([_propTypes.default.node, _propTypes.default.func]),\n /*\n * If you change this, be sure to update your css\n * */\n handleSize: _propTypes.default.arrayOf(_propTypes.default.number),\n lockAspectRatio: _propTypes.default.bool,\n /*\n * Max X & Y measure\n * */\n maxConstraints: _propTypes.default.arrayOf(_propTypes.default.number),\n /*\n * Min X & Y measure\n * */\n minConstraints: _propTypes.default.arrayOf(_propTypes.default.number),\n /*\n * Called on stop resize event\n * */\n onResizeStop: _propTypes.default.func,\n /*\n * Called on start resize event\n * */\n onResizeStart: _propTypes.default.func,\n /*\n * Called on resize event\n * */\n onResize: _propTypes.default.func,\n /*\n * Defines which resize handles should be rendered (default: 'se')\n * 's' - South handle (bottom-center)\n * 'w' - West handle (left-center)\n * 'e' - East handle (right-center)\n * 'n' - North handle (top-center)\n * 'sw' - Southwest handle (bottom-left)\n * 'nw' - Northwest handle (top-left)\n * 'se' - Southeast handle (bottom-right)\n * 'ne' - Northeast handle (top-center)\n * */\n resizeHandles: _propTypes.default.arrayOf(_propTypes.default.oneOf(['s', 'w', 'e', 'n', 'sw', 'nw', 'se', 'ne'])),\n /*\n * If `transform: scale(n)` is set on the parent, this should be set to `n`.\n * */\n transformScale: _propTypes.default.number,\n /*\n * Initial width\n */\n width: function width() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n var props = args[0];\n // Required if resizing width or both\n if (props.axis === 'both' || props.axis === 'x') {\n var _PropTypes$number2;\n return (_PropTypes$number2 = _propTypes.default.number).isRequired.apply(_PropTypes$number2, args);\n }\n return _propTypes.default.number.apply(_propTypes.default, args);\n }\n};\nexports.resizableProps = resizableProps;","\"use strict\";\n\nexports.__esModule = true;\nexports.cloneElement = cloneElement;\nvar _react = _interopRequireDefault(require(\"react\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\n// React.addons.cloneWithProps look-alike that merges style & className.\nfunction cloneElement(element, props) {\n if (props.style && element.props.style) {\n props.style = _objectSpread(_objectSpread({}, element.props.style), props.style);\n }\n if (props.className && element.props.className) {\n props.className = element.props.className + \" \" + props.className;\n }\n return /*#__PURE__*/_react.default.cloneElement(element, props);\n}","'use strict';\nmodule.exports = function() {\n throw new Error(\"Don't instantiate Resizable directly! Use require('react-resizable').Resizable\");\n};\n\nmodule.exports.Resizable = require('./build/Resizable').default;\nmodule.exports.ResizableBox = require('./build/ResizableBox').default;\n","/**\n * @license React\n * react-jsx-runtime.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var f=require(\"react\"),k=Symbol.for(\"react.element\"),l=Symbol.for(\"react.fragment\"),m=Object.prototype.hasOwnProperty,n=f.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,p={key:!0,ref:!0,__self:!0,__source:!0};\nfunction q(c,a,g){var b,d={},e=null,h=null;void 0!==g&&(e=\"\"+g);void 0!==a.key&&(e=\"\"+a.key);void 0!==a.ref&&(h=a.ref);for(b in a)m.call(a,b)&&!p.hasOwnProperty(b)&&(d[b]=a[b]);if(c&&c.defaultProps)for(b in a=c.defaultProps,a)void 0===d[b]&&(d[b]=a[b]);return{$$typeof:k,type:c,key:e,ref:h,props:d,_owner:n.current}}exports.Fragment=l;exports.jsx=q;exports.jsxs=q;\n","/**\n * @license React\n * react.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var l=Symbol.for(\"react.element\"),n=Symbol.for(\"react.portal\"),p=Symbol.for(\"react.fragment\"),q=Symbol.for(\"react.strict_mode\"),r=Symbol.for(\"react.profiler\"),t=Symbol.for(\"react.provider\"),u=Symbol.for(\"react.context\"),v=Symbol.for(\"react.forward_ref\"),w=Symbol.for(\"react.suspense\"),x=Symbol.for(\"react.memo\"),y=Symbol.for(\"react.lazy\"),z=Symbol.iterator;function A(a){if(null===a||\"object\"!==typeof a)return null;a=z&&a[z]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}\nvar B={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},C=Object.assign,D={};function E(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B}E.prototype.isReactComponent={};\nE.prototype.setState=function(a,b){if(\"object\"!==typeof a&&\"function\"!==typeof a&&null!=a)throw Error(\"setState(...): takes an object of state variables to update or a function which returns an object of state variables.\");this.updater.enqueueSetState(this,a,b,\"setState\")};E.prototype.forceUpdate=function(a){this.updater.enqueueForceUpdate(this,a,\"forceUpdate\")};function F(){}F.prototype=E.prototype;function G(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B}var H=G.prototype=new F;\nH.constructor=G;C(H,E.prototype);H.isPureReactComponent=!0;var I=Array.isArray,J=Object.prototype.hasOwnProperty,K={current:null},L={key:!0,ref:!0,__self:!0,__source:!0};\nfunction M(a,b,e){var d,c={},k=null,h=null;if(null!=b)for(d in void 0!==b.ref&&(h=b.ref),void 0!==b.key&&(k=\"\"+b.key),b)J.call(b,d)&&!L.hasOwnProperty(d)&&(c[d]=b[d]);var g=arguments.length-2;if(1===g)c.children=e;else if(1>>1,e=a[d];if(0>>1;dg(C,c))ng(x,C)?(a[d]=x,a[n]=c,d=n):(a[d]=C,a[m]=c,d=m);else if(ng(x,c))a[d]=x,a[n]=c,d=n;else break a}}return b}\nfunction g(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}if(\"object\"===typeof performance&&\"function\"===typeof performance.now){var l=performance;exports.unstable_now=function(){return l.now()}}else{var p=Date,q=p.now();exports.unstable_now=function(){return p.now()-q}}var r=[],t=[],u=1,v=null,y=3,z=!1,A=!1,B=!1,D=\"function\"===typeof setTimeout?setTimeout:null,E=\"function\"===typeof clearTimeout?clearTimeout:null,F=\"undefined\"!==typeof setImmediate?setImmediate:null;\n\"undefined\"!==typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function G(a){for(var b=h(t);null!==b;){if(null===b.callback)k(t);else if(b.startTime<=a)k(t),b.sortIndex=b.expirationTime,f(r,b);else break;b=h(t)}}function H(a){B=!1;G(a);if(!A)if(null!==h(r))A=!0,I(J);else{var b=h(t);null!==b&&K(H,b.startTime-a)}}\nfunction J(a,b){A=!1;B&&(B=!1,E(L),L=-1);z=!0;var c=y;try{G(b);for(v=h(r);null!==v&&(!(v.expirationTime>b)||a&&!M());){var d=v.callback;if(\"function\"===typeof d){v.callback=null;y=v.priorityLevel;var e=d(v.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?v.callback=e:v===h(r)&&k(r);G(b)}else k(r);v=h(r)}if(null!==v)var w=!0;else{var m=h(t);null!==m&&K(H,m.startTime-b);w=!1}return w}finally{v=null,y=c,z=!1}}var N=!1,O=null,L=-1,P=5,Q=-1;\nfunction M(){return exports.unstable_now()-Qa||125d?(a.sortIndex=c,f(t,a),null===h(r)&&a===h(t)&&(B?(E(L),L=-1):B=!0,K(H,c-d))):(a.sortIndex=e,f(r,a),A||z||(A=!0,I(J)));return a};\nexports.unstable_shouldYield=M;exports.unstable_wrapCallback=function(a){var b=y;return function(){var c=y;y=b;try{return a.apply(this,arguments)}finally{y=c}}};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n module.exports = require('./cjs/scheduler.development.js');\n}\n","import parse from 'inline-style-parser';\nimport type { Declaration } from 'inline-style-parser';\n\nexport { Declaration };\n\ninterface StyleObject {\n [name: string]: string;\n}\n\ntype Iterator = (\n property: string,\n value: string,\n declaration: Declaration,\n) => void;\n\n/**\n * Parses inline style to object.\n *\n * @param style - Inline style.\n * @param iterator - Iterator.\n * @returns - Style object or null.\n *\n * @example Parsing inline style to object:\n *\n * ```js\n * import parse from 'style-to-object';\n * parse('line-height: 42;'); // { 'line-height': '42' }\n * ```\n */\nexport default function StyleToObject(\n style: string,\n iterator?: Iterator,\n): StyleObject | null {\n let styleObject: StyleObject | null = null;\n\n if (!style || typeof style !== 'string') {\n return styleObject;\n }\n\n const declarations = parse(style);\n const hasIterator = typeof iterator === 'function';\n\n declarations.forEach((declaration) => {\n if (declaration.type !== 'declaration') {\n return;\n }\n\n const { property, value } = declaration;\n\n if (hasIterator) {\n iterator(property, value, declaration);\n } else if (value) {\n styleObject = styleObject || {};\n styleObject[property] = value;\n }\n });\n\n return styleObject;\n}\n","var map = {\n\t\"./folder-icon-macos.png\": 964,\n\t\"./folder-icon-ubuntu.png\": 122,\n\t\"./folder-icon-windows.png\": 516,\n\t\"./folder-icon.png\": 164\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 861;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.p = \"/cv_os/\";","import React, { useState } from 'react';\nimport '../../styles/view/DockIcon.css';\n\n\nconst DockIcon = ({ icon }) => {\n const [showTooltip, setShowTooltip] = useState(false);\n\n return (\n setShowTooltip(true)}\n onMouseLeave={() => setShowTooltip(false)}\n onClick={() => icon.onclick && icon.onclick()}\n >\n {icon.alt}\n {showTooltip &&
{icon.alt}
}\n \n );\n};\n\nexport default DockIcon;\n","\nimport '../../styles/view/AppWindow.css';\nimport React, { useState, useRef, cloneElement, useEffect } from 'react';\nimport Draggable from 'react-draggable';\nimport { ResizableBox } from 'react-resizable';\nimport 'react-resizable/css/styles.css';\nimport { AppContext } from '../../hooks/AppContext';\n\nfunction AppWindow({itemKey, title, onWindowClose, children}) {\n const [isMinimized, setIsMinimized] = useState(false);\n const [isMaximized, setIsMaximized] = useState(false);\n const contentRef = useRef(null);\n const [size, setSize] = useState({ width: 400, height: 300 });\n const [prev_size, prev_setSize] = useState({ width: 400, height: 300 });\n const inputRef = useRef(null);\n const {feel, windowFactory} = React.useContext(AppContext);\n \n useEffect(() => {\n if (contentRef.current) {\n const { offsetWidth, offsetHeight } = contentRef.current;\n setSize({ width: offsetWidth, height: offsetHeight });\n }\n }, [children]);\n\n const toggleMinimize = () => {\n if (!isMaximized) {\n setIsMinimized(!isMinimized);\n }\n };\n\n const toggleMaximize = () => {\n if (!isMaximized){\n prev_setSize(size);\n setSize({ width: window.innerWidth, height: window.innerHeight });\n }\n else{\n setSize(prev_size);\n }\n setIsMaximized(!isMaximized);\n \n if (isMinimized) {\n setIsMinimized(false);\n }\n };\n\n const handleContainerClick = () => {\n if (inputRef.current) {\n inputRef.current.focus();\n }\n };\n\n const ChildrenWithProps = React.Children.map(children, child =>\n cloneElement(child, { ...child.props, inputRef, onWindowClose, itemKey}),\n )\n\n const onCloseWindow = (e) => {\n onWindowClose(e, itemKey);\n }\n\n const getBar = () => {\n return windowFactory.createAppBar(\n {title, isMaximized, onClose: onCloseWindow,\n onMinimize: toggleMinimize, onMaximize: toggleMaximize}\n );\n }\n const getCorners = () => {\n if (isMinimized){\n return [];\n }\n const top_corner = feel.isMacOs() ? \"ne\" : \"nw\";\n return [top_corner, \"se\" , \"sw\"];\n }\n \n return(\n \n \n e.stopPropagation()}\n minConstraints={[size.width, size.height]}\n maxConstraints={[size.width * 100, size.height * 100]}\n resizeHandles={getCorners()} \n style={{border: '2px solid #0000', position: 'relative', 'pointerEvents': 'auto'}}\n >\n
\n {getBar()}\n {!isMinimized && ChildrenWithProps}\n
\n \n
\n \n ) \n}\n\nexport default AppWindow;\n\n","\nimport publications from './files/publications.json';\nimport certifications from './files/certifications.json';\nimport software from './files/software.json';\nimport skills from './files/skills.json';\nimport teaching from './files/teaching.json';\nimport scientific_activities from './files/scientific_activities.json';\nimport hobbies from './files/hobbies.json';\nimport socials from './files/socials.json';\nimport contributing from './files/contributing.json';\n\n\nclass Directory {\n constructor(name, parentDirectory, content=[]) {\n this.name = name;\n this.content = content;\n this.parentDirectory = parentDirectory;\n }\n\n addContent(content) {\n this.content.push(content);\n }\n\n clone() {\n return new Directory(this.name, this.parentDirectory, this.content.map((item) => item.clone()));\n }\n}\n\nclass File {\n constructor(id, content, parentDirectory=null) {\n this.name = id;\n this.content = content;\n this.parentDirectory = parentDirectory;\n }\n clone() {\n return new File(this.name, this.content, this.parentDirectory);\n }\n\n getFilePath(){\n return this.content.url || this.content.filepath || this.content.filename;\n }\n\n}\n\n\n\nfunction loadData(dirname, data, parentDirectory=null){\n if (Array.isArray(data)){\n const dir = new Directory(dirname, parentDirectory, []);\n data.forEach((item) => dir.addContent(loadData(dirname, item, dir)));\n return dir;\n \n }\n else if (typeof data === 'object'){\n return new File(inferName(data) ? inferName(data) : dirname, data, parentDirectory);\n }\n return null;\n}\n\nfunction inferName(data){\n return data.title || data.name || data.filename || data.id;\n}\n\n\nfunction loadAppData(){\n let data = new Directory('root', null);\n data.addContent(loadData('publications', publications, data));\n data.addContent(loadData('certifications', certifications, data));\n const skillsDir = new Directory('skills', data);\n skillsDir.content = Object.keys(skills).map((item) => loadData(item, skills[item], skillsDir));\n data.addContent(skillsDir);\n data.addContent(loadData('software', software, data));\n const teachingDir = new Directory('teaching', data);\n teachingDir.content = Object.keys(teaching).map((item) => loadData(item, teaching[item], teachingDir));\n data.addContent(teachingDir);\n const scientificDir = new Directory('scientific_activities', data);\n scientificDir.content = Object.keys(scientific_activities).map((item) => loadData(item, scientific_activities[item], scientificDir));\n data.addContent(scientificDir);\n data.addContent(loadData('hobbies', hobbies, data));\n data.addContent(loadData('socials', socials, data));\n data.addContent(loadData('contributing.md', contributing, data));\n return data;\n}\n\nconst data = loadAppData();\n\n\nexport {data, Directory, File};","import { useState, useEffect } from 'react';\n\nconst useNetworkStatus = () => {\n const [isOnline, setIsOnline] = useState(navigator.onLine);\n\n useEffect(() => {\n const updateNetworkStatus = () => setIsOnline(navigator.onLine);\n\n window.addEventListener('online', updateNetworkStatus);\n window.addEventListener('offline', updateNetworkStatus);\n\n return () => {\n window.removeEventListener('online', updateNetworkStatus);\n window.removeEventListener('offline', updateNetworkStatus);\n };\n }, []);\n\n return isOnline;\n};\n\nexport default useNetworkStatus;\n","\nclass OSFeel {\n static MacOs = new OSFeel(\"MacOs\")\n static Windows = new OSFeel(\"Windows\")\n static Ubuntu = new OSFeel(\"Ubuntu\")\n \n constructor(name) {\n this.name = name\n }\n\n isMacOs() {\n return this.name === OSFeel.MacOs.name\n }\n\n isWindows() {\n return this.name === OSFeel.Windows.name\n }\n\n isUbuntu() {\n return this.name === OSFeel.Ubuntu.name\n }\n\n}\n\nclass AppTheme {\n static Dark = new AppTheme(\"Dark\")\n static Light = new AppTheme(\"Light\")\n \n constructor(name) {\n this.name = name\n }\n \n isDark() {\n return this.name === AppTheme.Dark.name\n }\n\n isLight() {\n return this.name === AppTheme.Light.name\n }\n \n}\n\nexport {OSFeel, AppTheme};","import { useState, useEffect } from 'react';\nimport {AppTheme} from '../constants/enums.js';\n\nconst useTheme = () => {\n const [theme, setTheme] = useState( new AppTheme(localStorage.getItem('theme') || AppTheme.Light.name));\n\n useEffect(() => {\n document.documentElement.setAttribute('data-theme', theme.name.toLowerCase());\n localStorage.setItem('theme', theme.name);\n }, [theme]);\n\n const toggleTheme = () => {\n setTheme(prevTheme => (prevTheme.isDark() ? AppTheme.Light : AppTheme.Dark));\n };\n\n return [theme, toggleTheme];\n};\n\nexport default useTheme;\n","\n\nconst iconImgFromType = (icon_type, os_type='') => {\n switch(icon_type){\n case 'folder':\n return require(`../assets/folder-icon${os_type === ''? os_type : '-' + os_type.toLowerCase()}.png`)\n default:\n return require('../assets/file-icon.png')}\n}\n\nconst getFilesURL = () => {\n \n return process.env.PUBLIC_URL + \"/data/files\"; \n \n //return process.env.PUBLIC_URL + \"/data/files\";\n}\n\n\nconst getFilesPrefix = () => {\n return 'cv_os';\n}\n\n \nfunction replaceLastOccurrence(originalStr, searchStr, replaceStr) {\n const lastIndex = originalStr.lastIndexOf(searchStr);\n\n if (lastIndex === -1) {\n // If the search string is not found, return the original string\n return originalStr;\n }\n\n // Slice the string into two parts and replace the last occurrence\n const beforeLastOccurrence = originalStr.slice(0, lastIndex);\n const afterLastOccurrence = originalStr.slice(lastIndex + searchStr.length);\n\n // Concatenate the parts with the replacement string\n return beforeLastOccurrence + replaceStr + afterLastOccurrence;\n}\n\nexport {iconImgFromType, getFilesURL, getFilesPrefix, replaceLastOccurrence}","import '../../styles/view/AppWindow.css';\nimport { iconImgFromType } from '../../utils/utils';\n\n\nfunction MacOsAppBar({title, isMaximized, onClose, onMinimize, onMaximize}) {\n return (\n
\n
\n
\n
x
\n
\n
\n
{isMaximized? '': '-'}
\n
\n
\n
\n
\n
\n
{title}
\n
\n )\n}\n\nfunction UbuntuAppBar({title, isMaximized, onClose, onMinimize, onMaximize}) {\n return (\n
\n
{title}
\n
\n
\n
{isMaximized? '': '-'}
\n
\n
\n
\n
\n
\n
x
\n
\n
\n
\n )\n}\n\n\n\nfunction WindowsAppBar({title, isMaximized, onClose, onMinimize, onMaximize, file_type='folder'}) {\n return (\n
\n
\n \"Windows\n
{title}
\n
\n
\n \n \n \n \n
\n
\n )\n}\n\nexport {MacOsAppBar, WindowsAppBar, UbuntuAppBar};\n\n","\nimport React from 'react';\nimport AppWindow from '../view/apps/AppWindow';\nimport { MacOsAppBar, UbuntuAppBar, WindowsAppBar } from '../view/apps/WindowAppBar';\n\n\nexport const WindowsFactory = {\n createAppBar: (props) => ,\n createDock: (props) => ,\n};\n\n\nexport const MacOSFactory = {\n createAppBar: (props) => ,\n createDock: (props) => ,\n};\n\n\nexport const UbuntuFactory = {\n createAppBar: (props) => ,\n createDock: (props) => ,\n};\n","import { useState, useEffect, useMemo } from 'react';\nimport { WindowsFactory, MacOSFactory, UbuntuFactory } from '../factories/OSComponentFactory';\nimport { OSFeel } from '../constants/enums';\n\n\nconst useOsFeel = () => {\n const [feel, setFeel] = useState( new OSFeel(localStorage.getItem('feel') || OSFeel.MacOs.name ));\n\n useEffect(() => {\n document.documentElement.setAttribute('os-feel', feel.name);\n localStorage.setItem('feel', feel.name);\n }, [feel]);\n\n const windowFactory = useMemo(() => {\n if (feel.isMacOs()){\n return MacOSFactory;\n }\n else if (feel.isWindows()){\n return WindowsFactory;\n }\n else if (feel.isUbuntu()){\n return UbuntuFactory;\n }\n return MacOSFactory;\n }, [feel]);\n\n const toggleFeel = (ff) => {\n const new_feel = ff instanceof OSFeel ? ff : new OSFeel(ff);\n setFeel(new_feel);\n };\n\n return [feel, toggleFeel, windowFactory];\n};\n\nexport default useOsFeel;\n","import React, { createContext, useEffect, useReducer, useCallback, cloneElement } from 'react';\nimport AppWindow from '../view/apps/AppWindow';\nimport { data } from '../data/data';\nimport useNetworkStatus from '../hooks/useNetworkStatus';\nimport useTheme from './useTheme';\nimport useOsFeel from './useOSFeel';\n\nconst AppContext = createContext();\n\nconst initialState = {\n fs: data,\n windowApps: [],\n suspended: false,\n openWindowCount: 0,\n};\n\nconst reducer = (state, action) => {\n switch (action.type) {\n case 'SET_THEME':\n return { ...state, theme: action.theme };\n case 'SET_FS':\n return { ...state, fs: action.fs };\n case 'ADD_APP':\n const newApp = (\n \n {cloneElement(action.app, { ...action.app.props, windowKey: state.openWindowCount })}\n \n );\n return {\n ...state,\n windowApps: [...state.windowApps, newApp],\n openWindowCount: state.openWindowCount + 1,\n };\n case 'REPLACE_APP':\n const replacedApp = (\n \n {action.app}\n \n );\n const updatedApps = state.windowApps.map((window) =>\n window.props.itemKey === action.itemKey ? replacedApp : window\n );\n return { ...state, windowApps: updatedApps };\n case 'POP_APPS':\n return { ...state, windowApps: [] };\n case 'POP_APP':\n const remainingApps = state.windowApps.filter((window) => window.props.itemKey !== action.itemKey);\n return { ...state, windowApps: remainingApps };\n case 'SET_SUSPEND':\n return { ...state, suspended: action.suspended };\n default:\n return state;\n }\n};\n\nconst AppProvider = ({ children }) => {\n const [state, dispatch] = useReducer(reducer, initialState);\n const isOnline = useNetworkStatus();\n const [theme, toggleTheme] = useTheme();\n const [feel, toggleFeel, windowFactory] = useOsFeel();\n\n\n useEffect(() => {\n dispatch({ type: 'SET_ONLINE_STATUS', isOnline });\n }, [isOnline]);\n\n const setFS = (fs) => {\n dispatch({ type: 'SET_FS', fs });\n };\n\n const addApp = (title, app) => {\n dispatch({\n type: 'ADD_APP',\n title,\n app,\n popApp,\n });\n };\n\n const replaceApp = (itemKey, title, app) => {\n dispatch({\n type: 'REPLACE_APP',\n itemKey,\n title,\n app,\n popApp,\n });\n };\n\n const popApp = useCallback((_, itemKey) => {\n dispatch({ type: 'POP_APP', itemKey });\n }, []);\n\n const setSuspend = (suspended) => {\n dispatch({ type: 'SET_SUSPEND', suspended });\n };\n\n const onShutdown = () => {\n setSuspend(true);\n dispatch({ type: 'POP_APPS'});\n };\n\n const onSuspend = () => {\n setSuspend(true);\n };\n\n const onChangeFeel = (feel) => {\n toggleFeel(feel);\n };\n\n return (\n \n {children}\n \n );\n};\n\nexport { AppContext, AppProvider };\n","import React from 'react';\nimport '../../styles/view/Dock.css';\nimport DockIcon from './DockIcon';\nimport { AppContext } from '../../hooks/AppContext';\n\nconst Dock = ({icons}) => {\n \n const {feel, theme} = React.useContext(AppContext);\n\n const feel_style = (feel) => {\n if (feel.isMacOs()){\n return '';\n }\n else if (feel.isWindows()){\n return 'windows_dock';\n }\n else if (feel.isUbuntu()){\n return 'ubuntu_dock';\n }\n return '';\n };\n\n return (\n
\n {icons.map((icon, index) => (\n \n ))}\n
\n );\n};\n\nexport default Dock;\n","import React, {useState} from 'react';\nimport '../../styles/view/Desktop.css';\nimport Draggable from 'react-draggable';\nimport { iconImgFromType } from '../../utils/utils';\nimport { AppContext } from '../../hooks/AppContext';\n\nconst DesktopIcon = ({ icon}) => {\n const [showTooltip, setShowTooltip] = useState(false);\n const {feel} = React.useContext(AppContext);\n\n const handleClick = (e, f) => {\n if (f){\n f();\n } \n }\n\n return (\n e.stopPropagation()}>\n
setShowTooltip(true)}\n onMouseLeave={() => setShowTooltip(false)}\n onClick={(e) => handleClick(e, icon.onclick)}>\n {icon.name}\n

{icon.name.replace(\"_\", \" \")}

\n {showTooltip &&
{icon.name}
}\n
\n
\n );\n};\n\nexport default DesktopIcon;\n","export const STRINGS = {\n APP_FOLDER: {\n SEARCH_PLACEHOLDER: 'Search...',\n BACK_BUTTON: 'Back',\n SELECT_TEXT: \"Select\",\n OPEN_BUTTON: 'Open',\n \n },\n TERMINAL: {\n PROMP_STRING_PREFIX: 'cv@rrua:',\n WELCOME_MESSAGE: \"Welcome to the Terminal interface of the CV OS, built by Rui Rua. To know which commands are available, use the help command.\",\n HELP_COMMAND: 'Display available commands and their descriptions',\n HISTORY_COMMAND: 'Display command history',\n\n },\n SETTINGS: {\n DARK_MODE: 'Dark Mode',\n SHUTDOWN: 'Shutdown',\n SUSPEND: 'Suspend',\n STATUS: 'Status',\n ONLINE: 'Online',\n OFFLINE: 'Offline',\n OS_FEEL: 'OS Feel',\n DEFAULT_USERNAME: 'Guest',\n\n\n },\n SUSPENDED_SCREEN: {\n WELCOME_MESSAGE: 'Welcome Guest',\n LOGIN_BUTTON: 'LogIn',\n },\n DOCK: {\n CV_LINK: 'https://rrua.github.io/files/CV_RuiRua_24.pdf',\n LINKTREE_LINK : \"https://linktr.ee/ruirua\",\n PERSONAL_WEBSITE_LINK: 'https://rrua.github.io/',\n }\n}","/**\n * @typedef Options\n * Configuration.\n * @property {boolean | null | undefined} [jsx=false]\n * Support JSX identifiers (default: `false`).\n */\n\nconst startRe = /[$_\\p{ID_Start}]/u\nconst contRe = /[$_\\u{200C}\\u{200D}\\p{ID_Continue}]/u\nconst contReJsx = /[-$_\\u{200C}\\u{200D}\\p{ID_Continue}]/u\nconst nameRe = /^[$_\\p{ID_Start}][$_\\u{200C}\\u{200D}\\p{ID_Continue}]*$/u\nconst nameReJsx = /^[$_\\p{ID_Start}][-$_\\u{200C}\\u{200D}\\p{ID_Continue}]*$/u\n\n/** @type {Options} */\nconst emptyOptions = {}\n\n/**\n * Checks if the given code point can start an identifier.\n *\n * @param {number | undefined} code\n * Code point to check.\n * @returns {boolean}\n * Whether `code` can start an identifier.\n */\n// Note: `undefined` is supported so you can pass the result from `''.codePointAt`.\nexport function start(code) {\n return code ? startRe.test(String.fromCodePoint(code)) : false\n}\n\n/**\n * Checks if the given code point can continue an identifier.\n *\n * @param {number | undefined} code\n * Code point to check.\n * @param {Options | null | undefined} [options]\n * Configuration (optional).\n * @returns {boolean}\n * Whether `code` can continue an identifier.\n */\n// Note: `undefined` is supported so you can pass the result from `''.codePointAt`.\nexport function cont(code, options) {\n const settings = options || emptyOptions\n const re = settings.jsx ? contReJsx : contRe\n return code ? re.test(String.fromCodePoint(code)) : false\n}\n\n/**\n * Checks if the given value is a valid identifier name.\n *\n * @param {string} name\n * Identifier to check.\n * @param {Options | null | undefined} [options]\n * Configuration (optional).\n * @returns {boolean}\n * Whether `name` can be an identifier.\n */\nexport function name(name, options) {\n const settings = options || emptyOptions\n const re = settings.jsx ? nameReJsx : nameRe\n return re.test(name)\n}\n","/**\n * @typedef {import('hast').Nodes} Nodes\n */\n\n// HTML whitespace expression.\n// See .\nconst re = /[ \\t\\n\\f\\r]/g\n\n/**\n * Check if the given value is *inter-element whitespace*.\n *\n * @param {Nodes | string} thing\n * Thing to check (`Node` or `string`).\n * @returns {boolean}\n * Whether the `value` is inter-element whitespace (`boolean`): consisting of\n * zero or more of space, tab (`\\t`), line feed (`\\n`), carriage return\n * (`\\r`), or form feed (`\\f`); if a node is passed it must be a `Text` node,\n * whose `value` field is checked.\n */\nexport function whitespace(thing) {\n return typeof thing === 'object'\n ? thing.type === 'text'\n ? empty(thing.value)\n : false\n : empty(thing)\n}\n\n/**\n * @param {string} value\n * @returns {boolean}\n */\nfunction empty(value) {\n return value.replace(re, '') === ''\n}\n","/**\n * @typedef {import('./info.js').Info} Info\n * @typedef {Record} Properties\n * @typedef {Record} Normal\n */\n\nexport class Schema {\n /**\n * @constructor\n * @param {Properties} property\n * @param {Normal} normal\n * @param {string} [space]\n */\n constructor(property, normal, space) {\n this.property = property\n this.normal = normal\n if (space) {\n this.space = space\n }\n }\n}\n\n/** @type {Properties} */\nSchema.prototype.property = {}\n/** @type {Normal} */\nSchema.prototype.normal = {}\n/** @type {string|null} */\nSchema.prototype.space = null\n","/**\n * @typedef {import('./schema.js').Properties} Properties\n * @typedef {import('./schema.js').Normal} Normal\n */\n\nimport {Schema} from './schema.js'\n\n/**\n * @param {Schema[]} definitions\n * @param {string} [space]\n * @returns {Schema}\n */\nexport function merge(definitions, space) {\n /** @type {Properties} */\n const property = {}\n /** @type {Normal} */\n const normal = {}\n let index = -1\n\n while (++index < definitions.length) {\n Object.assign(property, definitions[index].property)\n Object.assign(normal, definitions[index].normal)\n }\n\n return new Schema(property, normal, space)\n}\n","/**\n * @param {string} value\n * @returns {string}\n */\nexport function normalize(value) {\n return value.toLowerCase()\n}\n","export class Info {\n /**\n * @constructor\n * @param {string} property\n * @param {string} attribute\n */\n constructor(property, attribute) {\n /** @type {string} */\n this.property = property\n /** @type {string} */\n this.attribute = attribute\n }\n}\n\n/** @type {string|null} */\nInfo.prototype.space = null\nInfo.prototype.boolean = false\nInfo.prototype.booleanish = false\nInfo.prototype.overloadedBoolean = false\nInfo.prototype.number = false\nInfo.prototype.commaSeparated = false\nInfo.prototype.spaceSeparated = false\nInfo.prototype.commaOrSpaceSeparated = false\nInfo.prototype.mustUseProperty = false\nInfo.prototype.defined = false\n","let powers = 0\n\nexport const boolean = increment()\nexport const booleanish = increment()\nexport const overloadedBoolean = increment()\nexport const number = increment()\nexport const spaceSeparated = increment()\nexport const commaSeparated = increment()\nexport const commaOrSpaceSeparated = increment()\n\nfunction increment() {\n return 2 ** ++powers\n}\n","import {Info} from './info.js'\nimport * as types from './types.js'\n\n/** @type {Array} */\n// @ts-expect-error: hush.\nconst checks = Object.keys(types)\n\nexport class DefinedInfo extends Info {\n /**\n * @constructor\n * @param {string} property\n * @param {string} attribute\n * @param {number|null} [mask]\n * @param {string} [space]\n */\n constructor(property, attribute, mask, space) {\n let index = -1\n\n super(property, attribute)\n\n mark(this, 'space', space)\n\n if (typeof mask === 'number') {\n while (++index < checks.length) {\n const check = checks[index]\n mark(this, checks[index], (mask & types[check]) === types[check])\n }\n }\n }\n}\n\nDefinedInfo.prototype.defined = true\n\n/**\n * @param {DefinedInfo} values\n * @param {string} key\n * @param {unknown} value\n */\nfunction mark(values, key, value) {\n if (value) {\n // @ts-expect-error: assume `value` matches the expected value of `key`.\n values[key] = value\n }\n}\n","/**\n * @typedef {import('./schema.js').Properties} Properties\n * @typedef {import('./schema.js').Normal} Normal\n *\n * @typedef {Record} Attributes\n *\n * @typedef {Object} Definition\n * @property {Record} properties\n * @property {(attributes: Attributes, property: string) => string} transform\n * @property {string} [space]\n * @property {Attributes} [attributes]\n * @property {Array} [mustUseProperty]\n */\n\nimport {normalize} from '../normalize.js'\nimport {Schema} from './schema.js'\nimport {DefinedInfo} from './defined-info.js'\n\nconst own = {}.hasOwnProperty\n\n/**\n * @param {Definition} definition\n * @returns {Schema}\n */\nexport function create(definition) {\n /** @type {Properties} */\n const property = {}\n /** @type {Normal} */\n const normal = {}\n /** @type {string} */\n let prop\n\n for (prop in definition.properties) {\n if (own.call(definition.properties, prop)) {\n const value = definition.properties[prop]\n const info = new DefinedInfo(\n prop,\n definition.transform(definition.attributes || {}, prop),\n value,\n definition.space\n )\n\n if (\n definition.mustUseProperty &&\n definition.mustUseProperty.includes(prop)\n ) {\n info.mustUseProperty = true\n }\n\n property[prop] = info\n\n normal[normalize(prop)] = prop\n normal[normalize(info.attribute)] = prop\n }\n }\n\n return new Schema(property, normal, definition.space)\n}\n","import {create} from './util/create.js'\n\nexport const xlink = create({\n space: 'xlink',\n transform(_, prop) {\n return 'xlink:' + prop.slice(5).toLowerCase()\n },\n properties: {\n xLinkActuate: null,\n xLinkArcRole: null,\n xLinkHref: null,\n xLinkRole: null,\n xLinkShow: null,\n xLinkTitle: null,\n xLinkType: null\n }\n})\n","import {create} from './util/create.js'\n\nexport const xml = create({\n space: 'xml',\n transform(_, prop) {\n return 'xml:' + prop.slice(3).toLowerCase()\n },\n properties: {xmlLang: null, xmlBase: null, xmlSpace: null}\n})\n","/**\n * @param {Record} attributes\n * @param {string} attribute\n * @returns {string}\n */\nexport function caseSensitiveTransform(attributes, attribute) {\n return attribute in attributes ? attributes[attribute] : attribute\n}\n","import {caseSensitiveTransform} from './case-sensitive-transform.js'\n\n/**\n * @param {Record} attributes\n * @param {string} property\n * @returns {string}\n */\nexport function caseInsensitiveTransform(attributes, property) {\n return caseSensitiveTransform(attributes, property.toLowerCase())\n}\n","import {create} from './util/create.js'\nimport {caseInsensitiveTransform} from './util/case-insensitive-transform.js'\n\nexport const xmlns = create({\n space: 'xmlns',\n attributes: {xmlnsxlink: 'xmlns:xlink'},\n transform: caseInsensitiveTransform,\n properties: {xmlns: null, xmlnsXLink: null}\n})\n","import {booleanish, number, spaceSeparated} from './util/types.js'\nimport {create} from './util/create.js'\n\nexport const aria = create({\n transform(_, prop) {\n return prop === 'role' ? prop : 'aria-' + prop.slice(4).toLowerCase()\n },\n properties: {\n ariaActiveDescendant: null,\n ariaAtomic: booleanish,\n ariaAutoComplete: null,\n ariaBusy: booleanish,\n ariaChecked: booleanish,\n ariaColCount: number,\n ariaColIndex: number,\n ariaColSpan: number,\n ariaControls: spaceSeparated,\n ariaCurrent: null,\n ariaDescribedBy: spaceSeparated,\n ariaDetails: null,\n ariaDisabled: booleanish,\n ariaDropEffect: spaceSeparated,\n ariaErrorMessage: null,\n ariaExpanded: booleanish,\n ariaFlowTo: spaceSeparated,\n ariaGrabbed: booleanish,\n ariaHasPopup: null,\n ariaHidden: booleanish,\n ariaInvalid: null,\n ariaKeyShortcuts: null,\n ariaLabel: null,\n ariaLabelledBy: spaceSeparated,\n ariaLevel: number,\n ariaLive: null,\n ariaModal: booleanish,\n ariaMultiLine: booleanish,\n ariaMultiSelectable: booleanish,\n ariaOrientation: null,\n ariaOwns: spaceSeparated,\n ariaPlaceholder: null,\n ariaPosInSet: number,\n ariaPressed: booleanish,\n ariaReadOnly: booleanish,\n ariaRelevant: null,\n ariaRequired: booleanish,\n ariaRoleDescription: spaceSeparated,\n ariaRowCount: number,\n ariaRowIndex: number,\n ariaRowSpan: number,\n ariaSelected: booleanish,\n ariaSetSize: number,\n ariaSort: null,\n ariaValueMax: number,\n ariaValueMin: number,\n ariaValueNow: number,\n ariaValueText: null,\n role: null\n }\n})\n","import {\n boolean,\n overloadedBoolean,\n booleanish,\n number,\n spaceSeparated,\n commaSeparated\n} from './util/types.js'\nimport {create} from './util/create.js'\nimport {caseInsensitiveTransform} from './util/case-insensitive-transform.js'\n\nexport const html = create({\n space: 'html',\n attributes: {\n acceptcharset: 'accept-charset',\n classname: 'class',\n htmlfor: 'for',\n httpequiv: 'http-equiv'\n },\n transform: caseInsensitiveTransform,\n mustUseProperty: ['checked', 'multiple', 'muted', 'selected'],\n properties: {\n // Standard Properties.\n abbr: null,\n accept: commaSeparated,\n acceptCharset: spaceSeparated,\n accessKey: spaceSeparated,\n action: null,\n allow: null,\n allowFullScreen: boolean,\n allowPaymentRequest: boolean,\n allowUserMedia: boolean,\n alt: null,\n as: null,\n async: boolean,\n autoCapitalize: null,\n autoComplete: spaceSeparated,\n autoFocus: boolean,\n autoPlay: boolean,\n blocking: spaceSeparated,\n capture: null,\n charSet: null,\n checked: boolean,\n cite: null,\n className: spaceSeparated,\n cols: number,\n colSpan: null,\n content: null,\n contentEditable: booleanish,\n controls: boolean,\n controlsList: spaceSeparated,\n coords: number | commaSeparated,\n crossOrigin: null,\n data: null,\n dateTime: null,\n decoding: null,\n default: boolean,\n defer: boolean,\n dir: null,\n dirName: null,\n disabled: boolean,\n download: overloadedBoolean,\n draggable: booleanish,\n encType: null,\n enterKeyHint: null,\n fetchPriority: null,\n form: null,\n formAction: null,\n formEncType: null,\n formMethod: null,\n formNoValidate: boolean,\n formTarget: null,\n headers: spaceSeparated,\n height: number,\n hidden: boolean,\n high: number,\n href: null,\n hrefLang: null,\n htmlFor: spaceSeparated,\n httpEquiv: spaceSeparated,\n id: null,\n imageSizes: null,\n imageSrcSet: null,\n inert: boolean,\n inputMode: null,\n integrity: null,\n is: null,\n isMap: boolean,\n itemId: null,\n itemProp: spaceSeparated,\n itemRef: spaceSeparated,\n itemScope: boolean,\n itemType: spaceSeparated,\n kind: null,\n label: null,\n lang: null,\n language: null,\n list: null,\n loading: null,\n loop: boolean,\n low: number,\n manifest: null,\n max: null,\n maxLength: number,\n media: null,\n method: null,\n min: null,\n minLength: number,\n multiple: boolean,\n muted: boolean,\n name: null,\n nonce: null,\n noModule: boolean,\n noValidate: boolean,\n onAbort: null,\n onAfterPrint: null,\n onAuxClick: null,\n onBeforeMatch: null,\n onBeforePrint: null,\n onBeforeToggle: null,\n onBeforeUnload: null,\n onBlur: null,\n onCancel: null,\n onCanPlay: null,\n onCanPlayThrough: null,\n onChange: null,\n onClick: null,\n onClose: null,\n onContextLost: null,\n onContextMenu: null,\n onContextRestored: null,\n onCopy: null,\n onCueChange: null,\n onCut: null,\n onDblClick: null,\n onDrag: null,\n onDragEnd: null,\n onDragEnter: null,\n onDragExit: null,\n onDragLeave: null,\n onDragOver: null,\n onDragStart: null,\n onDrop: null,\n onDurationChange: null,\n onEmptied: null,\n onEnded: null,\n onError: null,\n onFocus: null,\n onFormData: null,\n onHashChange: null,\n onInput: null,\n onInvalid: null,\n onKeyDown: null,\n onKeyPress: null,\n onKeyUp: null,\n onLanguageChange: null,\n onLoad: null,\n onLoadedData: null,\n onLoadedMetadata: null,\n onLoadEnd: null,\n onLoadStart: null,\n onMessage: null,\n onMessageError: null,\n onMouseDown: null,\n onMouseEnter: null,\n onMouseLeave: null,\n onMouseMove: null,\n onMouseOut: null,\n onMouseOver: null,\n onMouseUp: null,\n onOffline: null,\n onOnline: null,\n onPageHide: null,\n onPageShow: null,\n onPaste: null,\n onPause: null,\n onPlay: null,\n onPlaying: null,\n onPopState: null,\n onProgress: null,\n onRateChange: null,\n onRejectionHandled: null,\n onReset: null,\n onResize: null,\n onScroll: null,\n onScrollEnd: null,\n onSecurityPolicyViolation: null,\n onSeeked: null,\n onSeeking: null,\n onSelect: null,\n onSlotChange: null,\n onStalled: null,\n onStorage: null,\n onSubmit: null,\n onSuspend: null,\n onTimeUpdate: null,\n onToggle: null,\n onUnhandledRejection: null,\n onUnload: null,\n onVolumeChange: null,\n onWaiting: null,\n onWheel: null,\n open: boolean,\n optimum: number,\n pattern: null,\n ping: spaceSeparated,\n placeholder: null,\n playsInline: boolean,\n popover: null,\n popoverTarget: null,\n popoverTargetAction: null,\n poster: null,\n preload: null,\n readOnly: boolean,\n referrerPolicy: null,\n rel: spaceSeparated,\n required: boolean,\n reversed: boolean,\n rows: number,\n rowSpan: number,\n sandbox: spaceSeparated,\n scope: null,\n scoped: boolean,\n seamless: boolean,\n selected: boolean,\n shadowRootClonable: boolean,\n shadowRootDelegatesFocus: boolean,\n shadowRootMode: null,\n shape: null,\n size: number,\n sizes: null,\n slot: null,\n span: number,\n spellCheck: booleanish,\n src: null,\n srcDoc: null,\n srcLang: null,\n srcSet: null,\n start: number,\n step: null,\n style: null,\n tabIndex: number,\n target: null,\n title: null,\n translate: null,\n type: null,\n typeMustMatch: boolean,\n useMap: null,\n value: booleanish,\n width: number,\n wrap: null,\n writingSuggestions: null,\n\n // Legacy.\n // See: https://html.spec.whatwg.org/#other-elements,-attributes-and-apis\n align: null, // Several. Use CSS `text-align` instead,\n aLink: null, // ``. Use CSS `a:active {color}` instead\n archive: spaceSeparated, // ``. List of URIs to archives\n axis: null, // `` and ``. Use `scope` on ``\n background: null, // ``. Use CSS `background-image` instead\n bgColor: null, // `` and table elements. Use CSS `background-color` instead\n border: number, // ``. Use CSS `border-width` instead,\n borderColor: null, // `
`. Use CSS `border-color` instead,\n bottomMargin: number, // ``\n cellPadding: null, // `
`\n cellSpacing: null, // `
`\n char: null, // Several table elements. When `align=char`, sets the character to align on\n charOff: null, // Several table elements. When `char`, offsets the alignment\n classId: null, // ``\n clear: null, // `
`. Use CSS `clear` instead\n code: null, // ``\n codeBase: null, // ``\n codeType: null, // ``\n color: null, // `` and `
`. Use CSS instead\n compact: boolean, // Lists. Use CSS to reduce space between items instead\n declare: boolean, // ``\n event: null, // `\n * ^\n * ```\n *\n * @type {State}\n */\n function continuationRawTagOpen(code) {\n if (code === 47) {\n effects.consume(code);\n buffer = '';\n return continuationRawEndTag;\n }\n return continuation(code);\n }\n\n /**\n * In raw continuation, after ` | \n * ^^^^^^\n * ```\n *\n * @type {State}\n */\n function continuationRawEndTag(code) {\n if (code === 62) {\n const name = buffer.toLowerCase();\n if (htmlRawNames.includes(name)) {\n effects.consume(code);\n return continuationClose;\n }\n return continuation(code);\n }\n if (asciiAlpha(code) && buffer.length < 8) {\n effects.consume(code);\n // @ts-expect-error: not null.\n buffer += String.fromCharCode(code);\n return continuationRawEndTag;\n }\n return continuation(code);\n }\n\n /**\n * In cdata continuation, after `]`, expecting `]>`.\n *\n * ```markdown\n * > | &<]]>\n * ^\n * ```\n *\n * @type {State}\n */\n function continuationCdataInside(code) {\n if (code === 93) {\n effects.consume(code);\n return continuationDeclarationInside;\n }\n return continuation(code);\n }\n\n /**\n * In declaration or instruction continuation, at `>`.\n *\n * ```markdown\n * > | \n * ^\n * > | \n * ^\n * > | \n * ^\n * > | \n * ^\n * > | &<]]>\n * ^\n * ```\n *\n * @type {State}\n */\n function continuationDeclarationInside(code) {\n if (code === 62) {\n effects.consume(code);\n return continuationClose;\n }\n\n // More dashes.\n if (code === 45 && marker === 2) {\n effects.consume(code);\n return continuationDeclarationInside;\n }\n return continuation(code);\n }\n\n /**\n * In closed continuation: everything we get until the eol/eof is part of it.\n *\n * ```markdown\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function continuationClose(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit(\"htmlFlowData\");\n return continuationAfter(code);\n }\n effects.consume(code);\n return continuationClose;\n }\n\n /**\n * Done.\n *\n * ```markdown\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function continuationAfter(code) {\n effects.exit(\"htmlFlow\");\n // // Feel free to interrupt.\n // tokenizer.interrupt = false\n // // No longer concrete.\n // tokenizer.concrete = false\n return ok(code);\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeNonLazyContinuationStart(effects, ok, nok) {\n const self = this;\n return start;\n\n /**\n * At eol, before continuation.\n *\n * ```markdown\n * > | * ```js\n * ^\n * | b\n * ```\n *\n * @type {State}\n */\n function start(code) {\n if (markdownLineEnding(code)) {\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n return after;\n }\n return nok(code);\n }\n\n /**\n * A continuation.\n *\n * ```markdown\n * | * ```js\n * > | b\n * ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n return self.parser.lazy[self.now().line] ? nok(code) : ok(code);\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeBlankLineBefore(effects, ok, nok) {\n return start;\n\n /**\n * Before eol, expecting blank line.\n *\n * ```markdown\n * > |
\n * ^\n * |\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n return effects.attempt(blankLine, ok, nok);\n }\n}","/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding, markdownSpace } from 'micromark-util-character';\n/** @type {Construct} */\nconst nonLazyContinuation = {\n tokenize: tokenizeNonLazyContinuation,\n partial: true\n};\n\n/** @type {Construct} */\nexport const codeFenced = {\n name: 'codeFenced',\n tokenize: tokenizeCodeFenced,\n concrete: true\n};\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeCodeFenced(effects, ok, nok) {\n const self = this;\n /** @type {Construct} */\n const closeStart = {\n tokenize: tokenizeCloseStart,\n partial: true\n };\n let initialPrefix = 0;\n let sizeOpen = 0;\n /** @type {NonNullable} */\n let marker;\n return start;\n\n /**\n * Start of code.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function start(code) {\n // To do: parse whitespace like `markdown-rs`.\n return beforeSequenceOpen(code);\n }\n\n /**\n * In opening fence, after prefix, at sequence.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function beforeSequenceOpen(code) {\n const tail = self.events[self.events.length - 1];\n initialPrefix = tail && tail[1].type === \"linePrefix\" ? tail[2].sliceSerialize(tail[1], true).length : 0;\n marker = code;\n effects.enter(\"codeFenced\");\n effects.enter(\"codeFencedFence\");\n effects.enter(\"codeFencedFenceSequence\");\n return sequenceOpen(code);\n }\n\n /**\n * In opening fence sequence.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function sequenceOpen(code) {\n if (code === marker) {\n sizeOpen++;\n effects.consume(code);\n return sequenceOpen;\n }\n if (sizeOpen < 3) {\n return nok(code);\n }\n effects.exit(\"codeFencedFenceSequence\");\n return markdownSpace(code) ? factorySpace(effects, infoBefore, \"whitespace\")(code) : infoBefore(code);\n }\n\n /**\n * In opening fence, after the sequence (and optional whitespace), before info.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function infoBefore(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit(\"codeFencedFence\");\n return self.interrupt ? ok(code) : effects.check(nonLazyContinuation, atNonLazyBreak, after)(code);\n }\n effects.enter(\"codeFencedFenceInfo\");\n effects.enter(\"chunkString\", {\n contentType: \"string\"\n });\n return info(code);\n }\n\n /**\n * In info.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function info(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit(\"chunkString\");\n effects.exit(\"codeFencedFenceInfo\");\n return infoBefore(code);\n }\n if (markdownSpace(code)) {\n effects.exit(\"chunkString\");\n effects.exit(\"codeFencedFenceInfo\");\n return factorySpace(effects, metaBefore, \"whitespace\")(code);\n }\n if (code === 96 && code === marker) {\n return nok(code);\n }\n effects.consume(code);\n return info;\n }\n\n /**\n * In opening fence, after info and whitespace, before meta.\n *\n * ```markdown\n * > | ~~~js eval\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function metaBefore(code) {\n if (code === null || markdownLineEnding(code)) {\n return infoBefore(code);\n }\n effects.enter(\"codeFencedFenceMeta\");\n effects.enter(\"chunkString\", {\n contentType: \"string\"\n });\n return meta(code);\n }\n\n /**\n * In meta.\n *\n * ```markdown\n * > | ~~~js eval\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function meta(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit(\"chunkString\");\n effects.exit(\"codeFencedFenceMeta\");\n return infoBefore(code);\n }\n if (code === 96 && code === marker) {\n return nok(code);\n }\n effects.consume(code);\n return meta;\n }\n\n /**\n * At eol/eof in code, before a non-lazy closing fence or content.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * > | alert(1)\n * ^\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function atNonLazyBreak(code) {\n return effects.attempt(closeStart, after, contentBefore)(code);\n }\n\n /**\n * Before code content, not a closing fence, at eol.\n *\n * ```markdown\n * | ~~~js\n * > | alert(1)\n * ^\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function contentBefore(code) {\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n return contentStart;\n }\n\n /**\n * Before code content, not a closing fence.\n *\n * ```markdown\n * | ~~~js\n * > | alert(1)\n * ^\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function contentStart(code) {\n return initialPrefix > 0 && markdownSpace(code) ? factorySpace(effects, beforeContentChunk, \"linePrefix\", initialPrefix + 1)(code) : beforeContentChunk(code);\n }\n\n /**\n * Before code content, after optional prefix.\n *\n * ```markdown\n * | ~~~js\n * > | alert(1)\n * ^\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function beforeContentChunk(code) {\n if (code === null || markdownLineEnding(code)) {\n return effects.check(nonLazyContinuation, atNonLazyBreak, after)(code);\n }\n effects.enter(\"codeFlowValue\");\n return contentChunk(code);\n }\n\n /**\n * In code content.\n *\n * ```markdown\n * | ~~~js\n * > | alert(1)\n * ^^^^^^^^\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function contentChunk(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit(\"codeFlowValue\");\n return beforeContentChunk(code);\n }\n effects.consume(code);\n return contentChunk;\n }\n\n /**\n * After code.\n *\n * ```markdown\n * | ~~~js\n * | alert(1)\n * > | ~~~\n * ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n effects.exit(\"codeFenced\");\n return ok(code);\n }\n\n /**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\n function tokenizeCloseStart(effects, ok, nok) {\n let size = 0;\n return startBefore;\n\n /**\n *\n *\n * @type {State}\n */\n function startBefore(code) {\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n return start;\n }\n\n /**\n * Before closing fence, at optional whitespace.\n *\n * ```markdown\n * | ~~~js\n * | alert(1)\n * > | ~~~\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n // Always populated by defaults.\n\n // To do: `enter` here or in next state?\n effects.enter(\"codeFencedFence\");\n return markdownSpace(code) ? factorySpace(effects, beforeSequenceClose, \"linePrefix\", self.parser.constructs.disable.null.includes('codeIndented') ? undefined : 4)(code) : beforeSequenceClose(code);\n }\n\n /**\n * In closing fence, after optional whitespace, at sequence.\n *\n * ```markdown\n * | ~~~js\n * | alert(1)\n * > | ~~~\n * ^\n * ```\n *\n * @type {State}\n */\n function beforeSequenceClose(code) {\n if (code === marker) {\n effects.enter(\"codeFencedFenceSequence\");\n return sequenceClose(code);\n }\n return nok(code);\n }\n\n /**\n * In closing fence sequence.\n *\n * ```markdown\n * | ~~~js\n * | alert(1)\n * > | ~~~\n * ^\n * ```\n *\n * @type {State}\n */\n function sequenceClose(code) {\n if (code === marker) {\n size++;\n effects.consume(code);\n return sequenceClose;\n }\n if (size >= sizeOpen) {\n effects.exit(\"codeFencedFenceSequence\");\n return markdownSpace(code) ? factorySpace(effects, sequenceCloseAfter, \"whitespace\")(code) : sequenceCloseAfter(code);\n }\n return nok(code);\n }\n\n /**\n * After closing fence sequence, after optional whitespace.\n *\n * ```markdown\n * | ~~~js\n * | alert(1)\n * > | ~~~\n * ^\n * ```\n *\n * @type {State}\n */\n function sequenceCloseAfter(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit(\"codeFencedFence\");\n return ok(code);\n }\n return nok(code);\n }\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeNonLazyContinuation(effects, ok, nok) {\n const self = this;\n return start;\n\n /**\n *\n *\n * @type {State}\n */\n function start(code) {\n if (code === null) {\n return nok(code);\n }\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n return lineStart;\n }\n\n /**\n *\n *\n * @type {State}\n */\n function lineStart(code) {\n return self.parser.lazy[self.now().line] ? nok(code) : ok(code);\n }\n}","/// \n\n/* eslint-env browser */\n\nconst element = document.createElement('i')\n\n/**\n * @param {string} value\n * @returns {string|false}\n */\nexport function decodeNamedCharacterReference(value) {\n const characterReference = '&' + value + ';'\n element.innerHTML = characterReference\n const char = element.textContent\n\n // Some named character references do not require the closing semicolon\n // (`¬`, for instance), which leads to situations where parsing the assumed\n // named reference of `¬it;` will result in the string `¬it;`.\n // When we encounter a trailing semicolon after parsing, and the character\n // reference to decode was not a semicolon (`;`), we can assume that the\n // matching was not complete.\n // @ts-expect-error: TypeScript is wrong that `textContent` on elements can\n // yield `null`.\n if (char.charCodeAt(char.length - 1) === 59 /* `;` */ && value !== 'semi') {\n return false\n }\n\n // If the decoded string is equal to the input, the character reference was\n // not valid.\n // @ts-expect-error: TypeScript is wrong that `textContent` on elements can\n // yield `null`.\n return char === characterReference ? false : char\n}\n","/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport { decodeNamedCharacterReference } from 'decode-named-character-reference';\nimport { asciiAlphanumeric, asciiDigit, asciiHexDigit } from 'micromark-util-character';\n/** @type {Construct} */\nexport const characterReference = {\n name: 'characterReference',\n tokenize: tokenizeCharacterReference\n};\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeCharacterReference(effects, ok, nok) {\n const self = this;\n let size = 0;\n /** @type {number} */\n let max;\n /** @type {(code: Code) => boolean} */\n let test;\n return start;\n\n /**\n * Start of character reference.\n *\n * ```markdown\n * > | a&b\n * ^\n * > | a{b\n * ^\n * > | a b\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter(\"characterReference\");\n effects.enter(\"characterReferenceMarker\");\n effects.consume(code);\n effects.exit(\"characterReferenceMarker\");\n return open;\n }\n\n /**\n * After `&`, at `#` for numeric references or alphanumeric for named\n * references.\n *\n * ```markdown\n * > | a&b\n * ^\n * > | a{b\n * ^\n * > | a b\n * ^\n * ```\n *\n * @type {State}\n */\n function open(code) {\n if (code === 35) {\n effects.enter(\"characterReferenceMarkerNumeric\");\n effects.consume(code);\n effects.exit(\"characterReferenceMarkerNumeric\");\n return numeric;\n }\n effects.enter(\"characterReferenceValue\");\n max = 31;\n test = asciiAlphanumeric;\n return value(code);\n }\n\n /**\n * After `#`, at `x` for hexadecimals or digit for decimals.\n *\n * ```markdown\n * > | a{b\n * ^\n * > | a b\n * ^\n * ```\n *\n * @type {State}\n */\n function numeric(code) {\n if (code === 88 || code === 120) {\n effects.enter(\"characterReferenceMarkerHexadecimal\");\n effects.consume(code);\n effects.exit(\"characterReferenceMarkerHexadecimal\");\n effects.enter(\"characterReferenceValue\");\n max = 6;\n test = asciiHexDigit;\n return value;\n }\n effects.enter(\"characterReferenceValue\");\n max = 7;\n test = asciiDigit;\n return value(code);\n }\n\n /**\n * After markers (`&#x`, `&#`, or `&`), in value, before `;`.\n *\n * The character reference kind defines what and how many characters are\n * allowed.\n *\n * ```markdown\n * > | a&b\n * ^^^\n * > | a{b\n * ^^^\n * > | a b\n * ^\n * ```\n *\n * @type {State}\n */\n function value(code) {\n if (code === 59 && size) {\n const token = effects.exit(\"characterReferenceValue\");\n if (test === asciiAlphanumeric && !decodeNamedCharacterReference(self.sliceSerialize(token))) {\n return nok(code);\n }\n\n // To do: `markdown-rs` uses a different name:\n // `CharacterReferenceMarkerSemi`.\n effects.enter(\"characterReferenceMarker\");\n effects.consume(code);\n effects.exit(\"characterReferenceMarker\");\n effects.exit(\"characterReference\");\n return ok;\n }\n if (test(code) && size++ < max) {\n effects.consume(code);\n return value;\n }\n return nok(code);\n }\n}","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport { asciiPunctuation } from 'micromark-util-character';\n/** @type {Construct} */\nexport const characterEscape = {\n name: 'characterEscape',\n tokenize: tokenizeCharacterEscape\n};\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeCharacterEscape(effects, ok, nok) {\n return start;\n\n /**\n * Start of character escape.\n *\n * ```markdown\n * > | a\\*b\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter(\"characterEscape\");\n effects.enter(\"escapeMarker\");\n effects.consume(code);\n effects.exit(\"escapeMarker\");\n return inside;\n }\n\n /**\n * After `\\`, at punctuation.\n *\n * ```markdown\n * > | a\\*b\n * ^\n * ```\n *\n * @type {State}\n */\n function inside(code) {\n // ASCII punctuation.\n if (asciiPunctuation(code)) {\n effects.enter(\"characterEscapeValue\");\n effects.consume(code);\n effects.exit(\"characterEscapeValue\");\n effects.exit(\"characterEscape\");\n return ok;\n }\n return nok(code);\n }\n}","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding } from 'micromark-util-character';\n/** @type {Construct} */\nexport const lineEnding = {\n name: 'lineEnding',\n tokenize: tokenizeLineEnding\n};\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeLineEnding(effects, ok) {\n return start;\n\n /** @type {State} */\n function start(code) {\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n return factorySpace(effects, ok, \"linePrefix\");\n }\n}","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport { factoryDestination } from 'micromark-factory-destination';\nimport { factoryLabel } from 'micromark-factory-label';\nimport { factoryTitle } from 'micromark-factory-title';\nimport { factoryWhitespace } from 'micromark-factory-whitespace';\nimport { markdownLineEndingOrSpace } from 'micromark-util-character';\nimport { push, splice } from 'micromark-util-chunked';\nimport { normalizeIdentifier } from 'micromark-util-normalize-identifier';\nimport { resolveAll } from 'micromark-util-resolve-all';\n/** @type {Construct} */\nexport const labelEnd = {\n name: 'labelEnd',\n tokenize: tokenizeLabelEnd,\n resolveTo: resolveToLabelEnd,\n resolveAll: resolveAllLabelEnd\n};\n\n/** @type {Construct} */\nconst resourceConstruct = {\n tokenize: tokenizeResource\n};\n/** @type {Construct} */\nconst referenceFullConstruct = {\n tokenize: tokenizeReferenceFull\n};\n/** @type {Construct} */\nconst referenceCollapsedConstruct = {\n tokenize: tokenizeReferenceCollapsed\n};\n\n/** @type {Resolver} */\nfunction resolveAllLabelEnd(events) {\n let index = -1;\n while (++index < events.length) {\n const token = events[index][1];\n if (token.type === \"labelImage\" || token.type === \"labelLink\" || token.type === \"labelEnd\") {\n // Remove the marker.\n events.splice(index + 1, token.type === \"labelImage\" ? 4 : 2);\n token.type = \"data\";\n index++;\n }\n }\n return events;\n}\n\n/** @type {Resolver} */\nfunction resolveToLabelEnd(events, context) {\n let index = events.length;\n let offset = 0;\n /** @type {Token} */\n let token;\n /** @type {number | undefined} */\n let open;\n /** @type {number | undefined} */\n let close;\n /** @type {Array} */\n let media;\n\n // Find an opening.\n while (index--) {\n token = events[index][1];\n if (open) {\n // If we see another link, or inactive link label, we’ve been here before.\n if (token.type === \"link\" || token.type === \"labelLink\" && token._inactive) {\n break;\n }\n\n // Mark other link openings as inactive, as we can’t have links in\n // links.\n if (events[index][0] === 'enter' && token.type === \"labelLink\") {\n token._inactive = true;\n }\n } else if (close) {\n if (events[index][0] === 'enter' && (token.type === \"labelImage\" || token.type === \"labelLink\") && !token._balanced) {\n open = index;\n if (token.type !== \"labelLink\") {\n offset = 2;\n break;\n }\n }\n } else if (token.type === \"labelEnd\") {\n close = index;\n }\n }\n const group = {\n type: events[open][1].type === \"labelLink\" ? \"link\" : \"image\",\n start: Object.assign({}, events[open][1].start),\n end: Object.assign({}, events[events.length - 1][1].end)\n };\n const label = {\n type: \"label\",\n start: Object.assign({}, events[open][1].start),\n end: Object.assign({}, events[close][1].end)\n };\n const text = {\n type: \"labelText\",\n start: Object.assign({}, events[open + offset + 2][1].end),\n end: Object.assign({}, events[close - 2][1].start)\n };\n media = [['enter', group, context], ['enter', label, context]];\n\n // Opening marker.\n media = push(media, events.slice(open + 1, open + offset + 3));\n\n // Text open.\n media = push(media, [['enter', text, context]]);\n\n // Always populated by defaults.\n\n // Between.\n media = push(media, resolveAll(context.parser.constructs.insideSpan.null, events.slice(open + offset + 4, close - 3), context));\n\n // Text close, marker close, label close.\n media = push(media, [['exit', text, context], events[close - 2], events[close - 1], ['exit', label, context]]);\n\n // Reference, resource, or so.\n media = push(media, events.slice(close + 1));\n\n // Media close.\n media = push(media, [['exit', group, context]]);\n splice(events, open, events.length, media);\n return events;\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeLabelEnd(effects, ok, nok) {\n const self = this;\n let index = self.events.length;\n /** @type {Token} */\n let labelStart;\n /** @type {boolean} */\n let defined;\n\n // Find an opening.\n while (index--) {\n if ((self.events[index][1].type === \"labelImage\" || self.events[index][1].type === \"labelLink\") && !self.events[index][1]._balanced) {\n labelStart = self.events[index][1];\n break;\n }\n }\n return start;\n\n /**\n * Start of label end.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * > | [a][b] c\n * ^\n * > | [a][] b\n * ^\n * > | [a] b\n * ```\n *\n * @type {State}\n */\n function start(code) {\n // If there is not an okay opening.\n if (!labelStart) {\n return nok(code);\n }\n\n // If the corresponding label (link) start is marked as inactive,\n // it means we’d be wrapping a link, like this:\n //\n // ```markdown\n // > | a [b [c](d) e](f) g.\n // ^\n // ```\n //\n // We can’t have that, so it’s just balanced brackets.\n if (labelStart._inactive) {\n return labelEndNok(code);\n }\n defined = self.parser.defined.includes(normalizeIdentifier(self.sliceSerialize({\n start: labelStart.end,\n end: self.now()\n })));\n effects.enter(\"labelEnd\");\n effects.enter(\"labelMarker\");\n effects.consume(code);\n effects.exit(\"labelMarker\");\n effects.exit(\"labelEnd\");\n return after;\n }\n\n /**\n * After `]`.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * > | [a][b] c\n * ^\n * > | [a][] b\n * ^\n * > | [a] b\n * ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n // Note: `markdown-rs` also parses GFM footnotes here, which for us is in\n // an extension.\n\n // Resource (`[asd](fgh)`)?\n if (code === 40) {\n return effects.attempt(resourceConstruct, labelEndOk, defined ? labelEndOk : labelEndNok)(code);\n }\n\n // Full (`[asd][fgh]`) or collapsed (`[asd][]`) reference?\n if (code === 91) {\n return effects.attempt(referenceFullConstruct, labelEndOk, defined ? referenceNotFull : labelEndNok)(code);\n }\n\n // Shortcut (`[asd]`) reference?\n return defined ? labelEndOk(code) : labelEndNok(code);\n }\n\n /**\n * After `]`, at `[`, but not at a full reference.\n *\n * > 👉 **Note**: we only get here if the label is defined.\n *\n * ```markdown\n * > | [a][] b\n * ^\n * > | [a] b\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceNotFull(code) {\n return effects.attempt(referenceCollapsedConstruct, labelEndOk, labelEndNok)(code);\n }\n\n /**\n * Done, we found something.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * > | [a][b] c\n * ^\n * > | [a][] b\n * ^\n * > | [a] b\n * ^\n * ```\n *\n * @type {State}\n */\n function labelEndOk(code) {\n // Note: `markdown-rs` does a bunch of stuff here.\n return ok(code);\n }\n\n /**\n * Done, it’s nothing.\n *\n * There was an okay opening, but we didn’t match anything.\n *\n * ```markdown\n * > | [a](b c\n * ^\n * > | [a][b c\n * ^\n * > | [a] b\n * ^\n * ```\n *\n * @type {State}\n */\n function labelEndNok(code) {\n labelStart._balanced = true;\n return nok(code);\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeResource(effects, ok, nok) {\n return resourceStart;\n\n /**\n * At a resource.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceStart(code) {\n effects.enter(\"resource\");\n effects.enter(\"resourceMarker\");\n effects.consume(code);\n effects.exit(\"resourceMarker\");\n return resourceBefore;\n }\n\n /**\n * In resource, after `(`, at optional whitespace.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceBefore(code) {\n return markdownLineEndingOrSpace(code) ? factoryWhitespace(effects, resourceOpen)(code) : resourceOpen(code);\n }\n\n /**\n * In resource, after optional whitespace, at `)` or a destination.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceOpen(code) {\n if (code === 41) {\n return resourceEnd(code);\n }\n return factoryDestination(effects, resourceDestinationAfter, resourceDestinationMissing, \"resourceDestination\", \"resourceDestinationLiteral\", \"resourceDestinationLiteralMarker\", \"resourceDestinationRaw\", \"resourceDestinationString\", 32)(code);\n }\n\n /**\n * In resource, after destination, at optional whitespace.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceDestinationAfter(code) {\n return markdownLineEndingOrSpace(code) ? factoryWhitespace(effects, resourceBetween)(code) : resourceEnd(code);\n }\n\n /**\n * At invalid destination.\n *\n * ```markdown\n * > | [a](<<) b\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceDestinationMissing(code) {\n return nok(code);\n }\n\n /**\n * In resource, after destination and whitespace, at `(` or title.\n *\n * ```markdown\n * > | [a](b ) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceBetween(code) {\n if (code === 34 || code === 39 || code === 40) {\n return factoryTitle(effects, resourceTitleAfter, nok, \"resourceTitle\", \"resourceTitleMarker\", \"resourceTitleString\")(code);\n }\n return resourceEnd(code);\n }\n\n /**\n * In resource, after title, at optional whitespace.\n *\n * ```markdown\n * > | [a](b \"c\") d\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceTitleAfter(code) {\n return markdownLineEndingOrSpace(code) ? factoryWhitespace(effects, resourceEnd)(code) : resourceEnd(code);\n }\n\n /**\n * In resource, at `)`.\n *\n * ```markdown\n * > | [a](b) d\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceEnd(code) {\n if (code === 41) {\n effects.enter(\"resourceMarker\");\n effects.consume(code);\n effects.exit(\"resourceMarker\");\n effects.exit(\"resource\");\n return ok;\n }\n return nok(code);\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeReferenceFull(effects, ok, nok) {\n const self = this;\n return referenceFull;\n\n /**\n * In a reference (full), at the `[`.\n *\n * ```markdown\n * > | [a][b] d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceFull(code) {\n return factoryLabel.call(self, effects, referenceFullAfter, referenceFullMissing, \"reference\", \"referenceMarker\", \"referenceString\")(code);\n }\n\n /**\n * In a reference (full), after `]`.\n *\n * ```markdown\n * > | [a][b] d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceFullAfter(code) {\n return self.parser.defined.includes(normalizeIdentifier(self.sliceSerialize(self.events[self.events.length - 1][1]).slice(1, -1))) ? ok(code) : nok(code);\n }\n\n /**\n * In reference (full) that was missing.\n *\n * ```markdown\n * > | [a][b d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceFullMissing(code) {\n return nok(code);\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeReferenceCollapsed(effects, ok, nok) {\n return referenceCollapsedStart;\n\n /**\n * In reference (collapsed), at `[`.\n *\n * > 👉 **Note**: we only get here if the label is defined.\n *\n * ```markdown\n * > | [a][] d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceCollapsedStart(code) {\n // We only attempt a collapsed label if there’s a `[`.\n\n effects.enter(\"reference\");\n effects.enter(\"referenceMarker\");\n effects.consume(code);\n effects.exit(\"referenceMarker\");\n return referenceCollapsedOpen;\n }\n\n /**\n * In reference (collapsed), at `]`.\n *\n * > 👉 **Note**: we only get here if the label is defined.\n *\n * ```markdown\n * > | [a][] d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceCollapsedOpen(code) {\n if (code === 93) {\n effects.enter(\"referenceMarker\");\n effects.consume(code);\n effects.exit(\"referenceMarker\");\n effects.exit(\"reference\");\n return ok;\n }\n return nok(code);\n }\n}","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport { labelEnd } from './label-end.js';\n\n/** @type {Construct} */\nexport const labelStartImage = {\n name: 'labelStartImage',\n tokenize: tokenizeLabelStartImage,\n resolveAll: labelEnd.resolveAll\n};\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeLabelStartImage(effects, ok, nok) {\n const self = this;\n return start;\n\n /**\n * Start of label (image) start.\n *\n * ```markdown\n * > | a ![b] c\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter(\"labelImage\");\n effects.enter(\"labelImageMarker\");\n effects.consume(code);\n effects.exit(\"labelImageMarker\");\n return open;\n }\n\n /**\n * After `!`, at `[`.\n *\n * ```markdown\n * > | a ![b] c\n * ^\n * ```\n *\n * @type {State}\n */\n function open(code) {\n if (code === 91) {\n effects.enter(\"labelMarker\");\n effects.consume(code);\n effects.exit(\"labelMarker\");\n effects.exit(\"labelImage\");\n return after;\n }\n return nok(code);\n }\n\n /**\n * After `![`.\n *\n * ```markdown\n * > | a ![b] c\n * ^\n * ```\n *\n * This is needed in because, when GFM footnotes are enabled, images never\n * form when started with a `^`.\n * Instead, links form:\n *\n * ```markdown\n * ![^a](b)\n *\n * ![^a][b]\n *\n * [b]: c\n * ```\n *\n * ```html\n *

!^a

\n *

!^a

\n * ```\n *\n * @type {State}\n */\n function after(code) {\n // To do: use a new field to do this, this is still needed for\n // `micromark-extension-gfm-footnote`, but the `label-start-link`\n // behavior isn’t.\n // Hidden footnotes hook.\n /* c8 ignore next 3 */\n return code === 94 && '_hiddenFootnoteSupport' in self.parser.constructs ? nok(code) : ok(code);\n }\n}","/**\n * @typedef {import('micromark-util-types').Code} Code\n */\n\nimport {\n markdownLineEndingOrSpace,\n unicodePunctuation,\n unicodeWhitespace\n} from 'micromark-util-character'\n/**\n * Classify whether a code represents whitespace, punctuation, or something\n * else.\n *\n * Used for attention (emphasis, strong), whose sequences can open or close\n * based on the class of surrounding characters.\n *\n * > 👉 **Note**: eof (`null`) is seen as whitespace.\n *\n * @param {Code} code\n * Code.\n * @returns {typeof constants.characterGroupWhitespace | typeof constants.characterGroupPunctuation | undefined}\n * Group.\n */\nexport function classifyCharacter(code) {\n if (\n code === null ||\n markdownLineEndingOrSpace(code) ||\n unicodeWhitespace(code)\n ) {\n return 1\n }\n if (unicodePunctuation(code)) {\n return 2\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').Point} Point\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport { push, splice } from 'micromark-util-chunked';\nimport { classifyCharacter } from 'micromark-util-classify-character';\nimport { resolveAll } from 'micromark-util-resolve-all';\n/** @type {Construct} */\nexport const attention = {\n name: 'attention',\n tokenize: tokenizeAttention,\n resolveAll: resolveAllAttention\n};\n\n/**\n * Take all events and resolve attention to emphasis or strong.\n *\n * @type {Resolver}\n */\n// eslint-disable-next-line complexity\nfunction resolveAllAttention(events, context) {\n let index = -1;\n /** @type {number} */\n let open;\n /** @type {Token} */\n let group;\n /** @type {Token} */\n let text;\n /** @type {Token} */\n let openingSequence;\n /** @type {Token} */\n let closingSequence;\n /** @type {number} */\n let use;\n /** @type {Array} */\n let nextEvents;\n /** @type {number} */\n let offset;\n\n // Walk through all events.\n //\n // Note: performance of this is fine on an mb of normal markdown, but it’s\n // a bottleneck for malicious stuff.\n while (++index < events.length) {\n // Find a token that can close.\n if (events[index][0] === 'enter' && events[index][1].type === 'attentionSequence' && events[index][1]._close) {\n open = index;\n\n // Now walk back to find an opener.\n while (open--) {\n // Find a token that can open the closer.\n if (events[open][0] === 'exit' && events[open][1].type === 'attentionSequence' && events[open][1]._open &&\n // If the markers are the same:\n context.sliceSerialize(events[open][1]).charCodeAt(0) === context.sliceSerialize(events[index][1]).charCodeAt(0)) {\n // If the opening can close or the closing can open,\n // and the close size *is not* a multiple of three,\n // but the sum of the opening and closing size *is* multiple of three,\n // then don’t match.\n if ((events[open][1]._close || events[index][1]._open) && (events[index][1].end.offset - events[index][1].start.offset) % 3 && !((events[open][1].end.offset - events[open][1].start.offset + events[index][1].end.offset - events[index][1].start.offset) % 3)) {\n continue;\n }\n\n // Number of markers to use from the sequence.\n use = events[open][1].end.offset - events[open][1].start.offset > 1 && events[index][1].end.offset - events[index][1].start.offset > 1 ? 2 : 1;\n const start = Object.assign({}, events[open][1].end);\n const end = Object.assign({}, events[index][1].start);\n movePoint(start, -use);\n movePoint(end, use);\n openingSequence = {\n type: use > 1 ? \"strongSequence\" : \"emphasisSequence\",\n start,\n end: Object.assign({}, events[open][1].end)\n };\n closingSequence = {\n type: use > 1 ? \"strongSequence\" : \"emphasisSequence\",\n start: Object.assign({}, events[index][1].start),\n end\n };\n text = {\n type: use > 1 ? \"strongText\" : \"emphasisText\",\n start: Object.assign({}, events[open][1].end),\n end: Object.assign({}, events[index][1].start)\n };\n group = {\n type: use > 1 ? \"strong\" : \"emphasis\",\n start: Object.assign({}, openingSequence.start),\n end: Object.assign({}, closingSequence.end)\n };\n events[open][1].end = Object.assign({}, openingSequence.start);\n events[index][1].start = Object.assign({}, closingSequence.end);\n nextEvents = [];\n\n // If there are more markers in the opening, add them before.\n if (events[open][1].end.offset - events[open][1].start.offset) {\n nextEvents = push(nextEvents, [['enter', events[open][1], context], ['exit', events[open][1], context]]);\n }\n\n // Opening.\n nextEvents = push(nextEvents, [['enter', group, context], ['enter', openingSequence, context], ['exit', openingSequence, context], ['enter', text, context]]);\n\n // Always populated by defaults.\n\n // Between.\n nextEvents = push(nextEvents, resolveAll(context.parser.constructs.insideSpan.null, events.slice(open + 1, index), context));\n\n // Closing.\n nextEvents = push(nextEvents, [['exit', text, context], ['enter', closingSequence, context], ['exit', closingSequence, context], ['exit', group, context]]);\n\n // If there are more markers in the closing, add them after.\n if (events[index][1].end.offset - events[index][1].start.offset) {\n offset = 2;\n nextEvents = push(nextEvents, [['enter', events[index][1], context], ['exit', events[index][1], context]]);\n } else {\n offset = 0;\n }\n splice(events, open - 1, index - open + 3, nextEvents);\n index = open + nextEvents.length - offset - 2;\n break;\n }\n }\n }\n }\n\n // Remove remaining sequences.\n index = -1;\n while (++index < events.length) {\n if (events[index][1].type === 'attentionSequence') {\n events[index][1].type = 'data';\n }\n }\n return events;\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeAttention(effects, ok) {\n const attentionMarkers = this.parser.constructs.attentionMarkers.null;\n const previous = this.previous;\n const before = classifyCharacter(previous);\n\n /** @type {NonNullable} */\n let marker;\n return start;\n\n /**\n * Before a sequence.\n *\n * ```markdown\n * > | **\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n marker = code;\n effects.enter('attentionSequence');\n return inside(code);\n }\n\n /**\n * In a sequence.\n *\n * ```markdown\n * > | **\n * ^^\n * ```\n *\n * @type {State}\n */\n function inside(code) {\n if (code === marker) {\n effects.consume(code);\n return inside;\n }\n const token = effects.exit('attentionSequence');\n\n // To do: next major: move this to resolver, just like `markdown-rs`.\n const after = classifyCharacter(code);\n\n // Always populated by defaults.\n\n const open = !after || after === 2 && before || attentionMarkers.includes(code);\n const close = !before || before === 2 && after || attentionMarkers.includes(previous);\n token._open = Boolean(marker === 42 ? open : open && (before || !close));\n token._close = Boolean(marker === 42 ? close : close && (after || !open));\n return ok(code);\n }\n}\n\n/**\n * Move a point a bit.\n *\n * Note: `move` only works inside lines! It’s not possible to move past other\n * chunks (replacement characters, tabs, or line endings).\n *\n * @param {Point} point\n * @param {number} offset\n * @returns {undefined}\n */\nfunction movePoint(point, offset) {\n point.column += offset;\n point.offset += offset;\n point._bufferIndex += offset;\n}","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport { asciiAlpha, asciiAlphanumeric, asciiAtext, asciiControl } from 'micromark-util-character';\n/** @type {Construct} */\nexport const autolink = {\n name: 'autolink',\n tokenize: tokenizeAutolink\n};\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeAutolink(effects, ok, nok) {\n let size = 0;\n return start;\n\n /**\n * Start of an autolink.\n *\n * ```markdown\n * > | ab\n * ^\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter(\"autolink\");\n effects.enter(\"autolinkMarker\");\n effects.consume(code);\n effects.exit(\"autolinkMarker\");\n effects.enter(\"autolinkProtocol\");\n return open;\n }\n\n /**\n * After `<`, at protocol or atext.\n *\n * ```markdown\n * > | ab\n * ^\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function open(code) {\n if (asciiAlpha(code)) {\n effects.consume(code);\n return schemeOrEmailAtext;\n }\n if (code === 64) {\n return nok(code);\n }\n return emailAtext(code);\n }\n\n /**\n * At second byte of protocol or atext.\n *\n * ```markdown\n * > | ab\n * ^\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function schemeOrEmailAtext(code) {\n // ASCII alphanumeric and `+`, `-`, and `.`.\n if (code === 43 || code === 45 || code === 46 || asciiAlphanumeric(code)) {\n // Count the previous alphabetical from `open` too.\n size = 1;\n return schemeInsideOrEmailAtext(code);\n }\n return emailAtext(code);\n }\n\n /**\n * In ambiguous protocol or atext.\n *\n * ```markdown\n * > | ab\n * ^\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function schemeInsideOrEmailAtext(code) {\n if (code === 58) {\n effects.consume(code);\n size = 0;\n return urlInside;\n }\n\n // ASCII alphanumeric and `+`, `-`, and `.`.\n if ((code === 43 || code === 45 || code === 46 || asciiAlphanumeric(code)) && size++ < 32) {\n effects.consume(code);\n return schemeInsideOrEmailAtext;\n }\n size = 0;\n return emailAtext(code);\n }\n\n /**\n * After protocol, in URL.\n *\n * ```markdown\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function urlInside(code) {\n if (code === 62) {\n effects.exit(\"autolinkProtocol\");\n effects.enter(\"autolinkMarker\");\n effects.consume(code);\n effects.exit(\"autolinkMarker\");\n effects.exit(\"autolink\");\n return ok;\n }\n\n // ASCII control, space, or `<`.\n if (code === null || code === 32 || code === 60 || asciiControl(code)) {\n return nok(code);\n }\n effects.consume(code);\n return urlInside;\n }\n\n /**\n * In email atext.\n *\n * ```markdown\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function emailAtext(code) {\n if (code === 64) {\n effects.consume(code);\n return emailAtSignOrDot;\n }\n if (asciiAtext(code)) {\n effects.consume(code);\n return emailAtext;\n }\n return nok(code);\n }\n\n /**\n * In label, after at-sign or dot.\n *\n * ```markdown\n * > | ab\n * ^ ^\n * ```\n *\n * @type {State}\n */\n function emailAtSignOrDot(code) {\n return asciiAlphanumeric(code) ? emailLabel(code) : nok(code);\n }\n\n /**\n * In label, where `.` and `>` are allowed.\n *\n * ```markdown\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function emailLabel(code) {\n if (code === 46) {\n effects.consume(code);\n size = 0;\n return emailAtSignOrDot;\n }\n if (code === 62) {\n // Exit, then change the token type.\n effects.exit(\"autolinkProtocol\").type = \"autolinkEmail\";\n effects.enter(\"autolinkMarker\");\n effects.consume(code);\n effects.exit(\"autolinkMarker\");\n effects.exit(\"autolink\");\n return ok;\n }\n return emailValue(code);\n }\n\n /**\n * In label, where `.` and `>` are *not* allowed.\n *\n * Though, this is also used in `emailLabel` to parse other values.\n *\n * ```markdown\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function emailValue(code) {\n // ASCII alphanumeric or `-`.\n if ((code === 45 || asciiAlphanumeric(code)) && size++ < 63) {\n const next = code === 45 ? emailValue : emailLabel;\n effects.consume(code);\n return next;\n }\n return nok(code);\n }\n}","/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { asciiAlpha, asciiAlphanumeric, markdownLineEnding, markdownLineEndingOrSpace, markdownSpace } from 'micromark-util-character';\n/** @type {Construct} */\nexport const htmlText = {\n name: 'htmlText',\n tokenize: tokenizeHtmlText\n};\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeHtmlText(effects, ok, nok) {\n const self = this;\n /** @type {NonNullable | undefined} */\n let marker;\n /** @type {number} */\n let index;\n /** @type {State} */\n let returnState;\n return start;\n\n /**\n * Start of HTML (text).\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter(\"htmlText\");\n effects.enter(\"htmlTextData\");\n effects.consume(code);\n return open;\n }\n\n /**\n * After `<`, at tag name or other stuff.\n *\n * ```markdown\n * > | a c\n * ^\n * > | a c\n * ^\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function open(code) {\n if (code === 33) {\n effects.consume(code);\n return declarationOpen;\n }\n if (code === 47) {\n effects.consume(code);\n return tagCloseStart;\n }\n if (code === 63) {\n effects.consume(code);\n return instruction;\n }\n\n // ASCII alphabetical.\n if (asciiAlpha(code)) {\n effects.consume(code);\n return tagOpen;\n }\n return nok(code);\n }\n\n /**\n * After ` | a c\n * ^\n * > | a c\n * ^\n * > | a &<]]> c\n * ^\n * ```\n *\n * @type {State}\n */\n function declarationOpen(code) {\n if (code === 45) {\n effects.consume(code);\n return commentOpenInside;\n }\n if (code === 91) {\n effects.consume(code);\n index = 0;\n return cdataOpenInside;\n }\n if (asciiAlpha(code)) {\n effects.consume(code);\n return declaration;\n }\n return nok(code);\n }\n\n /**\n * In a comment, after ` | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function commentOpenInside(code) {\n if (code === 45) {\n effects.consume(code);\n return commentEnd;\n }\n return nok(code);\n }\n\n /**\n * In comment.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function comment(code) {\n if (code === null) {\n return nok(code);\n }\n if (code === 45) {\n effects.consume(code);\n return commentClose;\n }\n if (markdownLineEnding(code)) {\n returnState = comment;\n return lineEndingBefore(code);\n }\n effects.consume(code);\n return comment;\n }\n\n /**\n * In comment, after `-`.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function commentClose(code) {\n if (code === 45) {\n effects.consume(code);\n return commentEnd;\n }\n return comment(code);\n }\n\n /**\n * In comment, after `--`.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function commentEnd(code) {\n return code === 62 ? end(code) : code === 45 ? commentClose(code) : comment(code);\n }\n\n /**\n * After ` | a &<]]> b\n * ^^^^^^\n * ```\n *\n * @type {State}\n */\n function cdataOpenInside(code) {\n const value = \"CDATA[\";\n if (code === value.charCodeAt(index++)) {\n effects.consume(code);\n return index === value.length ? cdata : cdataOpenInside;\n }\n return nok(code);\n }\n\n /**\n * In CDATA.\n *\n * ```markdown\n * > | a &<]]> b\n * ^^^\n * ```\n *\n * @type {State}\n */\n function cdata(code) {\n if (code === null) {\n return nok(code);\n }\n if (code === 93) {\n effects.consume(code);\n return cdataClose;\n }\n if (markdownLineEnding(code)) {\n returnState = cdata;\n return lineEndingBefore(code);\n }\n effects.consume(code);\n return cdata;\n }\n\n /**\n * In CDATA, after `]`, at another `]`.\n *\n * ```markdown\n * > | a &<]]> b\n * ^\n * ```\n *\n * @type {State}\n */\n function cdataClose(code) {\n if (code === 93) {\n effects.consume(code);\n return cdataEnd;\n }\n return cdata(code);\n }\n\n /**\n * In CDATA, after `]]`, at `>`.\n *\n * ```markdown\n * > | a &<]]> b\n * ^\n * ```\n *\n * @type {State}\n */\n function cdataEnd(code) {\n if (code === 62) {\n return end(code);\n }\n if (code === 93) {\n effects.consume(code);\n return cdataEnd;\n }\n return cdata(code);\n }\n\n /**\n * In declaration.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function declaration(code) {\n if (code === null || code === 62) {\n return end(code);\n }\n if (markdownLineEnding(code)) {\n returnState = declaration;\n return lineEndingBefore(code);\n }\n effects.consume(code);\n return declaration;\n }\n\n /**\n * In instruction.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function instruction(code) {\n if (code === null) {\n return nok(code);\n }\n if (code === 63) {\n effects.consume(code);\n return instructionClose;\n }\n if (markdownLineEnding(code)) {\n returnState = instruction;\n return lineEndingBefore(code);\n }\n effects.consume(code);\n return instruction;\n }\n\n /**\n * In instruction, after `?`, at `>`.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function instructionClose(code) {\n return code === 62 ? end(code) : instruction(code);\n }\n\n /**\n * After ` | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagCloseStart(code) {\n // ASCII alphabetical.\n if (asciiAlpha(code)) {\n effects.consume(code);\n return tagClose;\n }\n return nok(code);\n }\n\n /**\n * After ` | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagClose(code) {\n // ASCII alphanumerical and `-`.\n if (code === 45 || asciiAlphanumeric(code)) {\n effects.consume(code);\n return tagClose;\n }\n return tagCloseBetween(code);\n }\n\n /**\n * In closing tag, after tag name.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagCloseBetween(code) {\n if (markdownLineEnding(code)) {\n returnState = tagCloseBetween;\n return lineEndingBefore(code);\n }\n if (markdownSpace(code)) {\n effects.consume(code);\n return tagCloseBetween;\n }\n return end(code);\n }\n\n /**\n * After ` | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpen(code) {\n // ASCII alphanumerical and `-`.\n if (code === 45 || asciiAlphanumeric(code)) {\n effects.consume(code);\n return tagOpen;\n }\n if (code === 47 || code === 62 || markdownLineEndingOrSpace(code)) {\n return tagOpenBetween(code);\n }\n return nok(code);\n }\n\n /**\n * In opening tag, after tag name.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenBetween(code) {\n if (code === 47) {\n effects.consume(code);\n return end;\n }\n\n // ASCII alphabetical and `:` and `_`.\n if (code === 58 || code === 95 || asciiAlpha(code)) {\n effects.consume(code);\n return tagOpenAttributeName;\n }\n if (markdownLineEnding(code)) {\n returnState = tagOpenBetween;\n return lineEndingBefore(code);\n }\n if (markdownSpace(code)) {\n effects.consume(code);\n return tagOpenBetween;\n }\n return end(code);\n }\n\n /**\n * In attribute name.\n *\n * ```markdown\n * > | a d\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeName(code) {\n // ASCII alphabetical and `-`, `.`, `:`, and `_`.\n if (code === 45 || code === 46 || code === 58 || code === 95 || asciiAlphanumeric(code)) {\n effects.consume(code);\n return tagOpenAttributeName;\n }\n return tagOpenAttributeNameAfter(code);\n }\n\n /**\n * After attribute name, before initializer, the end of the tag, or\n * whitespace.\n *\n * ```markdown\n * > | a d\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeNameAfter(code) {\n if (code === 61) {\n effects.consume(code);\n return tagOpenAttributeValueBefore;\n }\n if (markdownLineEnding(code)) {\n returnState = tagOpenAttributeNameAfter;\n return lineEndingBefore(code);\n }\n if (markdownSpace(code)) {\n effects.consume(code);\n return tagOpenAttributeNameAfter;\n }\n return tagOpenBetween(code);\n }\n\n /**\n * Before unquoted, double quoted, or single quoted attribute value, allowing\n * whitespace.\n *\n * ```markdown\n * > | a e\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeValueBefore(code) {\n if (code === null || code === 60 || code === 61 || code === 62 || code === 96) {\n return nok(code);\n }\n if (code === 34 || code === 39) {\n effects.consume(code);\n marker = code;\n return tagOpenAttributeValueQuoted;\n }\n if (markdownLineEnding(code)) {\n returnState = tagOpenAttributeValueBefore;\n return lineEndingBefore(code);\n }\n if (markdownSpace(code)) {\n effects.consume(code);\n return tagOpenAttributeValueBefore;\n }\n effects.consume(code);\n return tagOpenAttributeValueUnquoted;\n }\n\n /**\n * In double or single quoted attribute value.\n *\n * ```markdown\n * > | a e\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeValueQuoted(code) {\n if (code === marker) {\n effects.consume(code);\n marker = undefined;\n return tagOpenAttributeValueQuotedAfter;\n }\n if (code === null) {\n return nok(code);\n }\n if (markdownLineEnding(code)) {\n returnState = tagOpenAttributeValueQuoted;\n return lineEndingBefore(code);\n }\n effects.consume(code);\n return tagOpenAttributeValueQuoted;\n }\n\n /**\n * In unquoted attribute value.\n *\n * ```markdown\n * > | a e\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeValueUnquoted(code) {\n if (code === null || code === 34 || code === 39 || code === 60 || code === 61 || code === 96) {\n return nok(code);\n }\n if (code === 47 || code === 62 || markdownLineEndingOrSpace(code)) {\n return tagOpenBetween(code);\n }\n effects.consume(code);\n return tagOpenAttributeValueUnquoted;\n }\n\n /**\n * After double or single quoted attribute value, before whitespace or the end\n * of the tag.\n *\n * ```markdown\n * > | a e\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeValueQuotedAfter(code) {\n if (code === 47 || code === 62 || markdownLineEndingOrSpace(code)) {\n return tagOpenBetween(code);\n }\n return nok(code);\n }\n\n /**\n * In certain circumstances of a tag where only an `>` is allowed.\n *\n * ```markdown\n * > | a e\n * ^\n * ```\n *\n * @type {State}\n */\n function end(code) {\n if (code === 62) {\n effects.consume(code);\n effects.exit(\"htmlTextData\");\n effects.exit(\"htmlText\");\n return ok;\n }\n return nok(code);\n }\n\n /**\n * At eol.\n *\n * > 👉 **Note**: we can’t have blank lines in text, so no need to worry about\n * > empty tokens.\n *\n * ```markdown\n * > | a \n * ```\n *\n * @type {State}\n */\n function lineEndingBefore(code) {\n effects.exit(\"htmlTextData\");\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n return lineEndingAfter;\n }\n\n /**\n * After eol, at optional whitespace.\n *\n * > 👉 **Note**: we can’t have blank lines in text, so no need to worry about\n * > empty tokens.\n *\n * ```markdown\n * | a \n * ^\n * ```\n *\n * @type {State}\n */\n function lineEndingAfter(code) {\n // Always populated by defaults.\n\n return markdownSpace(code) ? factorySpace(effects, lineEndingAfterPrefix, \"linePrefix\", self.parser.constructs.disable.null.includes('codeIndented') ? undefined : 4)(code) : lineEndingAfterPrefix(code);\n }\n\n /**\n * After eol, after optional whitespace.\n *\n * > 👉 **Note**: we can’t have blank lines in text, so no need to worry about\n * > empty tokens.\n *\n * ```markdown\n * | a \n * ^\n * ```\n *\n * @type {State}\n */\n function lineEndingAfterPrefix(code) {\n effects.enter(\"htmlTextData\");\n return returnState(code);\n }\n}","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport { labelEnd } from './label-end.js';\n\n/** @type {Construct} */\nexport const labelStartLink = {\n name: 'labelStartLink',\n tokenize: tokenizeLabelStartLink,\n resolveAll: labelEnd.resolveAll\n};\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeLabelStartLink(effects, ok, nok) {\n const self = this;\n return start;\n\n /**\n * Start of label (link) start.\n *\n * ```markdown\n * > | a [b] c\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter(\"labelLink\");\n effects.enter(\"labelMarker\");\n effects.consume(code);\n effects.exit(\"labelMarker\");\n effects.exit(\"labelLink\");\n return after;\n }\n\n /** @type {State} */\n function after(code) {\n // To do: this isn’t needed in `micromark-extension-gfm-footnote`,\n // remove.\n // Hidden footnotes hook.\n /* c8 ignore next 3 */\n return code === 94 && '_hiddenFootnoteSupport' in self.parser.constructs ? nok(code) : ok(code);\n }\n}","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport { markdownLineEnding } from 'micromark-util-character';\n/** @type {Construct} */\nexport const hardBreakEscape = {\n name: 'hardBreakEscape',\n tokenize: tokenizeHardBreakEscape\n};\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeHardBreakEscape(effects, ok, nok) {\n return start;\n\n /**\n * Start of a hard break (escape).\n *\n * ```markdown\n * > | a\\\n * ^\n * | b\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter(\"hardBreakEscape\");\n effects.consume(code);\n return after;\n }\n\n /**\n * After `\\`, at eol.\n *\n * ```markdown\n * > | a\\\n * ^\n * | b\n * ```\n *\n * @type {State}\n */\n function after(code) {\n if (markdownLineEnding(code)) {\n effects.exit(\"hardBreakEscape\");\n return ok(code);\n }\n return nok(code);\n }\n}","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Previous} Previous\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport { markdownLineEnding } from 'micromark-util-character';\n/** @type {Construct} */\nexport const codeText = {\n name: 'codeText',\n tokenize: tokenizeCodeText,\n resolve: resolveCodeText,\n previous\n};\n\n// To do: next major: don’t resolve, like `markdown-rs`.\n/** @type {Resolver} */\nfunction resolveCodeText(events) {\n let tailExitIndex = events.length - 4;\n let headEnterIndex = 3;\n /** @type {number} */\n let index;\n /** @type {number | undefined} */\n let enter;\n\n // If we start and end with an EOL or a space.\n if ((events[headEnterIndex][1].type === \"lineEnding\" || events[headEnterIndex][1].type === 'space') && (events[tailExitIndex][1].type === \"lineEnding\" || events[tailExitIndex][1].type === 'space')) {\n index = headEnterIndex;\n\n // And we have data.\n while (++index < tailExitIndex) {\n if (events[index][1].type === \"codeTextData\") {\n // Then we have padding.\n events[headEnterIndex][1].type = \"codeTextPadding\";\n events[tailExitIndex][1].type = \"codeTextPadding\";\n headEnterIndex += 2;\n tailExitIndex -= 2;\n break;\n }\n }\n }\n\n // Merge adjacent spaces and data.\n index = headEnterIndex - 1;\n tailExitIndex++;\n while (++index <= tailExitIndex) {\n if (enter === undefined) {\n if (index !== tailExitIndex && events[index][1].type !== \"lineEnding\") {\n enter = index;\n }\n } else if (index === tailExitIndex || events[index][1].type === \"lineEnding\") {\n events[enter][1].type = \"codeTextData\";\n if (index !== enter + 2) {\n events[enter][1].end = events[index - 1][1].end;\n events.splice(enter + 2, index - enter - 2);\n tailExitIndex -= index - enter - 2;\n index = enter + 2;\n }\n enter = undefined;\n }\n }\n return events;\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Previous}\n */\nfunction previous(code) {\n // If there is a previous code, there will always be a tail.\n return code !== 96 || this.events[this.events.length - 1][1].type === \"characterEscape\";\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeCodeText(effects, ok, nok) {\n const self = this;\n let sizeOpen = 0;\n /** @type {number} */\n let size;\n /** @type {Token} */\n let token;\n return start;\n\n /**\n * Start of code (text).\n *\n * ```markdown\n * > | `a`\n * ^\n * > | \\`a`\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter(\"codeText\");\n effects.enter(\"codeTextSequence\");\n return sequenceOpen(code);\n }\n\n /**\n * In opening sequence.\n *\n * ```markdown\n * > | `a`\n * ^\n * ```\n *\n * @type {State}\n */\n function sequenceOpen(code) {\n if (code === 96) {\n effects.consume(code);\n sizeOpen++;\n return sequenceOpen;\n }\n effects.exit(\"codeTextSequence\");\n return between(code);\n }\n\n /**\n * Between something and something else.\n *\n * ```markdown\n * > | `a`\n * ^^\n * ```\n *\n * @type {State}\n */\n function between(code) {\n // EOF.\n if (code === null) {\n return nok(code);\n }\n\n // To do: next major: don’t do spaces in resolve, but when compiling,\n // like `markdown-rs`.\n // Tabs don’t work, and virtual spaces don’t make sense.\n if (code === 32) {\n effects.enter('space');\n effects.consume(code);\n effects.exit('space');\n return between;\n }\n\n // Closing fence? Could also be data.\n if (code === 96) {\n token = effects.enter(\"codeTextSequence\");\n size = 0;\n return sequenceClose(code);\n }\n if (markdownLineEnding(code)) {\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n return between;\n }\n\n // Data.\n effects.enter(\"codeTextData\");\n return data(code);\n }\n\n /**\n * In data.\n *\n * ```markdown\n * > | `a`\n * ^\n * ```\n *\n * @type {State}\n */\n function data(code) {\n if (code === null || code === 32 || code === 96 || markdownLineEnding(code)) {\n effects.exit(\"codeTextData\");\n return between(code);\n }\n effects.consume(code);\n return data;\n }\n\n /**\n * In closing sequence.\n *\n * ```markdown\n * > | `a`\n * ^\n * ```\n *\n * @type {State}\n */\n function sequenceClose(code) {\n // More.\n if (code === 96) {\n effects.consume(code);\n size++;\n return sequenceClose;\n }\n\n // Done!\n if (size === sizeOpen) {\n effects.exit(\"codeTextSequence\");\n effects.exit(\"codeText\");\n return ok(code);\n }\n\n // More or less accents: mark as data.\n token.type = \"codeTextData\";\n return data(code);\n }\n}","/**\n * @typedef {import('micromark-util-types').Extension} Extension\n */\n\nimport {\n attention,\n autolink,\n blockQuote,\n characterEscape,\n characterReference,\n codeFenced,\n codeIndented,\n codeText,\n definition,\n hardBreakEscape,\n headingAtx,\n htmlFlow,\n htmlText,\n labelEnd,\n labelStartImage,\n labelStartLink,\n lineEnding,\n list,\n setextUnderline,\n thematicBreak\n} from 'micromark-core-commonmark'\nimport {resolver as resolveText} from './initialize/text.js'\n\n/** @satisfies {Extension['document']} */\nexport const document = {\n [42]: list,\n [43]: list,\n [45]: list,\n [48]: list,\n [49]: list,\n [50]: list,\n [51]: list,\n [52]: list,\n [53]: list,\n [54]: list,\n [55]: list,\n [56]: list,\n [57]: list,\n [62]: blockQuote\n}\n\n/** @satisfies {Extension['contentInitial']} */\nexport const contentInitial = {\n [91]: definition\n}\n\n/** @satisfies {Extension['flowInitial']} */\nexport const flowInitial = {\n [-2]: codeIndented,\n [-1]: codeIndented,\n [32]: codeIndented\n}\n\n/** @satisfies {Extension['flow']} */\nexport const flow = {\n [35]: headingAtx,\n [42]: thematicBreak,\n [45]: [setextUnderline, thematicBreak],\n [60]: htmlFlow,\n [61]: setextUnderline,\n [95]: thematicBreak,\n [96]: codeFenced,\n [126]: codeFenced\n}\n\n/** @satisfies {Extension['string']} */\nexport const string = {\n [38]: characterReference,\n [92]: characterEscape\n}\n\n/** @satisfies {Extension['text']} */\nexport const text = {\n [-5]: lineEnding,\n [-4]: lineEnding,\n [-3]: lineEnding,\n [33]: labelStartImage,\n [38]: characterReference,\n [42]: attention,\n [60]: [autolink, htmlText],\n [91]: labelStartLink,\n [92]: [hardBreakEscape, characterEscape],\n [93]: labelEnd,\n [95]: attention,\n [96]: codeText\n}\n\n/** @satisfies {Extension['insideSpan']} */\nexport const insideSpan = {\n null: [attention, resolveText]\n}\n\n/** @satisfies {Extension['attentionMarkers']} */\nexport const attentionMarkers = {\n null: [42, 95]\n}\n\n/** @satisfies {Extension['disable']} */\nexport const disable = {\n null: []\n}\n","/**\n * @typedef {import('micromark-util-types').Create} Create\n * @typedef {import('micromark-util-types').FullNormalizedExtension} FullNormalizedExtension\n * @typedef {import('micromark-util-types').InitialConstruct} InitialConstruct\n * @typedef {import('micromark-util-types').ParseContext} ParseContext\n * @typedef {import('micromark-util-types').ParseOptions} ParseOptions\n */\n\nimport {combineExtensions} from 'micromark-util-combine-extensions'\nimport {content} from './initialize/content.js'\nimport {document} from './initialize/document.js'\nimport {flow} from './initialize/flow.js'\nimport {string, text} from './initialize/text.js'\nimport {createTokenizer} from './create-tokenizer.js'\nimport * as defaultConstructs from './constructs.js'\n\n/**\n * @param {ParseOptions | null | undefined} [options]\n * @returns {ParseContext}\n */\nexport function parse(options) {\n const settings = options || {}\n const constructs =\n /** @type {FullNormalizedExtension} */\n combineExtensions([defaultConstructs, ...(settings.extensions || [])])\n\n /** @type {ParseContext} */\n const parser = {\n defined: [],\n lazy: {},\n constructs,\n content: create(content),\n document: create(document),\n flow: create(flow),\n string: create(string),\n text: create(text)\n }\n return parser\n\n /**\n * @param {InitialConstruct} initial\n */\n function create(initial) {\n return creator\n /** @type {Create} */\n function creator(from) {\n return createTokenizer(parser, initial, from)\n }\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Chunk} Chunk\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Encoding} Encoding\n * @typedef {import('micromark-util-types').Value} Value\n */\n\n/**\n * @callback Preprocessor\n * @param {Value} value\n * @param {Encoding | null | undefined} [encoding]\n * @param {boolean | null | undefined} [end=false]\n * @returns {Array}\n */\n\nconst search = /[\\0\\t\\n\\r]/g\n\n/**\n * @returns {Preprocessor}\n */\nexport function preprocess() {\n let column = 1\n let buffer = ''\n /** @type {boolean | undefined} */\n let start = true\n /** @type {boolean | undefined} */\n let atCarriageReturn\n return preprocessor\n\n /** @type {Preprocessor} */\n // eslint-disable-next-line complexity\n function preprocessor(value, encoding, end) {\n /** @type {Array} */\n const chunks = []\n /** @type {RegExpMatchArray | null} */\n let match\n /** @type {number} */\n let next\n /** @type {number} */\n let startPosition\n /** @type {number} */\n let endPosition\n /** @type {Code} */\n let code\n value =\n buffer +\n (typeof value === 'string'\n ? value.toString()\n : new TextDecoder(encoding || undefined).decode(value))\n startPosition = 0\n buffer = ''\n if (start) {\n // To do: `markdown-rs` actually parses BOMs (byte order mark).\n if (value.charCodeAt(0) === 65279) {\n startPosition++\n }\n start = undefined\n }\n while (startPosition < value.length) {\n search.lastIndex = startPosition\n match = search.exec(value)\n endPosition =\n match && match.index !== undefined ? match.index : value.length\n code = value.charCodeAt(endPosition)\n if (!match) {\n buffer = value.slice(startPosition)\n break\n }\n if (code === 10 && startPosition === endPosition && atCarriageReturn) {\n chunks.push(-3)\n atCarriageReturn = undefined\n } else {\n if (atCarriageReturn) {\n chunks.push(-5)\n atCarriageReturn = undefined\n }\n if (startPosition < endPosition) {\n chunks.push(value.slice(startPosition, endPosition))\n column += endPosition - startPosition\n }\n switch (code) {\n case 0: {\n chunks.push(65533)\n column++\n break\n }\n case 9: {\n next = Math.ceil(column / 4) * 4\n chunks.push(-2)\n while (column++ < next) chunks.push(-1)\n break\n }\n case 10: {\n chunks.push(-4)\n column = 1\n break\n }\n default: {\n atCarriageReturn = true\n column = 1\n }\n }\n }\n startPosition = endPosition + 1\n }\n if (end) {\n if (atCarriageReturn) chunks.push(-5)\n if (buffer) chunks.push(buffer)\n chunks.push(null)\n }\n return chunks\n }\n}\n","/**\n * Turn the number (in string form as either hexa- or plain decimal) coming from\n * a numeric character reference into a character.\n *\n * Sort of like `String.fromCodePoint(Number.parseInt(value, base))`, but makes\n * non-characters and control characters safe.\n *\n * @param {string} value\n * Value to decode.\n * @param {number} base\n * Numeric base.\n * @returns {string}\n * Character.\n */\nexport function decodeNumericCharacterReference(value, base) {\n const code = Number.parseInt(value, base);\n if (\n // C0 except for HT, LF, FF, CR, space.\n code < 9 || code === 11 || code > 13 && code < 32 ||\n // Control character (DEL) of C0, and C1 controls.\n code > 126 && code < 160 ||\n // Lone high surrogates and low surrogates.\n code > 55_295 && code < 57_344 ||\n // Noncharacters.\n code > 64_975 && code < 65_008 || /* eslint-disable no-bitwise */\n (code & 65_535) === 65_535 || (code & 65_535) === 65_534 || /* eslint-enable no-bitwise */\n // Out of range\n code > 1_114_111) {\n return \"\\uFFFD\";\n }\n return String.fromCodePoint(code);\n}","import {decodeNamedCharacterReference} from 'decode-named-character-reference'\nimport {decodeNumericCharacterReference} from 'micromark-util-decode-numeric-character-reference'\nconst characterEscapeOrReference =\n /\\\\([!-/:-@[-`{-~])|&(#(?:\\d{1,7}|x[\\da-f]{1,6})|[\\da-z]{1,31});/gi\n\n/**\n * Decode markdown strings (which occur in places such as fenced code info\n * strings, destinations, labels, and titles).\n *\n * The “string” content type allows character escapes and -references.\n * This decodes those.\n *\n * @param {string} value\n * Value to decode.\n * @returns {string}\n * Decoded value.\n */\nexport function decodeString(value) {\n return value.replace(characterEscapeOrReference, decode)\n}\n\n/**\n * @param {string} $0\n * @param {string} $1\n * @param {string} $2\n * @returns {string}\n */\nfunction decode($0, $1, $2) {\n if ($1) {\n // Escape.\n return $1\n }\n\n // Reference.\n const head = $2.charCodeAt(0)\n if (head === 35) {\n const head = $2.charCodeAt(1)\n const hex = head === 120 || head === 88\n return decodeNumericCharacterReference($2.slice(hex ? 2 : 1), hex ? 16 : 10)\n }\n return decodeNamedCharacterReference($2) || $0\n}\n","/**\n * @typedef {import('mdast').Break} Break\n * @typedef {import('mdast').Blockquote} Blockquote\n * @typedef {import('mdast').Code} Code\n * @typedef {import('mdast').Definition} Definition\n * @typedef {import('mdast').Emphasis} Emphasis\n * @typedef {import('mdast').Heading} Heading\n * @typedef {import('mdast').Html} Html\n * @typedef {import('mdast').Image} Image\n * @typedef {import('mdast').InlineCode} InlineCode\n * @typedef {import('mdast').Link} Link\n * @typedef {import('mdast').List} List\n * @typedef {import('mdast').ListItem} ListItem\n * @typedef {import('mdast').Nodes} Nodes\n * @typedef {import('mdast').Paragraph} Paragraph\n * @typedef {import('mdast').Parent} Parent\n * @typedef {import('mdast').PhrasingContent} PhrasingContent\n * @typedef {import('mdast').ReferenceType} ReferenceType\n * @typedef {import('mdast').Root} Root\n * @typedef {import('mdast').Strong} Strong\n * @typedef {import('mdast').Text} Text\n * @typedef {import('mdast').ThematicBreak} ThematicBreak\n *\n * @typedef {import('micromark-util-types').Encoding} Encoding\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').ParseOptions} ParseOptions\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Value} Value\n *\n * @typedef {import('unist').Point} Point\n *\n * @typedef {import('../index.js').CompileData} CompileData\n */\n\n/**\n * @typedef {Omit & {type: 'fragment', children: Array}} Fragment\n */\n\n/**\n * @callback Transform\n * Extra transform, to change the AST afterwards.\n * @param {Root} tree\n * Tree to transform.\n * @returns {Root | null | undefined | void}\n * New tree or nothing (in which case the current tree is used).\n *\n * @callback Handle\n * Handle a token.\n * @param {CompileContext} this\n * Context.\n * @param {Token} token\n * Current token.\n * @returns {undefined | void}\n * Nothing.\n *\n * @typedef {Record} Handles\n * Token types mapping to handles\n *\n * @callback OnEnterError\n * Handle the case where the `right` token is open, but it is closed (by the\n * `left` token) or because we reached the end of the document.\n * @param {Omit} this\n * Context.\n * @param {Token | undefined} left\n * Left token.\n * @param {Token} right\n * Right token.\n * @returns {undefined}\n * Nothing.\n *\n * @callback OnExitError\n * Handle the case where the `right` token is open but it is closed by\n * exiting the `left` token.\n * @param {Omit} this\n * Context.\n * @param {Token} left\n * Left token.\n * @param {Token} right\n * Right token.\n * @returns {undefined}\n * Nothing.\n *\n * @typedef {[Token, OnEnterError | undefined]} TokenTuple\n * Open token on the stack, with an optional error handler for when\n * that token isn’t closed properly.\n */\n\n/**\n * @typedef Config\n * Configuration.\n *\n * We have our defaults, but extensions will add more.\n * @property {Array} canContainEols\n * Token types where line endings are used.\n * @property {Handles} enter\n * Opening handles.\n * @property {Handles} exit\n * Closing handles.\n * @property {Array} transforms\n * Tree transforms.\n *\n * @typedef {Partial} Extension\n * Change how markdown tokens from micromark are turned into mdast.\n *\n * @typedef CompileContext\n * mdast compiler context.\n * @property {Array} stack\n * Stack of nodes.\n * @property {Array} tokenStack\n * Stack of tokens.\n * @property {(this: CompileContext) => undefined} buffer\n * Capture some of the output data.\n * @property {(this: CompileContext) => string} resume\n * Stop capturing and access the output data.\n * @property {(this: CompileContext, node: Nodes, token: Token, onError?: OnEnterError) => undefined} enter\n * Enter a node.\n * @property {(this: CompileContext, token: Token, onError?: OnExitError) => undefined} exit\n * Exit a node.\n * @property {TokenizeContext['sliceSerialize']} sliceSerialize\n * Get the string value of a token.\n * @property {Config} config\n * Configuration.\n * @property {CompileData} data\n * Info passed around; key/value store.\n *\n * @typedef FromMarkdownOptions\n * Configuration for how to build mdast.\n * @property {Array> | null | undefined} [mdastExtensions]\n * Extensions for this utility to change how tokens are turned into a tree.\n *\n * @typedef {ParseOptions & FromMarkdownOptions} Options\n * Configuration.\n */\n\nimport { toString } from 'mdast-util-to-string';\nimport { parse, postprocess, preprocess } from 'micromark';\nimport { decodeNumericCharacterReference } from 'micromark-util-decode-numeric-character-reference';\nimport { decodeString } from 'micromark-util-decode-string';\nimport { normalizeIdentifier } from 'micromark-util-normalize-identifier';\nimport { decodeNamedCharacterReference } from 'decode-named-character-reference';\nimport { stringifyPosition } from 'unist-util-stringify-position';\nconst own = {}.hasOwnProperty;\n\n/**\n * Turn markdown into a syntax tree.\n *\n * @overload\n * @param {Value} value\n * @param {Encoding | null | undefined} [encoding]\n * @param {Options | null | undefined} [options]\n * @returns {Root}\n *\n * @overload\n * @param {Value} value\n * @param {Options | null | undefined} [options]\n * @returns {Root}\n *\n * @param {Value} value\n * Markdown to parse.\n * @param {Encoding | Options | null | undefined} [encoding]\n * Character encoding for when `value` is `Buffer`.\n * @param {Options | null | undefined} [options]\n * Configuration.\n * @returns {Root}\n * mdast tree.\n */\nexport function fromMarkdown(value, encoding, options) {\n if (typeof encoding !== 'string') {\n options = encoding;\n encoding = undefined;\n }\n return compiler(options)(postprocess(parse(options).document().write(preprocess()(value, encoding, true))));\n}\n\n/**\n * Note this compiler only understand complete buffering, not streaming.\n *\n * @param {Options | null | undefined} [options]\n */\nfunction compiler(options) {\n /** @type {Config} */\n const config = {\n transforms: [],\n canContainEols: ['emphasis', 'fragment', 'heading', 'paragraph', 'strong'],\n enter: {\n autolink: opener(link),\n autolinkProtocol: onenterdata,\n autolinkEmail: onenterdata,\n atxHeading: opener(heading),\n blockQuote: opener(blockQuote),\n characterEscape: onenterdata,\n characterReference: onenterdata,\n codeFenced: opener(codeFlow),\n codeFencedFenceInfo: buffer,\n codeFencedFenceMeta: buffer,\n codeIndented: opener(codeFlow, buffer),\n codeText: opener(codeText, buffer),\n codeTextData: onenterdata,\n data: onenterdata,\n codeFlowValue: onenterdata,\n definition: opener(definition),\n definitionDestinationString: buffer,\n definitionLabelString: buffer,\n definitionTitleString: buffer,\n emphasis: opener(emphasis),\n hardBreakEscape: opener(hardBreak),\n hardBreakTrailing: opener(hardBreak),\n htmlFlow: opener(html, buffer),\n htmlFlowData: onenterdata,\n htmlText: opener(html, buffer),\n htmlTextData: onenterdata,\n image: opener(image),\n label: buffer,\n link: opener(link),\n listItem: opener(listItem),\n listItemValue: onenterlistitemvalue,\n listOrdered: opener(list, onenterlistordered),\n listUnordered: opener(list),\n paragraph: opener(paragraph),\n reference: onenterreference,\n referenceString: buffer,\n resourceDestinationString: buffer,\n resourceTitleString: buffer,\n setextHeading: opener(heading),\n strong: opener(strong),\n thematicBreak: opener(thematicBreak)\n },\n exit: {\n atxHeading: closer(),\n atxHeadingSequence: onexitatxheadingsequence,\n autolink: closer(),\n autolinkEmail: onexitautolinkemail,\n autolinkProtocol: onexitautolinkprotocol,\n blockQuote: closer(),\n characterEscapeValue: onexitdata,\n characterReferenceMarkerHexadecimal: onexitcharacterreferencemarker,\n characterReferenceMarkerNumeric: onexitcharacterreferencemarker,\n characterReferenceValue: onexitcharacterreferencevalue,\n characterReference: onexitcharacterreference,\n codeFenced: closer(onexitcodefenced),\n codeFencedFence: onexitcodefencedfence,\n codeFencedFenceInfo: onexitcodefencedfenceinfo,\n codeFencedFenceMeta: onexitcodefencedfencemeta,\n codeFlowValue: onexitdata,\n codeIndented: closer(onexitcodeindented),\n codeText: closer(onexitcodetext),\n codeTextData: onexitdata,\n data: onexitdata,\n definition: closer(),\n definitionDestinationString: onexitdefinitiondestinationstring,\n definitionLabelString: onexitdefinitionlabelstring,\n definitionTitleString: onexitdefinitiontitlestring,\n emphasis: closer(),\n hardBreakEscape: closer(onexithardbreak),\n hardBreakTrailing: closer(onexithardbreak),\n htmlFlow: closer(onexithtmlflow),\n htmlFlowData: onexitdata,\n htmlText: closer(onexithtmltext),\n htmlTextData: onexitdata,\n image: closer(onexitimage),\n label: onexitlabel,\n labelText: onexitlabeltext,\n lineEnding: onexitlineending,\n link: closer(onexitlink),\n listItem: closer(),\n listOrdered: closer(),\n listUnordered: closer(),\n paragraph: closer(),\n referenceString: onexitreferencestring,\n resourceDestinationString: onexitresourcedestinationstring,\n resourceTitleString: onexitresourcetitlestring,\n resource: onexitresource,\n setextHeading: closer(onexitsetextheading),\n setextHeadingLineSequence: onexitsetextheadinglinesequence,\n setextHeadingText: onexitsetextheadingtext,\n strong: closer(),\n thematicBreak: closer()\n }\n };\n configure(config, (options || {}).mdastExtensions || []);\n\n /** @type {CompileData} */\n const data = {};\n return compile;\n\n /**\n * Turn micromark events into an mdast tree.\n *\n * @param {Array} events\n * Events.\n * @returns {Root}\n * mdast tree.\n */\n function compile(events) {\n /** @type {Root} */\n let tree = {\n type: 'root',\n children: []\n };\n /** @type {Omit} */\n const context = {\n stack: [tree],\n tokenStack: [],\n config,\n enter,\n exit,\n buffer,\n resume,\n data\n };\n /** @type {Array} */\n const listStack = [];\n let index = -1;\n while (++index < events.length) {\n // We preprocess lists to add `listItem` tokens, and to infer whether\n // items the list itself are spread out.\n if (events[index][1].type === \"listOrdered\" || events[index][1].type === \"listUnordered\") {\n if (events[index][0] === 'enter') {\n listStack.push(index);\n } else {\n const tail = listStack.pop();\n index = prepareList(events, tail, index);\n }\n }\n }\n index = -1;\n while (++index < events.length) {\n const handler = config[events[index][0]];\n if (own.call(handler, events[index][1].type)) {\n handler[events[index][1].type].call(Object.assign({\n sliceSerialize: events[index][2].sliceSerialize\n }, context), events[index][1]);\n }\n }\n\n // Handle tokens still being open.\n if (context.tokenStack.length > 0) {\n const tail = context.tokenStack[context.tokenStack.length - 1];\n const handler = tail[1] || defaultOnError;\n handler.call(context, undefined, tail[0]);\n }\n\n // Figure out `root` position.\n tree.position = {\n start: point(events.length > 0 ? events[0][1].start : {\n line: 1,\n column: 1,\n offset: 0\n }),\n end: point(events.length > 0 ? events[events.length - 2][1].end : {\n line: 1,\n column: 1,\n offset: 0\n })\n };\n\n // Call transforms.\n index = -1;\n while (++index < config.transforms.length) {\n tree = config.transforms[index](tree) || tree;\n }\n return tree;\n }\n\n /**\n * @param {Array} events\n * @param {number} start\n * @param {number} length\n * @returns {number}\n */\n function prepareList(events, start, length) {\n let index = start - 1;\n let containerBalance = -1;\n let listSpread = false;\n /** @type {Token | undefined} */\n let listItem;\n /** @type {number | undefined} */\n let lineIndex;\n /** @type {number | undefined} */\n let firstBlankLineIndex;\n /** @type {boolean | undefined} */\n let atMarker;\n while (++index <= length) {\n const event = events[index];\n switch (event[1].type) {\n case \"listUnordered\":\n case \"listOrdered\":\n case \"blockQuote\":\n {\n if (event[0] === 'enter') {\n containerBalance++;\n } else {\n containerBalance--;\n }\n atMarker = undefined;\n break;\n }\n case \"lineEndingBlank\":\n {\n if (event[0] === 'enter') {\n if (listItem && !atMarker && !containerBalance && !firstBlankLineIndex) {\n firstBlankLineIndex = index;\n }\n atMarker = undefined;\n }\n break;\n }\n case \"linePrefix\":\n case \"listItemValue\":\n case \"listItemMarker\":\n case \"listItemPrefix\":\n case \"listItemPrefixWhitespace\":\n {\n // Empty.\n\n break;\n }\n default:\n {\n atMarker = undefined;\n }\n }\n if (!containerBalance && event[0] === 'enter' && event[1].type === \"listItemPrefix\" || containerBalance === -1 && event[0] === 'exit' && (event[1].type === \"listUnordered\" || event[1].type === \"listOrdered\")) {\n if (listItem) {\n let tailIndex = index;\n lineIndex = undefined;\n while (tailIndex--) {\n const tailEvent = events[tailIndex];\n if (tailEvent[1].type === \"lineEnding\" || tailEvent[1].type === \"lineEndingBlank\") {\n if (tailEvent[0] === 'exit') continue;\n if (lineIndex) {\n events[lineIndex][1].type = \"lineEndingBlank\";\n listSpread = true;\n }\n tailEvent[1].type = \"lineEnding\";\n lineIndex = tailIndex;\n } else if (tailEvent[1].type === \"linePrefix\" || tailEvent[1].type === \"blockQuotePrefix\" || tailEvent[1].type === \"blockQuotePrefixWhitespace\" || tailEvent[1].type === \"blockQuoteMarker\" || tailEvent[1].type === \"listItemIndent\") {\n // Empty\n } else {\n break;\n }\n }\n if (firstBlankLineIndex && (!lineIndex || firstBlankLineIndex < lineIndex)) {\n listItem._spread = true;\n }\n\n // Fix position.\n listItem.end = Object.assign({}, lineIndex ? events[lineIndex][1].start : event[1].end);\n events.splice(lineIndex || index, 0, ['exit', listItem, event[2]]);\n index++;\n length++;\n }\n\n // Create a new list item.\n if (event[1].type === \"listItemPrefix\") {\n /** @type {Token} */\n const item = {\n type: 'listItem',\n _spread: false,\n start: Object.assign({}, event[1].start),\n // @ts-expect-error: we’ll add `end` in a second.\n end: undefined\n };\n listItem = item;\n events.splice(index, 0, ['enter', item, event[2]]);\n index++;\n length++;\n firstBlankLineIndex = undefined;\n atMarker = true;\n }\n }\n }\n events[start][1]._spread = listSpread;\n return length;\n }\n\n /**\n * Create an opener handle.\n *\n * @param {(token: Token) => Nodes} create\n * Create a node.\n * @param {Handle | undefined} [and]\n * Optional function to also run.\n * @returns {Handle}\n * Handle.\n */\n function opener(create, and) {\n return open;\n\n /**\n * @this {CompileContext}\n * @param {Token} token\n * @returns {undefined}\n */\n function open(token) {\n enter.call(this, create(token), token);\n if (and) and.call(this, token);\n }\n }\n\n /**\n * @this {CompileContext}\n * @returns {undefined}\n */\n function buffer() {\n this.stack.push({\n type: 'fragment',\n children: []\n });\n }\n\n /**\n * @this {CompileContext}\n * Context.\n * @param {Nodes} node\n * Node to enter.\n * @param {Token} token\n * Corresponding token.\n * @param {OnEnterError | undefined} [errorHandler]\n * Handle the case where this token is open, but it is closed by something else.\n * @returns {undefined}\n * Nothing.\n */\n function enter(node, token, errorHandler) {\n const parent = this.stack[this.stack.length - 1];\n /** @type {Array} */\n const siblings = parent.children;\n siblings.push(node);\n this.stack.push(node);\n this.tokenStack.push([token, errorHandler]);\n node.position = {\n start: point(token.start),\n // @ts-expect-error: `end` will be patched later.\n end: undefined\n };\n }\n\n /**\n * Create a closer handle.\n *\n * @param {Handle | undefined} [and]\n * Optional function to also run.\n * @returns {Handle}\n * Handle.\n */\n function closer(and) {\n return close;\n\n /**\n * @this {CompileContext}\n * @param {Token} token\n * @returns {undefined}\n */\n function close(token) {\n if (and) and.call(this, token);\n exit.call(this, token);\n }\n }\n\n /**\n * @this {CompileContext}\n * Context.\n * @param {Token} token\n * Corresponding token.\n * @param {OnExitError | undefined} [onExitError]\n * Handle the case where another token is open.\n * @returns {undefined}\n * Nothing.\n */\n function exit(token, onExitError) {\n const node = this.stack.pop();\n const open = this.tokenStack.pop();\n if (!open) {\n throw new Error('Cannot close `' + token.type + '` (' + stringifyPosition({\n start: token.start,\n end: token.end\n }) + '): it’s not open');\n } else if (open[0].type !== token.type) {\n if (onExitError) {\n onExitError.call(this, token, open[0]);\n } else {\n const handler = open[1] || defaultOnError;\n handler.call(this, token, open[0]);\n }\n }\n node.position.end = point(token.end);\n }\n\n /**\n * @this {CompileContext}\n * @returns {string}\n */\n function resume() {\n return toString(this.stack.pop());\n }\n\n //\n // Handlers.\n //\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onenterlistordered() {\n this.data.expectingFirstListItemValue = true;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onenterlistitemvalue(token) {\n if (this.data.expectingFirstListItemValue) {\n const ancestor = this.stack[this.stack.length - 2];\n ancestor.start = Number.parseInt(this.sliceSerialize(token), 10);\n this.data.expectingFirstListItemValue = undefined;\n }\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodefencedfenceinfo() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.lang = data;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodefencedfencemeta() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.meta = data;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodefencedfence() {\n // Exit if this is the closing fence.\n if (this.data.flowCodeInside) return;\n this.buffer();\n this.data.flowCodeInside = true;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodefenced() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.value = data.replace(/^(\\r?\\n|\\r)|(\\r?\\n|\\r)$/g, '');\n this.data.flowCodeInside = undefined;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodeindented() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.value = data.replace(/(\\r?\\n|\\r)$/g, '');\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitdefinitionlabelstring(token) {\n const label = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.label = label;\n node.identifier = normalizeIdentifier(this.sliceSerialize(token)).toLowerCase();\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitdefinitiontitlestring() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.title = data;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitdefinitiondestinationstring() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.url = data;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitatxheadingsequence(token) {\n const node = this.stack[this.stack.length - 1];\n if (!node.depth) {\n const depth = this.sliceSerialize(token).length;\n node.depth = depth;\n }\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitsetextheadingtext() {\n this.data.setextHeadingSlurpLineEnding = true;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitsetextheadinglinesequence(token) {\n const node = this.stack[this.stack.length - 1];\n node.depth = this.sliceSerialize(token).codePointAt(0) === 61 ? 1 : 2;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitsetextheading() {\n this.data.setextHeadingSlurpLineEnding = undefined;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onenterdata(token) {\n const node = this.stack[this.stack.length - 1];\n /** @type {Array} */\n const siblings = node.children;\n let tail = siblings[siblings.length - 1];\n if (!tail || tail.type !== 'text') {\n // Add a new text node.\n tail = text();\n tail.position = {\n start: point(token.start),\n // @ts-expect-error: we’ll add `end` later.\n end: undefined\n };\n siblings.push(tail);\n }\n this.stack.push(tail);\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitdata(token) {\n const tail = this.stack.pop();\n tail.value += this.sliceSerialize(token);\n tail.position.end = point(token.end);\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitlineending(token) {\n const context = this.stack[this.stack.length - 1];\n // If we’re at a hard break, include the line ending in there.\n if (this.data.atHardBreak) {\n const tail = context.children[context.children.length - 1];\n tail.position.end = point(token.end);\n this.data.atHardBreak = undefined;\n return;\n }\n if (!this.data.setextHeadingSlurpLineEnding && config.canContainEols.includes(context.type)) {\n onenterdata.call(this, token);\n onexitdata.call(this, token);\n }\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexithardbreak() {\n this.data.atHardBreak = true;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexithtmlflow() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.value = data;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexithtmltext() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.value = data;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitcodetext() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.value = data;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitlink() {\n const node = this.stack[this.stack.length - 1];\n // Note: there are also `identifier` and `label` fields on this link node!\n // These are used / cleaned here.\n\n // To do: clean.\n if (this.data.inReference) {\n /** @type {ReferenceType} */\n const referenceType = this.data.referenceType || 'shortcut';\n node.type += 'Reference';\n // @ts-expect-error: mutate.\n node.referenceType = referenceType;\n // @ts-expect-error: mutate.\n delete node.url;\n delete node.title;\n } else {\n // @ts-expect-error: mutate.\n delete node.identifier;\n // @ts-expect-error: mutate.\n delete node.label;\n }\n this.data.referenceType = undefined;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitimage() {\n const node = this.stack[this.stack.length - 1];\n // Note: there are also `identifier` and `label` fields on this link node!\n // These are used / cleaned here.\n\n // To do: clean.\n if (this.data.inReference) {\n /** @type {ReferenceType} */\n const referenceType = this.data.referenceType || 'shortcut';\n node.type += 'Reference';\n // @ts-expect-error: mutate.\n node.referenceType = referenceType;\n // @ts-expect-error: mutate.\n delete node.url;\n delete node.title;\n } else {\n // @ts-expect-error: mutate.\n delete node.identifier;\n // @ts-expect-error: mutate.\n delete node.label;\n }\n this.data.referenceType = undefined;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitlabeltext(token) {\n const string = this.sliceSerialize(token);\n const ancestor = this.stack[this.stack.length - 2];\n // @ts-expect-error: stash this on the node, as it might become a reference\n // later.\n ancestor.label = decodeString(string);\n // @ts-expect-error: same as above.\n ancestor.identifier = normalizeIdentifier(string).toLowerCase();\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitlabel() {\n const fragment = this.stack[this.stack.length - 1];\n const value = this.resume();\n const node = this.stack[this.stack.length - 1];\n // Assume a reference.\n this.data.inReference = true;\n if (node.type === 'link') {\n /** @type {Array} */\n const children = fragment.children;\n node.children = children;\n } else {\n node.alt = value;\n }\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitresourcedestinationstring() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.url = data;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitresourcetitlestring() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.title = data;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitresource() {\n this.data.inReference = undefined;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onenterreference() {\n this.data.referenceType = 'collapsed';\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitreferencestring(token) {\n const label = this.resume();\n const node = this.stack[this.stack.length - 1];\n // @ts-expect-error: stash this on the node, as it might become a reference\n // later.\n node.label = label;\n // @ts-expect-error: same as above.\n node.identifier = normalizeIdentifier(this.sliceSerialize(token)).toLowerCase();\n this.data.referenceType = 'full';\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitcharacterreferencemarker(token) {\n this.data.characterReferenceType = token.type;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcharacterreferencevalue(token) {\n const data = this.sliceSerialize(token);\n const type = this.data.characterReferenceType;\n /** @type {string} */\n let value;\n if (type) {\n value = decodeNumericCharacterReference(data, type === \"characterReferenceMarkerNumeric\" ? 10 : 16);\n this.data.characterReferenceType = undefined;\n } else {\n const result = decodeNamedCharacterReference(data);\n value = result;\n }\n const tail = this.stack[this.stack.length - 1];\n tail.value += value;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcharacterreference(token) {\n const tail = this.stack.pop();\n tail.position.end = point(token.end);\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitautolinkprotocol(token) {\n onexitdata.call(this, token);\n const node = this.stack[this.stack.length - 1];\n node.url = this.sliceSerialize(token);\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitautolinkemail(token) {\n onexitdata.call(this, token);\n const node = this.stack[this.stack.length - 1];\n node.url = 'mailto:' + this.sliceSerialize(token);\n }\n\n //\n // Creaters.\n //\n\n /** @returns {Blockquote} */\n function blockQuote() {\n return {\n type: 'blockquote',\n children: []\n };\n }\n\n /** @returns {Code} */\n function codeFlow() {\n return {\n type: 'code',\n lang: null,\n meta: null,\n value: ''\n };\n }\n\n /** @returns {InlineCode} */\n function codeText() {\n return {\n type: 'inlineCode',\n value: ''\n };\n }\n\n /** @returns {Definition} */\n function definition() {\n return {\n type: 'definition',\n identifier: '',\n label: null,\n title: null,\n url: ''\n };\n }\n\n /** @returns {Emphasis} */\n function emphasis() {\n return {\n type: 'emphasis',\n children: []\n };\n }\n\n /** @returns {Heading} */\n function heading() {\n return {\n type: 'heading',\n // @ts-expect-error `depth` will be set later.\n depth: 0,\n children: []\n };\n }\n\n /** @returns {Break} */\n function hardBreak() {\n return {\n type: 'break'\n };\n }\n\n /** @returns {Html} */\n function html() {\n return {\n type: 'html',\n value: ''\n };\n }\n\n /** @returns {Image} */\n function image() {\n return {\n type: 'image',\n title: null,\n url: '',\n alt: null\n };\n }\n\n /** @returns {Link} */\n function link() {\n return {\n type: 'link',\n title: null,\n url: '',\n children: []\n };\n }\n\n /**\n * @param {Token} token\n * @returns {List}\n */\n function list(token) {\n return {\n type: 'list',\n ordered: token.type === 'listOrdered',\n start: null,\n spread: token._spread,\n children: []\n };\n }\n\n /**\n * @param {Token} token\n * @returns {ListItem}\n */\n function listItem(token) {\n return {\n type: 'listItem',\n spread: token._spread,\n checked: null,\n children: []\n };\n }\n\n /** @returns {Paragraph} */\n function paragraph() {\n return {\n type: 'paragraph',\n children: []\n };\n }\n\n /** @returns {Strong} */\n function strong() {\n return {\n type: 'strong',\n children: []\n };\n }\n\n /** @returns {Text} */\n function text() {\n return {\n type: 'text',\n value: ''\n };\n }\n\n /** @returns {ThematicBreak} */\n function thematicBreak() {\n return {\n type: 'thematicBreak'\n };\n }\n}\n\n/**\n * Copy a point-like value.\n *\n * @param {Point} d\n * Point-like value.\n * @returns {Point}\n * unist point.\n */\nfunction point(d) {\n return {\n line: d.line,\n column: d.column,\n offset: d.offset\n };\n}\n\n/**\n * @param {Config} combined\n * @param {Array | Extension>} extensions\n * @returns {undefined}\n */\nfunction configure(combined, extensions) {\n let index = -1;\n while (++index < extensions.length) {\n const value = extensions[index];\n if (Array.isArray(value)) {\n configure(combined, value);\n } else {\n extension(combined, value);\n }\n }\n}\n\n/**\n * @param {Config} combined\n * @param {Extension} extension\n * @returns {undefined}\n */\nfunction extension(combined, extension) {\n /** @type {keyof Extension} */\n let key;\n for (key in extension) {\n if (own.call(extension, key)) {\n switch (key) {\n case 'canContainEols':\n {\n const right = extension[key];\n if (right) {\n combined[key].push(...right);\n }\n break;\n }\n case 'transforms':\n {\n const right = extension[key];\n if (right) {\n combined[key].push(...right);\n }\n break;\n }\n case 'enter':\n case 'exit':\n {\n const right = extension[key];\n if (right) {\n Object.assign(combined[key], right);\n }\n break;\n }\n // No default\n }\n }\n }\n}\n\n/** @type {OnEnterError} */\nfunction defaultOnError(left, right) {\n if (left) {\n throw new Error('Cannot close `' + left.type + '` (' + stringifyPosition({\n start: left.start,\n end: left.end\n }) + '): a different token (`' + right.type + '`, ' + stringifyPosition({\n start: right.start,\n end: right.end\n }) + ') is open');\n } else {\n throw new Error('Cannot close document, a token (`' + right.type + '`, ' + stringifyPosition({\n start: right.start,\n end: right.end\n }) + ') is still open');\n }\n}","/**\n * @typedef {import('micromark-util-types').Event} Event\n */\n\nimport {subtokenize} from 'micromark-util-subtokenize'\n\n/**\n * @param {Array} events\n * @returns {Array}\n */\nexport function postprocess(events) {\n while (!subtokenize(events)) {\n // Empty\n }\n return events\n}\n","/**\n * @typedef {import('mdast').Root} Root\n * @typedef {import('mdast-util-from-markdown').Options} FromMarkdownOptions\n * @typedef {import('unified').Parser} Parser\n * @typedef {import('unified').Processor} Processor\n */\n\n/**\n * @typedef {Omit} Options\n */\n\nimport {fromMarkdown} from 'mdast-util-from-markdown'\n\n/**\n * Aadd support for parsing from markdown.\n *\n * @param {Readonly | null | undefined} [options]\n * Configuration (optional).\n * @returns {undefined}\n * Nothing.\n */\nexport default function remarkParse(options) {\n /** @type {Processor} */\n // @ts-expect-error: TS in JSDoc generates wrong types if `this` is typed regularly.\n const self = this\n\n self.parser = parser\n\n /**\n * @type {Parser}\n */\n function parser(doc) {\n return fromMarkdown(doc, {\n ...self.data('settings'),\n ...options,\n // Note: these options are not in the readme.\n // The goal is for them to be set by plugins on `data` instead of being\n // passed by users.\n extensions: self.data('micromarkExtensions') || [],\n mdastExtensions: self.data('fromMarkdownExtensions') || []\n })\n }\n}\n","export const VOID = -1;\nexport const PRIMITIVE = 0;\nexport const ARRAY = 1;\nexport const OBJECT = 2;\nexport const DATE = 3;\nexport const REGEXP = 4;\nexport const MAP = 5;\nexport const SET = 6;\nexport const ERROR = 7;\nexport const BIGINT = 8;\n// export const SYMBOL = 9;\n","import {\n VOID, PRIMITIVE,\n ARRAY, OBJECT,\n DATE, REGEXP, MAP, SET,\n ERROR, BIGINT\n} from './types.js';\n\nconst env = typeof self === 'object' ? self : globalThis;\n\nconst deserializer = ($, _) => {\n const as = (out, index) => {\n $.set(index, out);\n return out;\n };\n\n const unpair = index => {\n if ($.has(index))\n return $.get(index);\n\n const [type, value] = _[index];\n switch (type) {\n case PRIMITIVE:\n case VOID:\n return as(value, index);\n case ARRAY: {\n const arr = as([], index);\n for (const index of value)\n arr.push(unpair(index));\n return arr;\n }\n case OBJECT: {\n const object = as({}, index);\n for (const [key, index] of value)\n object[unpair(key)] = unpair(index);\n return object;\n }\n case DATE:\n return as(new Date(value), index);\n case REGEXP: {\n const {source, flags} = value;\n return as(new RegExp(source, flags), index);\n }\n case MAP: {\n const map = as(new Map, index);\n for (const [key, index] of value)\n map.set(unpair(key), unpair(index));\n return map;\n }\n case SET: {\n const set = as(new Set, index);\n for (const index of value)\n set.add(unpair(index));\n return set;\n }\n case ERROR: {\n const {name, message} = value;\n return as(new env[name](message), index);\n }\n case BIGINT:\n return as(BigInt(value), index);\n case 'BigInt':\n return as(Object(BigInt(value)), index);\n }\n return as(new env[type](value), index);\n };\n\n return unpair;\n};\n\n/**\n * @typedef {Array} Record a type representation\n */\n\n/**\n * Returns a deserialized value from a serialized array of Records.\n * @param {Record[]} serialized a previously serialized value.\n * @returns {any}\n */\nexport const deserialize = serialized => deserializer(new Map, serialized)(0);\n","import {\n VOID, PRIMITIVE,\n ARRAY, OBJECT,\n DATE, REGEXP, MAP, SET,\n ERROR, BIGINT\n} from './types.js';\n\nconst EMPTY = '';\n\nconst {toString} = {};\nconst {keys} = Object;\n\nconst typeOf = value => {\n const type = typeof value;\n if (type !== 'object' || !value)\n return [PRIMITIVE, type];\n\n const asString = toString.call(value).slice(8, -1);\n switch (asString) {\n case 'Array':\n return [ARRAY, EMPTY];\n case 'Object':\n return [OBJECT, EMPTY];\n case 'Date':\n return [DATE, EMPTY];\n case 'RegExp':\n return [REGEXP, EMPTY];\n case 'Map':\n return [MAP, EMPTY];\n case 'Set':\n return [SET, EMPTY];\n }\n\n if (asString.includes('Array'))\n return [ARRAY, asString];\n\n if (asString.includes('Error'))\n return [ERROR, asString];\n\n return [OBJECT, asString];\n};\n\nconst shouldSkip = ([TYPE, type]) => (\n TYPE === PRIMITIVE &&\n (type === 'function' || type === 'symbol')\n);\n\nconst serializer = (strict, json, $, _) => {\n\n const as = (out, value) => {\n const index = _.push(out) - 1;\n $.set(value, index);\n return index;\n };\n\n const pair = value => {\n if ($.has(value))\n return $.get(value);\n\n let [TYPE, type] = typeOf(value);\n switch (TYPE) {\n case PRIMITIVE: {\n let entry = value;\n switch (type) {\n case 'bigint':\n TYPE = BIGINT;\n entry = value.toString();\n break;\n case 'function':\n case 'symbol':\n if (strict)\n throw new TypeError('unable to serialize ' + type);\n entry = null;\n break;\n case 'undefined':\n return as([VOID], value);\n }\n return as([TYPE, entry], value);\n }\n case ARRAY: {\n if (type)\n return as([type, [...value]], value);\n \n const arr = [];\n const index = as([TYPE, arr], value);\n for (const entry of value)\n arr.push(pair(entry));\n return index;\n }\n case OBJECT: {\n if (type) {\n switch (type) {\n case 'BigInt':\n return as([type, value.toString()], value);\n case 'Boolean':\n case 'Number':\n case 'String':\n return as([type, value.valueOf()], value);\n }\n }\n\n if (json && ('toJSON' in value))\n return pair(value.toJSON());\n\n const entries = [];\n const index = as([TYPE, entries], value);\n for (const key of keys(value)) {\n if (strict || !shouldSkip(typeOf(value[key])))\n entries.push([pair(key), pair(value[key])]);\n }\n return index;\n }\n case DATE:\n return as([TYPE, value.toISOString()], value);\n case REGEXP: {\n const {source, flags} = value;\n return as([TYPE, {source, flags}], value);\n }\n case MAP: {\n const entries = [];\n const index = as([TYPE, entries], value);\n for (const [key, entry] of value) {\n if (strict || !(shouldSkip(typeOf(key)) || shouldSkip(typeOf(entry))))\n entries.push([pair(key), pair(entry)]);\n }\n return index;\n }\n case SET: {\n const entries = [];\n const index = as([TYPE, entries], value);\n for (const entry of value) {\n if (strict || !shouldSkip(typeOf(entry)))\n entries.push(pair(entry));\n }\n return index;\n }\n }\n\n const {message} = value;\n return as([TYPE, {name: type, message}], value);\n };\n\n return pair;\n};\n\n/**\n * @typedef {Array} Record a type representation\n */\n\n/**\n * Returns an array of serialized Records.\n * @param {any} value a serializable value.\n * @param {{json?: boolean, lossy?: boolean}?} options an object with a `lossy` or `json` property that,\n * if `true`, will not throw errors on incompatible types, and behave more\n * like JSON stringify would behave. Symbol and Function will be discarded.\n * @returns {Record[]}\n */\n export const serialize = (value, {json, lossy} = {}) => {\n const _ = [];\n return serializer(!(json || lossy), !!json, new Map, _)(value), _;\n};\n","import {deserialize} from './deserialize.js';\nimport {serialize} from './serialize.js';\n\n/**\n * @typedef {Array} Record a type representation\n */\n\n/**\n * Returns an array of serialized Records.\n * @param {any} any a serializable value.\n * @param {{transfer?: any[], json?: boolean, lossy?: boolean}?} options an object with\n * a transfer option (ignored when polyfilled) and/or non standard fields that\n * fallback to the polyfill if present.\n * @returns {Record[]}\n */\nexport default typeof structuredClone === \"function\" ?\n /* c8 ignore start */\n (any, options) => (\n options && ('json' in options || 'lossy' in options) ?\n deserialize(serialize(any, options)) : structuredClone(any)\n ) :\n (any, options) => deserialize(serialize(any, options));\n /* c8 ignore stop */\n\nexport {deserialize, serialize};\n","import {asciiAlphanumeric} from 'micromark-util-character'\nimport {encode} from 'micromark-util-encode'\n/**\n * Make a value safe for injection as a URL.\n *\n * This encodes unsafe characters with percent-encoding and skips already\n * encoded sequences (see `normalizeUri`).\n * Further unsafe characters are encoded as character references (see\n * `micromark-util-encode`).\n *\n * A regex of allowed protocols can be given, in which case the URL is\n * sanitized.\n * For example, `/^(https?|ircs?|mailto|xmpp)$/i` can be used for `a[href]`, or\n * `/^https?$/i` for `img[src]` (this is what `github.com` allows).\n * If the URL includes an unknown protocol (one not matched by `protocol`, such\n * as a dangerous example, `javascript:`), the value is ignored.\n *\n * @param {string | null | undefined} url\n * URI to sanitize.\n * @param {RegExp | null | undefined} [protocol]\n * Allowed protocols.\n * @returns {string}\n * Sanitized URI.\n */\nexport function sanitizeUri(url, protocol) {\n const value = encode(normalizeUri(url || ''))\n if (!protocol) {\n return value\n }\n const colon = value.indexOf(':')\n const questionMark = value.indexOf('?')\n const numberSign = value.indexOf('#')\n const slash = value.indexOf('/')\n if (\n // If there is no protocol, it’s relative.\n colon < 0 ||\n // If the first colon is after a `?`, `#`, or `/`, it’s not a protocol.\n (slash > -1 && colon > slash) ||\n (questionMark > -1 && colon > questionMark) ||\n (numberSign > -1 && colon > numberSign) ||\n // It is a protocol, it should be allowed.\n protocol.test(value.slice(0, colon))\n ) {\n return value\n }\n return ''\n}\n\n/**\n * Normalize a URL.\n *\n * Encode unsafe characters with percent-encoding, skipping already encoded\n * sequences.\n *\n * @param {string} value\n * URI to normalize.\n * @returns {string}\n * Normalized URI.\n */\nexport function normalizeUri(value) {\n /** @type {Array} */\n const result = []\n let index = -1\n let start = 0\n let skip = 0\n while (++index < value.length) {\n const code = value.charCodeAt(index)\n /** @type {string} */\n let replace = ''\n\n // A correct percent encoded value.\n if (\n code === 37 &&\n asciiAlphanumeric(value.charCodeAt(index + 1)) &&\n asciiAlphanumeric(value.charCodeAt(index + 2))\n ) {\n skip = 2\n }\n // ASCII.\n else if (code < 128) {\n if (!/[!#$&-;=?-Z_a-z~]/.test(String.fromCharCode(code))) {\n replace = String.fromCharCode(code)\n }\n }\n // Astral.\n else if (code > 55_295 && code < 57_344) {\n const next = value.charCodeAt(index + 1)\n\n // A correct surrogate pair.\n if (code < 56_320 && next > 56_319 && next < 57_344) {\n replace = String.fromCharCode(code, next)\n skip = 1\n }\n // Lone surrogate.\n else {\n replace = '\\uFFFD'\n }\n }\n // Unicode.\n else {\n replace = String.fromCharCode(code)\n }\n if (replace) {\n result.push(value.slice(start, index), encodeURIComponent(replace))\n start = index + skip + 1\n replace = ''\n }\n if (skip) {\n index += skip\n skip = 0\n }\n }\n return result.join('') + value.slice(start)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n *\n * @typedef {import('./state.js').State} State\n */\n\n/**\n * @callback FootnoteBackContentTemplate\n * Generate content for the backreference dynamically.\n *\n * For the following markdown:\n *\n * ```markdown\n * Alpha[^micromark], bravo[^micromark], and charlie[^remark].\n *\n * [^remark]: things about remark\n * [^micromark]: things about micromark\n * ```\n *\n * This function will be called with:\n *\n * * `0` and `0` for the backreference from `things about micromark` to\n * `alpha`, as it is the first used definition, and the first call to it\n * * `0` and `1` for the backreference from `things about micromark` to\n * `bravo`, as it is the first used definition, and the second call to it\n * * `1` and `0` for the backreference from `things about remark` to\n * `charlie`, as it is the second used definition\n * @param {number} referenceIndex\n * Index of the definition in the order that they are first referenced,\n * 0-indexed.\n * @param {number} rereferenceIndex\n * Index of calls to the same definition, 0-indexed.\n * @returns {Array | ElementContent | string}\n * Content for the backreference when linking back from definitions to their\n * reference.\n *\n * @callback FootnoteBackLabelTemplate\n * Generate a back label dynamically.\n *\n * For the following markdown:\n *\n * ```markdown\n * Alpha[^micromark], bravo[^micromark], and charlie[^remark].\n *\n * [^remark]: things about remark\n * [^micromark]: things about micromark\n * ```\n *\n * This function will be called with:\n *\n * * `0` and `0` for the backreference from `things about micromark` to\n * `alpha`, as it is the first used definition, and the first call to it\n * * `0` and `1` for the backreference from `things about micromark` to\n * `bravo`, as it is the first used definition, and the second call to it\n * * `1` and `0` for the backreference from `things about remark` to\n * `charlie`, as it is the second used definition\n * @param {number} referenceIndex\n * Index of the definition in the order that they are first referenced,\n * 0-indexed.\n * @param {number} rereferenceIndex\n * Index of calls to the same definition, 0-indexed.\n * @returns {string}\n * Back label to use when linking back from definitions to their reference.\n */\n\nimport structuredClone from '@ungap/structured-clone'\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\n\n/**\n * Generate the default content that GitHub uses on backreferences.\n *\n * @param {number} _\n * Index of the definition in the order that they are first referenced,\n * 0-indexed.\n * @param {number} rereferenceIndex\n * Index of calls to the same definition, 0-indexed.\n * @returns {Array}\n * Content.\n */\nexport function defaultFootnoteBackContent(_, rereferenceIndex) {\n /** @type {Array} */\n const result = [{type: 'text', value: '↩'}]\n\n if (rereferenceIndex > 1) {\n result.push({\n type: 'element',\n tagName: 'sup',\n properties: {},\n children: [{type: 'text', value: String(rereferenceIndex)}]\n })\n }\n\n return result\n}\n\n/**\n * Generate the default label that GitHub uses on backreferences.\n *\n * @param {number} referenceIndex\n * Index of the definition in the order that they are first referenced,\n * 0-indexed.\n * @param {number} rereferenceIndex\n * Index of calls to the same definition, 0-indexed.\n * @returns {string}\n * Label.\n */\nexport function defaultFootnoteBackLabel(referenceIndex, rereferenceIndex) {\n return (\n 'Back to reference ' +\n (referenceIndex + 1) +\n (rereferenceIndex > 1 ? '-' + rereferenceIndex : '')\n )\n}\n\n/**\n * Generate a hast footer for called footnote definitions.\n *\n * @param {State} state\n * Info passed around.\n * @returns {Element | undefined}\n * `section` element or `undefined`.\n */\n// eslint-disable-next-line complexity\nexport function footer(state) {\n const clobberPrefix =\n typeof state.options.clobberPrefix === 'string'\n ? state.options.clobberPrefix\n : 'user-content-'\n const footnoteBackContent =\n state.options.footnoteBackContent || defaultFootnoteBackContent\n const footnoteBackLabel =\n state.options.footnoteBackLabel || defaultFootnoteBackLabel\n const footnoteLabel = state.options.footnoteLabel || 'Footnotes'\n const footnoteLabelTagName = state.options.footnoteLabelTagName || 'h2'\n const footnoteLabelProperties = state.options.footnoteLabelProperties || {\n className: ['sr-only']\n }\n /** @type {Array} */\n const listItems = []\n let referenceIndex = -1\n\n while (++referenceIndex < state.footnoteOrder.length) {\n const definition = state.footnoteById.get(\n state.footnoteOrder[referenceIndex]\n )\n\n if (!definition) {\n continue\n }\n\n const content = state.all(definition)\n const id = String(definition.identifier).toUpperCase()\n const safeId = normalizeUri(id.toLowerCase())\n let rereferenceIndex = 0\n /** @type {Array} */\n const backReferences = []\n const counts = state.footnoteCounts.get(id)\n\n // eslint-disable-next-line no-unmodified-loop-condition\n while (counts !== undefined && ++rereferenceIndex <= counts) {\n if (backReferences.length > 0) {\n backReferences.push({type: 'text', value: ' '})\n }\n\n let children =\n typeof footnoteBackContent === 'string'\n ? footnoteBackContent\n : footnoteBackContent(referenceIndex, rereferenceIndex)\n\n if (typeof children === 'string') {\n children = {type: 'text', value: children}\n }\n\n backReferences.push({\n type: 'element',\n tagName: 'a',\n properties: {\n href:\n '#' +\n clobberPrefix +\n 'fnref-' +\n safeId +\n (rereferenceIndex > 1 ? '-' + rereferenceIndex : ''),\n dataFootnoteBackref: '',\n ariaLabel:\n typeof footnoteBackLabel === 'string'\n ? footnoteBackLabel\n : footnoteBackLabel(referenceIndex, rereferenceIndex),\n className: ['data-footnote-backref']\n },\n children: Array.isArray(children) ? children : [children]\n })\n }\n\n const tail = content[content.length - 1]\n\n if (tail && tail.type === 'element' && tail.tagName === 'p') {\n const tailTail = tail.children[tail.children.length - 1]\n if (tailTail && tailTail.type === 'text') {\n tailTail.value += ' '\n } else {\n tail.children.push({type: 'text', value: ' '})\n }\n\n tail.children.push(...backReferences)\n } else {\n content.push(...backReferences)\n }\n\n /** @type {Element} */\n const listItem = {\n type: 'element',\n tagName: 'li',\n properties: {id: clobberPrefix + 'fn-' + safeId},\n children: state.wrap(content, true)\n }\n\n state.patch(definition, listItem)\n\n listItems.push(listItem)\n }\n\n if (listItems.length === 0) {\n return\n }\n\n return {\n type: 'element',\n tagName: 'section',\n properties: {dataFootnotes: true, className: ['footnotes']},\n children: [\n {\n type: 'element',\n tagName: footnoteLabelTagName,\n properties: {\n ...structuredClone(footnoteLabelProperties),\n id: 'footnote-label'\n },\n children: [{type: 'text', value: footnoteLabel}]\n },\n {type: 'text', value: '\\n'},\n {\n type: 'element',\n tagName: 'ol',\n properties: {},\n children: state.wrap(listItems, true)\n },\n {type: 'text', value: '\\n'}\n ]\n }\n}\n","/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Parent} Parent\n */\n\n/**\n * @template Fn\n * @template Fallback\n * @typedef {Fn extends (value: any) => value is infer Thing ? Thing : Fallback} Predicate\n */\n\n/**\n * @callback Check\n * Check that an arbitrary value is a node.\n * @param {unknown} this\n * The given context.\n * @param {unknown} [node]\n * Anything (typically a node).\n * @param {number | null | undefined} [index]\n * The node’s position in its parent.\n * @param {Parent | null | undefined} [parent]\n * The node’s parent.\n * @returns {boolean}\n * Whether this is a node and passes a test.\n *\n * @typedef {Record | Node} Props\n * Object to check for equivalence.\n *\n * Note: `Node` is included as it is common but is not indexable.\n *\n * @typedef {Array | Props | TestFunction | string | null | undefined} Test\n * Check for an arbitrary node.\n *\n * @callback TestFunction\n * Check if a node passes a test.\n * @param {unknown} this\n * The given context.\n * @param {Node} node\n * A node.\n * @param {number | undefined} [index]\n * The node’s position in its parent.\n * @param {Parent | undefined} [parent]\n * The node’s parent.\n * @returns {boolean | undefined | void}\n * Whether this node passes the test.\n *\n * Note: `void` is included until TS sees no return as `undefined`.\n */\n\n/**\n * Check if `node` is a `Node` and whether it passes the given test.\n *\n * @param {unknown} node\n * Thing to check, typically `Node`.\n * @param {Test} test\n * A check for a specific node.\n * @param {number | null | undefined} index\n * The node’s position in its parent.\n * @param {Parent | null | undefined} parent\n * The node’s parent.\n * @param {unknown} context\n * Context object (`this`) to pass to `test` functions.\n * @returns {boolean}\n * Whether `node` is a node and passes a test.\n */\nexport const is =\n // Note: overloads in JSDoc can’t yet use different `@template`s.\n /**\n * @type {(\n * ((node: unknown, test: Condition, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & {type: Condition}) &\n * ((node: unknown, test: Condition, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & Condition) &\n * ((node: unknown, test: Condition, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & Predicate) &\n * ((node?: null | undefined) => false) &\n * ((node: unknown, test?: null | undefined, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node) &\n * ((node: unknown, test?: Test, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => boolean)\n * )}\n */\n (\n /**\n * @param {unknown} [node]\n * @param {Test} [test]\n * @param {number | null | undefined} [index]\n * @param {Parent | null | undefined} [parent]\n * @param {unknown} [context]\n * @returns {boolean}\n */\n // eslint-disable-next-line max-params\n function (node, test, index, parent, context) {\n const check = convert(test)\n\n if (\n index !== undefined &&\n index !== null &&\n (typeof index !== 'number' ||\n index < 0 ||\n index === Number.POSITIVE_INFINITY)\n ) {\n throw new Error('Expected positive finite index')\n }\n\n if (\n parent !== undefined &&\n parent !== null &&\n (!is(parent) || !parent.children)\n ) {\n throw new Error('Expected parent node')\n }\n\n if (\n (parent === undefined || parent === null) !==\n (index === undefined || index === null)\n ) {\n throw new Error('Expected both parent and index')\n }\n\n return looksLikeANode(node)\n ? check.call(context, node, index, parent)\n : false\n }\n )\n\n/**\n * Generate an assertion from a test.\n *\n * Useful if you’re going to test many nodes, for example when creating a\n * utility where something else passes a compatible test.\n *\n * The created function is a bit faster because it expects valid input only:\n * a `node`, `index`, and `parent`.\n *\n * @param {Test} test\n * * when nullish, checks if `node` is a `Node`.\n * * when `string`, works like passing `(node) => node.type === test`.\n * * when `function` checks if function passed the node is true.\n * * when `object`, checks that all keys in test are in node, and that they have (strictly) equal values.\n * * when `array`, checks if any one of the subtests pass.\n * @returns {Check}\n * An assertion.\n */\nexport const convert =\n // Note: overloads in JSDoc can’t yet use different `@template`s.\n /**\n * @type {(\n * ((test: Condition) => (node: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & {type: Condition}) &\n * ((test: Condition) => (node: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & Condition) &\n * ((test: Condition) => (node: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & Predicate) &\n * ((test?: null | undefined) => (node?: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node) &\n * ((test?: Test) => Check)\n * )}\n */\n (\n /**\n * @param {Test} [test]\n * @returns {Check}\n */\n function (test) {\n if (test === null || test === undefined) {\n return ok\n }\n\n if (typeof test === 'function') {\n return castFactory(test)\n }\n\n if (typeof test === 'object') {\n return Array.isArray(test) ? anyFactory(test) : propsFactory(test)\n }\n\n if (typeof test === 'string') {\n return typeFactory(test)\n }\n\n throw new Error('Expected function, string, or object as test')\n }\n )\n\n/**\n * @param {Array} tests\n * @returns {Check}\n */\nfunction anyFactory(tests) {\n /** @type {Array} */\n const checks = []\n let index = -1\n\n while (++index < tests.length) {\n checks[index] = convert(tests[index])\n }\n\n return castFactory(any)\n\n /**\n * @this {unknown}\n * @type {TestFunction}\n */\n function any(...parameters) {\n let index = -1\n\n while (++index < checks.length) {\n if (checks[index].apply(this, parameters)) return true\n }\n\n return false\n }\n}\n\n/**\n * Turn an object into a test for a node with a certain fields.\n *\n * @param {Props} check\n * @returns {Check}\n */\nfunction propsFactory(check) {\n const checkAsRecord = /** @type {Record} */ (check)\n\n return castFactory(all)\n\n /**\n * @param {Node} node\n * @returns {boolean}\n */\n function all(node) {\n const nodeAsRecord = /** @type {Record} */ (\n /** @type {unknown} */ (node)\n )\n\n /** @type {string} */\n let key\n\n for (key in check) {\n if (nodeAsRecord[key] !== checkAsRecord[key]) return false\n }\n\n return true\n }\n}\n\n/**\n * Turn a string into a test for a node with a certain type.\n *\n * @param {string} check\n * @returns {Check}\n */\nfunction typeFactory(check) {\n return castFactory(type)\n\n /**\n * @param {Node} node\n */\n function type(node) {\n return node && node.type === check\n }\n}\n\n/**\n * Turn a custom test into a test for a node that passes that test.\n *\n * @param {TestFunction} testFunction\n * @returns {Check}\n */\nfunction castFactory(testFunction) {\n return check\n\n /**\n * @this {unknown}\n * @type {Check}\n */\n function check(value, index, parent) {\n return Boolean(\n looksLikeANode(value) &&\n testFunction.call(\n this,\n value,\n typeof index === 'number' ? index : undefined,\n parent || undefined\n )\n )\n }\n}\n\nfunction ok() {\n return true\n}\n\n/**\n * @param {unknown} value\n * @returns {value is Node}\n */\nfunction looksLikeANode(value) {\n return value !== null && typeof value === 'object' && 'type' in value\n}\n","/**\n * @typedef {import('unist').Node} UnistNode\n * @typedef {import('unist').Parent} UnistParent\n */\n\n/**\n * @typedef {Exclude | undefined} Test\n * Test from `unist-util-is`.\n *\n * Note: we have remove and add `undefined`, because otherwise when generating\n * automatic `.d.ts` files, TS tries to flatten paths from a local perspective,\n * which doesn’t work when publishing on npm.\n */\n\n/**\n * @typedef {(\n * Fn extends (value: any) => value is infer Thing\n * ? Thing\n * : Fallback\n * )} Predicate\n * Get the value of a type guard `Fn`.\n * @template Fn\n * Value; typically function that is a type guard (such as `(x): x is Y`).\n * @template Fallback\n * Value to yield if `Fn` is not a type guard.\n */\n\n/**\n * @typedef {(\n * Check extends null | undefined // No test.\n * ? Value\n * : Value extends {type: Check} // String (type) test.\n * ? Value\n * : Value extends Check // Partial test.\n * ? Value\n * : Check extends Function // Function test.\n * ? Predicate extends Value\n * ? Predicate\n * : never\n * : never // Some other test?\n * )} MatchesOne\n * Check whether a node matches a primitive check in the type system.\n * @template Value\n * Value; typically unist `Node`.\n * @template Check\n * Value; typically `unist-util-is`-compatible test, but not arrays.\n */\n\n/**\n * @typedef {(\n * Check extends Array\n * ? MatchesOne\n * : MatchesOne\n * )} Matches\n * Check whether a node matches a check in the type system.\n * @template Value\n * Value; typically unist `Node`.\n * @template Check\n * Value; typically `unist-util-is`-compatible test.\n */\n\n/**\n * @typedef {0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10} Uint\n * Number; capped reasonably.\n */\n\n/**\n * @typedef {I extends 0 ? 1 : I extends 1 ? 2 : I extends 2 ? 3 : I extends 3 ? 4 : I extends 4 ? 5 : I extends 5 ? 6 : I extends 6 ? 7 : I extends 7 ? 8 : I extends 8 ? 9 : 10} Increment\n * Increment a number in the type system.\n * @template {Uint} [I=0]\n * Index.\n */\n\n/**\n * @typedef {(\n * Node extends UnistParent\n * ? Node extends {children: Array}\n * ? Child extends Children ? Node : never\n * : never\n * : never\n * )} InternalParent\n * Collect nodes that can be parents of `Child`.\n * @template {UnistNode} Node\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n */\n\n/**\n * @typedef {InternalParent, Child>} Parent\n * Collect nodes in `Tree` that can be parents of `Child`.\n * @template {UnistNode} Tree\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n */\n\n/**\n * @typedef {(\n * Depth extends Max\n * ? never\n * :\n * | InternalParent\n * | InternalAncestor, Max, Increment>\n * )} InternalAncestor\n * Collect nodes in `Tree` that can be ancestors of `Child`.\n * @template {UnistNode} Node\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n * @template {Uint} [Max=10]\n * Max; searches up to this depth.\n * @template {Uint} [Depth=0]\n * Current depth.\n */\n\n/**\n * @typedef {InternalAncestor, Child>} Ancestor\n * Collect nodes in `Tree` that can be ancestors of `Child`.\n * @template {UnistNode} Tree\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n */\n\n/**\n * @typedef {(\n * Tree extends UnistParent\n * ? Depth extends Max\n * ? Tree\n * : Tree | InclusiveDescendant>\n * : Tree\n * )} InclusiveDescendant\n * Collect all (inclusive) descendants of `Tree`.\n *\n * > 👉 **Note**: for performance reasons, this seems to be the fastest way to\n * > recurse without actually running into an infinite loop, which the\n * > previous version did.\n * >\n * > Practically, a max of `2` is typically enough assuming a `Root` is\n * > passed, but it doesn’t improve performance.\n * > It gets higher with `List > ListItem > Table > TableRow > TableCell`.\n * > Using up to `10` doesn’t hurt or help either.\n * @template {UnistNode} Tree\n * Tree type.\n * @template {Uint} [Max=10]\n * Max; searches up to this depth.\n * @template {Uint} [Depth=0]\n * Current depth.\n */\n\n/**\n * @typedef {'skip' | boolean} Action\n * Union of the action types.\n *\n * @typedef {number} Index\n * Move to the sibling at `index` next (after node itself is completely\n * traversed).\n *\n * Useful if mutating the tree, such as removing the node the visitor is\n * currently on, or any of its previous siblings.\n * Results less than 0 or greater than or equal to `children.length` stop\n * traversing the parent.\n *\n * @typedef {[(Action | null | undefined | void)?, (Index | null | undefined)?]} ActionTuple\n * List with one or two values, the first an action, the second an index.\n *\n * @typedef {Action | ActionTuple | Index | null | undefined | void} VisitorResult\n * Any value that can be returned from a visitor.\n */\n\n/**\n * @callback Visitor\n * Handle a node (matching `test`, if given).\n *\n * Visitors are free to transform `node`.\n * They can also transform the parent of node (the last of `ancestors`).\n *\n * Replacing `node` itself, if `SKIP` is not returned, still causes its\n * descendants to be walked (which is a bug).\n *\n * When adding or removing previous siblings of `node` (or next siblings, in\n * case of reverse), the `Visitor` should return a new `Index` to specify the\n * sibling to traverse after `node` is traversed.\n * Adding or removing next siblings of `node` (or previous siblings, in case\n * of reverse) is handled as expected without needing to return a new `Index`.\n *\n * Removing the children property of an ancestor still results in them being\n * traversed.\n * @param {Visited} node\n * Found node.\n * @param {Array} ancestors\n * Ancestors of `node`.\n * @returns {VisitorResult}\n * What to do next.\n *\n * An `Index` is treated as a tuple of `[CONTINUE, Index]`.\n * An `Action` is treated as a tuple of `[Action]`.\n *\n * Passing a tuple back only makes sense if the `Action` is `SKIP`.\n * When the `Action` is `EXIT`, that action can be returned.\n * When the `Action` is `CONTINUE`, `Index` can be returned.\n * @template {UnistNode} [Visited=UnistNode]\n * Visited node type.\n * @template {UnistParent} [VisitedParents=UnistParent]\n * Ancestor type.\n */\n\n/**\n * @typedef {Visitor, Check>, Ancestor, Check>>>} BuildVisitor\n * Build a typed `Visitor` function from a tree and a test.\n *\n * It will infer which values are passed as `node` and which as `parents`.\n * @template {UnistNode} [Tree=UnistNode]\n * Tree type.\n * @template {Test} [Check=Test]\n * Test type.\n */\n\nimport {convert} from 'unist-util-is'\nimport {color} from 'unist-util-visit-parents/do-not-use-color'\n\n/** @type {Readonly} */\nconst empty = []\n\n/**\n * Continue traversing as normal.\n */\nexport const CONTINUE = true\n\n/**\n * Stop traversing immediately.\n */\nexport const EXIT = false\n\n/**\n * Do not traverse this node’s children.\n */\nexport const SKIP = 'skip'\n\n/**\n * Visit nodes, with ancestral information.\n *\n * This algorithm performs *depth-first* *tree traversal* in *preorder*\n * (**NLR**) or if `reverse` is given, in *reverse preorder* (**NRL**).\n *\n * You can choose for which nodes `visitor` is called by passing a `test`.\n * For complex tests, you should test yourself in `visitor`, as it will be\n * faster and will have improved type information.\n *\n * Walking the tree is an intensive task.\n * Make use of the return values of the visitor when possible.\n * Instead of walking a tree multiple times, walk it once, use `unist-util-is`\n * to check if a node matches, and then perform different operations.\n *\n * You can change the tree.\n * See `Visitor` for more info.\n *\n * @overload\n * @param {Tree} tree\n * @param {Check} check\n * @param {BuildVisitor} visitor\n * @param {boolean | null | undefined} [reverse]\n * @returns {undefined}\n *\n * @overload\n * @param {Tree} tree\n * @param {BuildVisitor} visitor\n * @param {boolean | null | undefined} [reverse]\n * @returns {undefined}\n *\n * @param {UnistNode} tree\n * Tree to traverse.\n * @param {Visitor | Test} test\n * `unist-util-is`-compatible test\n * @param {Visitor | boolean | null | undefined} [visitor]\n * Handle each node.\n * @param {boolean | null | undefined} [reverse]\n * Traverse in reverse preorder (NRL) instead of the default preorder (NLR).\n * @returns {undefined}\n * Nothing.\n *\n * @template {UnistNode} Tree\n * Node type.\n * @template {Test} Check\n * `unist-util-is`-compatible test.\n */\nexport function visitParents(tree, test, visitor, reverse) {\n /** @type {Test} */\n let check\n\n if (typeof test === 'function' && typeof visitor !== 'function') {\n reverse = visitor\n // @ts-expect-error no visitor given, so `visitor` is test.\n visitor = test\n } else {\n // @ts-expect-error visitor given, so `test` isn’t a visitor.\n check = test\n }\n\n const is = convert(check)\n const step = reverse ? -1 : 1\n\n factory(tree, undefined, [])()\n\n /**\n * @param {UnistNode} node\n * @param {number | undefined} index\n * @param {Array} parents\n */\n function factory(node, index, parents) {\n const value = /** @type {Record} */ (\n node && typeof node === 'object' ? node : {}\n )\n\n if (typeof value.type === 'string') {\n const name =\n // `hast`\n typeof value.tagName === 'string'\n ? value.tagName\n : // `xast`\n typeof value.name === 'string'\n ? value.name\n : undefined\n\n Object.defineProperty(visit, 'name', {\n value:\n 'node (' + color(node.type + (name ? '<' + name + '>' : '')) + ')'\n })\n }\n\n return visit\n\n function visit() {\n /** @type {Readonly} */\n let result = empty\n /** @type {Readonly} */\n let subresult\n /** @type {number} */\n let offset\n /** @type {Array} */\n let grandparents\n\n if (!test || is(node, index, parents[parents.length - 1] || undefined)) {\n // @ts-expect-error: `visitor` is now a visitor.\n result = toResult(visitor(node, parents))\n\n if (result[0] === EXIT) {\n return result\n }\n }\n\n if ('children' in node && node.children) {\n const nodeAsParent = /** @type {UnistParent} */ (node)\n\n if (nodeAsParent.children && result[0] !== SKIP) {\n offset = (reverse ? nodeAsParent.children.length : -1) + step\n grandparents = parents.concat(nodeAsParent)\n\n while (offset > -1 && offset < nodeAsParent.children.length) {\n const child = nodeAsParent.children[offset]\n\n subresult = factory(child, offset, grandparents)()\n\n if (subresult[0] === EXIT) {\n return subresult\n }\n\n offset =\n typeof subresult[1] === 'number' ? subresult[1] : offset + step\n }\n }\n }\n\n return result\n }\n }\n}\n\n/**\n * Turn a return value into a clean result.\n *\n * @param {VisitorResult} value\n * Valid return values from visitors.\n * @returns {Readonly}\n * Clean result.\n */\nfunction toResult(value) {\n if (Array.isArray(value)) {\n return value\n }\n\n if (typeof value === 'number') {\n return [CONTINUE, value]\n }\n\n return value === null || value === undefined ? empty : [value]\n}\n","/**\n * @typedef {import('unist').Node} UnistNode\n * @typedef {import('unist').Parent} UnistParent\n * @typedef {import('unist-util-visit-parents').VisitorResult} VisitorResult\n */\n\n/**\n * @typedef {Exclude | undefined} Test\n * Test from `unist-util-is`.\n *\n * Note: we have remove and add `undefined`, because otherwise when generating\n * automatic `.d.ts` files, TS tries to flatten paths from a local perspective,\n * which doesn’t work when publishing on npm.\n */\n\n// To do: use types from `unist-util-visit-parents` when it’s released.\n\n/**\n * @typedef {(\n * Fn extends (value: any) => value is infer Thing\n * ? Thing\n * : Fallback\n * )} Predicate\n * Get the value of a type guard `Fn`.\n * @template Fn\n * Value; typically function that is a type guard (such as `(x): x is Y`).\n * @template Fallback\n * Value to yield if `Fn` is not a type guard.\n */\n\n/**\n * @typedef {(\n * Check extends null | undefined // No test.\n * ? Value\n * : Value extends {type: Check} // String (type) test.\n * ? Value\n * : Value extends Check // Partial test.\n * ? Value\n * : Check extends Function // Function test.\n * ? Predicate extends Value\n * ? Predicate\n * : never\n * : never // Some other test?\n * )} MatchesOne\n * Check whether a node matches a primitive check in the type system.\n * @template Value\n * Value; typically unist `Node`.\n * @template Check\n * Value; typically `unist-util-is`-compatible test, but not arrays.\n */\n\n/**\n * @typedef {(\n * Check extends Array\n * ? MatchesOne\n * : MatchesOne\n * )} Matches\n * Check whether a node matches a check in the type system.\n * @template Value\n * Value; typically unist `Node`.\n * @template Check\n * Value; typically `unist-util-is`-compatible test.\n */\n\n/**\n * @typedef {0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10} Uint\n * Number; capped reasonably.\n */\n\n/**\n * @typedef {I extends 0 ? 1 : I extends 1 ? 2 : I extends 2 ? 3 : I extends 3 ? 4 : I extends 4 ? 5 : I extends 5 ? 6 : I extends 6 ? 7 : I extends 7 ? 8 : I extends 8 ? 9 : 10} Increment\n * Increment a number in the type system.\n * @template {Uint} [I=0]\n * Index.\n */\n\n/**\n * @typedef {(\n * Node extends UnistParent\n * ? Node extends {children: Array}\n * ? Child extends Children ? Node : never\n * : never\n * : never\n * )} InternalParent\n * Collect nodes that can be parents of `Child`.\n * @template {UnistNode} Node\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n */\n\n/**\n * @typedef {InternalParent, Child>} Parent\n * Collect nodes in `Tree` that can be parents of `Child`.\n * @template {UnistNode} Tree\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n */\n\n/**\n * @typedef {(\n * Depth extends Max\n * ? never\n * :\n * | InternalParent\n * | InternalAncestor, Max, Increment>\n * )} InternalAncestor\n * Collect nodes in `Tree` that can be ancestors of `Child`.\n * @template {UnistNode} Node\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n * @template {Uint} [Max=10]\n * Max; searches up to this depth.\n * @template {Uint} [Depth=0]\n * Current depth.\n */\n\n/**\n * @typedef {(\n * Tree extends UnistParent\n * ? Depth extends Max\n * ? Tree\n * : Tree | InclusiveDescendant>\n * : Tree\n * )} InclusiveDescendant\n * Collect all (inclusive) descendants of `Tree`.\n *\n * > 👉 **Note**: for performance reasons, this seems to be the fastest way to\n * > recurse without actually running into an infinite loop, which the\n * > previous version did.\n * >\n * > Practically, a max of `2` is typically enough assuming a `Root` is\n * > passed, but it doesn’t improve performance.\n * > It gets higher with `List > ListItem > Table > TableRow > TableCell`.\n * > Using up to `10` doesn’t hurt or help either.\n * @template {UnistNode} Tree\n * Tree type.\n * @template {Uint} [Max=10]\n * Max; searches up to this depth.\n * @template {Uint} [Depth=0]\n * Current depth.\n */\n\n/**\n * @callback Visitor\n * Handle a node (matching `test`, if given).\n *\n * Visitors are free to transform `node`.\n * They can also transform `parent`.\n *\n * Replacing `node` itself, if `SKIP` is not returned, still causes its\n * descendants to be walked (which is a bug).\n *\n * When adding or removing previous siblings of `node` (or next siblings, in\n * case of reverse), the `Visitor` should return a new `Index` to specify the\n * sibling to traverse after `node` is traversed.\n * Adding or removing next siblings of `node` (or previous siblings, in case\n * of reverse) is handled as expected without needing to return a new `Index`.\n *\n * Removing the children property of `parent` still results in them being\n * traversed.\n * @param {Visited} node\n * Found node.\n * @param {Visited extends UnistNode ? number | undefined : never} index\n * Index of `node` in `parent`.\n * @param {Ancestor extends UnistParent ? Ancestor | undefined : never} parent\n * Parent of `node`.\n * @returns {VisitorResult}\n * What to do next.\n *\n * An `Index` is treated as a tuple of `[CONTINUE, Index]`.\n * An `Action` is treated as a tuple of `[Action]`.\n *\n * Passing a tuple back only makes sense if the `Action` is `SKIP`.\n * When the `Action` is `EXIT`, that action can be returned.\n * When the `Action` is `CONTINUE`, `Index` can be returned.\n * @template {UnistNode} [Visited=UnistNode]\n * Visited node type.\n * @template {UnistParent} [Ancestor=UnistParent]\n * Ancestor type.\n */\n\n/**\n * @typedef {Visitor>} BuildVisitorFromMatch\n * Build a typed `Visitor` function from a node and all possible parents.\n *\n * It will infer which values are passed as `node` and which as `parent`.\n * @template {UnistNode} Visited\n * Node type.\n * @template {UnistParent} Ancestor\n * Parent type.\n */\n\n/**\n * @typedef {(\n * BuildVisitorFromMatch<\n * Matches,\n * Extract\n * >\n * )} BuildVisitorFromDescendants\n * Build a typed `Visitor` function from a list of descendants and a test.\n *\n * It will infer which values are passed as `node` and which as `parent`.\n * @template {UnistNode} Descendant\n * Node type.\n * @template {Test} Check\n * Test type.\n */\n\n/**\n * @typedef {(\n * BuildVisitorFromDescendants<\n * InclusiveDescendant,\n * Check\n * >\n * )} BuildVisitor\n * Build a typed `Visitor` function from a tree and a test.\n *\n * It will infer which values are passed as `node` and which as `parent`.\n * @template {UnistNode} [Tree=UnistNode]\n * Node type.\n * @template {Test} [Check=Test]\n * Test type.\n */\n\nimport {visitParents} from 'unist-util-visit-parents'\n\nexport {CONTINUE, EXIT, SKIP} from 'unist-util-visit-parents'\n\n/**\n * Visit nodes.\n *\n * This algorithm performs *depth-first* *tree traversal* in *preorder*\n * (**NLR**) or if `reverse` is given, in *reverse preorder* (**NRL**).\n *\n * You can choose for which nodes `visitor` is called by passing a `test`.\n * For complex tests, you should test yourself in `visitor`, as it will be\n * faster and will have improved type information.\n *\n * Walking the tree is an intensive task.\n * Make use of the return values of the visitor when possible.\n * Instead of walking a tree multiple times, walk it once, use `unist-util-is`\n * to check if a node matches, and then perform different operations.\n *\n * You can change the tree.\n * See `Visitor` for more info.\n *\n * @overload\n * @param {Tree} tree\n * @param {Check} check\n * @param {BuildVisitor} visitor\n * @param {boolean | null | undefined} [reverse]\n * @returns {undefined}\n *\n * @overload\n * @param {Tree} tree\n * @param {BuildVisitor} visitor\n * @param {boolean | null | undefined} [reverse]\n * @returns {undefined}\n *\n * @param {UnistNode} tree\n * Tree to traverse.\n * @param {Visitor | Test} testOrVisitor\n * `unist-util-is`-compatible test (optional, omit to pass a visitor).\n * @param {Visitor | boolean | null | undefined} [visitorOrReverse]\n * Handle each node (when test is omitted, pass `reverse`).\n * @param {boolean | null | undefined} [maybeReverse=false]\n * Traverse in reverse preorder (NRL) instead of the default preorder (NLR).\n * @returns {undefined}\n * Nothing.\n *\n * @template {UnistNode} Tree\n * Node type.\n * @template {Test} Check\n * `unist-util-is`-compatible test.\n */\nexport function visit(tree, testOrVisitor, visitorOrReverse, maybeReverse) {\n /** @type {boolean | null | undefined} */\n let reverse\n /** @type {Test} */\n let test\n /** @type {Visitor} */\n let visitor\n\n if (\n typeof testOrVisitor === 'function' &&\n typeof visitorOrReverse !== 'function'\n ) {\n test = undefined\n visitor = testOrVisitor\n reverse = visitorOrReverse\n } else {\n // @ts-expect-error: assume the overload with test was given.\n test = testOrVisitor\n // @ts-expect-error: assume the overload with test was given.\n visitor = visitorOrReverse\n reverse = maybeReverse\n }\n\n visitParents(tree, test, overload, reverse)\n\n /**\n * @param {UnistNode} node\n * @param {Array} parents\n */\n function overload(node, parents) {\n const parent = parents[parents.length - 1]\n const index = parent ? parent.children.indexOf(node) : undefined\n return visitor(node, index, parent)\n }\n}\n","/**\n * @typedef {import('hast').ElementContent} ElementContent\n *\n * @typedef {import('mdast').Nodes} Nodes\n * @typedef {import('mdast').Reference} Reference\n *\n * @typedef {import('./state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Return the content of a reference without definition as plain text.\n *\n * @param {State} state\n * Info passed around.\n * @param {Extract} node\n * Reference node (image, link).\n * @returns {Array}\n * hast content.\n */\nexport function revert(state, node) {\n const subtype = node.referenceType\n let suffix = ']'\n\n if (subtype === 'collapsed') {\n suffix += '[]'\n } else if (subtype === 'full') {\n suffix += '[' + (node.label || node.identifier) + ']'\n }\n\n if (node.type === 'imageReference') {\n return [{type: 'text', value: '![' + node.alt + suffix}]\n }\n\n const contents = state.all(node)\n const head = contents[0]\n\n if (head && head.type === 'text') {\n head.value = '[' + head.value\n } else {\n contents.unshift({type: 'text', value: '['})\n }\n\n const tail = contents[contents.length - 1]\n\n if (tail && tail.type === 'text') {\n tail.value += suffix\n } else {\n contents.push({type: 'text', value: suffix})\n }\n\n return contents\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').ListItem} ListItem\n * @typedef {import('mdast').Parents} Parents\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `listItem` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {ListItem} node\n * mdast node.\n * @param {Parents | undefined} parent\n * Parent of `node`.\n * @returns {Element}\n * hast node.\n */\nexport function listItem(state, node, parent) {\n const results = state.all(node)\n const loose = parent ? listLoose(parent) : listItemLoose(node)\n /** @type {Properties} */\n const properties = {}\n /** @type {Array} */\n const children = []\n\n if (typeof node.checked === 'boolean') {\n const head = results[0]\n /** @type {Element} */\n let paragraph\n\n if (head && head.type === 'element' && head.tagName === 'p') {\n paragraph = head\n } else {\n paragraph = {type: 'element', tagName: 'p', properties: {}, children: []}\n results.unshift(paragraph)\n }\n\n if (paragraph.children.length > 0) {\n paragraph.children.unshift({type: 'text', value: ' '})\n }\n\n paragraph.children.unshift({\n type: 'element',\n tagName: 'input',\n properties: {type: 'checkbox', checked: node.checked, disabled: true},\n children: []\n })\n\n // According to github-markdown-css, this class hides bullet.\n // See: .\n properties.className = ['task-list-item']\n }\n\n let index = -1\n\n while (++index < results.length) {\n const child = results[index]\n\n // Add eols before nodes, except if this is a loose, first paragraph.\n if (\n loose ||\n index !== 0 ||\n child.type !== 'element' ||\n child.tagName !== 'p'\n ) {\n children.push({type: 'text', value: '\\n'})\n }\n\n if (child.type === 'element' && child.tagName === 'p' && !loose) {\n children.push(...child.children)\n } else {\n children.push(child)\n }\n }\n\n const tail = results[results.length - 1]\n\n // Add a final eol.\n if (tail && (loose || tail.type !== 'element' || tail.tagName !== 'p')) {\n children.push({type: 'text', value: '\\n'})\n }\n\n /** @type {Element} */\n const result = {type: 'element', tagName: 'li', properties, children}\n state.patch(node, result)\n return state.applyData(node, result)\n}\n\n/**\n * @param {Parents} node\n * @return {Boolean}\n */\nfunction listLoose(node) {\n let loose = false\n if (node.type === 'list') {\n loose = node.spread || false\n const children = node.children\n let index = -1\n\n while (!loose && ++index < children.length) {\n loose = listItemLoose(children[index])\n }\n }\n\n return loose\n}\n\n/**\n * @param {ListItem} node\n * @return {Boolean}\n */\nfunction listItemLoose(node) {\n const spread = node.spread\n\n return spread === null || spread === undefined\n ? node.children.length > 1\n : spread\n}\n","const tab = 9 /* `\\t` */\nconst space = 32 /* ` ` */\n\n/**\n * Remove initial and final spaces and tabs at the line breaks in `value`.\n * Does not trim initial and final spaces and tabs of the value itself.\n *\n * @param {string} value\n * Value to trim.\n * @returns {string}\n * Trimmed value.\n */\nexport function trimLines(value) {\n const source = String(value)\n const search = /\\r?\\n|\\r/g\n let match = search.exec(source)\n let last = 0\n /** @type {Array} */\n const lines = []\n\n while (match) {\n lines.push(\n trimLine(source.slice(last, match.index), last > 0, true),\n match[0]\n )\n\n last = match.index + match[0].length\n match = search.exec(source)\n }\n\n lines.push(trimLine(source.slice(last), last > 0, false))\n\n return lines.join('')\n}\n\n/**\n * @param {string} value\n * Line to trim.\n * @param {boolean} start\n * Whether to trim the start of the line.\n * @param {boolean} end\n * Whether to trim the end of the line.\n * @returns {string}\n * Trimmed line.\n */\nfunction trimLine(value, start, end) {\n let startIndex = 0\n let endIndex = value.length\n\n if (start) {\n let code = value.codePointAt(startIndex)\n\n while (code === tab || code === space) {\n startIndex++\n code = value.codePointAt(startIndex)\n }\n }\n\n if (end) {\n let code = value.codePointAt(endIndex - 1)\n\n while (code === tab || code === space) {\n endIndex--\n code = value.codePointAt(endIndex - 1)\n }\n }\n\n return endIndex > startIndex ? value.slice(startIndex, endIndex) : ''\n}\n","import {blockquote} from './blockquote.js'\nimport {hardBreak} from './break.js'\nimport {code} from './code.js'\nimport {strikethrough} from './delete.js'\nimport {emphasis} from './emphasis.js'\nimport {footnoteReference} from './footnote-reference.js'\nimport {heading} from './heading.js'\nimport {html} from './html.js'\nimport {imageReference} from './image-reference.js'\nimport {image} from './image.js'\nimport {inlineCode} from './inline-code.js'\nimport {linkReference} from './link-reference.js'\nimport {link} from './link.js'\nimport {listItem} from './list-item.js'\nimport {list} from './list.js'\nimport {paragraph} from './paragraph.js'\nimport {root} from './root.js'\nimport {strong} from './strong.js'\nimport {table} from './table.js'\nimport {tableRow} from './table-row.js'\nimport {tableCell} from './table-cell.js'\nimport {text} from './text.js'\nimport {thematicBreak} from './thematic-break.js'\n\n/**\n * Default handlers for nodes.\n *\n * @satisfies {import('../state.js').Handlers}\n */\nexport const handlers = {\n blockquote,\n break: hardBreak,\n code,\n delete: strikethrough,\n emphasis,\n footnoteReference,\n heading,\n html,\n imageReference,\n image,\n inlineCode,\n linkReference,\n link,\n listItem,\n list,\n paragraph,\n // @ts-expect-error: root is different, but hard to type.\n root,\n strong,\n table,\n tableCell,\n tableRow,\n text,\n thematicBreak,\n toml: ignore,\n yaml: ignore,\n definition: ignore,\n footnoteDefinition: ignore\n}\n\n// Return nothing for nodes that are ignored.\nfunction ignore() {\n return undefined\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Blockquote} Blockquote\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `blockquote` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {Blockquote} node\n * mdast node.\n * @returns {Element}\n * hast node.\n */\nexport function blockquote(state, node) {\n /** @type {Element} */\n const result = {\n type: 'element',\n tagName: 'blockquote',\n properties: {},\n children: state.wrap(state.all(node), true)\n }\n state.patch(node, result)\n return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Text} Text\n * @typedef {import('mdast').Break} Break\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `break` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {Break} node\n * mdast node.\n * @returns {Array}\n * hast element content.\n */\nexport function hardBreak(state, node) {\n /** @type {Element} */\n const result = {type: 'element', tagName: 'br', properties: {}, children: []}\n state.patch(node, result)\n return [state.applyData(node, result), {type: 'text', value: '\\n'}]\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').Code} Code\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `code` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {Code} node\n * mdast node.\n * @returns {Element}\n * hast node.\n */\nexport function code(state, node) {\n const value = node.value ? node.value + '\\n' : ''\n /** @type {Properties} */\n const properties = {}\n\n if (node.lang) {\n properties.className = ['language-' + node.lang]\n }\n\n // Create ``.\n /** @type {Element} */\n let result = {\n type: 'element',\n tagName: 'code',\n properties,\n children: [{type: 'text', value}]\n }\n\n if (node.meta) {\n result.data = {meta: node.meta}\n }\n\n state.patch(node, result)\n result = state.applyData(node, result)\n\n // Create `
`.\n  result = {type: 'element', tagName: 'pre', properties: {}, children: [result]}\n  state.patch(node, result)\n  return result\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Delete} Delete\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `delete` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Delete} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function strikethrough(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'del',\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Emphasis} Emphasis\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `emphasis` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Emphasis} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function emphasis(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'em',\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').FootnoteReference} FootnoteReference\n * @typedef {import('../state.js').State} State\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\n\n/**\n * Turn an mdast `footnoteReference` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {FootnoteReference} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function footnoteReference(state, node) {\n  const clobberPrefix =\n    typeof state.options.clobberPrefix === 'string'\n      ? state.options.clobberPrefix\n      : 'user-content-'\n  const id = String(node.identifier).toUpperCase()\n  const safeId = normalizeUri(id.toLowerCase())\n  const index = state.footnoteOrder.indexOf(id)\n  /** @type {number} */\n  let counter\n\n  let reuseCounter = state.footnoteCounts.get(id)\n\n  if (reuseCounter === undefined) {\n    reuseCounter = 0\n    state.footnoteOrder.push(id)\n    counter = state.footnoteOrder.length\n  } else {\n    counter = index + 1\n  }\n\n  reuseCounter += 1\n  state.footnoteCounts.set(id, reuseCounter)\n\n  /** @type {Element} */\n  const link = {\n    type: 'element',\n    tagName: 'a',\n    properties: {\n      href: '#' + clobberPrefix + 'fn-' + safeId,\n      id:\n        clobberPrefix +\n        'fnref-' +\n        safeId +\n        (reuseCounter > 1 ? '-' + reuseCounter : ''),\n      dataFootnoteRef: true,\n      ariaDescribedBy: ['footnote-label']\n    },\n    children: [{type: 'text', value: String(counter)}]\n  }\n  state.patch(node, link)\n\n  /** @type {Element} */\n  const sup = {\n    type: 'element',\n    tagName: 'sup',\n    properties: {},\n    children: [link]\n  }\n  state.patch(node, sup)\n  return state.applyData(node, sup)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Heading} Heading\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `heading` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Heading} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function heading(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'h' + node.depth,\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Html} Html\n * @typedef {import('../state.js').State} State\n * @typedef {import('../../index.js').Raw} Raw\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `html` node into hast (`raw` node in dangerous mode, otherwise\n * nothing).\n *\n * @param {State} state\n *   Info passed around.\n * @param {Html} node\n *   mdast node.\n * @returns {Element | Raw | undefined}\n *   hast node.\n */\nexport function html(state, node) {\n  if (state.options.allowDangerousHtml) {\n    /** @type {Raw} */\n    const result = {type: 'raw', value: node.value}\n    state.patch(node, result)\n    return state.applyData(node, result)\n  }\n\n  return undefined\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').ImageReference} ImageReference\n * @typedef {import('../state.js').State} State\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\nimport {revert} from '../revert.js'\n\n/**\n * Turn an mdast `imageReference` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {ImageReference} node\n *   mdast node.\n * @returns {Array | ElementContent}\n *   hast node.\n */\nexport function imageReference(state, node) {\n  const id = String(node.identifier).toUpperCase()\n  const definition = state.definitionById.get(id)\n\n  if (!definition) {\n    return revert(state, node)\n  }\n\n  /** @type {Properties} */\n  const properties = {src: normalizeUri(definition.url || ''), alt: node.alt}\n\n  if (definition.title !== null && definition.title !== undefined) {\n    properties.title = definition.title\n  }\n\n  /** @type {Element} */\n  const result = {type: 'element', tagName: 'img', properties, children: []}\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').Image} Image\n * @typedef {import('../state.js').State} State\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\n\n/**\n * Turn an mdast `image` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Image} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function image(state, node) {\n  /** @type {Properties} */\n  const properties = {src: normalizeUri(node.url)}\n\n  if (node.alt !== null && node.alt !== undefined) {\n    properties.alt = node.alt\n  }\n\n  if (node.title !== null && node.title !== undefined) {\n    properties.title = node.title\n  }\n\n  /** @type {Element} */\n  const result = {type: 'element', tagName: 'img', properties, children: []}\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Text} Text\n * @typedef {import('mdast').InlineCode} InlineCode\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `inlineCode` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {InlineCode} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function inlineCode(state, node) {\n  /** @type {Text} */\n  const text = {type: 'text', value: node.value.replace(/\\r?\\n|\\r/g, ' ')}\n  state.patch(node, text)\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'code',\n    properties: {},\n    children: [text]\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').LinkReference} LinkReference\n * @typedef {import('../state.js').State} State\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\nimport {revert} from '../revert.js'\n\n/**\n * Turn an mdast `linkReference` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {LinkReference} node\n *   mdast node.\n * @returns {Array | ElementContent}\n *   hast node.\n */\nexport function linkReference(state, node) {\n  const id = String(node.identifier).toUpperCase()\n  const definition = state.definitionById.get(id)\n\n  if (!definition) {\n    return revert(state, node)\n  }\n\n  /** @type {Properties} */\n  const properties = {href: normalizeUri(definition.url || '')}\n\n  if (definition.title !== null && definition.title !== undefined) {\n    properties.title = definition.title\n  }\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'a',\n    properties,\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').Link} Link\n * @typedef {import('../state.js').State} State\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\n\n/**\n * Turn an mdast `link` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Link} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function link(state, node) {\n  /** @type {Properties} */\n  const properties = {href: normalizeUri(node.url)}\n\n  if (node.title !== null && node.title !== undefined) {\n    properties.title = node.title\n  }\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'a',\n    properties,\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').List} List\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `list` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {List} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function list(state, node) {\n  /** @type {Properties} */\n  const properties = {}\n  const results = state.all(node)\n  let index = -1\n\n  if (typeof node.start === 'number' && node.start !== 1) {\n    properties.start = node.start\n  }\n\n  // Like GitHub, add a class for custom styling.\n  while (++index < results.length) {\n    const child = results[index]\n\n    if (\n      child.type === 'element' &&\n      child.tagName === 'li' &&\n      child.properties &&\n      Array.isArray(child.properties.className) &&\n      child.properties.className.includes('task-list-item')\n    ) {\n      properties.className = ['contains-task-list']\n      break\n    }\n  }\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: node.ordered ? 'ol' : 'ul',\n    properties,\n    children: state.wrap(results, true)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Paragraph} Paragraph\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `paragraph` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Paragraph} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function paragraph(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'p',\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Parents} HastParents\n * @typedef {import('hast').Root} HastRoot\n * @typedef {import('mdast').Root} MdastRoot\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `root` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {MdastRoot} node\n *   mdast node.\n * @returns {HastParents}\n *   hast node.\n */\nexport function root(state, node) {\n  /** @type {HastRoot} */\n  const result = {type: 'root', children: state.wrap(state.all(node))}\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Strong} Strong\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `strong` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Strong} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function strong(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'strong',\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Table} Table\n * @typedef {import('../state.js').State} State\n */\n\nimport {pointEnd, pointStart} from 'unist-util-position'\n\n/**\n * Turn an mdast `table` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Table} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function table(state, node) {\n  const rows = state.all(node)\n  const firstRow = rows.shift()\n  /** @type {Array} */\n  const tableContent = []\n\n  if (firstRow) {\n    /** @type {Element} */\n    const head = {\n      type: 'element',\n      tagName: 'thead',\n      properties: {},\n      children: state.wrap([firstRow], true)\n    }\n    state.patch(node.children[0], head)\n    tableContent.push(head)\n  }\n\n  if (rows.length > 0) {\n    /** @type {Element} */\n    const body = {\n      type: 'element',\n      tagName: 'tbody',\n      properties: {},\n      children: state.wrap(rows, true)\n    }\n\n    const start = pointStart(node.children[1])\n    const end = pointEnd(node.children[node.children.length - 1])\n    if (start && end) body.position = {start, end}\n    tableContent.push(body)\n  }\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'table',\n    properties: {},\n    children: state.wrap(tableContent, true)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').TableCell} TableCell\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `tableCell` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {TableCell} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function tableCell(state, node) {\n  // Note: this function is normally not called: see `table-row` for how rows\n  // and their cells are compiled.\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'td', // Assume body cell.\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').Parents} Parents\n * @typedef {import('mdast').TableRow} TableRow\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `tableRow` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {TableRow} node\n *   mdast node.\n * @param {Parents | undefined} parent\n *   Parent of `node`.\n * @returns {Element}\n *   hast node.\n */\nexport function tableRow(state, node, parent) {\n  const siblings = parent ? parent.children : undefined\n  // Generate a body row when without parent.\n  const rowIndex = siblings ? siblings.indexOf(node) : 1\n  const tagName = rowIndex === 0 ? 'th' : 'td'\n  // To do: option to use `style`?\n  const align = parent && parent.type === 'table' ? parent.align : undefined\n  const length = align ? align.length : node.children.length\n  let cellIndex = -1\n  /** @type {Array} */\n  const cells = []\n\n  while (++cellIndex < length) {\n    // Note: can also be undefined.\n    const cell = node.children[cellIndex]\n    /** @type {Properties} */\n    const properties = {}\n    const alignValue = align ? align[cellIndex] : undefined\n\n    if (alignValue) {\n      properties.align = alignValue\n    }\n\n    /** @type {Element} */\n    let result = {type: 'element', tagName, properties, children: []}\n\n    if (cell) {\n      result.children = state.all(cell)\n      state.patch(cell, result)\n      result = state.applyData(cell, result)\n    }\n\n    cells.push(result)\n  }\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'tr',\n    properties: {},\n    children: state.wrap(cells, true)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} HastElement\n * @typedef {import('hast').Text} HastText\n * @typedef {import('mdast').Text} MdastText\n * @typedef {import('../state.js').State} State\n */\n\nimport {trimLines} from 'trim-lines'\n\n/**\n * Turn an mdast `text` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {MdastText} node\n *   mdast node.\n * @returns {HastElement | HastText}\n *   hast node.\n */\nexport function text(state, node) {\n  /** @type {HastText} */\n  const result = {type: 'text', value: trimLines(String(node.value))}\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').ThematicBreak} ThematicBreak\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `thematicBreak` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {ThematicBreak} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function thematicBreak(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'hr',\n    properties: {},\n    children: []\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} HastElement\n * @typedef {import('hast').ElementContent} HastElementContent\n * @typedef {import('hast').Nodes} HastNodes\n * @typedef {import('hast').Properties} HastProperties\n * @typedef {import('hast').RootContent} HastRootContent\n * @typedef {import('hast').Text} HastText\n *\n * @typedef {import('mdast').Definition} MdastDefinition\n * @typedef {import('mdast').FootnoteDefinition} MdastFootnoteDefinition\n * @typedef {import('mdast').Nodes} MdastNodes\n * @typedef {import('mdast').Parents} MdastParents\n *\n * @typedef {import('vfile').VFile} VFile\n *\n * @typedef {import('./footer.js').FootnoteBackContentTemplate} FootnoteBackContentTemplate\n * @typedef {import('./footer.js').FootnoteBackLabelTemplate} FootnoteBackLabelTemplate\n */\n\n/**\n * @callback Handler\n *   Handle a node.\n * @param {State} state\n *   Info passed around.\n * @param {any} node\n *   mdast node to handle.\n * @param {MdastParents | undefined} parent\n *   Parent of `node`.\n * @returns {Array | HastElementContent | undefined}\n *   hast node.\n *\n * @typedef {Partial>} Handlers\n *   Handle nodes.\n *\n * @typedef Options\n *   Configuration (optional).\n * @property {boolean | null | undefined} [allowDangerousHtml=false]\n *   Whether to persist raw HTML in markdown in the hast tree (default:\n *   `false`).\n * @property {string | null | undefined} [clobberPrefix='user-content-']\n *   Prefix to use before the `id` property on footnotes to prevent them from\n *   *clobbering* (default: `'user-content-'`).\n *\n *   Pass `''` for trusted markdown and when you are careful with\n *   polyfilling.\n *   You could pass a different prefix.\n *\n *   DOM clobbering is this:\n *\n *   ```html\n *   

\n * \n * ```\n *\n * The above example shows that elements are made available by browsers, by\n * their ID, on the `window` object.\n * This is a security risk because you might be expecting some other variable\n * at that place.\n * It can also break polyfills.\n * Using a prefix solves these problems.\n * @property {VFile | null | undefined} [file]\n * Corresponding virtual file representing the input document (optional).\n * @property {FootnoteBackContentTemplate | string | null | undefined} [footnoteBackContent]\n * Content of the backreference back to references (default: `defaultFootnoteBackContent`).\n *\n * The default value is:\n *\n * ```js\n * function defaultFootnoteBackContent(_, rereferenceIndex) {\n * const result = [{type: 'text', value: '↩'}]\n *\n * if (rereferenceIndex > 1) {\n * result.push({\n * type: 'element',\n * tagName: 'sup',\n * properties: {},\n * children: [{type: 'text', value: String(rereferenceIndex)}]\n * })\n * }\n *\n * return result\n * }\n * ```\n *\n * This content is used in the `a` element of each backreference (the `↩`\n * links).\n * @property {FootnoteBackLabelTemplate | string | null | undefined} [footnoteBackLabel]\n * Label to describe the backreference back to references (default:\n * `defaultFootnoteBackLabel`).\n *\n * The default value is:\n *\n * ```js\n * function defaultFootnoteBackLabel(referenceIndex, rereferenceIndex) {\n * return (\n * 'Back to reference ' +\n * (referenceIndex + 1) +\n * (rereferenceIndex > 1 ? '-' + rereferenceIndex : '')\n * )\n * }\n * ```\n *\n * Change it when the markdown is not in English.\n *\n * This label is used in the `ariaLabel` property on each backreference\n * (the `↩` links).\n * It affects users of assistive technology.\n * @property {string | null | undefined} [footnoteLabel='Footnotes']\n * Textual label to use for the footnotes section (default: `'Footnotes'`).\n *\n * Change it when the markdown is not in English.\n *\n * This label is typically hidden visually (assuming a `sr-only` CSS class\n * is defined that does that) and so affects screen readers only.\n * If you do have such a class, but want to show this section to everyone,\n * pass different properties with the `footnoteLabelProperties` option.\n * @property {HastProperties | null | undefined} [footnoteLabelProperties={className: ['sr-only']}]\n * Properties to use on the footnote label (default: `{className:\n * ['sr-only']}`).\n *\n * Change it to show the label and add other properties.\n *\n * This label is typically hidden visually (assuming an `sr-only` CSS class\n * is defined that does that) and so affects screen readers only.\n * If you do have such a class, but want to show this section to everyone,\n * pass an empty string.\n * You can also add different properties.\n *\n * > **Note**: `id: 'footnote-label'` is always added, because footnote\n * > calls use it with `aria-describedby` to provide an accessible label.\n * @property {string | null | undefined} [footnoteLabelTagName='h2']\n * HTML tag name to use for the footnote label element (default: `'h2'`).\n *\n * Change it to match your document structure.\n *\n * This label is typically hidden visually (assuming a `sr-only` CSS class\n * is defined that does that) and so affects screen readers only.\n * If you do have such a class, but want to show this section to everyone,\n * pass different properties with the `footnoteLabelProperties` option.\n * @property {Handlers | null | undefined} [handlers]\n * Extra handlers for nodes (optional).\n * @property {Array | null | undefined} [passThrough]\n * List of custom mdast node types to pass through (keep) in hast (note that\n * the node itself is passed, but eventual children are transformed)\n * (optional).\n * @property {Handler | null | undefined} [unknownHandler]\n * Handler for all unknown nodes (optional).\n *\n * @typedef State\n * Info passed around.\n * @property {(node: MdastNodes) => Array} all\n * Transform the children of an mdast parent to hast.\n * @property {(from: MdastNodes, to: Type) => HastElement | Type} applyData\n * Honor the `data` of `from`, and generate an element instead of `node`.\n * @property {Map} definitionById\n * Definitions by their identifier.\n * @property {Map} footnoteById\n * Footnote definitions by their identifier.\n * @property {Map} footnoteCounts\n * Counts for how often the same footnote was called.\n * @property {Array} footnoteOrder\n * Identifiers of order when footnote calls first appear in tree order.\n * @property {Handlers} handlers\n * Applied handlers.\n * @property {(node: MdastNodes, parent: MdastParents | undefined) => Array | HastElementContent | undefined} one\n * Transform an mdast node to hast.\n * @property {Options} options\n * Configuration.\n * @property {(from: MdastNodes, node: HastNodes) => undefined} patch\n * Copy a node’s positional info.\n * @property {(nodes: Array, loose?: boolean | undefined) => Array} wrap\n * Wrap `nodes` with line endings between each node, adds initial/final line endings when `loose`.\n */\n\nimport structuredClone from '@ungap/structured-clone'\nimport {visit} from 'unist-util-visit'\nimport {position} from 'unist-util-position'\nimport {handlers as defaultHandlers} from './handlers/index.js'\n\nconst own = {}.hasOwnProperty\n\n/** @type {Options} */\nconst emptyOptions = {}\n\n/**\n * Create `state` from an mdast tree.\n *\n * @param {MdastNodes} tree\n * mdast node to transform.\n * @param {Options | null | undefined} [options]\n * Configuration (optional).\n * @returns {State}\n * `state` function.\n */\nexport function createState(tree, options) {\n const settings = options || emptyOptions\n /** @type {Map} */\n const definitionById = new Map()\n /** @type {Map} */\n const footnoteById = new Map()\n /** @type {Map} */\n const footnoteCounts = new Map()\n /** @type {Handlers} */\n // @ts-expect-error: the root handler returns a root.\n // Hard to type.\n const handlers = {...defaultHandlers, ...settings.handlers}\n\n /** @type {State} */\n const state = {\n all,\n applyData,\n definitionById,\n footnoteById,\n footnoteCounts,\n footnoteOrder: [],\n handlers,\n one,\n options: settings,\n patch,\n wrap\n }\n\n visit(tree, function (node) {\n if (node.type === 'definition' || node.type === 'footnoteDefinition') {\n const map = node.type === 'definition' ? definitionById : footnoteById\n const id = String(node.identifier).toUpperCase()\n\n // Mimick CM behavior of link definitions.\n // See: .\n if (!map.has(id)) {\n // @ts-expect-error: node type matches map.\n map.set(id, node)\n }\n }\n })\n\n return state\n\n /**\n * Transform an mdast node into a hast node.\n *\n * @param {MdastNodes} node\n * mdast node.\n * @param {MdastParents | undefined} [parent]\n * Parent of `node`.\n * @returns {Array | HastElementContent | undefined}\n * Resulting hast node.\n */\n function one(node, parent) {\n const type = node.type\n const handle = state.handlers[type]\n\n if (own.call(state.handlers, type) && handle) {\n return handle(state, node, parent)\n }\n\n if (state.options.passThrough && state.options.passThrough.includes(type)) {\n if ('children' in node) {\n const {children, ...shallow} = node\n const result = structuredClone(shallow)\n // @ts-expect-error: TS doesn’t understand…\n result.children = state.all(node)\n // @ts-expect-error: TS doesn’t understand…\n return result\n }\n\n // @ts-expect-error: it’s custom.\n return structuredClone(node)\n }\n\n const unknown = state.options.unknownHandler || defaultUnknownHandler\n\n return unknown(state, node, parent)\n }\n\n /**\n * Transform the children of an mdast node into hast nodes.\n *\n * @param {MdastNodes} parent\n * mdast node to compile\n * @returns {Array}\n * Resulting hast nodes.\n */\n function all(parent) {\n /** @type {Array} */\n const values = []\n\n if ('children' in parent) {\n const nodes = parent.children\n let index = -1\n while (++index < nodes.length) {\n const result = state.one(nodes[index], parent)\n\n // To do: see if we van clean this? Can we merge texts?\n if (result) {\n if (index && nodes[index - 1].type === 'break') {\n if (!Array.isArray(result) && result.type === 'text') {\n result.value = trimMarkdownSpaceStart(result.value)\n }\n\n if (!Array.isArray(result) && result.type === 'element') {\n const head = result.children[0]\n\n if (head && head.type === 'text') {\n head.value = trimMarkdownSpaceStart(head.value)\n }\n }\n }\n\n if (Array.isArray(result)) {\n values.push(...result)\n } else {\n values.push(result)\n }\n }\n }\n }\n\n return values\n }\n}\n\n/**\n * Copy a node’s positional info.\n *\n * @param {MdastNodes} from\n * mdast node to copy from.\n * @param {HastNodes} to\n * hast node to copy into.\n * @returns {undefined}\n * Nothing.\n */\nfunction patch(from, to) {\n if (from.position) to.position = position(from)\n}\n\n/**\n * Honor the `data` of `from` and maybe generate an element instead of `to`.\n *\n * @template {HastNodes} Type\n * Node type.\n * @param {MdastNodes} from\n * mdast node to use data from.\n * @param {Type} to\n * hast node to change.\n * @returns {HastElement | Type}\n * Nothing.\n */\nfunction applyData(from, to) {\n /** @type {HastElement | Type} */\n let result = to\n\n // Handle `data.hName`, `data.hProperties, `data.hChildren`.\n if (from && from.data) {\n const hName = from.data.hName\n const hChildren = from.data.hChildren\n const hProperties = from.data.hProperties\n\n if (typeof hName === 'string') {\n // Transforming the node resulted in an element with a different name\n // than wanted:\n if (result.type === 'element') {\n result.tagName = hName\n }\n // Transforming the node resulted in a non-element, which happens for\n // raw, text, and root nodes (unless custom handlers are passed).\n // The intent of `hName` is to create an element, but likely also to keep\n // the content around (otherwise: pass `hChildren`).\n else {\n /** @type {Array} */\n // @ts-expect-error: assume no doctypes in `root`.\n const children = 'children' in result ? result.children : [result]\n result = {type: 'element', tagName: hName, properties: {}, children}\n }\n }\n\n if (result.type === 'element' && hProperties) {\n Object.assign(result.properties, structuredClone(hProperties))\n }\n\n if (\n 'children' in result &&\n result.children &&\n hChildren !== null &&\n hChildren !== undefined\n ) {\n result.children = hChildren\n }\n }\n\n return result\n}\n\n/**\n * Transform an unknown node.\n *\n * @param {State} state\n * Info passed around.\n * @param {MdastNodes} node\n * Unknown mdast node.\n * @returns {HastElement | HastText}\n * Resulting hast node.\n */\nfunction defaultUnknownHandler(state, node) {\n const data = node.data || {}\n /** @type {HastElement | HastText} */\n const result =\n 'value' in node &&\n !(own.call(data, 'hProperties') || own.call(data, 'hChildren'))\n ? {type: 'text', value: node.value}\n : {\n type: 'element',\n tagName: 'div',\n properties: {},\n children: state.all(node)\n }\n\n state.patch(node, result)\n return state.applyData(node, result)\n}\n\n/**\n * Wrap `nodes` with line endings between each node.\n *\n * @template {HastRootContent} Type\n * Node type.\n * @param {Array} nodes\n * List of nodes to wrap.\n * @param {boolean | undefined} [loose=false]\n * Whether to add line endings at start and end (default: `false`).\n * @returns {Array}\n * Wrapped nodes.\n */\nexport function wrap(nodes, loose) {\n /** @type {Array} */\n const result = []\n let index = -1\n\n if (loose) {\n result.push({type: 'text', value: '\\n'})\n }\n\n while (++index < nodes.length) {\n if (index) result.push({type: 'text', value: '\\n'})\n result.push(nodes[index])\n }\n\n if (loose && nodes.length > 0) {\n result.push({type: 'text', value: '\\n'})\n }\n\n return result\n}\n\n/**\n * Trim spaces and tabs at the start of `value`.\n *\n * @param {string} value\n * Value to trim.\n * @returns {string}\n * Result.\n */\nfunction trimMarkdownSpaceStart(value) {\n let index = 0\n let code = value.charCodeAt(index)\n\n while (code === 9 || code === 32) {\n index++\n code = value.charCodeAt(index)\n }\n\n return value.slice(index)\n}\n","/**\n * @typedef {import('hast').Nodes} HastNodes\n * @typedef {import('mdast').Nodes} MdastNodes\n * @typedef {import('./state.js').Options} Options\n */\n\nimport {ok as assert} from 'devlop'\nimport {footer} from './footer.js'\nimport {createState} from './state.js'\n\n/**\n * Transform mdast to hast.\n *\n * ##### Notes\n *\n * ###### HTML\n *\n * Raw HTML is available in mdast as `html` nodes and can be embedded in hast\n * as semistandard `raw` nodes.\n * Most utilities ignore `raw` nodes but two notable ones don’t:\n *\n * * `hast-util-to-html` also has an option `allowDangerousHtml` which will\n * output the raw HTML.\n * This is typically discouraged as noted by the option name but is useful\n * if you completely trust authors\n * * `hast-util-raw` can handle the raw embedded HTML strings by parsing them\n * into standard hast nodes (`element`, `text`, etc).\n * This is a heavy task as it needs a full HTML parser, but it is the only\n * way to support untrusted content\n *\n * ###### Footnotes\n *\n * Many options supported here relate to footnotes.\n * Footnotes are not specified by CommonMark, which we follow by default.\n * They are supported by GitHub, so footnotes can be enabled in markdown with\n * `mdast-util-gfm`.\n *\n * The options `footnoteBackLabel` and `footnoteLabel` define natural language\n * that explains footnotes, which is hidden for sighted users but shown to\n * assistive technology.\n * When your page is not in English, you must define translated values.\n *\n * Back references use ARIA attributes, but the section label itself uses a\n * heading that is hidden with an `sr-only` class.\n * To show it to sighted users, define different attributes in\n * `footnoteLabelProperties`.\n *\n * ###### Clobbering\n *\n * Footnotes introduces a problem, as it links footnote calls to footnote\n * definitions on the page through `id` attributes generated from user content,\n * which results in DOM clobbering.\n *\n * DOM clobbering is this:\n *\n * ```html\n *

\n * \n * ```\n *\n * Elements by their ID are made available by browsers on the `window` object,\n * which is a security risk.\n * Using a prefix solves this problem.\n *\n * More information on how to handle clobbering and the prefix is explained in\n * Example: headings (DOM clobbering) in `rehype-sanitize`.\n *\n * ###### Unknown nodes\n *\n * Unknown nodes are nodes with a type that isn’t in `handlers` or `passThrough`.\n * The default behavior for unknown nodes is:\n *\n * * when the node has a `value` (and doesn’t have `data.hName`,\n * `data.hProperties`, or `data.hChildren`, see later), create a hast `text`\n * node\n * * otherwise, create a `
` element (which could be changed with\n * `data.hName`), with its children mapped from mdast to hast as well\n *\n * This behavior can be changed by passing an `unknownHandler`.\n *\n * @param {MdastNodes} tree\n * mdast tree.\n * @param {Options | null | undefined} [options]\n * Configuration (optional).\n * @returns {HastNodes}\n * hast tree.\n */\nexport function toHast(tree, options) {\n const state = createState(tree, options)\n const node = state.one(tree, undefined)\n const foot = footer(state)\n /** @type {HastNodes} */\n const result = Array.isArray(node)\n ? {type: 'root', children: node}\n : node || {type: 'root', children: []}\n\n if (foot) {\n // If there’s a footer, there were definitions, meaning block\n // content.\n // So `result` is a parent node.\n assert('children' in result)\n result.children.push({type: 'text', value: '\\n'}, foot)\n }\n\n return result\n}\n","// Include `data` fields in mdast and `raw` nodes in hast.\n/// \n\n/**\n * @typedef {import('hast').Root} HastRoot\n * @typedef {import('mdast').Root} MdastRoot\n * @typedef {import('mdast-util-to-hast').Options} ToHastOptions\n * @typedef {import('unified').Processor} Processor\n * @typedef {import('vfile').VFile} VFile\n */\n\n/**\n * @typedef {Omit} Options\n *\n * @callback TransformBridge\n * Bridge-mode.\n *\n * Runs the destination with the new hast tree.\n * Discards result.\n * @param {MdastRoot} tree\n * Tree.\n * @param {VFile} file\n * File.\n * @returns {Promise}\n * Nothing.\n *\n * @callback TransformMutate\n * Mutate-mode.\n *\n * Further transformers run on the hast tree.\n * @param {MdastRoot} tree\n * Tree.\n * @param {VFile} file\n * File.\n * @returns {HastRoot}\n * Tree (hast).\n */\n\nimport {toHast} from 'mdast-util-to-hast'\n\n/**\n * Turn markdown into HTML.\n *\n * ##### Notes\n *\n * ###### Signature\n *\n * * if a processor is given, runs the (rehype) plugins used on it with a\n * hast tree, then discards the result (*bridge mode*)\n * * otherwise, returns a hast tree, the plugins used after `remarkRehype`\n * are rehype plugins (*mutate mode*)\n *\n * > 👉 **Note**: It’s highly unlikely that you want to pass a `processor`.\n *\n * ###### HTML\n *\n * Raw HTML is available in mdast as `html` nodes and can be embedded in hast\n * as semistandard `raw` nodes.\n * Most plugins ignore `raw` nodes but two notable ones don’t:\n *\n * * `rehype-stringify` also has an option `allowDangerousHtml` which will\n * output the raw HTML.\n * This is typically discouraged as noted by the option name but is useful if\n * you completely trust authors\n * * `rehype-raw` can handle the raw embedded HTML strings by parsing them\n * into standard hast nodes (`element`, `text`, etc).\n * This is a heavy task as it needs a full HTML parser, but it is the only way\n * to support untrusted content\n *\n * ###### Footnotes\n *\n * Many options supported here relate to footnotes.\n * Footnotes are not specified by CommonMark, which we follow by default.\n * They are supported by GitHub, so footnotes can be enabled in markdown with\n * `remark-gfm`.\n *\n * The options `footnoteBackLabel` and `footnoteLabel` define natural language\n * that explains footnotes, which is hidden for sighted users but shown to\n * assistive technology.\n * When your page is not in English, you must define translated values.\n *\n * Back references use ARIA attributes, but the section label itself uses a\n * heading that is hidden with an `sr-only` class.\n * To show it to sighted users, define different attributes in\n * `footnoteLabelProperties`.\n *\n * ###### Clobbering\n *\n * Footnotes introduces a problem, as it links footnote calls to footnote\n * definitions on the page through `id` attributes generated from user content,\n * which results in DOM clobbering.\n *\n * DOM clobbering is this:\n *\n * ```html\n *

\n * \n * ```\n *\n * Elements by their ID are made available by browsers on the `window` object,\n * which is a security risk.\n * Using a prefix solves this problem.\n *\n * More information on how to handle clobbering and the prefix is explained in\n * *Example: headings (DOM clobbering)* in `rehype-sanitize`.\n *\n * ###### Unknown nodes\n *\n * Unknown nodes are nodes with a type that isn’t in `handlers` or `passThrough`.\n * The default behavior for unknown nodes is:\n *\n * * when the node has a `value` (and doesn’t have `data.hName`,\n * `data.hProperties`, or `data.hChildren`, see later), create a hast `text`\n * node\n * * otherwise, create a `
` element (which could be changed with\n * `data.hName`), with its children mapped from mdast to hast as well\n *\n * This behavior can be changed by passing an `unknownHandler`.\n *\n * @overload\n * @param {Processor} processor\n * @param {Readonly | null | undefined} [options]\n * @returns {TransformBridge}\n *\n * @overload\n * @param {Readonly | null | undefined} [options]\n * @returns {TransformMutate}\n *\n * @param {Readonly | Processor | null | undefined} [destination]\n * Processor or configuration (optional).\n * @param {Readonly | null | undefined} [options]\n * When a processor was given, configuration (optional).\n * @returns {TransformBridge | TransformMutate}\n * Transform.\n */\nexport default function remarkRehype(destination, options) {\n if (destination && 'run' in destination) {\n /**\n * @type {TransformBridge}\n */\n return async function (tree, file) {\n // Cast because root in -> root out.\n const hastTree = /** @type {HastRoot} */ (\n toHast(tree, {file, ...options})\n )\n await destination.run(hastTree, file)\n }\n }\n\n /**\n * @type {TransformMutate}\n */\n return function (tree, file) {\n // Cast because root in -> root out.\n return /** @type {HastRoot} */ (\n toHast(tree, {file, ...(options || destination)})\n )\n }\n}\n","/**\n * Throw a given error.\n *\n * @param {Error|null|undefined} [error]\n * Maybe error.\n * @returns {asserts error is null|undefined}\n */\nexport function bail(error) {\n if (error) {\n throw error\n }\n}\n","export default function isPlainObject(value) {\n\tif (typeof value !== 'object' || value === null) {\n\t\treturn false;\n\t}\n\n\tconst prototype = Object.getPrototypeOf(value);\n\treturn (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in value) && !(Symbol.iterator in value);\n}\n","// To do: remove `void`s\n// To do: remove `null` from output of our APIs, allow it as user APIs.\n\n/**\n * @typedef {(error?: Error | null | undefined, ...output: Array) => void} Callback\n * Callback.\n *\n * @typedef {(...input: Array) => any} Middleware\n * Ware.\n *\n * @typedef Pipeline\n * Pipeline.\n * @property {Run} run\n * Run the pipeline.\n * @property {Use} use\n * Add middleware.\n *\n * @typedef {(...input: Array) => void} Run\n * Call all middleware.\n *\n * Calls `done` on completion with either an error or the output of the\n * last middleware.\n *\n * > 👉 **Note**: as the length of input defines whether async functions get a\n * > `next` function,\n * > it’s recommended to keep `input` at one value normally.\n\n *\n * @typedef {(fn: Middleware) => Pipeline} Use\n * Add middleware.\n */\n\n/**\n * Create new middleware.\n *\n * @returns {Pipeline}\n * Pipeline.\n */\nexport function trough() {\n /** @type {Array} */\n const fns = []\n /** @type {Pipeline} */\n const pipeline = {run, use}\n\n return pipeline\n\n /** @type {Run} */\n function run(...values) {\n let middlewareIndex = -1\n /** @type {Callback} */\n const callback = values.pop()\n\n if (typeof callback !== 'function') {\n throw new TypeError('Expected function as last argument, not ' + callback)\n }\n\n next(null, ...values)\n\n /**\n * Run the next `fn`, or we’re done.\n *\n * @param {Error | null | undefined} error\n * @param {Array} output\n */\n function next(error, ...output) {\n const fn = fns[++middlewareIndex]\n let index = -1\n\n if (error) {\n callback(error)\n return\n }\n\n // Copy non-nullish input into values.\n while (++index < values.length) {\n if (output[index] === null || output[index] === undefined) {\n output[index] = values[index]\n }\n }\n\n // Save the newly created `output` for the next call.\n values = output\n\n // Next or done.\n if (fn) {\n wrap(fn, next)(...output)\n } else {\n callback(null, ...output)\n }\n }\n }\n\n /** @type {Use} */\n function use(middelware) {\n if (typeof middelware !== 'function') {\n throw new TypeError(\n 'Expected `middelware` to be a function, not ' + middelware\n )\n }\n\n fns.push(middelware)\n return pipeline\n }\n}\n\n/**\n * Wrap `middleware` into a uniform interface.\n *\n * You can pass all input to the resulting function.\n * `callback` is then called with the output of `middleware`.\n *\n * If `middleware` accepts more arguments than the later given in input,\n * an extra `done` function is passed to it after that input,\n * which must be called by `middleware`.\n *\n * The first value in `input` is the main input value.\n * All other input values are the rest input values.\n * The values given to `callback` are the input values,\n * merged with every non-nullish output value.\n *\n * * if `middleware` throws an error,\n * returns a promise that is rejected,\n * or calls the given `done` function with an error,\n * `callback` is called with that error\n * * if `middleware` returns a value or returns a promise that is resolved,\n * that value is the main output value\n * * if `middleware` calls `done`,\n * all non-nullish values except for the first one (the error) overwrite the\n * output values\n *\n * @param {Middleware} middleware\n * Function to wrap.\n * @param {Callback} callback\n * Callback called with the output of `middleware`.\n * @returns {Run}\n * Wrapped middleware.\n */\nexport function wrap(middleware, callback) {\n /** @type {boolean} */\n let called\n\n return wrapped\n\n /**\n * Call `middleware`.\n * @this {any}\n * @param {Array} parameters\n * @returns {void}\n */\n function wrapped(...parameters) {\n const fnExpectsCallback = middleware.length > parameters.length\n /** @type {any} */\n let result\n\n if (fnExpectsCallback) {\n parameters.push(done)\n }\n\n try {\n result = middleware.apply(this, parameters)\n } catch (error) {\n const exception = /** @type {Error} */ (error)\n\n // Well, this is quite the pickle.\n // `middleware` received a callback and called it synchronously, but that\n // threw an error.\n // The only thing left to do is to throw the thing instead.\n if (fnExpectsCallback && called) {\n throw exception\n }\n\n return done(exception)\n }\n\n if (!fnExpectsCallback) {\n if (result && result.then && typeof result.then === 'function') {\n result.then(then, done)\n } else if (result instanceof Error) {\n done(result)\n } else {\n then(result)\n }\n }\n }\n\n /**\n * Call `callback`, only once.\n *\n * @type {Callback}\n */\n function done(error, ...output) {\n if (!called) {\n called = true\n callback(error, ...output)\n }\n }\n\n /**\n * Call `done` with one value.\n *\n * @param {any} [value]\n */\n function then(value) {\n done(null, value)\n }\n}\n","// A derivative work based on:\n// .\n// Which is licensed:\n//\n// MIT License\n//\n// Copyright (c) 2013 James Halliday\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy of\n// this software and associated documentation files (the \"Software\"), to deal in\n// the Software without restriction, including without limitation the rights to\n// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\n// the Software, and to permit persons to whom the Software is furnished to do so,\n// subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in all\n// copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\n// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\n// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\n// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n// A derivative work based on:\n//\n// Parts of that are extracted from Node’s internal `path` module:\n// .\n// Which is licensed:\n//\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nexport const path = {basename, dirname, extname, join, sep: '/'}\n\n/* eslint-disable max-depth, complexity */\n\n/**\n * Get the basename from a path.\n *\n * @param {string} path\n * File path.\n * @param {string | null | undefined} [ext]\n * Extension to strip.\n * @returns {string}\n * Stem or basename.\n */\nfunction basename(path, ext) {\n if (ext !== undefined && typeof ext !== 'string') {\n throw new TypeError('\"ext\" argument must be a string')\n }\n\n assertPath(path)\n let start = 0\n let end = -1\n let index = path.length\n /** @type {boolean | undefined} */\n let seenNonSlash\n\n if (ext === undefined || ext.length === 0 || ext.length > path.length) {\n while (index--) {\n if (path.codePointAt(index) === 47 /* `/` */) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now.\n if (seenNonSlash) {\n start = index + 1\n break\n }\n } else if (end < 0) {\n // We saw the first non-path separator, mark this as the end of our\n // path component.\n seenNonSlash = true\n end = index + 1\n }\n }\n\n return end < 0 ? '' : path.slice(start, end)\n }\n\n if (ext === path) {\n return ''\n }\n\n let firstNonSlashEnd = -1\n let extIndex = ext.length - 1\n\n while (index--) {\n if (path.codePointAt(index) === 47 /* `/` */) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now.\n if (seenNonSlash) {\n start = index + 1\n break\n }\n } else {\n if (firstNonSlashEnd < 0) {\n // We saw the first non-path separator, remember this index in case\n // we need it if the extension ends up not matching.\n seenNonSlash = true\n firstNonSlashEnd = index + 1\n }\n\n if (extIndex > -1) {\n // Try to match the explicit extension.\n if (path.codePointAt(index) === ext.codePointAt(extIndex--)) {\n if (extIndex < 0) {\n // We matched the extension, so mark this as the end of our path\n // component\n end = index\n }\n } else {\n // Extension does not match, so our result is the entire path\n // component\n extIndex = -1\n end = firstNonSlashEnd\n }\n }\n }\n }\n\n if (start === end) {\n end = firstNonSlashEnd\n } else if (end < 0) {\n end = path.length\n }\n\n return path.slice(start, end)\n}\n\n/**\n * Get the dirname from a path.\n *\n * @param {string} path\n * File path.\n * @returns {string}\n * File path.\n */\nfunction dirname(path) {\n assertPath(path)\n\n if (path.length === 0) {\n return '.'\n }\n\n let end = -1\n let index = path.length\n /** @type {boolean | undefined} */\n let unmatchedSlash\n\n // Prefix `--` is important to not run on `0`.\n while (--index) {\n if (path.codePointAt(index) === 47 /* `/` */) {\n if (unmatchedSlash) {\n end = index\n break\n }\n } else if (!unmatchedSlash) {\n // We saw the first non-path separator\n unmatchedSlash = true\n }\n }\n\n return end < 0\n ? path.codePointAt(0) === 47 /* `/` */\n ? '/'\n : '.'\n : end === 1 && path.codePointAt(0) === 47 /* `/` */\n ? '//'\n : path.slice(0, end)\n}\n\n/**\n * Get an extname from a path.\n *\n * @param {string} path\n * File path.\n * @returns {string}\n * Extname.\n */\nfunction extname(path) {\n assertPath(path)\n\n let index = path.length\n\n let end = -1\n let startPart = 0\n let startDot = -1\n // Track the state of characters (if any) we see before our first dot and\n // after any path separator we find.\n let preDotState = 0\n /** @type {boolean | undefined} */\n let unmatchedSlash\n\n while (index--) {\n const code = path.codePointAt(index)\n\n if (code === 47 /* `/` */) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now.\n if (unmatchedSlash) {\n startPart = index + 1\n break\n }\n\n continue\n }\n\n if (end < 0) {\n // We saw the first non-path separator, mark this as the end of our\n // extension.\n unmatchedSlash = true\n end = index + 1\n }\n\n if (code === 46 /* `.` */) {\n // If this is our first dot, mark it as the start of our extension.\n if (startDot < 0) {\n startDot = index\n } else if (preDotState !== 1) {\n preDotState = 1\n }\n } else if (startDot > -1) {\n // We saw a non-dot and non-path separator before our dot, so we should\n // have a good chance at having a non-empty extension.\n preDotState = -1\n }\n }\n\n if (\n startDot < 0 ||\n end < 0 ||\n // We saw a non-dot character immediately before the dot.\n preDotState === 0 ||\n // The (right-most) trimmed path component is exactly `..`.\n (preDotState === 1 && startDot === end - 1 && startDot === startPart + 1)\n ) {\n return ''\n }\n\n return path.slice(startDot, end)\n}\n\n/**\n * Join segments from a path.\n *\n * @param {Array} segments\n * Path segments.\n * @returns {string}\n * File path.\n */\nfunction join(...segments) {\n let index = -1\n /** @type {string | undefined} */\n let joined\n\n while (++index < segments.length) {\n assertPath(segments[index])\n\n if (segments[index]) {\n joined =\n joined === undefined ? segments[index] : joined + '/' + segments[index]\n }\n }\n\n return joined === undefined ? '.' : normalize(joined)\n}\n\n/**\n * Normalize a basic file path.\n *\n * @param {string} path\n * File path.\n * @returns {string}\n * File path.\n */\n// Note: `normalize` is not exposed as `path.normalize`, so some code is\n// manually removed from it.\nfunction normalize(path) {\n assertPath(path)\n\n const absolute = path.codePointAt(0) === 47 /* `/` */\n\n // Normalize the path according to POSIX rules.\n let value = normalizeString(path, !absolute)\n\n if (value.length === 0 && !absolute) {\n value = '.'\n }\n\n if (value.length > 0 && path.codePointAt(path.length - 1) === 47 /* / */) {\n value += '/'\n }\n\n return absolute ? '/' + value : value\n}\n\n/**\n * Resolve `.` and `..` elements in a path with directory names.\n *\n * @param {string} path\n * File path.\n * @param {boolean} allowAboveRoot\n * Whether `..` can move above root.\n * @returns {string}\n * File path.\n */\nfunction normalizeString(path, allowAboveRoot) {\n let result = ''\n let lastSegmentLength = 0\n let lastSlash = -1\n let dots = 0\n let index = -1\n /** @type {number | undefined} */\n let code\n /** @type {number} */\n let lastSlashIndex\n\n while (++index <= path.length) {\n if (index < path.length) {\n code = path.codePointAt(index)\n } else if (code === 47 /* `/` */) {\n break\n } else {\n code = 47 /* `/` */\n }\n\n if (code === 47 /* `/` */) {\n if (lastSlash === index - 1 || dots === 1) {\n // Empty.\n } else if (lastSlash !== index - 1 && dots === 2) {\n if (\n result.length < 2 ||\n lastSegmentLength !== 2 ||\n result.codePointAt(result.length - 1) !== 46 /* `.` */ ||\n result.codePointAt(result.length - 2) !== 46 /* `.` */\n ) {\n if (result.length > 2) {\n lastSlashIndex = result.lastIndexOf('/')\n\n if (lastSlashIndex !== result.length - 1) {\n if (lastSlashIndex < 0) {\n result = ''\n lastSegmentLength = 0\n } else {\n result = result.slice(0, lastSlashIndex)\n lastSegmentLength = result.length - 1 - result.lastIndexOf('/')\n }\n\n lastSlash = index\n dots = 0\n continue\n }\n } else if (result.length > 0) {\n result = ''\n lastSegmentLength = 0\n lastSlash = index\n dots = 0\n continue\n }\n }\n\n if (allowAboveRoot) {\n result = result.length > 0 ? result + '/..' : '..'\n lastSegmentLength = 2\n }\n } else {\n if (result.length > 0) {\n result += '/' + path.slice(lastSlash + 1, index)\n } else {\n result = path.slice(lastSlash + 1, index)\n }\n\n lastSegmentLength = index - lastSlash - 1\n }\n\n lastSlash = index\n dots = 0\n } else if (code === 46 /* `.` */ && dots > -1) {\n dots++\n } else {\n dots = -1\n }\n }\n\n return result\n}\n\n/**\n * Make sure `path` is a string.\n *\n * @param {string} path\n * File path.\n * @returns {asserts path is string}\n * Nothing.\n */\nfunction assertPath(path) {\n if (typeof path !== 'string') {\n throw new TypeError(\n 'Path must be a string. Received ' + JSON.stringify(path)\n )\n }\n}\n\n/* eslint-enable max-depth, complexity */\n","// Somewhat based on:\n// .\n// But I don’t think one tiny line of code can be copyrighted. 😅\nexport const proc = {cwd}\n\nfunction cwd() {\n return '/'\n}\n","/**\n * Checks if a value has the shape of a WHATWG URL object.\n *\n * Using a symbol or instanceof would not be able to recognize URL objects\n * coming from other implementations (e.g. in Electron), so instead we are\n * checking some well known properties for a lack of a better test.\n *\n * We use `href` and `protocol` as they are the only properties that are\n * easy to retrieve and calculate due to the lazy nature of the getters.\n *\n * We check for auth attribute to distinguish legacy url instance with\n * WHATWG URL instance.\n *\n * @param {unknown} fileUrlOrPath\n * File path or URL.\n * @returns {fileUrlOrPath is URL}\n * Whether it’s a URL.\n */\n// From: \nexport function isUrl(fileUrlOrPath) {\n return Boolean(\n fileUrlOrPath !== null &&\n typeof fileUrlOrPath === 'object' &&\n 'href' in fileUrlOrPath &&\n fileUrlOrPath.href &&\n 'protocol' in fileUrlOrPath &&\n fileUrlOrPath.protocol &&\n // @ts-expect-error: indexing is fine.\n fileUrlOrPath.auth === undefined\n )\n}\n","import {isUrl} from './minurl.shared.js'\n\nexport {isUrl} from './minurl.shared.js'\n\n// See: \n\n/**\n * @param {URL | string} path\n * File URL.\n * @returns {string}\n * File URL.\n */\nexport function urlToPath(path) {\n if (typeof path === 'string') {\n path = new URL(path)\n } else if (!isUrl(path)) {\n /** @type {NodeJS.ErrnoException} */\n const error = new TypeError(\n 'The \"path\" argument must be of type string or an instance of URL. Received `' +\n path +\n '`'\n )\n error.code = 'ERR_INVALID_ARG_TYPE'\n throw error\n }\n\n if (path.protocol !== 'file:') {\n /** @type {NodeJS.ErrnoException} */\n const error = new TypeError('The URL must be of scheme file')\n error.code = 'ERR_INVALID_URL_SCHEME'\n throw error\n }\n\n return getPathFromURLPosix(path)\n}\n\n/**\n * Get a path from a POSIX URL.\n *\n * @param {URL} url\n * URL.\n * @returns {string}\n * File path.\n */\nfunction getPathFromURLPosix(url) {\n if (url.hostname !== '') {\n /** @type {NodeJS.ErrnoException} */\n const error = new TypeError(\n 'File URL host must be \"localhost\" or empty on darwin'\n )\n error.code = 'ERR_INVALID_FILE_URL_HOST'\n throw error\n }\n\n const pathname = url.pathname\n let index = -1\n\n while (++index < pathname.length) {\n if (\n pathname.codePointAt(index) === 37 /* `%` */ &&\n pathname.codePointAt(index + 1) === 50 /* `2` */\n ) {\n const third = pathname.codePointAt(index + 2)\n if (third === 70 /* `F` */ || third === 102 /* `f` */) {\n /** @type {NodeJS.ErrnoException} */\n const error = new TypeError(\n 'File URL path must not include encoded / characters'\n )\n error.code = 'ERR_INVALID_FILE_URL_PATH'\n throw error\n }\n }\n }\n\n return decodeURIComponent(pathname)\n}\n","/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Point} Point\n * @typedef {import('unist').Position} Position\n * @typedef {import('vfile-message').Options} MessageOptions\n * @typedef {import('../index.js').Data} Data\n * @typedef {import('../index.js').Value} Value\n */\n\n/**\n * @typedef {object & {type: string, position?: Position | undefined}} NodeLike\n *\n * @typedef {Options | URL | VFile | Value} Compatible\n * Things that can be passed to the constructor.\n *\n * @typedef VFileCoreOptions\n * Set multiple values.\n * @property {string | null | undefined} [basename]\n * Set `basename` (name).\n * @property {string | null | undefined} [cwd]\n * Set `cwd` (working directory).\n * @property {Data | null | undefined} [data]\n * Set `data` (associated info).\n * @property {string | null | undefined} [dirname]\n * Set `dirname` (path w/o basename).\n * @property {string | null | undefined} [extname]\n * Set `extname` (extension with dot).\n * @property {Array | null | undefined} [history]\n * Set `history` (paths the file moved between).\n * @property {URL | string | null | undefined} [path]\n * Set `path` (current path).\n * @property {string | null | undefined} [stem]\n * Set `stem` (name without extension).\n * @property {Value | null | undefined} [value]\n * Set `value` (the contents of the file).\n *\n * @typedef Map\n * Raw source map.\n *\n * See:\n * .\n * @property {number} version\n * Which version of the source map spec this map is following.\n * @property {Array} sources\n * An array of URLs to the original source files.\n * @property {Array} names\n * An array of identifiers which can be referenced by individual mappings.\n * @property {string | undefined} [sourceRoot]\n * The URL root from which all sources are relative.\n * @property {Array | undefined} [sourcesContent]\n * An array of contents of the original source files.\n * @property {string} mappings\n * A string of base64 VLQs which contain the actual mappings.\n * @property {string} file\n * The generated file this source map is associated with.\n *\n * @typedef {Record & VFileCoreOptions} Options\n * Configuration.\n *\n * A bunch of keys that will be shallow copied over to the new file.\n *\n * @typedef {Record} ReporterSettings\n * Configuration for reporters.\n */\n\n/**\n * @template [Settings=ReporterSettings]\n * Options type.\n * @callback Reporter\n * Type for a reporter.\n * @param {Array} files\n * Files to report.\n * @param {Settings} options\n * Configuration.\n * @returns {string}\n * Report.\n */\n\nimport {VFileMessage} from 'vfile-message'\nimport {path} from 'vfile/do-not-use-conditional-minpath'\nimport {proc} from 'vfile/do-not-use-conditional-minproc'\nimport {urlToPath, isUrl} from 'vfile/do-not-use-conditional-minurl'\n\n/**\n * Order of setting (least specific to most), we need this because otherwise\n * `{stem: 'a', path: '~/b.js'}` would throw, as a path is needed before a\n * stem can be set.\n */\nconst order = /** @type {const} */ ([\n 'history',\n 'path',\n 'basename',\n 'stem',\n 'extname',\n 'dirname'\n])\n\nexport class VFile {\n /**\n * Create a new virtual file.\n *\n * `options` is treated as:\n *\n * * `string` or `Uint8Array` — `{value: options}`\n * * `URL` — `{path: options}`\n * * `VFile` — shallow copies its data over to the new file\n * * `object` — all fields are shallow copied over to the new file\n *\n * Path related fields are set in the following order (least specific to\n * most specific): `history`, `path`, `basename`, `stem`, `extname`,\n * `dirname`.\n *\n * You cannot set `dirname` or `extname` without setting either `history`,\n * `path`, `basename`, or `stem` too.\n *\n * @param {Compatible | null | undefined} [value]\n * File value.\n * @returns\n * New instance.\n */\n constructor(value) {\n /** @type {Options | VFile} */\n let options\n\n if (!value) {\n options = {}\n } else if (isUrl(value)) {\n options = {path: value}\n } else if (typeof value === 'string' || isUint8Array(value)) {\n options = {value}\n } else {\n options = value\n }\n\n /* eslint-disable no-unused-expressions */\n\n /**\n * Base of `path` (default: `process.cwd()` or `'/'` in browsers).\n *\n * @type {string}\n */\n this.cwd = proc.cwd()\n\n /**\n * Place to store custom info (default: `{}`).\n *\n * It’s OK to store custom data directly on the file but moving it to\n * `data` is recommended.\n *\n * @type {Data}\n */\n this.data = {}\n\n /**\n * List of file paths the file moved between.\n *\n * The first is the original path and the last is the current path.\n *\n * @type {Array}\n */\n this.history = []\n\n /**\n * List of messages associated with the file.\n *\n * @type {Array}\n */\n this.messages = []\n\n /**\n * Raw value.\n *\n * @type {Value}\n */\n this.value\n\n // The below are non-standard, they are “well-known”.\n // As in, used in several tools.\n /**\n * Source map.\n *\n * This type is equivalent to the `RawSourceMap` type from the `source-map`\n * module.\n *\n * @type {Map | null | undefined}\n */\n this.map\n\n /**\n * Custom, non-string, compiled, representation.\n *\n * This is used by unified to store non-string results.\n * One example is when turning markdown into React nodes.\n *\n * @type {unknown}\n */\n this.result\n\n /**\n * Whether a file was saved to disk.\n *\n * This is used by vfile reporters.\n *\n * @type {boolean}\n */\n this.stored\n /* eslint-enable no-unused-expressions */\n\n // Set path related properties in the correct order.\n let index = -1\n\n while (++index < order.length) {\n const prop = order[index]\n\n // Note: we specifically use `in` instead of `hasOwnProperty` to accept\n // `vfile`s too.\n if (\n prop in options &&\n options[prop] !== undefined &&\n options[prop] !== null\n ) {\n // @ts-expect-error: TS doesn’t understand basic reality.\n this[prop] = prop === 'history' ? [...options[prop]] : options[prop]\n }\n }\n\n /** @type {string} */\n let prop\n\n // Set non-path related properties.\n for (prop in options) {\n // @ts-expect-error: fine to set other things.\n if (!order.includes(prop)) {\n // @ts-expect-error: fine to set other things.\n this[prop] = options[prop]\n }\n }\n }\n\n /**\n * Get the basename (including extname) (example: `'index.min.js'`).\n *\n * @returns {string | undefined}\n * Basename.\n */\n get basename() {\n return typeof this.path === 'string' ? path.basename(this.path) : undefined\n }\n\n /**\n * Set basename (including extname) (`'index.min.js'`).\n *\n * Cannot contain path separators (`'/'` on unix, macOS, and browsers, `'\\'`\n * on windows).\n * Cannot be nullified (use `file.path = file.dirname` instead).\n *\n * @param {string} basename\n * Basename.\n * @returns {undefined}\n * Nothing.\n */\n set basename(basename) {\n assertNonEmpty(basename, 'basename')\n assertPart(basename, 'basename')\n this.path = path.join(this.dirname || '', basename)\n }\n\n /**\n * Get the parent path (example: `'~'`).\n *\n * @returns {string | undefined}\n * Dirname.\n */\n get dirname() {\n return typeof this.path === 'string' ? path.dirname(this.path) : undefined\n }\n\n /**\n * Set the parent path (example: `'~'`).\n *\n * Cannot be set if there’s no `path` yet.\n *\n * @param {string | undefined} dirname\n * Dirname.\n * @returns {undefined}\n * Nothing.\n */\n set dirname(dirname) {\n assertPath(this.basename, 'dirname')\n this.path = path.join(dirname || '', this.basename)\n }\n\n /**\n * Get the extname (including dot) (example: `'.js'`).\n *\n * @returns {string | undefined}\n * Extname.\n */\n get extname() {\n return typeof this.path === 'string' ? path.extname(this.path) : undefined\n }\n\n /**\n * Set the extname (including dot) (example: `'.js'`).\n *\n * Cannot contain path separators (`'/'` on unix, macOS, and browsers, `'\\'`\n * on windows).\n * Cannot be set if there’s no `path` yet.\n *\n * @param {string | undefined} extname\n * Extname.\n * @returns {undefined}\n * Nothing.\n */\n set extname(extname) {\n assertPart(extname, 'extname')\n assertPath(this.dirname, 'extname')\n\n if (extname) {\n if (extname.codePointAt(0) !== 46 /* `.` */) {\n throw new Error('`extname` must start with `.`')\n }\n\n if (extname.includes('.', 1)) {\n throw new Error('`extname` cannot contain multiple dots')\n }\n }\n\n this.path = path.join(this.dirname, this.stem + (extname || ''))\n }\n\n /**\n * Get the full path (example: `'~/index.min.js'`).\n *\n * @returns {string}\n * Path.\n */\n get path() {\n return this.history[this.history.length - 1]\n }\n\n /**\n * Set the full path (example: `'~/index.min.js'`).\n *\n * Cannot be nullified.\n * You can set a file URL (a `URL` object with a `file:` protocol) which will\n * be turned into a path with `url.fileURLToPath`.\n *\n * @param {URL | string} path\n * Path.\n * @returns {undefined}\n * Nothing.\n */\n set path(path) {\n if (isUrl(path)) {\n path = urlToPath(path)\n }\n\n assertNonEmpty(path, 'path')\n\n if (this.path !== path) {\n this.history.push(path)\n }\n }\n\n /**\n * Get the stem (basename w/o extname) (example: `'index.min'`).\n *\n * @returns {string | undefined}\n * Stem.\n */\n get stem() {\n return typeof this.path === 'string'\n ? path.basename(this.path, this.extname)\n : undefined\n }\n\n /**\n * Set the stem (basename w/o extname) (example: `'index.min'`).\n *\n * Cannot contain path separators (`'/'` on unix, macOS, and browsers, `'\\'`\n * on windows).\n * Cannot be nullified (use `file.path = file.dirname` instead).\n *\n * @param {string} stem\n * Stem.\n * @returns {undefined}\n * Nothing.\n */\n set stem(stem) {\n assertNonEmpty(stem, 'stem')\n assertPart(stem, 'stem')\n this.path = path.join(this.dirname || '', stem + (this.extname || ''))\n }\n\n // Normal prototypal methods.\n /**\n * Create a fatal message for `reason` associated with the file.\n *\n * The `fatal` field of the message is set to `true` (error; file not usable)\n * and the `file` field is set to the current file path.\n * The message is added to the `messages` field on `file`.\n *\n * > 🪦 **Note**: also has obsolete signatures.\n *\n * @overload\n * @param {string} reason\n * @param {MessageOptions | null | undefined} [options]\n * @returns {never}\n *\n * @overload\n * @param {string} reason\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns {never}\n *\n * @overload\n * @param {string} reason\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns {never}\n *\n * @overload\n * @param {string} reason\n * @param {string | null | undefined} [origin]\n * @returns {never}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns {never}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns {never}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {string | null | undefined} [origin]\n * @returns {never}\n *\n * @param {Error | VFileMessage | string} causeOrReason\n * Reason for message, should use markdown.\n * @param {Node | NodeLike | MessageOptions | Point | Position | string | null | undefined} [optionsOrParentOrPlace]\n * Configuration (optional).\n * @param {string | null | undefined} [origin]\n * Place in code where the message originates (example:\n * `'my-package:my-rule'` or `'my-rule'`).\n * @returns {never}\n * Never.\n * @throws {VFileMessage}\n * Message.\n */\n fail(causeOrReason, optionsOrParentOrPlace, origin) {\n // @ts-expect-error: the overloads are fine.\n const message = this.message(causeOrReason, optionsOrParentOrPlace, origin)\n\n message.fatal = true\n\n throw message\n }\n\n /**\n * Create an info message for `reason` associated with the file.\n *\n * The `fatal` field of the message is set to `undefined` (info; change\n * likely not needed) and the `file` field is set to the current file path.\n * The message is added to the `messages` field on `file`.\n *\n * > 🪦 **Note**: also has obsolete signatures.\n *\n * @overload\n * @param {string} reason\n * @param {MessageOptions | null | undefined} [options]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {string} reason\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {string} reason\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {string} reason\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @param {Error | VFileMessage | string} causeOrReason\n * Reason for message, should use markdown.\n * @param {Node | NodeLike | MessageOptions | Point | Position | string | null | undefined} [optionsOrParentOrPlace]\n * Configuration (optional).\n * @param {string | null | undefined} [origin]\n * Place in code where the message originates (example:\n * `'my-package:my-rule'` or `'my-rule'`).\n * @returns {VFileMessage}\n * Message.\n */\n info(causeOrReason, optionsOrParentOrPlace, origin) {\n // @ts-expect-error: the overloads are fine.\n const message = this.message(causeOrReason, optionsOrParentOrPlace, origin)\n\n message.fatal = undefined\n\n return message\n }\n\n /**\n * Create a message for `reason` associated with the file.\n *\n * The `fatal` field of the message is set to `false` (warning; change may be\n * needed) and the `file` field is set to the current file path.\n * The message is added to the `messages` field on `file`.\n *\n * > 🪦 **Note**: also has obsolete signatures.\n *\n * @overload\n * @param {string} reason\n * @param {MessageOptions | null | undefined} [options]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {string} reason\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {string} reason\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {string} reason\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @param {Error | VFileMessage | string} causeOrReason\n * Reason for message, should use markdown.\n * @param {Node | NodeLike | MessageOptions | Point | Position | string | null | undefined} [optionsOrParentOrPlace]\n * Configuration (optional).\n * @param {string | null | undefined} [origin]\n * Place in code where the message originates (example:\n * `'my-package:my-rule'` or `'my-rule'`).\n * @returns {VFileMessage}\n * Message.\n */\n message(causeOrReason, optionsOrParentOrPlace, origin) {\n const message = new VFileMessage(\n // @ts-expect-error: the overloads are fine.\n causeOrReason,\n optionsOrParentOrPlace,\n origin\n )\n\n if (this.path) {\n message.name = this.path + ':' + message.name\n message.file = this.path\n }\n\n message.fatal = false\n\n this.messages.push(message)\n\n return message\n }\n\n /**\n * Serialize the file.\n *\n * > **Note**: which encodings are supported depends on the engine.\n * > For info on Node.js, see:\n * > .\n *\n * @param {string | null | undefined} [encoding='utf8']\n * Character encoding to understand `value` as when it’s a `Uint8Array`\n * (default: `'utf-8'`).\n * @returns {string}\n * Serialized file.\n */\n toString(encoding) {\n if (this.value === undefined) {\n return ''\n }\n\n if (typeof this.value === 'string') {\n return this.value\n }\n\n const decoder = new TextDecoder(encoding || undefined)\n return decoder.decode(this.value)\n }\n}\n\n/**\n * Assert that `part` is not a path (as in, does not contain `path.sep`).\n *\n * @param {string | null | undefined} part\n * File path part.\n * @param {string} name\n * Part name.\n * @returns {undefined}\n * Nothing.\n */\nfunction assertPart(part, name) {\n if (part && part.includes(path.sep)) {\n throw new Error(\n '`' + name + '` cannot be a path: did not expect `' + path.sep + '`'\n )\n }\n}\n\n/**\n * Assert that `part` is not empty.\n *\n * @param {string | undefined} part\n * Thing.\n * @param {string} name\n * Part name.\n * @returns {asserts part is string}\n * Nothing.\n */\nfunction assertNonEmpty(part, name) {\n if (!part) {\n throw new Error('`' + name + '` cannot be empty')\n }\n}\n\n/**\n * Assert `path` exists.\n *\n * @param {string | undefined} path\n * Path.\n * @param {string} name\n * Dependency name.\n * @returns {asserts path is string}\n * Nothing.\n */\nfunction assertPath(path, name) {\n if (!path) {\n throw new Error('Setting `' + name + '` requires `path` to be set too')\n }\n}\n\n/**\n * Assert `value` is an `Uint8Array`.\n *\n * @param {unknown} value\n * thing.\n * @returns {value is Uint8Array}\n * Whether `value` is an `Uint8Array`.\n */\nfunction isUint8Array(value) {\n return Boolean(\n value &&\n typeof value === 'object' &&\n 'byteLength' in value &&\n 'byteOffset' in value\n )\n}\n","export const CallableInstance =\n /**\n * @type {new , Result>(property: string | symbol) => (...parameters: Parameters) => Result}\n */\n (\n /** @type {unknown} */\n (\n /**\n * @this {Function}\n * @param {string | symbol} property\n * @returns {(...parameters: Array) => unknown}\n */\n function (property) {\n const self = this\n const constr = self.constructor\n const proto = /** @type {Record} */ (\n // Prototypes do exist.\n // type-coverage:ignore-next-line\n constr.prototype\n )\n const func = proto[property]\n /** @type {(...parameters: Array) => unknown} */\n const apply = function () {\n return func.apply(apply, arguments)\n }\n\n Object.setPrototypeOf(apply, proto)\n\n const names = Object.getOwnPropertyNames(func)\n\n for (const p of names) {\n const descriptor = Object.getOwnPropertyDescriptor(func, p)\n if (descriptor) Object.defineProperty(apply, p, descriptor)\n }\n\n return apply\n }\n )\n )\n","/**\n * @typedef {import('trough').Pipeline} Pipeline\n *\n * @typedef {import('unist').Node} Node\n *\n * @typedef {import('vfile').Compatible} Compatible\n * @typedef {import('vfile').Value} Value\n *\n * @typedef {import('../index.js').CompileResultMap} CompileResultMap\n * @typedef {import('../index.js').Data} Data\n * @typedef {import('../index.js').Settings} Settings\n */\n\n/**\n * @typedef {CompileResultMap[keyof CompileResultMap]} CompileResults\n * Acceptable results from compilers.\n *\n * To register custom results, add them to\n * {@link CompileResultMap `CompileResultMap`}.\n */\n\n/**\n * @template {Node} [Tree=Node]\n * The node that the compiler receives (default: `Node`).\n * @template {CompileResults} [Result=CompileResults]\n * The thing that the compiler yields (default: `CompileResults`).\n * @callback Compiler\n * A **compiler** handles the compiling of a syntax tree to something else\n * (in most cases, text) (TypeScript type).\n *\n * It is used in the stringify phase and called with a {@link Node `Node`}\n * and {@link VFile `VFile`} representation of the document to compile.\n * It should return the textual representation of the given tree (typically\n * `string`).\n *\n * > 👉 **Note**: unified typically compiles by serializing: most compilers\n * > return `string` (or `Uint8Array`).\n * > Some compilers, such as the one configured with\n * > [`rehype-react`][rehype-react], return other values (in this case, a\n * > React tree).\n * > If you’re using a compiler that doesn’t serialize, expect different\n * > result values.\n * >\n * > To register custom results in TypeScript, add them to\n * > {@link CompileResultMap `CompileResultMap`}.\n *\n * [rehype-react]: https://github.com/rehypejs/rehype-react\n * @param {Tree} tree\n * Tree to compile.\n * @param {VFile} file\n * File associated with `tree`.\n * @returns {Result}\n * New content: compiled text (`string` or `Uint8Array`, for `file.value`) or\n * something else (for `file.result`).\n */\n\n/**\n * @template {Node} [Tree=Node]\n * The node that the parser yields (default: `Node`)\n * @callback Parser\n * A **parser** handles the parsing of text to a syntax tree.\n *\n * It is used in the parse phase and is called with a `string` and\n * {@link VFile `VFile`} of the document to parse.\n * It must return the syntax tree representation of the given file\n * ({@link Node `Node`}).\n * @param {string} document\n * Document to parse.\n * @param {VFile} file\n * File associated with `document`.\n * @returns {Tree}\n * Node representing the given file.\n */\n\n/**\n * @typedef {(\n * Plugin, any, any> |\n * PluginTuple, any, any> |\n * Preset\n * )} Pluggable\n * Union of the different ways to add plugins and settings.\n */\n\n/**\n * @typedef {Array} PluggableList\n * List of plugins and presets.\n */\n\n// Note: we can’t use `callback` yet as it messes up `this`:\n// .\n/**\n * @template {Array} [PluginParameters=[]]\n * Arguments passed to the plugin (default: `[]`, the empty tuple).\n * @template {Node | string | undefined} [Input=Node]\n * Value that is expected as input (default: `Node`).\n *\n * * If the plugin returns a {@link Transformer `Transformer`}, this\n * should be the node it expects.\n * * If the plugin sets a {@link Parser `Parser`}, this should be\n * `string`.\n * * If the plugin sets a {@link Compiler `Compiler`}, this should be the\n * node it expects.\n * @template [Output=Input]\n * Value that is yielded as output (default: `Input`).\n *\n * * If the plugin returns a {@link Transformer `Transformer`}, this\n * should be the node that that yields.\n * * If the plugin sets a {@link Parser `Parser`}, this should be the\n * node that it yields.\n * * If the plugin sets a {@link Compiler `Compiler`}, this should be\n * result it yields.\n * @typedef {(\n * (this: Processor, ...parameters: PluginParameters) =>\n * Input extends string ? // Parser.\n * Output extends Node | undefined ? undefined | void : never :\n * Output extends CompileResults ? // Compiler.\n * Input extends Node | undefined ? undefined | void : never :\n * Transformer<\n * Input extends Node ? Input : Node,\n * Output extends Node ? Output : Node\n * > | undefined | void\n * )} Plugin\n * Single plugin.\n *\n * Plugins configure the processors they are applied on in the following\n * ways:\n *\n * * they change the processor, such as the parser, the compiler, or by\n * configuring data\n * * they specify how to handle trees and files\n *\n * In practice, they are functions that can receive options and configure the\n * processor (`this`).\n *\n * > 👉 **Note**: plugins are called when the processor is *frozen*, not when\n * > they are applied.\n */\n\n/**\n * Tuple of a plugin and its configuration.\n *\n * The first item is a plugin, the rest are its parameters.\n *\n * @template {Array} [TupleParameters=[]]\n * Arguments passed to the plugin (default: `[]`, the empty tuple).\n * @template {Node | string | undefined} [Input=undefined]\n * Value that is expected as input (optional).\n *\n * * If the plugin returns a {@link Transformer `Transformer`}, this\n * should be the node it expects.\n * * If the plugin sets a {@link Parser `Parser`}, this should be\n * `string`.\n * * If the plugin sets a {@link Compiler `Compiler`}, this should be the\n * node it expects.\n * @template [Output=undefined] (optional).\n * Value that is yielded as output.\n *\n * * If the plugin returns a {@link Transformer `Transformer`}, this\n * should be the node that that yields.\n * * If the plugin sets a {@link Parser `Parser`}, this should be the\n * node that it yields.\n * * If the plugin sets a {@link Compiler `Compiler`}, this should be\n * result it yields.\n * @typedef {(\n * [\n * plugin: Plugin,\n * ...parameters: TupleParameters\n * ]\n * )} PluginTuple\n */\n\n/**\n * @typedef Preset\n * Sharable configuration.\n *\n * They can contain plugins and settings.\n * @property {PluggableList | undefined} [plugins]\n * List of plugins and presets (optional).\n * @property {Settings | undefined} [settings]\n * Shared settings for parsers and compilers (optional).\n */\n\n/**\n * @template {VFile} [File=VFile]\n * The file that the callback receives (default: `VFile`).\n * @callback ProcessCallback\n * Callback called when the process is done.\n *\n * Called with either an error or a result.\n * @param {Error | undefined} [error]\n * Fatal error (optional).\n * @param {File | undefined} [file]\n * Processed file (optional).\n * @returns {undefined}\n * Nothing.\n */\n\n/**\n * @template {Node} [Tree=Node]\n * The tree that the callback receives (default: `Node`).\n * @callback RunCallback\n * Callback called when transformers are done.\n *\n * Called with either an error or results.\n * @param {Error | undefined} [error]\n * Fatal error (optional).\n * @param {Tree | undefined} [tree]\n * Transformed tree (optional).\n * @param {VFile | undefined} [file]\n * File (optional).\n * @returns {undefined}\n * Nothing.\n */\n\n/**\n * @template {Node} [Output=Node]\n * Node type that the transformer yields (default: `Node`).\n * @callback TransformCallback\n * Callback passed to transforms.\n *\n * If the signature of a `transformer` accepts a third argument, the\n * transformer may perform asynchronous operations, and must call it.\n * @param {Error | undefined} [error]\n * Fatal error to stop the process (optional).\n * @param {Output | undefined} [tree]\n * New, changed, tree (optional).\n * @param {VFile | undefined} [file]\n * New, changed, file (optional).\n * @returns {undefined}\n * Nothing.\n */\n\n/**\n * @template {Node} [Input=Node]\n * Node type that the transformer expects (default: `Node`).\n * @template {Node} [Output=Input]\n * Node type that the transformer yields (default: `Input`).\n * @callback Transformer\n * Transformers handle syntax trees and files.\n *\n * They are functions that are called each time a syntax tree and file are\n * passed through the run phase.\n * When an error occurs in them (either because it’s thrown, returned,\n * rejected, or passed to `next`), the process stops.\n *\n * The run phase is handled by [`trough`][trough], see its documentation for\n * the exact semantics of these functions.\n *\n * > 👉 **Note**: you should likely ignore `next`: don’t accept it.\n * > it supports callback-style async work.\n * > But promises are likely easier to reason about.\n *\n * [trough]: https://github.com/wooorm/trough#function-fninput-next\n * @param {Input} tree\n * Tree to handle.\n * @param {VFile} file\n * File to handle.\n * @param {TransformCallback} next\n * Callback.\n * @returns {(\n * Promise |\n * Promise | // For some reason this is needed separately.\n * Output |\n * Error |\n * undefined |\n * void\n * )}\n * If you accept `next`, nothing.\n * Otherwise:\n *\n * * `Error` — fatal error to stop the process\n * * `Promise` or `undefined` — the next transformer keeps using\n * same tree\n * * `Promise` or `Node` — new, changed, tree\n */\n\n/**\n * @template {Node | undefined} ParseTree\n * Output of `parse`.\n * @template {Node | undefined} HeadTree\n * Input for `run`.\n * @template {Node | undefined} TailTree\n * Output for `run`.\n * @template {Node | undefined} CompileTree\n * Input of `stringify`.\n * @template {CompileResults | undefined} CompileResult\n * Output of `stringify`.\n * @template {Node | string | undefined} Input\n * Input of plugin.\n * @template Output\n * Output of plugin (optional).\n * @typedef {(\n * Input extends string\n * ? Output extends Node | undefined\n * ? // Parser.\n * Processor<\n * Output extends undefined ? ParseTree : Output,\n * HeadTree,\n * TailTree,\n * CompileTree,\n * CompileResult\n * >\n * : // Unknown.\n * Processor\n * : Output extends CompileResults\n * ? Input extends Node | undefined\n * ? // Compiler.\n * Processor<\n * ParseTree,\n * HeadTree,\n * TailTree,\n * Input extends undefined ? CompileTree : Input,\n * Output extends undefined ? CompileResult : Output\n * >\n * : // Unknown.\n * Processor\n * : Input extends Node | undefined\n * ? Output extends Node | undefined\n * ? // Transform.\n * Processor<\n * ParseTree,\n * HeadTree extends undefined ? Input : HeadTree,\n * Output extends undefined ? TailTree : Output,\n * CompileTree,\n * CompileResult\n * >\n * : // Unknown.\n * Processor\n * : // Unknown.\n * Processor\n * )} UsePlugin\n * Create a processor based on the input/output of a {@link Plugin plugin}.\n */\n\n/**\n * @template {CompileResults | undefined} Result\n * Node type that the transformer yields.\n * @typedef {(\n * Result extends Value | undefined ?\n * VFile :\n * VFile & {result: Result}\n * )} VFileWithOutput\n * Type to generate a {@link VFile `VFile`} corresponding to a compiler result.\n *\n * If a result that is not acceptable on a `VFile` is used, that will\n * be stored on the `result` field of {@link VFile `VFile`}.\n */\n\nimport {bail} from 'bail'\nimport extend from 'extend'\nimport {ok as assert} from 'devlop'\nimport isPlainObj from 'is-plain-obj'\nimport {trough} from 'trough'\nimport {VFile} from 'vfile'\nimport {CallableInstance} from './callable-instance.js'\n\n// To do: next major: drop `Compiler`, `Parser`: prefer lowercase.\n\n// To do: we could start yielding `never` in TS when a parser is missing and\n// `parse` is called.\n// Currently, we allow directly setting `processor.parser`, which is untyped.\n\nconst own = {}.hasOwnProperty\n\n/**\n * @template {Node | undefined} [ParseTree=undefined]\n * Output of `parse` (optional).\n * @template {Node | undefined} [HeadTree=undefined]\n * Input for `run` (optional).\n * @template {Node | undefined} [TailTree=undefined]\n * Output for `run` (optional).\n * @template {Node | undefined} [CompileTree=undefined]\n * Input of `stringify` (optional).\n * @template {CompileResults | undefined} [CompileResult=undefined]\n * Output of `stringify` (optional).\n * @extends {CallableInstance<[], Processor>}\n */\nexport class Processor extends CallableInstance {\n /**\n * Create a processor.\n */\n constructor() {\n // If `Processor()` is called (w/o new), `copy` is called instead.\n super('copy')\n\n /**\n * Compiler to use (deprecated).\n *\n * @deprecated\n * Use `compiler` instead.\n * @type {(\n * Compiler<\n * CompileTree extends undefined ? Node : CompileTree,\n * CompileResult extends undefined ? CompileResults : CompileResult\n * > |\n * undefined\n * )}\n */\n this.Compiler = undefined\n\n /**\n * Parser to use (deprecated).\n *\n * @deprecated\n * Use `parser` instead.\n * @type {(\n * Parser |\n * undefined\n * )}\n */\n this.Parser = undefined\n\n // Note: the following fields are considered private.\n // However, they are needed for tests, and TSC generates an untyped\n // `private freezeIndex` field for, which trips `type-coverage` up.\n // Instead, we use `@deprecated` to visualize that they shouldn’t be used.\n /**\n * Internal list of configured plugins.\n *\n * @deprecated\n * This is a private internal property and should not be used.\n * @type {Array>>}\n */\n this.attachers = []\n\n /**\n * Compiler to use.\n *\n * @type {(\n * Compiler<\n * CompileTree extends undefined ? Node : CompileTree,\n * CompileResult extends undefined ? CompileResults : CompileResult\n * > |\n * undefined\n * )}\n */\n this.compiler = undefined\n\n /**\n * Internal state to track where we are while freezing.\n *\n * @deprecated\n * This is a private internal property and should not be used.\n * @type {number}\n */\n this.freezeIndex = -1\n\n /**\n * Internal state to track whether we’re frozen.\n *\n * @deprecated\n * This is a private internal property and should not be used.\n * @type {boolean | undefined}\n */\n this.frozen = undefined\n\n /**\n * Internal state.\n *\n * @deprecated\n * This is a private internal property and should not be used.\n * @type {Data}\n */\n this.namespace = {}\n\n /**\n * Parser to use.\n *\n * @type {(\n * Parser |\n * undefined\n * )}\n */\n this.parser = undefined\n\n /**\n * Internal list of configured transformers.\n *\n * @deprecated\n * This is a private internal property and should not be used.\n * @type {Pipeline}\n */\n this.transformers = trough()\n }\n\n /**\n * Copy a processor.\n *\n * @deprecated\n * This is a private internal method and should not be used.\n * @returns {Processor}\n * New *unfrozen* processor ({@link Processor `Processor`}) that is\n * configured to work the same as its ancestor.\n * When the descendant processor is configured in the future it does not\n * affect the ancestral processor.\n */\n copy() {\n // Cast as the type parameters will be the same after attaching.\n const destination =\n /** @type {Processor} */ (\n new Processor()\n )\n let index = -1\n\n while (++index < this.attachers.length) {\n const attacher = this.attachers[index]\n destination.use(...attacher)\n }\n\n destination.data(extend(true, {}, this.namespace))\n\n return destination\n }\n\n /**\n * Configure the processor with info available to all plugins.\n * Information is stored in an object.\n *\n * Typically, options can be given to a specific plugin, but sometimes it\n * makes sense to have information shared with several plugins.\n * For example, a list of HTML elements that are self-closing, which is\n * needed during all phases.\n *\n * > 👉 **Note**: setting information cannot occur on *frozen* processors.\n * > Call the processor first to create a new unfrozen processor.\n *\n * > 👉 **Note**: to register custom data in TypeScript, augment the\n * > {@link Data `Data`} interface.\n *\n * @example\n * This example show how to get and set info:\n *\n * ```js\n * import {unified} from 'unified'\n *\n * const processor = unified().data('alpha', 'bravo')\n *\n * processor.data('alpha') // => 'bravo'\n *\n * processor.data() // => {alpha: 'bravo'}\n *\n * processor.data({charlie: 'delta'})\n *\n * processor.data() // => {charlie: 'delta'}\n * ```\n *\n * @template {keyof Data} Key\n *\n * @overload\n * @returns {Data}\n *\n * @overload\n * @param {Data} dataset\n * @returns {Processor}\n *\n * @overload\n * @param {Key} key\n * @returns {Data[Key]}\n *\n * @overload\n * @param {Key} key\n * @param {Data[Key]} value\n * @returns {Processor}\n *\n * @param {Data | Key} [key]\n * Key to get or set, or entire dataset to set, or nothing to get the\n * entire dataset (optional).\n * @param {Data[Key]} [value]\n * Value to set (optional).\n * @returns {unknown}\n * The current processor when setting, the value at `key` when getting, or\n * the entire dataset when getting without key.\n */\n data(key, value) {\n if (typeof key === 'string') {\n // Set `key`.\n if (arguments.length === 2) {\n assertUnfrozen('data', this.frozen)\n this.namespace[key] = value\n return this\n }\n\n // Get `key`.\n return (own.call(this.namespace, key) && this.namespace[key]) || undefined\n }\n\n // Set space.\n if (key) {\n assertUnfrozen('data', this.frozen)\n this.namespace = key\n return this\n }\n\n // Get space.\n return this.namespace\n }\n\n /**\n * Freeze a processor.\n *\n * Frozen processors are meant to be extended and not to be configured\n * directly.\n *\n * When a processor is frozen it cannot be unfrozen.\n * New processors working the same way can be created by calling the\n * processor.\n *\n * It’s possible to freeze processors explicitly by calling `.freeze()`.\n * Processors freeze automatically when `.parse()`, `.run()`, `.runSync()`,\n * `.stringify()`, `.process()`, or `.processSync()` are called.\n *\n * @returns {Processor}\n * The current processor.\n */\n freeze() {\n if (this.frozen) {\n return this\n }\n\n // Cast so that we can type plugins easier.\n // Plugins are supposed to be usable on different processors, not just on\n // this exact processor.\n const self = /** @type {Processor} */ (/** @type {unknown} */ (this))\n\n while (++this.freezeIndex < this.attachers.length) {\n const [attacher, ...options] = this.attachers[this.freezeIndex]\n\n if (options[0] === false) {\n continue\n }\n\n if (options[0] === true) {\n options[0] = undefined\n }\n\n const transformer = attacher.call(self, ...options)\n\n if (typeof transformer === 'function') {\n this.transformers.use(transformer)\n }\n }\n\n this.frozen = true\n this.freezeIndex = Number.POSITIVE_INFINITY\n\n return this\n }\n\n /**\n * Parse text to a syntax tree.\n *\n * > 👉 **Note**: `parse` freezes the processor if not already *frozen*.\n *\n * > 👉 **Note**: `parse` performs the parse phase, not the run phase or other\n * > phases.\n *\n * @param {Compatible | undefined} [file]\n * file to parse (optional); typically `string` or `VFile`; any value\n * accepted as `x` in `new VFile(x)`.\n * @returns {ParseTree extends undefined ? Node : ParseTree}\n * Syntax tree representing `file`.\n */\n parse(file) {\n this.freeze()\n const realFile = vfile(file)\n const parser = this.parser || this.Parser\n assertParser('parse', parser)\n return parser(String(realFile), realFile)\n }\n\n /**\n * Process the given file as configured on the processor.\n *\n * > 👉 **Note**: `process` freezes the processor if not already *frozen*.\n *\n * > 👉 **Note**: `process` performs the parse, run, and stringify phases.\n *\n * @overload\n * @param {Compatible | undefined} file\n * @param {ProcessCallback>} done\n * @returns {undefined}\n *\n * @overload\n * @param {Compatible | undefined} [file]\n * @returns {Promise>}\n *\n * @param {Compatible | undefined} [file]\n * File (optional); typically `string` or `VFile`]; any value accepted as\n * `x` in `new VFile(x)`.\n * @param {ProcessCallback> | undefined} [done]\n * Callback (optional).\n * @returns {Promise | undefined}\n * Nothing if `done` is given.\n * Otherwise a promise, rejected with a fatal error or resolved with the\n * processed file.\n *\n * The parsed, transformed, and compiled value is available at\n * `file.value` (see note).\n *\n * > 👉 **Note**: unified typically compiles by serializing: most\n * > compilers return `string` (or `Uint8Array`).\n * > Some compilers, such as the one configured with\n * > [`rehype-react`][rehype-react], return other values (in this case, a\n * > React tree).\n * > If you’re using a compiler that doesn’t serialize, expect different\n * > result values.\n * >\n * > To register custom results in TypeScript, add them to\n * > {@link CompileResultMap `CompileResultMap`}.\n *\n * [rehype-react]: https://github.com/rehypejs/rehype-react\n */\n process(file, done) {\n const self = this\n\n this.freeze()\n assertParser('process', this.parser || this.Parser)\n assertCompiler('process', this.compiler || this.Compiler)\n\n return done ? executor(undefined, done) : new Promise(executor)\n\n // Note: `void`s needed for TS.\n /**\n * @param {((file: VFileWithOutput) => undefined | void) | undefined} resolve\n * @param {(error: Error | undefined) => undefined | void} reject\n * @returns {undefined}\n */\n function executor(resolve, reject) {\n const realFile = vfile(file)\n // Assume `ParseTree` (the result of the parser) matches `HeadTree` (the\n // input of the first transform).\n const parseTree =\n /** @type {HeadTree extends undefined ? Node : HeadTree} */ (\n /** @type {unknown} */ (self.parse(realFile))\n )\n\n self.run(parseTree, realFile, function (error, tree, file) {\n if (error || !tree || !file) {\n return realDone(error)\n }\n\n // Assume `TailTree` (the output of the last transform) matches\n // `CompileTree` (the input of the compiler).\n const compileTree =\n /** @type {CompileTree extends undefined ? Node : CompileTree} */ (\n /** @type {unknown} */ (tree)\n )\n\n const compileResult = self.stringify(compileTree, file)\n\n if (looksLikeAValue(compileResult)) {\n file.value = compileResult\n } else {\n file.result = compileResult\n }\n\n realDone(error, /** @type {VFileWithOutput} */ (file))\n })\n\n /**\n * @param {Error | undefined} error\n * @param {VFileWithOutput | undefined} [file]\n * @returns {undefined}\n */\n function realDone(error, file) {\n if (error || !file) {\n reject(error)\n } else if (resolve) {\n resolve(file)\n } else {\n assert(done, '`done` is defined if `resolve` is not')\n done(undefined, file)\n }\n }\n }\n }\n\n /**\n * Process the given file as configured on the processor.\n *\n * An error is thrown if asynchronous transforms are configured.\n *\n * > 👉 **Note**: `processSync` freezes the processor if not already *frozen*.\n *\n * > 👉 **Note**: `processSync` performs the parse, run, and stringify phases.\n *\n * @param {Compatible | undefined} [file]\n * File (optional); typically `string` or `VFile`; any value accepted as\n * `x` in `new VFile(x)`.\n * @returns {VFileWithOutput}\n * The processed file.\n *\n * The parsed, transformed, and compiled value is available at\n * `file.value` (see note).\n *\n * > 👉 **Note**: unified typically compiles by serializing: most\n * > compilers return `string` (or `Uint8Array`).\n * > Some compilers, such as the one configured with\n * > [`rehype-react`][rehype-react], return other values (in this case, a\n * > React tree).\n * > If you’re using a compiler that doesn’t serialize, expect different\n * > result values.\n * >\n * > To register custom results in TypeScript, add them to\n * > {@link CompileResultMap `CompileResultMap`}.\n *\n * [rehype-react]: https://github.com/rehypejs/rehype-react\n */\n processSync(file) {\n /** @type {boolean} */\n let complete = false\n /** @type {VFileWithOutput | undefined} */\n let result\n\n this.freeze()\n assertParser('processSync', this.parser || this.Parser)\n assertCompiler('processSync', this.compiler || this.Compiler)\n\n this.process(file, realDone)\n assertDone('processSync', 'process', complete)\n assert(result, 'we either bailed on an error or have a tree')\n\n return result\n\n /**\n * @type {ProcessCallback>}\n */\n function realDone(error, file) {\n complete = true\n bail(error)\n result = file\n }\n }\n\n /**\n * Run *transformers* on a syntax tree.\n *\n * > 👉 **Note**: `run` freezes the processor if not already *frozen*.\n *\n * > 👉 **Note**: `run` performs the run phase, not other phases.\n *\n * @overload\n * @param {HeadTree extends undefined ? Node : HeadTree} tree\n * @param {RunCallback} done\n * @returns {undefined}\n *\n * @overload\n * @param {HeadTree extends undefined ? Node : HeadTree} tree\n * @param {Compatible | undefined} file\n * @param {RunCallback} done\n * @returns {undefined}\n *\n * @overload\n * @param {HeadTree extends undefined ? Node : HeadTree} tree\n * @param {Compatible | undefined} [file]\n * @returns {Promise}\n *\n * @param {HeadTree extends undefined ? Node : HeadTree} tree\n * Tree to transform and inspect.\n * @param {(\n * RunCallback |\n * Compatible\n * )} [file]\n * File associated with `node` (optional); any value accepted as `x` in\n * `new VFile(x)`.\n * @param {RunCallback} [done]\n * Callback (optional).\n * @returns {Promise | undefined}\n * Nothing if `done` is given.\n * Otherwise, a promise rejected with a fatal error or resolved with the\n * transformed tree.\n */\n run(tree, file, done) {\n assertNode(tree)\n this.freeze()\n\n const transformers = this.transformers\n\n if (!done && typeof file === 'function') {\n done = file\n file = undefined\n }\n\n return done ? executor(undefined, done) : new Promise(executor)\n\n // Note: `void`s needed for TS.\n /**\n * @param {(\n * ((tree: TailTree extends undefined ? Node : TailTree) => undefined | void) |\n * undefined\n * )} resolve\n * @param {(error: Error) => undefined | void} reject\n * @returns {undefined}\n */\n function executor(resolve, reject) {\n assert(\n typeof file !== 'function',\n '`file` can’t be a `done` anymore, we checked'\n )\n const realFile = vfile(file)\n transformers.run(tree, realFile, realDone)\n\n /**\n * @param {Error | undefined} error\n * @param {Node} outputTree\n * @param {VFile} file\n * @returns {undefined}\n */\n function realDone(error, outputTree, file) {\n const resultingTree =\n /** @type {TailTree extends undefined ? Node : TailTree} */ (\n outputTree || tree\n )\n\n if (error) {\n reject(error)\n } else if (resolve) {\n resolve(resultingTree)\n } else {\n assert(done, '`done` is defined if `resolve` is not')\n done(undefined, resultingTree, file)\n }\n }\n }\n }\n\n /**\n * Run *transformers* on a syntax tree.\n *\n * An error is thrown if asynchronous transforms are configured.\n *\n * > 👉 **Note**: `runSync` freezes the processor if not already *frozen*.\n *\n * > 👉 **Note**: `runSync` performs the run phase, not other phases.\n *\n * @param {HeadTree extends undefined ? Node : HeadTree} tree\n * Tree to transform and inspect.\n * @param {Compatible | undefined} [file]\n * File associated with `node` (optional); any value accepted as `x` in\n * `new VFile(x)`.\n * @returns {TailTree extends undefined ? Node : TailTree}\n * Transformed tree.\n */\n runSync(tree, file) {\n /** @type {boolean} */\n let complete = false\n /** @type {(TailTree extends undefined ? Node : TailTree) | undefined} */\n let result\n\n this.run(tree, file, realDone)\n\n assertDone('runSync', 'run', complete)\n assert(result, 'we either bailed on an error or have a tree')\n return result\n\n /**\n * @type {RunCallback}\n */\n function realDone(error, tree) {\n bail(error)\n result = tree\n complete = true\n }\n }\n\n /**\n * Compile a syntax tree.\n *\n * > 👉 **Note**: `stringify` freezes the processor if not already *frozen*.\n *\n * > 👉 **Note**: `stringify` performs the stringify phase, not the run phase\n * > or other phases.\n *\n * @param {CompileTree extends undefined ? Node : CompileTree} tree\n * Tree to compile.\n * @param {Compatible | undefined} [file]\n * File associated with `node` (optional); any value accepted as `x` in\n * `new VFile(x)`.\n * @returns {CompileResult extends undefined ? Value : CompileResult}\n * Textual representation of the tree (see note).\n *\n * > 👉 **Note**: unified typically compiles by serializing: most compilers\n * > return `string` (or `Uint8Array`).\n * > Some compilers, such as the one configured with\n * > [`rehype-react`][rehype-react], return other values (in this case, a\n * > React tree).\n * > If you’re using a compiler that doesn’t serialize, expect different\n * > result values.\n * >\n * > To register custom results in TypeScript, add them to\n * > {@link CompileResultMap `CompileResultMap`}.\n *\n * [rehype-react]: https://github.com/rehypejs/rehype-react\n */\n stringify(tree, file) {\n this.freeze()\n const realFile = vfile(file)\n const compiler = this.compiler || this.Compiler\n assertCompiler('stringify', compiler)\n assertNode(tree)\n\n return compiler(tree, realFile)\n }\n\n /**\n * Configure the processor to use a plugin, a list of usable values, or a\n * preset.\n *\n * If the processor is already using a plugin, the previous plugin\n * configuration is changed based on the options that are passed in.\n * In other words, the plugin is not added a second time.\n *\n * > 👉 **Note**: `use` cannot be called on *frozen* processors.\n * > Call the processor first to create a new unfrozen processor.\n *\n * @example\n * There are many ways to pass plugins to `.use()`.\n * This example gives an overview:\n *\n * ```js\n * import {unified} from 'unified'\n *\n * unified()\n * // Plugin with options:\n * .use(pluginA, {x: true, y: true})\n * // Passing the same plugin again merges configuration (to `{x: true, y: false, z: true}`):\n * .use(pluginA, {y: false, z: true})\n * // Plugins:\n * .use([pluginB, pluginC])\n * // Two plugins, the second with options:\n * .use([pluginD, [pluginE, {}]])\n * // Preset with plugins and settings:\n * .use({plugins: [pluginF, [pluginG, {}]], settings: {position: false}})\n * // Settings only:\n * .use({settings: {position: false}})\n * ```\n *\n * @template {Array} [Parameters=[]]\n * @template {Node | string | undefined} [Input=undefined]\n * @template [Output=Input]\n *\n * @overload\n * @param {Preset | null | undefined} [preset]\n * @returns {Processor}\n *\n * @overload\n * @param {PluggableList} list\n * @returns {Processor}\n *\n * @overload\n * @param {Plugin} plugin\n * @param {...(Parameters | [boolean])} parameters\n * @returns {UsePlugin}\n *\n * @param {PluggableList | Plugin | Preset | null | undefined} value\n * Usable value.\n * @param {...unknown} parameters\n * Parameters, when a plugin is given as a usable value.\n * @returns {Processor}\n * Current processor.\n */\n use(value, ...parameters) {\n const attachers = this.attachers\n const namespace = this.namespace\n\n assertUnfrozen('use', this.frozen)\n\n if (value === null || value === undefined) {\n // Empty.\n } else if (typeof value === 'function') {\n addPlugin(value, parameters)\n } else if (typeof value === 'object') {\n if (Array.isArray(value)) {\n addList(value)\n } else {\n addPreset(value)\n }\n } else {\n throw new TypeError('Expected usable value, not `' + value + '`')\n }\n\n return this\n\n /**\n * @param {Pluggable} value\n * @returns {undefined}\n */\n function add(value) {\n if (typeof value === 'function') {\n addPlugin(value, [])\n } else if (typeof value === 'object') {\n if (Array.isArray(value)) {\n const [plugin, ...parameters] =\n /** @type {PluginTuple>} */ (value)\n addPlugin(plugin, parameters)\n } else {\n addPreset(value)\n }\n } else {\n throw new TypeError('Expected usable value, not `' + value + '`')\n }\n }\n\n /**\n * @param {Preset} result\n * @returns {undefined}\n */\n function addPreset(result) {\n if (!('plugins' in result) && !('settings' in result)) {\n throw new Error(\n 'Expected usable value but received an empty preset, which is probably a mistake: presets typically come with `plugins` and sometimes with `settings`, but this has neither'\n )\n }\n\n addList(result.plugins)\n\n if (result.settings) {\n namespace.settings = extend(true, namespace.settings, result.settings)\n }\n }\n\n /**\n * @param {PluggableList | null | undefined} plugins\n * @returns {undefined}\n */\n function addList(plugins) {\n let index = -1\n\n if (plugins === null || plugins === undefined) {\n // Empty.\n } else if (Array.isArray(plugins)) {\n while (++index < plugins.length) {\n const thing = plugins[index]\n add(thing)\n }\n } else {\n throw new TypeError('Expected a list of plugins, not `' + plugins + '`')\n }\n }\n\n /**\n * @param {Plugin} plugin\n * @param {Array} parameters\n * @returns {undefined}\n */\n function addPlugin(plugin, parameters) {\n let index = -1\n let entryIndex = -1\n\n while (++index < attachers.length) {\n if (attachers[index][0] === plugin) {\n entryIndex = index\n break\n }\n }\n\n if (entryIndex === -1) {\n attachers.push([plugin, ...parameters])\n }\n // Only set if there was at least a `primary` value, otherwise we’d change\n // `arguments.length`.\n else if (parameters.length > 0) {\n let [primary, ...rest] = parameters\n const currentPrimary = attachers[entryIndex][1]\n if (isPlainObj(currentPrimary) && isPlainObj(primary)) {\n primary = extend(true, currentPrimary, primary)\n }\n\n attachers[entryIndex] = [plugin, primary, ...rest]\n }\n }\n }\n}\n\n// Note: this returns a *callable* instance.\n// That’s why it’s documented as a function.\n/**\n * Create a new processor.\n *\n * @example\n * This example shows how a new processor can be created (from `remark`) and linked\n * to **stdin**(4) and **stdout**(4).\n *\n * ```js\n * import process from 'node:process'\n * import concatStream from 'concat-stream'\n * import {remark} from 'remark'\n *\n * process.stdin.pipe(\n * concatStream(function (buf) {\n * process.stdout.write(String(remark().processSync(buf)))\n * })\n * )\n * ```\n *\n * @returns\n * New *unfrozen* processor (`processor`).\n *\n * This processor is configured to work the same as its ancestor.\n * When the descendant processor is configured in the future it does not\n * affect the ancestral processor.\n */\nexport const unified = new Processor().freeze()\n\n/**\n * Assert a parser is available.\n *\n * @param {string} name\n * @param {unknown} value\n * @returns {asserts value is Parser}\n */\nfunction assertParser(name, value) {\n if (typeof value !== 'function') {\n throw new TypeError('Cannot `' + name + '` without `parser`')\n }\n}\n\n/**\n * Assert a compiler is available.\n *\n * @param {string} name\n * @param {unknown} value\n * @returns {asserts value is Compiler}\n */\nfunction assertCompiler(name, value) {\n if (typeof value !== 'function') {\n throw new TypeError('Cannot `' + name + '` without `compiler`')\n }\n}\n\n/**\n * Assert the processor is not frozen.\n *\n * @param {string} name\n * @param {unknown} frozen\n * @returns {asserts frozen is false}\n */\nfunction assertUnfrozen(name, frozen) {\n if (frozen) {\n throw new Error(\n 'Cannot call `' +\n name +\n '` on a frozen processor.\\nCreate a new processor first, by calling it: use `processor()` instead of `processor`.'\n )\n }\n}\n\n/**\n * Assert `node` is a unist node.\n *\n * @param {unknown} node\n * @returns {asserts node is Node}\n */\nfunction assertNode(node) {\n // `isPlainObj` unfortunately uses `any` instead of `unknown`.\n // type-coverage:ignore-next-line\n if (!isPlainObj(node) || typeof node.type !== 'string') {\n throw new TypeError('Expected node, got `' + node + '`')\n // Fine.\n }\n}\n\n/**\n * Assert that `complete` is `true`.\n *\n * @param {string} name\n * @param {string} asyncName\n * @param {unknown} complete\n * @returns {asserts complete is true}\n */\nfunction assertDone(name, asyncName, complete) {\n if (!complete) {\n throw new Error(\n '`' + name + '` finished async. Use `' + asyncName + '` instead'\n )\n }\n}\n\n/**\n * @param {Compatible | undefined} [value]\n * @returns {VFile}\n */\nfunction vfile(value) {\n return looksLikeAVFile(value) ? value : new VFile(value)\n}\n\n/**\n * @param {Compatible | undefined} [value]\n * @returns {value is VFile}\n */\nfunction looksLikeAVFile(value) {\n return Boolean(\n value &&\n typeof value === 'object' &&\n 'message' in value &&\n 'messages' in value\n )\n}\n\n/**\n * @param {unknown} [value]\n * @returns {value is Value}\n */\nfunction looksLikeAValue(value) {\n return typeof value === 'string' || isUint8Array(value)\n}\n\n/**\n * Assert `value` is an `Uint8Array`.\n *\n * @param {unknown} value\n * thing.\n * @returns {value is Uint8Array}\n * Whether `value` is an `Uint8Array`.\n */\nfunction isUint8Array(value) {\n return Boolean(\n value &&\n typeof value === 'object' &&\n 'byteLength' in value &&\n 'byteOffset' in value\n )\n}\n","// Register `Raw` in tree:\n/// \n\n/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n * @typedef {import('hast').Nodes} Nodes\n * @typedef {import('hast').Parents} Parents\n * @typedef {import('hast').Root} Root\n * @typedef {import('hast-util-to-jsx-runtime').Components} JsxRuntimeComponents\n * @typedef {import('remark-rehype').Options} RemarkRehypeOptions\n * @typedef {import('unist-util-visit').BuildVisitor} Visitor\n * @typedef {import('unified').PluggableList} PluggableList\n */\n\n/**\n * @callback AllowElement\n * Filter elements.\n * @param {Readonly} element\n * Element to check.\n * @param {number} index\n * Index of `element` in `parent`.\n * @param {Readonly | undefined} parent\n * Parent of `element`.\n * @returns {boolean | null | undefined}\n * Whether to allow `element` (default: `false`).\n *\n * @typedef {Partial} Components\n * Map tag names to components.\n *\n * @typedef Deprecation\n * Deprecation.\n * @property {string} from\n * Old field.\n * @property {string} id\n * ID in readme.\n * @property {keyof Options} [to]\n * New field.\n *\n * @typedef Options\n * Configuration.\n * @property {AllowElement | null | undefined} [allowElement]\n * Filter elements (optional);\n * `allowedElements` / `disallowedElements` is used first.\n * @property {ReadonlyArray | null | undefined} [allowedElements]\n * Tag names to allow (default: all tag names);\n * cannot combine w/ `disallowedElements`.\n * @property {string | null | undefined} [children]\n * Markdown.\n * @property {string | null | undefined} [className]\n * Wrap in a `div` with this class name.\n * @property {Components | null | undefined} [components]\n * Map tag names to components.\n * @property {ReadonlyArray | null | undefined} [disallowedElements]\n * Tag names to disallow (default: `[]`);\n * cannot combine w/ `allowedElements`.\n * @property {PluggableList | null | undefined} [rehypePlugins]\n * List of rehype plugins to use.\n * @property {PluggableList | null | undefined} [remarkPlugins]\n * List of remark plugins to use.\n * @property {Readonly | null | undefined} [remarkRehypeOptions]\n * Options to pass through to `remark-rehype`.\n * @property {boolean | null | undefined} [skipHtml=false]\n * Ignore HTML in markdown completely (default: `false`).\n * @property {boolean | null | undefined} [unwrapDisallowed=false]\n * Extract (unwrap) what’s in disallowed elements (default: `false`);\n * normally when say `strong` is not allowed, it and it’s children are dropped,\n * with `unwrapDisallowed` the element itself is replaced by its children.\n * @property {UrlTransform | null | undefined} [urlTransform]\n * Change URLs (default: `defaultUrlTransform`)\n *\n * @callback UrlTransform\n * Transform all URLs.\n * @param {string} url\n * URL.\n * @param {string} key\n * Property name (example: `'href'`).\n * @param {Readonly} node\n * Node.\n * @returns {string | null | undefined}\n * Transformed URL (optional).\n */\n\nimport {unreachable} from 'devlop'\nimport {toJsxRuntime} from 'hast-util-to-jsx-runtime'\nimport {urlAttributes} from 'html-url-attributes'\n// @ts-expect-error: untyped.\nimport {Fragment, jsx, jsxs} from 'react/jsx-runtime'\nimport remarkParse from 'remark-parse'\nimport remarkRehype from 'remark-rehype'\nimport {unified} from 'unified'\nimport {visit} from 'unist-util-visit'\nimport {VFile} from 'vfile'\n\nconst changelog =\n 'https://github.com/remarkjs/react-markdown/blob/main/changelog.md'\n\n/** @type {PluggableList} */\nconst emptyPlugins = []\n/** @type {Readonly} */\nconst emptyRemarkRehypeOptions = {allowDangerousHtml: true}\nconst safeProtocol = /^(https?|ircs?|mailto|xmpp)$/i\n\n// Mutable because we `delete` any time it’s used and a message is sent.\n/** @type {ReadonlyArray>} */\nconst deprecations = [\n {from: 'astPlugins', id: 'remove-buggy-html-in-markdown-parser'},\n {from: 'allowDangerousHtml', id: 'remove-buggy-html-in-markdown-parser'},\n {\n from: 'allowNode',\n id: 'replace-allownode-allowedtypes-and-disallowedtypes',\n to: 'allowElement'\n },\n {\n from: 'allowedTypes',\n id: 'replace-allownode-allowedtypes-and-disallowedtypes',\n to: 'allowedElements'\n },\n {\n from: 'disallowedTypes',\n id: 'replace-allownode-allowedtypes-and-disallowedtypes',\n to: 'disallowedElements'\n },\n {from: 'escapeHtml', id: 'remove-buggy-html-in-markdown-parser'},\n {from: 'includeElementIndex', id: '#remove-includeelementindex'},\n {\n from: 'includeNodeIndex',\n id: 'change-includenodeindex-to-includeelementindex'\n },\n {from: 'linkTarget', id: 'remove-linktarget'},\n {from: 'plugins', id: 'change-plugins-to-remarkplugins', to: 'remarkPlugins'},\n {from: 'rawSourcePos', id: '#remove-rawsourcepos'},\n {from: 'renderers', id: 'change-renderers-to-components', to: 'components'},\n {from: 'source', id: 'change-source-to-children', to: 'children'},\n {from: 'sourcePos', id: '#remove-sourcepos'},\n {from: 'transformImageUri', id: '#add-urltransform', to: 'urlTransform'},\n {from: 'transformLinkUri', id: '#add-urltransform', to: 'urlTransform'}\n]\n\n/**\n * Component to render markdown.\n *\n * @param {Readonly} options\n * Props.\n * @returns {JSX.Element}\n * React element.\n */\nexport function Markdown(options) {\n const allowedElements = options.allowedElements\n const allowElement = options.allowElement\n const children = options.children || ''\n const className = options.className\n const components = options.components\n const disallowedElements = options.disallowedElements\n const rehypePlugins = options.rehypePlugins || emptyPlugins\n const remarkPlugins = options.remarkPlugins || emptyPlugins\n const remarkRehypeOptions = options.remarkRehypeOptions\n ? {...options.remarkRehypeOptions, ...emptyRemarkRehypeOptions}\n : emptyRemarkRehypeOptions\n const skipHtml = options.skipHtml\n const unwrapDisallowed = options.unwrapDisallowed\n const urlTransform = options.urlTransform || defaultUrlTransform\n\n const processor = unified()\n .use(remarkParse)\n .use(remarkPlugins)\n .use(remarkRehype, remarkRehypeOptions)\n .use(rehypePlugins)\n\n const file = new VFile()\n\n if (typeof children === 'string') {\n file.value = children\n } else {\n unreachable(\n 'Unexpected value `' +\n children +\n '` for `children` prop, expected `string`'\n )\n }\n\n if (allowedElements && disallowedElements) {\n unreachable(\n 'Unexpected combined `allowedElements` and `disallowedElements`, expected one or the other'\n )\n }\n\n for (const deprecation of deprecations) {\n if (Object.hasOwn(options, deprecation.from)) {\n unreachable(\n 'Unexpected `' +\n deprecation.from +\n '` prop, ' +\n (deprecation.to\n ? 'use `' + deprecation.to + '` instead'\n : 'remove it') +\n ' (see <' +\n changelog +\n '#' +\n deprecation.id +\n '> for more info)'\n )\n }\n }\n\n const mdastTree = processor.parse(file)\n /** @type {Nodes} */\n let hastTree = processor.runSync(mdastTree, file)\n\n // Wrap in `div` if there’s a class name.\n if (className) {\n hastTree = {\n type: 'element',\n tagName: 'div',\n properties: {className},\n // Assume no doctypes.\n children: /** @type {Array} */ (\n hastTree.type === 'root' ? hastTree.children : [hastTree]\n )\n }\n }\n\n visit(hastTree, transform)\n\n return toJsxRuntime(hastTree, {\n Fragment,\n components,\n ignoreInvalidStyle: true,\n jsx,\n jsxs,\n passKeys: true,\n passNode: true\n })\n\n /** @type {Visitor} */\n function transform(node, index, parent) {\n if (node.type === 'raw' && parent && typeof index === 'number') {\n if (skipHtml) {\n parent.children.splice(index, 1)\n } else {\n parent.children[index] = {type: 'text', value: node.value}\n }\n\n return index\n }\n\n if (node.type === 'element') {\n /** @type {string} */\n let key\n\n for (key in urlAttributes) {\n if (\n Object.hasOwn(urlAttributes, key) &&\n Object.hasOwn(node.properties, key)\n ) {\n const value = node.properties[key]\n const test = urlAttributes[key]\n if (test === null || test.includes(node.tagName)) {\n node.properties[key] = urlTransform(String(value || ''), key, node)\n }\n }\n }\n }\n\n if (node.type === 'element') {\n let remove = allowedElements\n ? !allowedElements.includes(node.tagName)\n : disallowedElements\n ? disallowedElements.includes(node.tagName)\n : false\n\n if (!remove && allowElement && typeof index === 'number') {\n remove = !allowElement(node, index, parent)\n }\n\n if (remove && parent && typeof index === 'number') {\n if (unwrapDisallowed && node.children) {\n parent.children.splice(index, 1, ...node.children)\n } else {\n parent.children.splice(index, 1)\n }\n\n return index\n }\n }\n }\n}\n\n/**\n * Make a URL safe.\n *\n * @satisfies {UrlTransform}\n * @param {string} value\n * URL.\n * @returns {string}\n * Safe URL.\n */\nexport function defaultUrlTransform(value) {\n // Same as:\n // \n // But without the `encode` part.\n const colon = value.indexOf(':')\n const questionMark = value.indexOf('?')\n const numberSign = value.indexOf('#')\n const slash = value.indexOf('/')\n\n if (\n // If there is no protocol, it’s relative.\n colon < 0 ||\n // If the first colon is after a `?`, `#`, or `/`, it’s not a protocol.\n (slash > -1 && colon > slash) ||\n (questionMark > -1 && colon > questionMark) ||\n (numberSign > -1 && colon > numberSign) ||\n // It is a protocol, it should be allowed.\n safeProtocol.test(value.slice(0, colon))\n ) {\n return value\n }\n\n return ''\n}\n","\nimport { STRINGS } from '../../constants/strings';\nimport '../../styles/view/TextFile.css';\nimport {React, useState, useEffect} from 'react';\nimport Markdown from 'react-markdown'\nimport {getFilesPrefix } from '../../utils/utils';\n\n\nconst FileTopBar = ({onBackInfo, buttonInfo}) => {\n return (
\n {onBackInfo && \n \n }\n {buttonInfo && \n \n }\n
);\n}\n\n\nfunction FileApp({file, buttonInfo, onBackInfo}) {\n const [fileContent, setFileContent] = useState(\"\");\n const keysToIgnore = ['filename'];\n const filteredContent = Object.keys(file.content).reduce((acc, key) => {\n if (!keysToIgnore.includes(key)){\n acc[key] = file.content[key];\n }\n return acc;\n }, {});\n \n const handleMouseDown = (event) => {\n event.stopPropagation(); // Prevent the drag event from being triggered\n };\n\n useEffect(() => {\n const fetchMarkdown = async () => {\n try {\n if(file.content.type && file.content.type === 'markdown'){\n //console.log(file);\n const fp = getFilesPrefix() + file.getFilePath();\n const response = await fetch(fp);\n const text = await response.text();\n setFileContent(text);\n }\n else{\n setFileContent(\"no filepath key provided in json file\");\n }\n } catch (error) {\n console.error('Error fetching markdown file:', error);\n }\n };\n fetchMarkdown();\n }, [file]);\n \n\n return (\n
\n \n
\n {\n (file.content.type && file.content.type === 'markdown') ?\n (
\n {fileContent} \n
) \n :\n (\n
\n {Object.keys(filteredContent).map((key, index) => (\n

\n {key}: {Array.isArray(filteredContent[key]) \n ? filteredContent[key].join(\", \") : filteredContent[key]}\n

\n ))}
)}\n
\n
\n );\n}\n\nexport default FileApp;\n\n","import '../../styles/view/AppFolder.css';\nimport React, { useState } from 'react';\n\nconst Listbox = ({ options, onSelect, default_text=\"Select attribute\"}) => {\n\n const [selectedOption, setSelectedOption] = useState(default_text);\n\n const handleChange = (e) => {\n const value = e.target.value;\n setSelectedOption(value);\n onSelect(value);\n };\n\n return (\n \n );\n};\n\nexport default Listbox;\n","import React, {useState} from 'react';\nimport '../../styles/view/AppFolder.css';\nimport '../../styles/view/TextFile.css';\nimport FileApp from './FileApp';\nimport { iconImgFromType, getFilesURL} from '../../utils/utils';\nimport { Directory } from '../../data/data';\nimport { STRINGS } from '../../constants/strings';\nimport { AppContext } from '../../hooks/AppContext';\nimport Listbox from '../misc/Listbox';\n\nclass ViewType {\n static Grid = new ViewType(\"grid\")\n static List = new ViewType(\"list\")\n constructor(name) {\n this.name = name\n }\n }\n\nconst FolderEntry = ({fkey, icon, name, onclick}) => {\n const [showTooltip, setShowTooltip] = useState(false);\n return (\n
setShowTooltip(true)}\n onMouseLeave={() => setShowTooltip(false)}\n onClick={onclick} \n >\n {name}\n

{name}

\n {showTooltip &&
{name}
}\n
\n );\n};\n\n\nconst AppFolder = ({itemKey, name, openApp, data, view_type=ViewType.List, searchBar=true}) => {\n const [dataToShow, setDataToShow] = useState(data.content);\n const [currData, setCurrData] = useState(data);\n const [inputValue, setInputValue] = useState('');\n const [selectedOption, setSelectedOption] = useState('');\n const [options, setOptions] = useState([]);\n const {replaceApp} = React.useContext(AppContext);\n\n const getOptionsOnData = (data) => {\n if (data.content.length === 0) {\n return options;\n }\n let keys = new Set();\n data.content.forEach((file) => {\n if (file instanceof Directory){\n keys.add('name');\n }\n else {\n Object.keys(file.content).forEach((key) => {\n keys.add(key);\n });\n }\n });\n const opt = Array.from(keys);\n if (options.length !== opt.length){\n setOptions(opt);\n }\n return options;\n };\n\n\n const handleSelect = (value) => {\n setSelectedOption(value);\n handleInputChange({target: {value: inputValue}});\n };\n\n const handleInputChange = (value) => {\n setInputValue(value.target.value);\n const filteredData = currData.content.filter((file) => {\n if (file.name.toString().toLowerCase().includes(value.target.value.toString().toLowerCase())){ \n return true;\n }\n return Object.keys(file.content).some((key) => {\n return key === selectedOption && file.content[key].toString().toLowerCase().includes(value.target.value.toLowerCase());\n });\n });\n setDataToShow(filteredData);\n }\n\n return (\n
\n {searchBar && \n
\n \n \n \n
\n }\n
\n { dataToShow &&\n dataToShow.map((file, index) => (\n {\n if (file instanceof Directory){\n setDataToShow(file.content);\n setCurrData(file);\n replaceApp(itemKey, file.name,\n )\n }\n else {\n \n replaceApp(itemKey, file.name,\n {window.open(file.content.url? file.content.url : `${getFilesURL()}/${file.content.filename}`, \"_blank\")}\n }: null}\n onBackInfo={{\n text: STRINGS.APP_FOLDER.BACK_BUTTON,\n onclick: () => {replaceApp(itemKey, name, )}\n }}/>)\n }\n }}>\n ))\n }\n
\n
\n );\n};\n\nexport default AppFolder;","import '../../styles/view/Desktop.css';\nimport React from 'react';\nimport DesktopIcon from './DesktopIcon';\nimport AppFolder from '../apps/AppFolder';\nimport FileApp from '../apps/FileApp';\nimport { Directory } from '../../data/data';\nimport { getFilesURL } from '../../utils/utils';\nimport { AppContext } from '../../hooks/AppContext';\n\n\nfunction DesktopArea({data}) {\n\n const {addApp} = React.useContext(AppContext);\n\n const data_to_icon = (key, value) => { \n return { \n icon_type: value instanceof Directory ? 'folder' : 'file',\n name: value.name,\n onclick: () => { \n if (value instanceof Directory){\n addApp(key, \n \n )\n }\n else {\n addApp(key, {\n window.open(value.content.url ? value.className.url \n : `${getFilesURL()}/${value.content.filename}`, \"_blank\")}\n }\n : null\n }\n />)\n }\n }\n }\n }\n return(\n
\n {data && Object.keys(data).length > 0 && data.content.map((key, index) => {\n return \n})}\n
\n ) \n}\n\nexport default DesktopArea;\n\n","import { Directory, File } from \"../data/data\";\nimport {replaceLastOccurrence} from '../utils/utils';\n\n\nexport class Command {\n constructor(description) {\n this.description = description;\n }\n \n describe(){\n return this.description;\n }\n\n help(){\n return 'help: ' + this.description;\n }\n\n execute({output, args, onWindowClose, fs}) {\n const help_flags = ['-h', '--help'];\n if (args.length > 1 && args.some(arg => help_flags.includes(arg))) {\n output((prevOutput) => [...prevOutput, this.help()]);\n return true;\n }\n return false;\n }\n}\n\nexport function beautify_output(output) {\n return output.map(obj => {\n const row = Object.values(obj)\n .map(value => `${value}`)\n .join(' | ');\n return row;\n });\n}\n\nexport function transformToTableWithHeader(objects) {\n const allKeys = objects.reduce((keys, obj) => {\n return keys.concat(Object.keys(obj));\n }, []);\n const columnWidths = allKeys.reduce((widths, key) => {\n widths[key] = Math.max(...objects.map(obj => String(obj[key]).length));\n return widths;\n }, {});\n const header = allKeys.map(key => key.padEnd(columnWidths[key])).join(' | ');\n const rows = objects.map(obj => {\n return allKeys.map(key => String(obj[key]).padEnd(columnWidths[key])).join(' | ');\n });\n return [header, ...rows];\n}\n\n\nexport function retrieveObjectsAsString(objects) {\n const ret = [];\n for (const obj of objects) {\n ret.push('-----------------------')\n if (typeof obj === 'object') {\n for (const key in obj) {\n if (Array.isArray(obj[key])) {\n ret.push(`${key}: ${obj[key]}`); \n }\n else if (typeof obj[key] === 'object') {\n ret.push(`${key}: ${retrieveObjectsAsString(obj[key])}`);\n } else {\n ret.push(`${key}: ${obj[key]}`);\n }\n }\n } else {\n ret.push(obj);\n }\n } \n return ret;\n}\n\nexport function find_key(target_str, fs, match_prefix=false) {\n if (!fs) {\n return null;\n }\n \n if ((target_str.startsWith('/') || target_str.startsWith('~/')) && fs.parentDirectory) {\n return find_key(target_str, find_root(fs), match_prefix);\n }\n if (target_str.startsWith('../') && fs.parentDirectory) {\n fs = fs.parentDirectory ? fs.parentDirectory : fs;\n target_str = target_str.slice(3);\n const res = find_key(target_str, fs, match_prefix);\n return !res? res : '../' + res;\n }\n if (target_str.endsWith('/')) {\n target_str = target_str.slice(0, -1);\n }\n if (target_str.includes('/')) {\n const path = target_str.split('/')\n let currentObj = fs;\n for (const dir of path) {\n if (dir === '') {\n continue;\n }\n if (currentObj instanceof Directory) {\n currentObj = currentObj.content.find((obj) => find_id(obj).toUpperCase() === dir.toUpperCase() \n || (match_prefix && find_id(obj).toUpperCase().startsWith(dir.toUpperCase())));\n }\n else{\n currentObj = find_obj(dir, currentObj);\n }\n if (!currentObj) {\n break;\n }\n }\n return !find_id(currentObj) ? null : target_str.split(\"/\")[target_str.split(\"/\").length -1 ] !== '' ?\n replaceLastOccurrence(target_str, target_str.split(\"/\")[target_str.split(\"/\").length-1], find_id(currentObj)) : find_id(currentObj);\n }\n else {\n if (fs instanceof Directory) {\n const currentObj = fs.content.find((obj) => find_id(obj).toUpperCase() === target_str.toUpperCase()\n || (match_prefix && find_id(obj).toUpperCase().startsWith(target_str.toUpperCase())));\n return !find_id(currentObj) ? null : target_str !== '' ? find_id(currentObj) : null;\n }\n else{\n for (const key in fs) {\n if (key.toUpperCase() === target_str.toUpperCase() || (match_prefix && key.toUpperCase().startsWith(target_str.toUpperCase()))) {\n return key;\n }\n if (typeof fs[key] === 'object') {\n const result = find_key(target_str, fs[key], match_prefix);\n if (result) {\n return result;\n }\n }\n }\n }\n }\n return null;\n}\n\nexport function find_obj(target_str, fs) {\n if (target_str.startsWith('/') || target_str.startsWith('~/')) {\n fs = find_root(fs);\n target_str = target_str.startsWith('/') ? target_str.slice(1) : target_str.slice(2);\n }\n if (target_str.startsWith('../')) {\n fs = fs.parentDirectory ? fs.parentDirectory : fs;\n target_str = target_str.slice(2);\n }\n if (target_str.includes('/')) {\n const path = target_str.split('/');\n let currentObj = fs;\n for (const dir of path) {\n if (dir === '') {\n continue;\n }\n currentObj = find_obj(dir, currentObj);\n if (!currentObj) {\n break;\n }\n }\n return currentObj;\n }\n else {\n if (fs instanceof Directory) {\n if (target_str === fs.name) {\n return target_str\n }\n const currentObj = fs.content.find((obj) => find_id(obj) === target_str);\n return currentObj;\n }\n for (const key in fs) {\n if (key === target_str) {\n return fs[key];\n }\n if (typeof fs[key] === 'object') {\n const result = find_obj(target_str, fs[key]);\n if (result) {\n return result;\n }\n }\n if (find_id(fs[key]) === target_str) {\n return fs;\n }\n }\n return null;\n }\n}\n\nexport function find_id(obj) {\n if (typeof obj === 'string'){\n return obj;\n }\n if (obj instanceof Directory) {\n return obj.name;\n }\n for (const key in obj) {\n if (key === 'parentDirectory') {\n continue;\n }\n if (typeof obj[key] === 'object') {\n const result = find_id(obj[key]);\n if (result) {\n return result;\n }\n }\n if (['filename', 'id', 'uri', 'doi'].includes(key.toLowerCase())) {\n return obj[key];\n }\n }\n if (obj instanceof File) {\n return obj.name;\n }\n return null;\n}\n\nexport function find_root(fs) {\n if (!fs) {\n return null;\n }\n var target_obj = fs;\n while (target_obj.parentDirectory) {\n target_obj = target_obj.parentDirectory;\n }\n return target_obj;\n}\n\n","\nimport { File } from '../../data/data';\nimport { Command, find_obj, retrieveObjectsAsString } from '../Commands';\n\nexport class CatCommand extends Command {\n constructor(description='Concatenate files and print on the standard output') {\n super(description);\n }\n \n execute({output, args, onWindowClose, fs}) {\n const res = super.execute({output, args, onWindowClose, fs});\n if (res) {\n return res;\n }\n var new_output = [];\n for(const arg of args.slice(1)) {\n const target_obj = find_obj(arg, fs);\n if (!target_obj) {\n new_output.push(`File not found: ${arg}`);\n }\n if (target_obj instanceof File) {\n new_output = [...new_output, ...(retrieveObjectsAsString([target_obj.content]))];\n }\n }\n if (new_output.length === 0) {\n output((prevOutput) => [...prevOutput, 'File not found']);\n return;\n }\n output((prevOutput) => [...prevOutput, '', ...new_output, '']);\n }\n }","import { LsCommand } from \"./LsCommand\";\nimport { CatCommand } from \"./CatCommand\";\nimport { CdCommand } from \"./CdCommand\";\nimport { PwdCommand } from \"./PwdCommand\";\nimport { ExitCommand } from \"./ExitCommand\";\nimport { ClearCommand } from \"./ClearCommand\";\n\nexport const nixCommands = { LsCommand, CatCommand,\n CdCommand, PwdCommand, ExitCommand, ClearCommand};","import { Command, find_obj, find_id, find_root } from '../Commands';\nimport { Directory, File } from '../../data/data';\n\nexport class LsCommand extends Command {\n constructor(description='List directory content') {\n super(description);\n }\n \n execute({output, args, onWindowClose, fs}) {\n const res = super.execute({output, args, onWindowClose, fs});\n if (res) {\n return res;\n }\n var target_obj = fs;\n if (args.length > 1) {\n const target_str = args[1].trim();\n if (['/', '~'].includes(target_str)){\n target_obj = find_root(fs);\n }\n else if (target_str !== '' && target_str !== '.') {\n target_obj = find_obj(target_str, fs); \n }\n }\n if (!target_obj) {\n output((prevOutput) => [...prevOutput, 'Directory not found']);\n return;\n }\n if (target_obj instanceof File) {\n output((prevOutput) => [...prevOutput, 'This is a file']);\n return;\n }\n if (target_obj instanceof Directory) {\n const result = target_obj.content.map((item) => find_id(item));\n output((prevOutput) => [...prevOutput, ...result]);\n return;\n }\n }\n }\n ","import { Directory } from '../../data/data';\nimport { Command, find_obj, find_key, find_root } from '../Commands';\n\n\n\nexport class CdCommand extends Command {\n constructor(description='Change directory') {\n super(description);\n }\n \n execute({output, args, onWindowClose, fs, updateFs, rootFs}) {\n const res = super.execute({output, args, onWindowClose, fs});\n if (res) {\n return res;\n }\n if (args.length < 2 ) {\n output((prevOutput) => [...prevOutput, 'cd: missing operand']);\n return;\n }\n if (args[1] === '.' || args[1] === './') {\n return;\n }\n if (args[1] === '/' || args[1] === '~') {\n updateFs(find_root(fs), '~');\n return;\n }\n\n if (args[1] === '../' || args[1] === '..') {\n const parent = fs.parentDirectory ? fs.parentDirectory : fs;\n updateFs(parent, parent.name === 'root' ? '~' : parent.name);\n return;\n }\n const target_str = args[1].trim();\n const target_key = find_key(target_str, fs);\n if (!target_key) {\n output((prevOutput) => [...prevOutput, `cd: ${target_str}: No such file or directory`]);\n return;\n }\n const target_obj = find_obj(target_key, fs);\n if (!target_obj || !(target_obj instanceof Directory)) {\n output((prevOutput) => [...prevOutput, `cd: ${target_str}: Not a directory`]);\n return;\n }\n updateFs(target_obj, args[1]);\n }\n }\n \n ","import { Command } from '../Commands';\n\n\nexport class PwdCommand extends Command {\n constructor(description='Print name of current/working directory') {\n super(description);\n }\n \n execute({output, args, onWindowClose, fs}) {\n const res = super.execute({output, args, onWindowClose, fs});\n if (res) {\n return res;\n }\n const outputStr = [fs.name === 'root' ? '~' : fs.name];\n var currentDir = fs;\n while (currentDir.parentDirectory) {\n currentDir = currentDir.parentDirectory;\n outputStr.push(currentDir.name === 'root' ? '~' : currentDir.name);\n \n }\n outputStr.reverse();\n output((prevOutput) => [...prevOutput, outputStr.join('/')]);\n }\n }\n ","import { Command } from '../Commands';\n\n\nexport class ExitCommand extends Command {\n constructor(description='Exit the terminal') {\n super(description);\n }\n \n execute({output, args, onWindowClose, fs, itemKey}) {\n output((prevOutput) => [...prevOutput, 'Goodbye!']);\n setTimeout(() => {\n onWindowClose(null, itemKey);\n }, 500);\n }\n }\n","import { Command } from '../Commands';\n\nexport class ClearCommand extends Command {\n constructor(description='Clear the terminal') {\n super(description);\n }\n\n execute({output, args, onWindowClose, fs}) {\n output([]);\n }\n}","import { Command } from './Commands';\nimport { CatCommand } from './NixCommands/CatCommand';\n\n\nexport class SocialsCommand extends Command {\n constructor(description='Print socials') {\n super(description);\n }\n \n execute({output, args, onWindowClose, fs}) {\n const res = super.execute({output, args, onWindowClose, fs});\n if (res) {\n return res;\n }\n new CatCommand().execute({output, args: ['cat', '~/socials'], onWindowClose, fs});\n }\n \n}","import '../../styles/view/Terminal.css';\nimport React, { useState, useEffect, useRef } from 'react';\nimport { find_key } from '../../terminal_commands/Commands';\nimport { nixCommands } from '../../terminal_commands/NixCommands';\nimport {replaceLastOccurrence} from '../../utils/utils';\nimport { SocialsCommand } from '../../terminal_commands/CustomCommands';\nimport { STRINGS } from '../../constants/strings';\n\n\nconst buildWelcomeString = (dirname) => {\n return STRINGS.TERMINAL.PROMP_STRING_PREFIX + dirname + \"$ \"\n}\n\nfunction TerminalApp({itemKey, inputRef, onWindowClose, fs }) {\n const [currDir, setcurrDir] = useState('~');\n const [promptString, setPromptString] = useState(buildWelcomeString(currDir));\n const [input, setInput] = useState('');\n const [data, setData] = useState(fs);\n const [output, setOutput] = useState([STRINGS.TERMINAL.WELCOME_MESSAGE]);\n const outputRef = useRef(null);\n const [command_history, setCommandHistory] = useState([]);\n const [command_history_index, setCommandHistoryIndex] = useState(-1);\n const [cursorPosition, setCursorPosition] = useState(0);\n const commands = {\n help: STRINGS.TERMINAL.HELP_COMMAND,\n history: STRINGS.TERMINAL.HISTORY_COMMAND,\n clear: new nixCommands.ClearCommand(),\n exit: new nixCommands.ExitCommand(),\n ls: new nixCommands.LsCommand(),\n cat: new nixCommands.CatCommand(),\n cd : new nixCommands.CdCommand(),\n pwd: new nixCommands.PwdCommand(),\n socials : new SocialsCommand(),\n };\n \n const updateData = (newData, currDirName) => {\n setData(newData);\n const currDir = currDirName ? currDirName : '~ ';\n setcurrDir(currDir);\n setPromptString(buildWelcomeString(currDir));\n };\n\n const updateCursorPosition = () => {\n if (inputRef.current) {\n setCursorPosition(inputRef.current.selectionStart);\n }\n };\n\n const handleInputChange = (e) => {\n setInput(e.target.value);\n };\n\n const handleInputSubmit = (e) => {\n if (e.key === 'Enter') {\n setOutput((prevOutput) => [...prevOutput, `> ${input}`]);\n processCommand(input);\n setInput('');\n setCommandHistory((prevHistory) => [...prevHistory, input]);\n setCommandHistoryIndex(-1); // Reset index\n \n } else if (e.key === 'Tab') {\n e.preventDefault();\n var matchingCandidate = Object.keys(commands).find((c) =>\n c.startsWith(input.split(' ')[input.split(' ').length - 1])\n );\n if (!matchingCandidate) {\n const str_to_complete = input.slice(0, cursorPosition).split(' ')[input.slice(0, cursorPosition).split(' ').length - 1];\n const candidate = find_key(str_to_complete, data, true);\n if (!candidate){\n return;\n }\n const completedInput = replaceLastOccurrence(input.slice(0, cursorPosition),str_to_complete, candidate);\n const remainingInput = input.slice(cursorPosition+1);\n const modifiedInput = completedInput + remainingInput;\n setInput(modifiedInput);\n }\n if (matchingCandidate) {\n setInput(input.replace(input.split(' ')[input.split(' ').length - 1], matchingCandidate));\n }\n } else if (e.key === 'ArrowUp') {\n e.preventDefault();\n if (command_history_index > 0) {\n setCommandHistoryIndex((prevIndex) => Math.max(0, prevIndex - 1));\n setInput(command_history[Math.max(0, command_history_index - 1)]);\n } else if (command_history_index === -1 && command_history.length > 0) {\n setCommandHistoryIndex(command_history.length - 1);\n setInput(command_history[command_history.length - 1]);\n }\n } else if (e.key === 'ArrowDown') {\n e.preventDefault();\n if (command_history_index < command_history.length - 1 && command_history_index !== -1) {\n setCommandHistoryIndex((prevIndex) => Math.min(command_history.length - 1, prevIndex + 1));\n setInput(command_history[Math.min(command_history.length - 1, command_history_index + 1)]);\n } else if (command_history_index === command_history.length - 1) {\n setCommandHistoryIndex(-1);\n setInput('');\n }\n }\n };\n\n useEffect(() => {\n if (outputRef.current) {\n outputRef.current.scrollTop = outputRef.current.scrollHeight;\n }\n }, [input]);\n\n const processCommand = (command) => {\n const args = command.trim().split(' ')\n const called_cmd = args[0];\n if (called_cmd === 'help') {\n setOutput((prevOutput) => [\n ...prevOutput,\n '',\n 'Available commands:',\n '',\n ...Object.keys(commands).map((cmd) => `${cmd}: ` + ((commands[cmd] && typeof commands[cmd] !== 'string') ? commands[cmd].describe(): commands[cmd])),\n ]);\n } else if (called_cmd === 'history') {\n setOutput((prevOutput) => [\n ...prevOutput,\n '',\n 'Command history:',\n '',\n ...command_history.map((cmd) => cmd),\n ''\n ]);\n } else if (commands[called_cmd]) {\n commands[called_cmd].execute({output: setOutput, args: args, onWindowClose: onWindowClose, itemKey: itemKey,\n fs: data, updateFs: updateData, rootFs: fs, currDir: currDir});\n } else {\n setOutput((prevOutput) => [\n ...prevOutput,\n `Unknown command: ${command.split(' ')[0]}`,\n ]);\n }\n };\n\n const handleMouseDown = (event) => {\n event.stopPropagation(); // Prevent the drag event from being triggered\n };\n\n return (\n
\n
\n {output.map((line, index) => (\n
\n {line || <> }\n
\n ))}\n
\n
\n
{promptString}
\n \n
\n
\n );\n}\n\nexport default TerminalApp;\n","import React from 'react';\nimport '../../styles/view/OpenWindowsSpace.css';\n\n\nconst OpenWindowsSpace = ({ children }) => {\n return (\n
\n {children}\n
\n );\n};\n\nexport default OpenWindowsSpace;","import React from 'react';\nimport '../../styles/view/Settings.css';\nimport { STRINGS } from '../../constants/strings.js';\nimport { AppContext } from '../../hooks/AppContext';\nimport Listbox from '../misc/Listbox.js';\nimport { OSFeel } from '../../constants/enums.js';\n\nfunction SettingsApp({onSuspend, onShutdown}) {\n\n const {theme, feel, isOnline, onChangeFeel, toggleTheme} = React.useContext(AppContext);\n\n const handleShutdown = (e) => {\n onShutdown(e);\n };\n\n const handleSuspend = (e) => {\n onSuspend(e);\n };\n\n const osOptions = () => {\n let keys = new Set();\n for (let option in OSFeel) {\n keys.add(option);\n }\n keys.add(feel.name);\n return Array.from(keys);\n };\n\n return (\n
\n
\n
\n \"user\n

{STRINGS.SETTINGS.DEFAULT_USERNAME}

\n
\n
\n

{STRINGS.SETTINGS.STATUS}:

\n

{isOnline ? STRINGS.SETTINGS.ONLINE : STRINGS.SETTINGS.OFFLINE}

\n
\n
\n
\n
\n
\n {STRINGS.SETTINGS.OS_FEEL}\n {onChangeFeel(value)}}\n default_text={feel.name}\n />\n
\n
\n {STRINGS.SETTINGS.DARK_MODE}\n \n
\n
\n {STRINGS.SETTINGS.SHUTDOWN}\n \n
\n
\n {STRINGS.SETTINGS.SUSPEND}\n \n
\n
\n
\n \n );\n }\n \n export default SettingsApp;","import React from 'react';\nimport './styles/App.css';\nimport Dock from './view/dock/Dock';\nimport DesktopArea from './view/desktopArea/DesktopArea.js';\nimport TerminalApp from './view/apps/TerminalApp.js';\nimport OpenWindowsSpace from './view/desktopArea/OpenWindowsSpace.js';\n\nimport SettingsApp from './view/apps/SettingsApp.js';\nimport { STRINGS } from './constants/strings.js';\nimport { AppContext } from './hooks/AppContext';\n\n\nconst SuspendedScreen = ({onLogin}) => {\n return (\n
\n \"user\n

{STRINGS.SUSPENDED_SCREEN.WELCOME_MESSAGE}

\n \n
\n )\n}\n\nconst Octocat = () => {\n return (\n \n \"GitHub\n );\n}\n\n\nfunction App() {\n const {state, addApp, onShutdown, onSuspend, setSuspend} = React.useContext(AppContext);\n\n var defaultIcons = [\n { src: require('./assets/terminal-icon.png'),\n alt: 'Terminal',\n onclick: () => {\n addApp('Terminal', )\n }\n },\n { src: require('./assets/settings-icon.png'),\n alt: 'Settings',\n onclick: () => addApp('Settings',\n \n )\n },\n { src: require('./assets/pdf-icon.png'), alt: 'CV (pdf)',\n onclick: () => window.open(STRINGS.DOCK.CV_LINK) \n },\n { \n src: require('./assets/academic-icon.png'),\n alt: 'Personal Website',\n onclick: () => window.open(STRINGS.DOCK.PERSONAL_WEBSITE_LINK) \n },\n { src: require('./assets/linktree-icon.png'),\n alt: 'Linktree (Other Links)',\n onclick: () => window.open(STRINGS.DOCK.LINKTREE_LINK)\n },\n ];\n\n return ( \n state.suspended ? \n (
\n setSuspend(false)} />\n
)\n : (
\n \n \n {state.windowApps}\n \n \n \n
\n )\n );\n}\nexport default App;\n","// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://cra.link/PWA\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.0/8 are considered localhost for IPv4.\n window.location.hostname.match(/^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/)\n);\n\nexport function register(config) {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n 'This web app is being served cache-first by a service ' +\n 'worker. To learn more, visit https://cra.link/PWA'\n );\n });\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl, config) {\n navigator.serviceWorker\n .register(swUrl)\n .then((registration) => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n if (installingWorker == null) {\n return;\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n 'New content is available and will be used when all ' +\n 'tabs for this page are closed. See https://cra.link/PWA.'\n );\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration);\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log('Content is cached for offline use.');\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch((error) => {\n console.error('Error during service worker registration:', error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl, config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl, {\n headers: { 'Service-Worker': 'script' },\n })\n .then((response) => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get('content-type');\n if (\n response.status === 404 ||\n (contentType != null && contentType.indexOf('javascript') === -1)\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then((registration) => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config);\n }\n })\n .catch(() => {\n console.log('No internet connection found. App is running in offline mode.');\n });\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready\n .then((registration) => {\n registration.unregister();\n })\n .catch((error) => {\n console.error(error.message);\n });\n }\n}\n","import React from 'react';\nimport ReactDOM from 'react-dom/client';\nimport './styles/index.css';\nimport App from './App';\nimport { AppProvider } from './hooks/AppContext';\nimport * as serviceWorkerRegistration from './serviceWorkerRegistration';\n//import reportWebVitals from './reportWebVitals';\n\nconst root = ReactDOM.createRoot(document.getElementById('root'));\nroot.render(\n \n \n \n \n \n);\n\n// If you want your app to work offline and load faster, you can change\n// unregister() to register() below. Note this comes with some pitfalls.\n// Learn more about service workers: https://cra.link/PWA\nserviceWorkerRegistration.unregister();\n\n// If you want to start measuring performance in your app, pass a function\n// to log results (for example: reportWebVitals(console.log))\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\n//reportWebVitals();\n"],"names":["r","e","t","f","n","Array","isArray","length","clsx","arguments","hasOwn","Object","prototype","hasOwnProperty","toStr","toString","defineProperty","gOPD","getOwnPropertyDescriptor","arr","call","isPlainObject","obj","key","hasOwnConstructor","hasIsPrototypeOf","constructor","setProperty","target","options","name","enumerable","configurable","value","newValue","writable","getProperty","module","exports","extend","src","copy","copyIsArray","clone","i","deep","COMMENT_REGEX","NEWLINE_REGEX","WHITESPACE_REGEX","PROPERTY_REGEX","COLON_REGEX","VALUE_REGEX","SEMICOLON_REGEX","TRIM_REGEX","EMPTY_STRING","trim","str","replace","style","TypeError","lineno","column","updatePosition","lines","match","lastIndexOf","position","start","line","node","Position","whitespace","this","end","source","content","errorsList","error","msg","err","Error","reason","filename","silent","push","re","m","exec","slice","comments","rules","c","comment","pos","charAt","type","declaration","prop","val","ret","property","decl","decls","declarations","ReactPropTypesSecret","require","emptyFunction","emptyFunctionWithReset","resetWarningCache","shim","props","propName","componentName","location","propFullName","secret","getShim","isRequired","ReactPropTypes","array","bigint","bool","func","number","object","string","symbol","any","arrayOf","element","elementType","instanceOf","objectOf","oneOf","oneOfType","shape","exact","checkPropTypes","PropTypes","aa","ca","p","a","b","encodeURIComponent","da","Set","ea","fa","ha","add","ia","window","document","createElement","ja","ka","la","ma","v","d","g","acceptsBooleans","attributeName","attributeNamespace","mustUseProperty","propertyName","sanitizeURL","removeEmptyString","z","split","forEach","toLowerCase","ra","sa","toUpperCase","ta","pa","isNaN","qa","test","oa","removeAttribute","setAttribute","setAttributeNS","xlinkHref","ua","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","va","Symbol","for","wa","ya","za","Aa","Ba","Ca","Da","Ea","Fa","Ga","Ha","Ia","Ja","iterator","Ka","La","A","assign","Ma","stack","Na","Oa","prepareStackTrace","set","Reflect","construct","l","h","k","displayName","includes","Pa","tag","render","Qa","$$typeof","_context","_payload","_init","Ra","Sa","Ta","nodeName","Va","_valueTracker","get","getValue","setValue","stopTracking","Ua","Wa","checked","Xa","activeElement","body","Ya","defaultChecked","defaultValue","_wrapperState","initialChecked","Za","initialValue","controlled","ab","bb","cb","db","ownerDocument","eb","fb","selected","defaultSelected","disabled","gb","dangerouslySetInnerHTML","children","hb","ib","jb","textContent","kb","lb","mb","nb","namespaceURI","innerHTML","valueOf","firstChild","removeChild","appendChild","MSApp","execUnsafeLocalFunction","ob","lastChild","nodeType","nodeValue","pb","animationIterationCount","aspectRatio","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","columns","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridArea","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","fontWeight","lineClamp","lineHeight","opacity","order","orphans","tabSize","widows","zIndex","zoom","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","strokeWidth","qb","rb","sb","indexOf","keys","substring","tb","menuitem","area","base","br","col","embed","hr","img","input","keygen","link","meta","param","track","wbr","ub","vb","is","wb","xb","srcElement","correspondingUseElement","parentNode","yb","zb","Ab","Bb","Cb","stateNode","Db","Eb","Fb","Gb","Hb","Ib","Jb","Kb","Lb","Mb","addEventListener","removeEventListener","Nb","apply","onError","Ob","Pb","Qb","Rb","Sb","Tb","Vb","alternate","return","flags","Wb","memoizedState","dehydrated","Xb","Zb","child","sibling","current","Yb","$b","ac","unstable_scheduleCallback","bc","unstable_cancelCallback","cc","unstable_shouldYield","dc","unstable_requestPaint","B","unstable_now","ec","unstable_getCurrentPriorityLevel","fc","unstable_ImmediatePriority","gc","unstable_UserBlockingPriority","hc","unstable_NormalPriority","ic","unstable_LowPriority","jc","unstable_IdlePriority","kc","lc","oc","Math","clz32","pc","qc","log","LN2","rc","sc","tc","uc","pendingLanes","suspendedLanes","pingedLanes","entangledLanes","entanglements","vc","xc","yc","zc","Ac","eventTimes","Cc","C","Dc","Ec","Fc","Gc","Hc","Ic","Jc","Kc","Lc","Mc","Nc","Oc","Map","Pc","Qc","Rc","Sc","delete","pointerId","Tc","nativeEvent","blockedOn","domEventName","eventSystemFlags","targetContainers","Vc","Wc","priority","isDehydrated","containerInfo","Xc","Yc","dispatchEvent","shift","Zc","$c","ad","bd","cd","ReactCurrentBatchConfig","dd","ed","transition","fd","gd","hd","id","Uc","stopPropagation","jd","kd","ld","md","nd","od","keyCode","charCode","pd","qd","rd","_reactName","_targetInst","currentTarget","isDefaultPrevented","defaultPrevented","returnValue","isPropagationStopped","preventDefault","cancelBubble","persist","isPersistent","wd","xd","yd","sd","eventPhase","bubbles","cancelable","timeStamp","Date","now","isTrusted","td","ud","view","detail","vd","Ad","screenX","screenY","clientX","clientY","pageX","pageY","ctrlKey","shiftKey","altKey","metaKey","getModifierState","zd","button","buttons","relatedTarget","fromElement","toElement","movementX","movementY","Bd","Dd","dataTransfer","Fd","Hd","animationName","elapsedTime","pseudoElement","Id","clipboardData","Jd","Ld","data","Md","Esc","Spacebar","Left","Up","Right","Down","Del","Win","Menu","Apps","Scroll","MozPrintableKey","Nd","Od","Alt","Control","Meta","Shift","Pd","Qd","String","fromCharCode","code","repeat","locale","which","Rd","Td","width","height","pressure","tangentialPressure","tiltX","tiltY","twist","pointerType","isPrimary","Vd","touches","targetTouches","changedTouches","Xd","Yd","deltaX","wheelDeltaX","deltaY","wheelDeltaY","wheelDelta","deltaZ","deltaMode","Zd","$d","ae","be","documentMode","ce","de","ee","fe","ge","he","ie","le","color","date","datetime","email","month","password","range","search","tel","text","time","url","week","me","ne","oe","event","listeners","pe","qe","se","te","ue","ve","we","xe","ye","ze","oninput","Ae","detachEvent","Be","Ce","attachEvent","De","Ee","Fe","He","Ie","Je","Ke","offset","nextSibling","Le","contains","compareDocumentPosition","Me","HTMLIFrameElement","contentWindow","href","Ne","contentEditable","Oe","focusedElem","selectionRange","documentElement","selectionStart","selectionEnd","min","defaultView","getSelection","rangeCount","anchorNode","anchorOffset","focusNode","focusOffset","createRange","setStart","removeAllRanges","addRange","setEnd","left","scrollLeft","top","scrollTop","focus","Pe","Qe","Re","Se","Te","Ue","Ve","We","animationend","animationiteration","animationstart","transitionend","Xe","Ye","Ze","animation","$e","af","bf","cf","df","ef","ff","gf","hf","lf","mf","concat","nf","Ub","instance","listener","D","of","has","pf","qf","rf","random","sf","bind","capture","passive","J","x","u","w","F","tf","uf","parentWindow","vf","wf","na","xa","$a","ba","je","char","ke","unshift","xf","yf","zf","Af","Bf","Cf","Df","Ef","__html","Ff","setTimeout","Gf","clearTimeout","Hf","Promise","Jf","queueMicrotask","resolve","then","catch","If","Kf","Lf","Mf","previousSibling","Nf","Of","Pf","Qf","Rf","Sf","Tf","Uf","E","G","Vf","H","Wf","Xf","Yf","contextTypes","__reactInternalMemoizedUnmaskedChildContext","__reactInternalMemoizedMaskedChildContext","Zf","childContextTypes","$f","ag","bg","getChildContext","cg","__reactInternalMemoizedMergedChildContext","dg","eg","fg","gg","hg","jg","kg","lg","mg","ng","og","pg","qg","rg","sg","tg","ug","vg","wg","xg","yg","I","zg","Ag","Bg","deletions","Cg","pendingProps","overflow","treeContext","retryLane","Dg","mode","Eg","Fg","Gg","memoizedProps","Hg","Ig","Jg","Kg","Lg","ref","_owner","_stringRef","refs","Mg","join","Ng","Og","index","Pg","Qg","Rg","implementation","Sg","Tg","q","y","next","done","Ug","Vg","Wg","Xg","Yg","Zg","$g","ah","_currentValue","bh","childLanes","ch","dependencies","firstContext","lanes","dh","eh","context","memoizedValue","fh","gh","hh","interleaved","ih","jh","kh","updateQueue","baseState","firstBaseUpdate","lastBaseUpdate","shared","pending","effects","lh","mh","eventTime","lane","payload","callback","nh","K","oh","ph","qh","rh","sh","th","uh","vh","wh","xh","yh","tagName","zh","Ah","Bh","L","Ch","revealOrder","Dh","Eh","_workInProgressVersionPrimary","Fh","ReactCurrentDispatcher","Gh","Hh","M","N","O","Ih","Jh","Kh","Lh","P","Mh","Nh","Oh","Ph","Qh","Rh","Sh","Th","baseQueue","queue","Uh","Vh","Wh","lastRenderedReducer","action","hasEagerState","eagerState","lastRenderedState","dispatch","Xh","Yh","Zh","$h","ai","getSnapshot","bi","ci","Q","di","lastEffect","stores","ei","fi","gi","hi","ii","create","destroy","deps","ji","ki","li","mi","ni","oi","pi","qi","ri","si","ti","ui","vi","wi","xi","yi","zi","Ai","R","Bi","readContext","useCallback","useContext","useEffect","useImperativeHandle","useInsertionEffect","useLayoutEffect","useMemo","useReducer","useRef","useState","useDebugValue","useDeferredValue","useTransition","useMutableSource","useSyncExternalStore","useId","unstable_isNewReconciler","identifierPrefix","Ci","defaultProps","Di","Ei","isMounted","_reactInternals","enqueueSetState","enqueueReplaceState","enqueueForceUpdate","Fi","shouldComponentUpdate","isPureReactComponent","Gi","contextType","state","updater","Hi","componentWillReceiveProps","UNSAFE_componentWillReceiveProps","Ii","getDerivedStateFromProps","getSnapshotBeforeUpdate","UNSAFE_componentWillMount","componentWillMount","componentDidMount","Ji","message","digest","Ki","Li","console","Mi","WeakMap","Ni","Oi","Pi","Qi","getDerivedStateFromError","componentDidCatch","Ri","componentStack","Si","pingCache","Ti","Ui","Vi","Wi","ReactCurrentOwner","Xi","Yi","Zi","$i","aj","compare","bj","cj","dj","baseLanes","cachePool","transitions","ej","fj","gj","hj","ij","UNSAFE_componentWillUpdate","componentWillUpdate","componentDidUpdate","jj","kj","pendingContext","lj","zj","Aj","Bj","Cj","mj","nj","oj","fallback","pj","qj","sj","dataset","dgst","tj","uj","_reactRetry","rj","subtreeFlags","vj","wj","isBackwards","rendering","renderingStartTime","last","tail","tailMode","xj","Dj","S","Ej","Fj","wasMultiple","multiple","suppressHydrationWarning","onClick","onclick","size","createElementNS","autoFocus","createTextNode","T","Gj","Hj","Ij","Jj","U","Kj","WeakSet","V","Lj","W","Mj","Nj","Pj","Qj","Rj","Sj","Tj","Uj","Vj","insertBefore","_reactRootContainer","Wj","X","Xj","Yj","Zj","onCommitFiberUnmount","componentWillUnmount","ak","bk","ck","dk","ek","isHidden","fk","gk","display","hk","ik","jk","kk","__reactInternalSnapshotBeforeUpdate","Vk","lk","ceil","mk","nk","ok","Y","Z","pk","qk","rk","sk","tk","Infinity","uk","vk","wk","xk","yk","zk","Ak","Bk","Ck","Dk","callbackNode","expirationTimes","expiredLanes","wc","callbackPriority","ig","Ek","Fk","Gk","Hk","Ik","Jk","Kk","Lk","Mk","Nk","Ok","finishedWork","finishedLanes","Pk","timeoutHandle","Qk","Rk","Sk","Tk","Uk","mutableReadLanes","Bc","Oj","onCommitFiberRoot","mc","onRecoverableError","Wk","onPostCommitFiberRoot","Xk","Yk","$k","isReactComponent","pendingChildren","al","mutableSourceEagerHydrationData","bl","cache","pendingSuspenseBoundaries","dl","el","fl","gl","hl","il","yj","Zk","kl","reportError","ll","_internalRoot","ml","nl","ol","pl","rl","ql","unmount","unstable_scheduleHydration","splice","querySelectorAll","JSON","stringify","form","sl","usingClientEntryPoint","Events","tl","findFiberByHostInstance","bundleType","version","rendererPackageName","ul","rendererConfig","overrideHookState","overrideHookStateDeletePath","overrideHookStateRenamePath","overrideProps","overridePropsDeletePath","overridePropsRenamePath","setErrorHandler","setSuspenseHandler","scheduleUpdate","currentDispatcherRef","findHostInstanceByFiber","findHostInstancesForRefresh","scheduleRefresh","scheduleRoot","setRefreshHandler","getCurrentFiber","reconcilerVersion","__REACT_DEVTOOLS_GLOBAL_HOOK__","vl","isDisabled","supportsFiber","inject","createPortal","cl","createRoot","unstable_strictMode","findDOMNode","flushSync","hydrate","hydrateRoot","hydratedSources","_getVersion","_source","unmountComponentAtNode","unstable_batchedUpdates","unstable_renderSubtreeIntoContainer","checkDCE","_DraggableCore","default","React","nodeInterop","__esModule","_getRequireWildcardCache","newObj","hasPropertyDescriptor","desc","_interopRequireWildcard","_propTypes","_interopRequireDefault","_reactDom","_clsx","_domFns","_positionFns","_shims","_log","cacheBabelInterop","cacheNodeInterop","_extends","_defineProperty","arg","hint","prim","toPrimitive","undefined","res","Number","_toPrimitive","_toPropertyKey","Draggable","Component","_ref","_ref2","prevPropsPosition","super","coreData","onStart","createDraggableData","setState","dragging","dragged","uiData","newState","slackX","slackY","bounds","newStateX","newStateY","getBoundPosition","onDrag","onStop","Boolean","defaultPosition","isElementSVG","warn","SVGElement","_this$props$nodeRef$c","_this$props","nodeRef","axis","defaultClassName","defaultClassNameDragging","defaultClassNameDragged","positionOffset","scale","draggableCoreProps","svgTransform","draggable","validPosition","transformOpts","canDragX","canDragY","createSVGTransform","createCSSTransform","className","onDragStart","onDragStop","cloneElement","Children","only","transform","propTypes","right","bottom","dontSetMe","eventsFor","move","stop","dragEventFor","DraggableCore","NaN","onMouseDown","allowAnyClick","thisNode","Node","handle","matchesSelectorAndParentsTo","cancel","touchIdentifier","getTouchIdentifier","getControlPosition","coreEvent","createCoreData","mounted","enableUserSelectHack","addUserSelectStyles","lastX","lastY","addEvent","handleDrag","handleDragStop","grid","snapToGrid","MouseEvent","createEvent","initMouseEvent","removeUserSelectStyles","removeEvent","handleDragStart","onTouchStart","_this$props2","onMouseUp","onTouchEnd","offsetParent","addClassName","handler","inputOptions","doc","styleEl","getElementById","getElementsByTagName","controlPos","translation","getTranslation","_getPrefix","browserPrefixToKey","getTouch","identifier","findInArray","innerHeight","clientHeight","computedStyle","getComputedStyle","int","paddingTop","paddingBottom","innerWidth","clientWidth","paddingLeft","paddingRight","matchesSelector","selector","baseNode","offsetXYFromParent","evt","offsetParentRect","getBoundingClientRect","outerHeight","borderTopWidth","borderBottomWidth","outerWidth","borderLeftWidth","borderRightWidth","removeClassName","selection","empty","matchesSelectorFunc","method","isFunction","unitSuffix","defaultX","defaultY","classList","RegExp","remove","browserPrefixToStyle","prefix","getPrefix","prefixes","_window$document","out","shouldCapitalize","kebabToTitleCase","isStart","isNum","cloneBounds","ownerWindow","boundNode","querySelector","HTMLElement","boundNodeEl","nodeStyle","boundNodeStyle","offsetLeft","marginLeft","offsetTop","marginTop","marginRight","marginBottom","max","draggableCore","touchObj","pendingX","pendingY","round","parseInt","num","_reactDraggable","_utils","_excluded","ownKeys","enumerableOnly","getOwnPropertySymbols","symbols","filter","sym","_objectSpread","getOwnPropertyDescriptors","defineProperties","_setPrototypeOf","o","setPrototypeOf","__proto__","Resizable","_React$Component","subClass","superClass","_this","_len","args","_key","handleRefs","lastHandleRect","slack","_proto","resetData","runConstraints","minConstraints","maxConstraints","lockAspectRatio","ratio","deltaW","deltaH","abs","oldW","oldH","slackW","slackH","resizeHandler","handlerName","_this2","axisV","axisH","handleRect","transformScale","_this2$runConstraints","dimensionsChanged","renderResizeHandle","handleAxis","_this3","draggableOpts","resizeHandles","handleSize","onResize","onResizeStop","onResizeStart","excluded","sourceKeys","_objectWithoutPropertiesLoose","map","_this3$handleRefs$han","createRef","resizableProps","_Resizable","_propTypes2","ResizableBox","propsWidth","propsHeight","_PropTypes$number","_len2","_key2","_PropTypes$number2","_react","__self","__source","Fragment","jsx","jsxs","forceUpdate","escape","_status","_result","count","toArray","Profiler","PureComponent","StrictMode","Suspense","act","createContext","_currentValue2","_threadCount","Provider","Consumer","_defaultValue","_globalName","createFactory","forwardRef","isValidElement","lazy","memo","startTransition","unstable_act","pop","sortIndex","performance","setImmediate","startTime","expirationTime","priorityLevel","navigator","scheduling","isInputPending","MessageChannel","port2","port1","onmessage","postMessage","unstable_Profiling","unstable_continueExecution","unstable_forceFrameRate","floor","unstable_getFirstCallbackNode","unstable_next","unstable_pauseExecution","unstable_runWithPriority","delay","unstable_wrapCallback","inline_style_parser_1","__importDefault","styleObject","hasIterator","webpackContext","req","webpackContextResolve","__webpack_require__","__webpack_module_cache__","moduleId","cachedModule","__webpack_modules__","getter","definition","toStringTag","icon","showTooltip","setShowTooltip","_jsxs","onMouseEnter","onMouseLeave","_jsx","alt","itemKey","title","onWindowClose","isMinimized","setIsMinimized","isMaximized","setIsMaximized","contentRef","setSize","prev_size","prev_setSize","inputRef","feel","windowFactory","AppContext","offsetWidth","offsetHeight","toggleMinimize","toggleMaximize","ChildrenWithProps","onCloseWindow","getCorners","isMacOs","border","handleContainerClick","createAppBar","onClose","onMinimize","onMaximize","Directory","parentDirectory","addContent","item","File","getFilePath","filepath","loadData","dirname","dir","inferName","publications","certifications","skillsDir","skills","software","teachingDir","teaching","scientificDir","scientific_activities","hobbies","socials","contributing","loadAppData","useNetworkStatus","isOnline","setIsOnline","onLine","updateNetworkStatus","OSFeel","MacOs","isWindows","Windows","isUbuntu","Ubuntu","_OSFeel","AppTheme","isDark","Dark","isLight","Light","_AppTheme","useTheme","theme","setTheme","localStorage","getItem","setItem","toggleTheme","prevTheme","iconImgFromType","icon_type","os_type","replaceLastOccurrence","originalStr","searchStr","replaceStr","lastIndex","MacOsAppBar","UbuntuAppBar","WindowsAppBar","_ref3","file_type","WindowsFactory","createDock","AppWindow","MacOSFactory","UbuntuFactory","useOsFeel","setFeel","new_feel","initialState","fs","windowApps","suspended","openWindowCount","reducer","newApp","popApp","app","windowKey","replacedApp","updatedApps","remainingApps","AppProvider","toggleFeel","_","setSuspend","onChangeFeel","setFS","addApp","onShutdown","onSuspend","replaceApp","icons","feel_style","DockIcon","handleClick","STRINGS","SEARCH_PLACEHOLDER","BACK_BUTTON","SELECT_TEXT","OPEN_BUTTON","PROMP_STRING_PREFIX","WELCOME_MESSAGE","HELP_COMMAND","HISTORY_COMMAND","DARK_MODE","SHUTDOWN","SUSPEND","STATUS","ONLINE","OFFLINE","OS_FEEL","DEFAULT_USERNAME","LOGIN_BUTTON","CV_LINK","LINKTREE_LINK","PERSONAL_WEBSITE_LINK","nameRe","nameReJsx","emptyOptions","Schema","normal","space","merge","definitions","normalize","Info","attribute","boolean","booleanish","overloadedBoolean","commaSeparated","spaceSeparated","commaOrSpaceSeparated","defined","powers","increment","checks","types","DefinedInfo","mask","mark","check","values","own","properties","info","attributes","xlink","xLinkActuate","xLinkArcRole","xLinkHref","xLinkRole","xLinkShow","xLinkTitle","xLinkType","xml","xmlLang","xmlBase","xmlSpace","caseSensitiveTransform","caseInsensitiveTransform","xmlns","xmlnsxlink","xmlnsXLink","aria","ariaActiveDescendant","ariaAtomic","ariaAutoComplete","ariaBusy","ariaChecked","ariaColCount","ariaColIndex","ariaColSpan","ariaControls","ariaCurrent","ariaDescribedBy","ariaDetails","ariaDisabled","ariaDropEffect","ariaErrorMessage","ariaExpanded","ariaFlowTo","ariaGrabbed","ariaHasPopup","ariaHidden","ariaInvalid","ariaKeyShortcuts","ariaLabel","ariaLabelledBy","ariaLevel","ariaLive","ariaModal","ariaMultiLine","ariaMultiSelectable","ariaOrientation","ariaOwns","ariaPlaceholder","ariaPosInSet","ariaPressed","ariaReadOnly","ariaRelevant","ariaRequired","ariaRoleDescription","ariaRowCount","ariaRowIndex","ariaRowSpan","ariaSelected","ariaSetSize","ariaSort","ariaValueMax","ariaValueMin","ariaValueNow","ariaValueText","role","html","acceptcharset","classname","htmlfor","httpequiv","abbr","accept","acceptCharset","accessKey","allow","allowFullScreen","allowPaymentRequest","allowUserMedia","as","async","autoCapitalize","autoComplete","autoPlay","blocking","charSet","cite","cols","colSpan","controls","controlsList","coords","crossOrigin","dateTime","decoding","defer","dirName","download","encType","enterKeyHint","fetchPriority","formAction","formEncType","formMethod","formNoValidate","formTarget","headers","hidden","high","hrefLang","htmlFor","httpEquiv","imageSizes","imageSrcSet","inert","inputMode","integrity","isMap","itemId","itemProp","itemRef","itemScope","itemType","kind","label","lang","language","list","loading","loop","low","manifest","maxLength","media","minLength","muted","nonce","noModule","noValidate","onAbort","onAfterPrint","onAuxClick","onBeforeMatch","onBeforePrint","onBeforeToggle","onBeforeUnload","onBlur","onCancel","onCanPlay","onCanPlayThrough","onChange","onContextLost","onContextMenu","onContextRestored","onCopy","onCueChange","onCut","onDblClick","onDragEnd","onDragEnter","onDragExit","onDragLeave","onDragOver","onDrop","onDurationChange","onEmptied","onEnded","onFocus","onFormData","onHashChange","onInput","onInvalid","onKeyDown","onKeyPress","onKeyUp","onLanguageChange","onLoad","onLoadedData","onLoadedMetadata","onLoadEnd","onLoadStart","onMessage","onMessageError","onMouseMove","onMouseOut","onMouseOver","onOffline","onOnline","onPageHide","onPageShow","onPaste","onPause","onPlay","onPlaying","onPopState","onProgress","onRateChange","onRejectionHandled","onReset","onScroll","onScrollEnd","onSecurityPolicyViolation","onSeeked","onSeeking","onSelect","onSlotChange","onStalled","onStorage","onSubmit","onTimeUpdate","onToggle","onUnhandledRejection","onUnload","onVolumeChange","onWaiting","onWheel","open","optimum","pattern","ping","placeholder","playsInline","popover","popoverTarget","popoverTargetAction","poster","preload","readOnly","referrerPolicy","rel","required","reversed","rows","rowSpan","sandbox","scope","scoped","seamless","shadowRootClonable","shadowRootDelegatesFocus","shadowRootMode","sizes","slot","span","spellCheck","srcDoc","srcLang","srcSet","step","tabIndex","translate","typeMustMatch","useMap","wrap","writingSuggestions","align","aLink","archive","background","bgColor","borderColor","bottomMargin","cellPadding","cellSpacing","charOff","classId","clear","codeBase","codeType","compact","declare","face","frame","frameBorder","hSpace","leftMargin","longDesc","lowSrc","marginHeight","marginWidth","noResize","noHref","noShade","noWrap","profile","prompt","rev","rightMargin","scheme","scrolling","standby","summary","topMargin","valueType","vAlign","vLink","vSpace","allowTransparency","autoCorrect","autoSave","disablePictureInPicture","disableRemotePlayback","results","security","unselectable","svg","accentHeight","alignmentBaseline","arabicForm","baselineShift","capHeight","clipPath","clipRule","colorInterpolation","colorInterpolationFilters","colorProfile","colorRendering","dataType","dominantBaseline","enableBackground","fillRule","floodColor","fontFamily","fontSize","fontSizeAdjust","fontStretch","fontStyle","fontVariant","glyphName","glyphOrientationHorizontal","glyphOrientationVertical","horizAdvX","horizOriginX","horizOriginY","imageRendering","letterSpacing","lightingColor","markerEnd","markerMid","markerStart","navDown","navDownLeft","navDownRight","navLeft","navNext","navPrev","navRight","navUp","navUpLeft","navUpRight","onActivate","onBegin","onEnd","onFocusIn","onFocusOut","onMouseWheel","onRepeat","onShow","onZoom","overlinePosition","overlineThickness","paintOrder","panose1","pointerEvents","renderingIntent","shapeRendering","stopColor","strikethroughPosition","strikethroughThickness","strokeDashArray","strokeDashOffset","strokeLineCap","strokeLineJoin","strokeMiterLimit","textAnchor","textDecoration","textRendering","transformOrigin","typeOf","underlinePosition","underlineThickness","unicodeBidi","unicodeRange","unitsPerEm","vAlphabetic","vHanging","vIdeographic","vMathematical","vectorEffect","vertAdvY","vertOriginX","vertOriginY","wordSpacing","writingMode","xHeight","playbackOrder","timelineBegin","about","accumulate","additive","alphabetic","amplitude","ascent","attributeType","azimuth","bandwidth","baseFrequency","baseProfile","bbox","begin","bias","by","calcMode","clip","clipPathUnits","contentScriptType","contentStyleType","cursor","cx","cy","defaultAction","descent","diffuseConstant","direction","dur","divisor","dx","dy","edgeMode","editable","elevation","exponent","externalResourcesRequired","fill","filterRes","filterUnits","focusable","focusHighlight","format","fr","from","fx","fy","g1","g2","glyphRef","gradientTransform","gradientUnits","hanging","hatchContentUnits","hatchUnits","ideographic","initialVisibility","in","in2","intercept","k1","k2","k3","k4","kernelMatrix","kernelUnitLength","keyPoints","keySplines","keyTimes","kerning","lengthAdjust","limitingConeAngle","local","markerHeight","markerUnits","markerWidth","maskContentUnits","maskUnits","mathematical","mediaCharacterEncoding","mediaContentEncodings","mediaSize","mediaTime","numOctaves","observer","operator","orient","orientation","origin","overlay","path","pathLength","patternContentUnits","patternTransform","patternUnits","phase","pitch","points","pointsAtX","pointsAtY","pointsAtZ","preserveAlpha","preserveAspectRatio","primitiveUnits","propagate","radius","refX","refY","repeatCount","repeatDur","requiredExtensions","requiredFeatures","requiredFonts","requiredFormats","resource","restart","result","rotate","rx","ry","seed","side","slope","snapshotTime","specularConstant","specularExponent","spreadMethod","spacing","startOffset","stdDeviation","stemh","stemv","stitchTiles","stroke","surfaceScale","syncBehavior","syncBehaviorDefault","syncMaster","syncTolerance","syncToleranceDefault","systemLanguage","tableValues","targetX","targetY","textLength","transformBehavior","to","u1","u2","unicode","viewBox","viewTarget","visibility","widths","x1","x2","xChannelSelector","y1","y2","yChannelSelector","zoomAndPan","htmlBase","svgBase","valid","dash","cap","kebab","$0","camelcase","hastToReact","StyleToObject","pointEnd","point","pointStart","stringifyPosition","VFileMessage","causeOrReason","optionsOrParentOrPlace","legacyCause","place","ancestors","cause","ruleId","parent","fatal","file","actual","expected","note","emptyMap","dashSomething","tableElements","tableCellElement","docs","toJsxRuntime","tree","filePath","development","jsxDEV","isStaticChildren","columnNumber","fileName","lineNumber","developmentCreate","fn","productionCreate","components","elementAttributeNameCase","evaluater","createEvaluater","ignoreInvalidStyle","passKeys","passNode","schema","stylePropertyNameCase","tableCellAlignToStyle","one","parentSchema","findComponentFromName","alignValue","createProperty","createElementProps","createChildren","thing","addNode","addChildren","estree","expression","evaluateExpression","crashEstree","mdxExpression","objectExpression","argument","createJsxElementProps","mdxJsxElement","evaluateProgram","mdxEsm","root","countsByName","Type","rest","dashes","find","settings","padRight","padLeft","commas","styleToObject","replacer","toCamel","parseStyle","domCasing","cssCasing","transformStyleToCssCasing","transformStylesToCssCasing","allowExpression","identifiers","isIdentifierName","computed","optional","toDash","$1","urlAttributes","includeImageAlt","includeHtml","all","items","parameters","chunkStart","SpliceBuffer","initial","RangeError","setCursor","POSITIVE_INFINITY","reverse","deleteCount","trunc","removed","chunkedPush","pushMany","unshiftMany","subtokenize","eventsArray","jumps","lineIndex","otherIndex","otherEvent","subevents","more","events","_tokenizer","_isInFirstContentOfListItem","contentType","subcontent","_container","eventIndex","token","startPosition","startPositions","tokenizer","parser","childEvents","gaps","stream","previous","adjust","breaks","sliceStream","defineSkip","_gfmTasklistFirstContentOfListItem","write","syntaxExtension","extension","hook","constructs","existing","before","asciiAlpha","regexCheck","asciiAlphanumeric","asciiAtext","asciiControl","asciiDigit","asciiHexDigit","asciiPunctuation","markdownLineEnding","markdownLineEndingOrSpace","markdownSpace","unicodePunctuation","unicodeWhitespace","regex","factorySpace","limit","enter","consume","exit","tokenize","contentStart","attempt","contentInitial","lineStart","self","childFlow","childToken","lineStartOffset","continued","containerState","continuation","documentContinue","checkNewContainers","_closeFlow","closeFlow","indexBeforeExits","indexBeforeFlow","exitContainers","documentContinued","currentConstruct","concrete","flowStart","interrupt","_gfmTableDynamicInterruptHack","containerConstruct","thereIsANewContainer","thereIsNoNewContainer","containerContinue","flow","flowContinue","writeToChild","eof","seen","entry","nok","disable","null","blankLine","after","partial","chunkInside","contentEnd","continuationConstruct","contentContinue","prefixed","sliceSerialize","flowInitial","afterConstruct","resolver","resolveAll","createResolver","initializeFactory","field","notText","atBreak","resolveAllLineSuffixes","extraResolver","chunks","tabs","bufferIndex","chunk","charCodeAt","_index","_bufferIndex","called","createTokenizer","initialize","columnStart","resolveAllConstructs","consumed","accountForPotentialSkip","fields","constructFactory","addResult","onsuccessfulcheck","expandTabs","atTab","serializeChunks","main","expectedCode","startIndex","startBufferIndex","endIndex","endBufferIndex","head","sliceChunks","chunkIndex","go","restore","onreturn","returnState","bogusState","listOfConstructs","constructIndex","handleListOfConstructs","def","handleMapOfConstructs","handleConstruct","startPoint","startPrevious","startCurrentConstruct","startEventsIndex","startStack","store","resolveTo","thematicBreak","marker","sequence","initialSize","atMarker","inside","onBlank","listItemPrefixWhitespaceConstruct","endOfPrefix","otherPrefix","initialBlankLine","notBlank","furtherBlankLines","notInCurrentItem","indentConstruct","blockQuote","contBefore","factoryDestination","literalType","literalMarkerType","rawType","stringType","balance","enclosedBefore","raw","enclosed","enclosedEscape","rawEscape","factoryLabel","markerType","labelInside","labelEscape","factoryTitle","factoryWhitespace","normalizeIdentifier","labelAfter","markerAfter","destinationBefore","destinationAfter","titleBefore","afterWhitespace","beforeMarker","titleAfter","titleAfterOptionalWhitespace","codeIndented","afterPrefix","furtherStart","headingAtx","sequenceOpen","sequenceFurther","setextUnderline","paragraph","heading","htmlBlockNames","htmlRawNames","htmlFlow","closingTag","buffer","markerB","declarationOpen","tagCloseStart","continuationDeclarationInside","commentOpenInside","cdataOpenInside","slash","basicSelfClosing","completeClosingTagAfter","completeAttributeNameBefore","completeEnd","completeAttributeName","completeAttributeNameAfter","completeAttributeValueBefore","completeAttributeValueQuoted","completeAttributeValueUnquoted","completeAttributeValueQuotedAfter","completeAfter","continuationCommentInside","continuationRawTagOpen","continuationClose","continuationCdataInside","continuationStart","blankLineBefore","continuationAfter","nonLazyContinuationStart","continuationStartNonLazy","continuationBefore","continuationRawEndTag","nonLazyContinuation","codeFenced","closeStart","startBefore","beforeSequenceClose","sequenceClose","sizeOpen","sequenceCloseAfter","initialPrefix","beforeSequenceOpen","infoBefore","atNonLazyBreak","metaBefore","contentBefore","beforeContentChunk","contentChunk","decodeNamedCharacterReference","characterReference","numeric","characterEscape","lineEnding","labelEnd","labelStart","_balanced","_inactive","labelEndNok","resourceConstruct","labelEndOk","referenceFullConstruct","referenceNotFull","referenceCollapsedConstruct","close","group","insideSpan","resourceBefore","resourceOpen","resourceEnd","resourceDestinationAfter","resourceDestinationMissing","resourceBetween","resourceTitleAfter","referenceFullAfter","referenceFullMissing","referenceCollapsedOpen","labelStartImage","classifyCharacter","attention","attentionMarkers","_open","_close","openingSequence","closingSequence","use","nextEvents","movePoint","autolink","schemeOrEmailAtext","emailAtext","schemeInsideOrEmailAtext","urlInside","emailAtSignOrDot","emailLabel","emailValue","htmlText","instruction","tagOpen","commentEnd","commentClose","lineEndingBefore","cdata","cdataClose","cdataEnd","instructionClose","tagClose","tagCloseBetween","tagOpenBetween","tagOpenAttributeName","tagOpenAttributeNameAfter","tagOpenAttributeValueBefore","tagOpenAttributeValueQuoted","tagOpenAttributeValueUnquoted","tagOpenAttributeValueQuotedAfter","lineEndingAfter","lineEndingAfterPrefix","labelStartLink","hardBreakEscape","codeText","between","tailExitIndex","headEnterIndex","resolveText","parse","extensions","combineExtensions","defaultConstructs","decodeNumericCharacterReference","fromCodePoint","characterEscapeOrReference","decode","$2","hex","fromMarkdown","encoding","config","transforms","canContainEols","opener","autolinkProtocol","onenterdata","autolinkEmail","atxHeading","codeFlow","codeFencedFenceInfo","codeFencedFenceMeta","codeTextData","codeFlowValue","definitionDestinationString","definitionLabelString","definitionTitleString","emphasis","hardBreak","hardBreakTrailing","htmlFlowData","htmlTextData","image","listItem","listItemValue","onenterlistitemvalue","listOrdered","onenterlistordered","listUnordered","reference","onenterreference","referenceString","resourceDestinationString","resourceTitleString","setextHeading","strong","closer","atxHeadingSequence","onexitatxheadingsequence","onexitautolinkemail","onexitautolinkprotocol","characterEscapeValue","onexitdata","characterReferenceMarkerHexadecimal","onexitcharacterreferencemarker","characterReferenceMarkerNumeric","characterReferenceValue","onexitcharacterreferencevalue","onexitcharacterreference","onexitcodefenced","codeFencedFence","onexitcodefencedfence","onexitcodefencedfenceinfo","onexitcodefencedfencemeta","onexitcodeindented","onexitcodetext","onexitdefinitiondestinationstring","onexitdefinitionlabelstring","onexitdefinitiontitlestring","onexithardbreak","onexithtmlflow","onexithtmltext","onexitimage","onexitlabel","labelText","onexitlabeltext","onexitlineending","onexitlink","onexitreferencestring","onexitresourcedestinationstring","onexitresourcetitlestring","onexitresource","onexitsetextheading","setextHeadingLineSequence","onexitsetextheadinglinesequence","setextHeadingText","onexitsetextheadingtext","configure","mdastExtensions","compile","tokenStack","resume","listStack","prepareList","defaultOnError","firstBlankLineIndex","containerBalance","listSpread","tailIndex","tailEvent","_spread","and","errorHandler","onExitError","expectingFirstListItemValue","flowCodeInside","depth","setextHeadingSlurpLineEnding","codePointAt","siblings","atHardBreak","inReference","referenceType","ancestor","decodeString","fragment","characterReferenceType","ordered","spread","compiler","postprocess","atCarriageReturn","endPosition","TextDecoder","preprocess","combined","remarkParse","env","globalThis","deserialize","serialized","deserializer","$","unpair","BigInt","EMPTY","asString","shouldSkip","TYPE","serialize","json","lossy","serializer","strict","pair","toJSON","entries","toISOString","structuredClone","normalizeUri","skip","defaultFootnoteBackContent","rereferenceIndex","defaultFootnoteBackLabel","referenceIndex","convert","castFactory","tests","anyFactory","checkAsRecord","nodeAsRecord","propsFactory","typeFactory","testFunction","looksLikeANode","CONTINUE","EXIT","SKIP","visitParents","visitor","factory","parents","visit","subresult","grandparents","toResult","nodeAsParent","testOrVisitor","visitorOrReverse","maybeReverse","revert","subtype","suffix","contents","listItemLoose","tab","trimLines","trimLine","handlers","blockquote","patch","applyData","break","footnoteReference","clobberPrefix","safeId","footnoteOrder","counter","reuseCounter","footnoteCounts","dataFootnoteRef","sup","allowDangerousHtml","imageReference","definitionById","inlineCode","linkReference","loose","listLoose","table","firstRow","tableContent","tableCell","tableRow","cellIndex","cells","cell","toml","ignore","yaml","footnoteDefinition","hName","hChildren","hProperties","defaultUnknownHandler","nodes","trimMarkdownSpaceStart","toHast","footnoteById","defaultHandlers","passThrough","shallow","unknownHandler","createState","foot","footnoteBackContent","footnoteBackLabel","footnoteLabel","footnoteLabelTagName","footnoteLabelProperties","listItems","backReferences","counts","dataFootnoteBackref","tailTail","dataFootnotes","footer","remarkRehype","destination","hastTree","run","bail","getPrototypeOf","trough","fns","pipeline","middlewareIndex","output","middleware","wrapped","_len3","_key3","fnExpectsCallback","_len4","_key4","middelware","basename","ext","assertPath","seenNonSlash","firstNonSlashEnd","extIndex","unmatchedSlash","extname","startPart","startDot","preDotState","joined","segments","absolute","allowAboveRoot","lastSlashIndex","lastSegmentLength","lastSlash","dots","normalizeString","sep","proc","cwd","isUrl","fileUrlOrPath","protocol","auth","urlToPath","URL","hostname","pathname","third","decodeURIComponent","getPathFromURLPosix","VFile","isUint8Array","history","messages","stored","assertNonEmpty","assertPart","stem","fail","part","CallableInstance","proto","names","getOwnPropertyNames","descriptor","Processor","Compiler","Parser","attachers","freezeIndex","frozen","namespace","transformers","attacher","assertUnfrozen","freeze","transformer","realFile","vfile","assertParser","process","assertCompiler","executor","reject","parseTree","realDone","compileTree","compileResult","processSync","complete","assertDone","assertNode","outputTree","resultingTree","runSync","addPlugin","addList","addPreset","plugin","plugins","entryIndex","primary","currentPrimary","isPlainObj","unified","asyncName","looksLikeAVFile","emptyPlugins","emptyRemarkRehypeOptions","safeProtocol","deprecations","Markdown","allowedElements","allowElement","disallowedElements","rehypePlugins","remarkPlugins","remarkRehypeOptions","skipHtml","unwrapDisallowed","urlTransform","defaultUrlTransform","processor","deprecation","mdastTree","colon","questionMark","numberSign","FileTopBar","onBackInfo","buttonInfo","fileContent","setFileContent","keysToIgnore","filteredContent","reduce","acc","handleMouseDown","fp","response","fetch","fetchMarkdown","default_text","selectedOption","setSelectedOption","option","ViewType","_ViewType","Grid","List","FolderEntry","fkey","AppFolder","openApp","view_type","searchBar","dataToShow","setDataToShow","currData","setCurrData","inputValue","setInputValue","setOptions","handleInputChange","filteredData","some","Listbox","opt","getOptionsOnData","FileApp","data_to_icon","DesktopIcon","Command","description","describe","help","execute","help_flags","prevOutput","retrieveObjectsAsString","objects","find_key","target_str","match_prefix","startsWith","find_root","endsWith","currentObj","find_id","find_obj","target_obj","CatCommand","new_output","nixCommands","LsCommand","CdCommand","updateFs","rootFs","target_key","PwdCommand","outputStr","currentDir","ExitCommand","ClearCommand","SocialsCommand","buildWelcomeString","currDir","setcurrDir","promptString","setPromptString","setInput","setData","setOutput","outputRef","command_history","setCommandHistory","command_history_index","setCommandHistoryIndex","cursorPosition","setCursorPosition","commands","ls","cat","pwd","updateData","newData","currDirName","updateCursorPosition","scrollHeight","processCommand","command","called_cmd","cmd","_Fragment","prevHistory","matchingCandidate","str_to_complete","candidate","completedInput","remainingInput","prevIndex","backgroundColor","osOptions","SuspendedScreen","onLogin","Octocat","defaultIcons","TerminalApp","SettingsApp","DesktopArea","onAppOpen","OpenWindowsSpace","Dock","ReactDOM","App","serviceWorker","ready","registration","unregister"],"sourceRoot":""} \ No newline at end of file diff --git a/static/js/main.22d1248a.js b/static/js/main.a9f48d8c.js similarity index 95% rename from static/js/main.22d1248a.js rename to static/js/main.a9f48d8c.js index 912f00b..f048e71 100644 --- a/static/js/main.22d1248a.js +++ b/static/js/main.a9f48d8c.js @@ -1,3 +1,3 @@ -/*! For license information please see main.22d1248a.js.LICENSE.txt */ -(()=>{var e={24:(e,t,n)=>{"use strict";function r(e){var t,n,o="";if("string"==typeof e||"number"==typeof e)o+=e;else if("object"==typeof e)if(Array.isArray(e))for(t=0;to,default:()=>i});const i=o},240:e=>{"use strict";var t=Object.prototype.hasOwnProperty,n=Object.prototype.toString,r=Object.defineProperty,o=Object.getOwnPropertyDescriptor,i=function(e){return"function"===typeof Array.isArray?Array.isArray(e):"[object Array]"===n.call(e)},a=function(e){if(!e||"[object Object]"!==n.call(e))return!1;var r,o=t.call(e,"constructor"),i=e.constructor&&e.constructor.prototype&&t.call(e.constructor.prototype,"isPrototypeOf");if(e.constructor&&!o&&!i)return!1;for(r in e);return"undefined"===typeof r||t.call(e,r)},l=function(e,t){r&&"__proto__"===t.name?r(e,t.name,{enumerable:!0,configurable:!0,value:t.newValue,writable:!0}):e[t.name]=t.newValue},s=function(e,n){if("__proto__"===n){if(!t.call(e,n))return;if(o)return o(e,n).value}return e[n]};e.exports=function e(){var t,n,r,o,u,c,f=arguments[0],d=1,p=arguments.length,h=!1;for("boolean"===typeof f&&(h=f,f=arguments[1]||{},d=2),(null==f||"object"!==typeof f&&"function"!==typeof f)&&(f={});d{var t=/\/\*[^*]*\*+([^/*][^*]*\*+)*\//g,n=/\n/g,r=/^\s*/,o=/^(\*?[-#/*\\\w]+(\[[0-9a-z_-]+\])?)\s*/,i=/^:\s*/,a=/^((?:'(?:\\'|.)*?'|"(?:\\"|.)*?"|\([^)]*?\)|[^};])+)/,l=/^[;\s]*/,s=/^\s+|\s+$/g,u="";function c(e){return e?e.replace(s,u):u}e.exports=function(e,s){if("string"!==typeof e)throw new TypeError("First argument must be a string");if(!e)return[];s=s||{};var f=1,d=1;function p(e){var t=e.match(n);t&&(f+=t.length);var r=e.lastIndexOf("\n");d=~r?e.length-r:d+e.length}function h(){var e={line:f,column:d};return function(t){return t.position=new g(e),A(),t}}function g(e){this.start=e,this.end={line:f,column:d},this.source=s.source}g.prototype.content=e;var m=[];function y(t){var n=new Error(s.source+":"+f+":"+d+": "+t);if(n.reason=t,n.filename=s.source,n.line=f,n.column=d,n.source=e,!s.silent)throw n;m.push(n)}function v(t){var n=t.exec(e);if(n){var r=n[0];return p(r),e=e.slice(r.length),n}}function A(){v(r)}function b(e){var t;for(e=e||[];t=w();)!1!==t&&e.push(t);return e}function w(){var t=h();if("/"==e.charAt(0)&&"*"==e.charAt(1)){for(var n=2;u!=e.charAt(n)&&("*"!=e.charAt(n)||"/"!=e.charAt(n+1));)++n;if(n+=2,u===e.charAt(n-1))return y("End of comment missing");var r=e.slice(2,n-2);return d+=2,p(r),e=e.slice(n),d+=2,t({type:"comment",comment:r})}}function k(){var e=h(),n=v(o);if(n){if(w(),!v(i))return y("property missing ':'");var r=v(a),s=e({type:"declaration",property:c(n[0].replace(t,u)),value:r?c(r[0].replace(t,u)):u});return v(l),s}}return A(),function(){var e,t=[];for(b(t);e=k();)!1!==e&&(t.push(e),b(t));return t}()}},497:(e,t,n)=>{"use strict";var r=n(218);function o(){}function i(){}i.resetWarningCache=o,e.exports=function(){function e(e,t,n,o,i,a){if(a!==r){var l=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw l.name="Invariant Violation",l}}function t(){return e}e.isRequired=e;var n={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:i,resetWarningCache:o};return n.PropTypes=n,n}},173:(e,t,n)=>{e.exports=n(497)()},218:e=>{"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},730:(e,t,n)=>{"use strict";var r=n(43),o=n(853);function i(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n
\n );\n};\n\nexport default DockIcon;\n","\nimport '../../styles/view/AppWindow.css';\nimport React, { useState, useRef, cloneElement, useEffect } from 'react';\nimport Draggable from 'react-draggable';\nimport { ResizableBox } from 'react-resizable';\nimport 'react-resizable/css/styles.css';\nimport { AppContext } from '../../hooks/AppContext';\n\nfunction AppWindow({itemKey, title, onWindowClose, children}) {\n const [isMinimized, setIsMinimized] = useState(false);\n const [isMaximized, setIsMaximized] = useState(false);\n const contentRef = useRef(null);\n const [size, setSize] = useState({ width: 400, height: 300 });\n const [prev_size, prev_setSize] = useState({ width: 400, height: 300 });\n const inputRef = useRef(null);\n const {feel, windowFactory} = React.useContext(AppContext);\n \n useEffect(() => {\n if (contentRef.current) {\n const { offsetWidth, offsetHeight } = contentRef.current;\n setSize({ width: offsetWidth, height: offsetHeight });\n }\n }, [children]);\n\n const toggleMinimize = () => {\n if (!isMaximized) {\n setIsMinimized(!isMinimized);\n }\n };\n\n const toggleMaximize = () => {\n if (!isMaximized){\n prev_setSize(size);\n setSize({ width: window.innerWidth, height: window.innerHeight });\n }\n else{\n setSize(prev_size);\n }\n setIsMaximized(!isMaximized);\n \n if (isMinimized) {\n setIsMinimized(false);\n }\n };\n\n const handleContainerClick = () => {\n if (inputRef.current) {\n inputRef.current.focus();\n }\n };\n\n const ChildrenWithProps = React.Children.map(children, child =>\n cloneElement(child, { ...child.props, inputRef, onWindowClose, itemKey}),\n )\n\n const onCloseWindow = (e) => {\n onWindowClose(e, itemKey);\n }\n\n const getBar = () => {\n return windowFactory.createAppBar(\n {title, isMaximized, onClose: onCloseWindow,\n onMinimize: toggleMinimize, onMaximize: toggleMaximize}\n );\n }\n const getCorners = () => {\n if (isMinimized){\n return [];\n }\n const top_corner = feel.isMacOs() ? \"ne\" : \"nw\";\n return [top_corner, \"se\" , \"sw\"];\n }\n \n return(\n \n \n e.stopPropagation()}\n minConstraints={[size.width, size.height]}\n maxConstraints={[size.width * 100, size.height * 100]}\n resizeHandles={getCorners()} \n style={{border: '2px solid #0000', position: 'relative', 'pointerEvents': 'auto'}}\n >\n
\n {getBar()}\n {!isMinimized && ChildrenWithProps}\n
\n \n
\n \n ) \n}\n\nexport default AppWindow;\n\n","\nimport publications from './files/publications.json';\nimport certifications from './files/certifications.json';\nimport software from './files/software.json';\nimport skills from './files/skills.json';\nimport teaching from './files/teaching.json';\nimport scientific_activities from './files/scientific_activities.json';\nimport hobbies from './files/hobbies.json';\nimport socials from './files/socials.json';\nimport contributing from './files/contributing.json';\n\n\nclass Directory {\n constructor(name, parentDirectory, content=[]) {\n this.name = name;\n this.content = content;\n this.parentDirectory = parentDirectory;\n }\n\n addContent(content) {\n this.content.push(content);\n }\n\n clone() {\n return new Directory(this.name, this.parentDirectory, this.content.map((item) => item.clone()));\n }\n}\n\nclass File {\n constructor(id, content, parentDirectory=null) {\n this.name = id;\n this.content = content;\n this.parentDirectory = parentDirectory;\n }\n clone() {\n return new File(this.name, this.content, this.parentDirectory);\n }\n\n getFilePath(){\n return this.content.url || this.content.filepath || this.content.filename;\n }\n\n}\n\n\n\nfunction loadData(dirname, data, parentDirectory=null){\n if (Array.isArray(data)){\n const dir = new Directory(dirname, parentDirectory, []);\n data.forEach((item) => dir.addContent(loadData(dirname, item, dir)));\n return dir;\n \n }\n else if (typeof data === 'object'){\n return new File(inferName(data) ? inferName(data) : dirname, data, parentDirectory);\n }\n return null;\n}\n\nfunction inferName(data){\n return data.title || data.name || data.filename || data.id;\n}\n\n\nfunction loadAppData(){\n let data = new Directory('root', null);\n data.addContent(loadData('publications', publications, data));\n data.addContent(loadData('certifications', certifications, data));\n const skillsDir = new Directory('skills', data);\n skillsDir.content = Object.keys(skills).map((item) => loadData(item, skills[item], skillsDir));\n data.addContent(skillsDir);\n data.addContent(loadData('software', software, data));\n const teachingDir = new Directory('teaching', data);\n teachingDir.content = Object.keys(teaching).map((item) => loadData(item, teaching[item], teachingDir));\n data.addContent(teachingDir);\n const scientificDir = new Directory('scientific_activities', data);\n scientificDir.content = Object.keys(scientific_activities).map((item) => loadData(item, scientific_activities[item], scientificDir));\n data.addContent(scientificDir);\n data.addContent(loadData('hobbies', hobbies, data));\n data.addContent(loadData('socials', socials, data));\n data.addContent(loadData('contributing.md', contributing, data));\n return data;\n}\n\nconst data = loadAppData();\n\n\nexport {data, Directory, File};","import { useState, useEffect } from 'react';\n\nconst useNetworkStatus = () => {\n const [isOnline, setIsOnline] = useState(navigator.onLine);\n\n useEffect(() => {\n const updateNetworkStatus = () => setIsOnline(navigator.onLine);\n\n window.addEventListener('online', updateNetworkStatus);\n window.addEventListener('offline', updateNetworkStatus);\n\n return () => {\n window.removeEventListener('online', updateNetworkStatus);\n window.removeEventListener('offline', updateNetworkStatus);\n };\n }, []);\n\n return isOnline;\n};\n\nexport default useNetworkStatus;\n","\nclass OSFeel {\n static MacOs = new OSFeel(\"MacOs\")\n static Windows = new OSFeel(\"Windows\")\n static Ubuntu = new OSFeel(\"Ubuntu\")\n \n constructor(name) {\n this.name = name\n }\n\n isMacOs() {\n return this.name === OSFeel.MacOs.name\n }\n\n isWindows() {\n return this.name === OSFeel.Windows.name\n }\n\n isUbuntu() {\n return this.name === OSFeel.Ubuntu.name\n }\n\n}\n\nclass AppTheme {\n static Dark = new AppTheme(\"Dark\")\n static Light = new AppTheme(\"Light\")\n \n constructor(name) {\n this.name = name\n }\n \n isDark() {\n return this.name === AppTheme.Dark.name\n }\n\n isLight() {\n return this.name === AppTheme.Light.name\n }\n \n}\n\nexport {OSFeel, AppTheme};","import { useState, useEffect } from 'react';\nimport {AppTheme} from '../constants/enums.js';\n\nconst useTheme = () => {\n const [theme, setTheme] = useState( new AppTheme(localStorage.getItem('theme') || AppTheme.Light.name));\n\n useEffect(() => {\n document.documentElement.setAttribute('data-theme', theme.name.toLowerCase());\n localStorage.setItem('theme', theme.name);\n }, [theme]);\n\n const toggleTheme = () => {\n setTheme(prevTheme => (prevTheme.isDark() ? AppTheme.Light : AppTheme.Dark));\n };\n\n return [theme, toggleTheme];\n};\n\nexport default useTheme;\n","\n\nconst iconImgFromType = (icon_type, os_type='') => {\n switch(icon_type){\n case 'folder':\n return require(`../assets/folder-icon${os_type === ''? os_type : '-' + os_type.toLowerCase()}.png`)\n default:\n return require('../assets/file-icon.png')}\n}\n\nconst getFilesURL = () => {\n \n return process.env.PUBLIC_URL + \"/data/files\"; \n \n //return process.env.PUBLIC_URL + \"/data/files\";\n}\n\n\nconst getFilesPrefix = () => {\n if (process.env.NODE_ENV !== 'development'){\n return '';\n }\n return 'cv_os';\n}\n\n \nfunction replaceLastOccurrence(originalStr, searchStr, replaceStr) {\n const lastIndex = originalStr.lastIndexOf(searchStr);\n\n if (lastIndex === -1) {\n // If the search string is not found, return the original string\n return originalStr;\n }\n\n // Slice the string into two parts and replace the last occurrence\n const beforeLastOccurrence = originalStr.slice(0, lastIndex);\n const afterLastOccurrence = originalStr.slice(lastIndex + searchStr.length);\n\n // Concatenate the parts with the replacement string\n return beforeLastOccurrence + replaceStr + afterLastOccurrence;\n}\n\nexport {iconImgFromType, getFilesURL, getFilesPrefix, replaceLastOccurrence}","import '../../styles/view/AppWindow.css';\nimport { iconImgFromType } from '../../utils/utils';\n\n\nfunction MacOsAppBar({title, isMaximized, onClose, onMinimize, onMaximize}) {\n return (\n
\n
\n
\n
x
\n
\n
\n
{isMaximized? '': '-'}
\n
\n
\n
\n
\n
\n
{title}
\n
\n )\n}\n\nfunction UbuntuAppBar({title, isMaximized, onClose, onMinimize, onMaximize}) {\n return (\n
\n
{title}
\n
\n
\n
{isMaximized? '': '-'}
\n
\n
\n
\n
\n
\n
x
\n
\n
\n
\n )\n}\n\n\n\nfunction WindowsAppBar({title, isMaximized, onClose, onMinimize, onMaximize, file_type='folder'}) {\n return (\n
\n
\n \"Windows\n
{title}
\n
\n
\n \n \n \n \n
\n
\n )\n}\n\nexport {MacOsAppBar, WindowsAppBar, UbuntuAppBar};\n\n","\nimport React from 'react';\nimport AppWindow from '../view/apps/AppWindow';\nimport { MacOsAppBar, UbuntuAppBar, WindowsAppBar } from '../view/apps/WindowAppBar';\n\n\nexport const WindowsFactory = {\n createAppBar: (props) => ,\n createDock: (props) => ,\n};\n\n\nexport const MacOSFactory = {\n createAppBar: (props) => ,\n createDock: (props) => ,\n};\n\n\nexport const UbuntuFactory = {\n createAppBar: (props) => ,\n createDock: (props) => ,\n};\n","import { useState, useEffect, useMemo } from 'react';\nimport { WindowsFactory, MacOSFactory, UbuntuFactory } from '../factories/OSComponentFactory';\nimport { OSFeel } from '../constants/enums';\n\n\nconst useOsFeel = () => {\n const [feel, setFeel] = useState( new OSFeel(localStorage.getItem('feel') || OSFeel.MacOs.name ));\n\n useEffect(() => {\n document.documentElement.setAttribute('os-feel', feel.name);\n localStorage.setItem('feel', feel.name);\n }, [feel]);\n\n const windowFactory = useMemo(() => {\n if (feel.isMacOs()){\n return MacOSFactory;\n }\n else if (feel.isWindows()){\n return WindowsFactory;\n }\n else if (feel.isUbuntu()){\n return UbuntuFactory;\n }\n return MacOSFactory;\n }, [feel]);\n\n const toggleFeel = (ff) => {\n const new_feel = ff instanceof OSFeel ? ff : new OSFeel(ff);\n setFeel(new_feel);\n };\n\n return [feel, toggleFeel, windowFactory];\n};\n\nexport default useOsFeel;\n","import React, { createContext, useEffect, useReducer, useCallback, cloneElement } from 'react';\nimport AppWindow from '../view/apps/AppWindow';\nimport { data } from '../data/data';\nimport useNetworkStatus from '../hooks/useNetworkStatus';\nimport useTheme from './useTheme';\nimport useOsFeel from './useOSFeel';\n\nconst AppContext = createContext();\n\nconst initialState = {\n fs: data,\n windowApps: [],\n suspended: false,\n openWindowCount: 0,\n};\n\nconst reducer = (state, action) => {\n switch (action.type) {\n case 'SET_THEME':\n return { ...state, theme: action.theme };\n case 'SET_FS':\n return { ...state, fs: action.fs };\n case 'ADD_APP':\n const newApp = (\n \n {cloneElement(action.app, { ...action.app.props, windowKey: state.openWindowCount })}\n \n );\n return {\n ...state,\n windowApps: [...state.windowApps, newApp],\n openWindowCount: state.openWindowCount + 1,\n };\n case 'REPLACE_APP':\n const replacedApp = (\n \n {action.app}\n \n );\n const updatedApps = state.windowApps.map((window) =>\n window.props.itemKey === action.itemKey ? replacedApp : window\n );\n return { ...state, windowApps: updatedApps };\n case 'POP_APPS':\n return { ...state, windowApps: [] };\n case 'POP_APP':\n const remainingApps = state.windowApps.filter((window) => window.props.itemKey !== action.itemKey);\n return { ...state, windowApps: remainingApps };\n case 'SET_SUSPEND':\n return { ...state, suspended: action.suspended };\n default:\n return state;\n }\n};\n\nconst AppProvider = ({ children }) => {\n const [state, dispatch] = useReducer(reducer, initialState);\n const isOnline = useNetworkStatus();\n const [theme, toggleTheme] = useTheme();\n const [feel, toggleFeel, windowFactory] = useOsFeel();\n\n\n useEffect(() => {\n dispatch({ type: 'SET_ONLINE_STATUS', isOnline });\n }, [isOnline]);\n\n const setFS = (fs) => {\n dispatch({ type: 'SET_FS', fs });\n };\n\n const addApp = (title, app) => {\n dispatch({\n type: 'ADD_APP',\n title,\n app,\n popApp,\n });\n };\n\n const replaceApp = (itemKey, title, app) => {\n dispatch({\n type: 'REPLACE_APP',\n itemKey,\n title,\n app,\n popApp,\n });\n };\n\n const popApp = useCallback((_, itemKey) => {\n dispatch({ type: 'POP_APP', itemKey });\n }, []);\n\n const setSuspend = (suspended) => {\n dispatch({ type: 'SET_SUSPEND', suspended });\n };\n\n const onShutdown = () => {\n setSuspend(true);\n dispatch({ type: 'POP_APPS'});\n };\n\n const onSuspend = () => {\n setSuspend(true);\n };\n\n const onChangeFeel = (feel) => {\n toggleFeel(feel);\n };\n\n return (\n \n {children}\n \n );\n};\n\nexport { AppContext, AppProvider };\n","import React from 'react';\nimport '../../styles/view/Dock.css';\nimport DockIcon from './DockIcon';\nimport { AppContext } from '../../hooks/AppContext';\n\nconst Dock = ({icons}) => {\n \n const {feel, theme} = React.useContext(AppContext);\n\n const feel_style = (feel) => {\n if (feel.isMacOs()){\n return '';\n }\n else if (feel.isWindows()){\n return 'windows_dock';\n }\n else if (feel.isUbuntu()){\n return 'ubuntu_dock';\n }\n return '';\n };\n\n return (\n
\n {icons.map((icon, index) => (\n \n ))}\n
\n );\n};\n\nexport default Dock;\n","import React, {useState} from 'react';\nimport '../../styles/view/Desktop.css';\nimport Draggable from 'react-draggable';\nimport { iconImgFromType } from '../../utils/utils';\nimport { AppContext } from '../../hooks/AppContext';\n\nconst DesktopIcon = ({ icon}) => {\n const [showTooltip, setShowTooltip] = useState(false);\n const {feel} = React.useContext(AppContext);\n\n const handleClick = (e, f) => {\n if (f){\n f();\n } \n }\n\n return (\n e.stopPropagation()}>\n
setShowTooltip(true)}\n onMouseLeave={() => setShowTooltip(false)}\n onClick={(e) => handleClick(e, icon.onclick)}>\n {icon.name}\n

{icon.name.replace(\"_\", \" \")}

\n {showTooltip &&
{icon.name}
}\n
\n
\n );\n};\n\nexport default DesktopIcon;\n","export const STRINGS = {\n APP_FOLDER: {\n SEARCH_PLACEHOLDER: 'Search...',\n BACK_BUTTON: 'Back',\n SELECT_TEXT: \"Select\",\n OPEN_BUTTON: 'Open',\n \n },\n TERMINAL: {\n PROMP_STRING_PREFIX: 'cv@rrua:',\n WELCOME_MESSAGE: \"Welcome to the Terminal interface of the CV OS, built by Rui Rua. To know which commands are available, use the help command.\",\n HELP_COMMAND: 'Display available commands and their descriptions',\n HISTORY_COMMAND: 'Display command history',\n\n },\n SETTINGS: {\n DARK_MODE: 'Dark Mode',\n SHUTDOWN: 'Shutdown',\n SUSPEND: 'Suspend',\n STATUS: 'Status',\n ONLINE: 'Online',\n OFFLINE: 'Offline',\n OS_FEEL: 'OS Feel',\n DEFAULT_USERNAME: 'Guest',\n\n\n },\n SUSPENDED_SCREEN: {\n WELCOME_MESSAGE: 'Welcome Guest',\n LOGIN_BUTTON: 'LogIn',\n },\n DOCK: {\n CV_LINK: 'https://rrua.github.io/files/CV_RuiRua_24.pdf',\n LINKTREE_LINK : \"https://linktr.ee/ruirua\",\n PERSONAL_WEBSITE_LINK: 'https://rrua.github.io/',\n }\n}","/**\n * @typedef Options\n * Configuration.\n * @property {boolean | null | undefined} [jsx=false]\n * Support JSX identifiers (default: `false`).\n */\n\nconst startRe = /[$_\\p{ID_Start}]/u\nconst contRe = /[$_\\u{200C}\\u{200D}\\p{ID_Continue}]/u\nconst contReJsx = /[-$_\\u{200C}\\u{200D}\\p{ID_Continue}]/u\nconst nameRe = /^[$_\\p{ID_Start}][$_\\u{200C}\\u{200D}\\p{ID_Continue}]*$/u\nconst nameReJsx = /^[$_\\p{ID_Start}][-$_\\u{200C}\\u{200D}\\p{ID_Continue}]*$/u\n\n/** @type {Options} */\nconst emptyOptions = {}\n\n/**\n * Checks if the given code point can start an identifier.\n *\n * @param {number | undefined} code\n * Code point to check.\n * @returns {boolean}\n * Whether `code` can start an identifier.\n */\n// Note: `undefined` is supported so you can pass the result from `''.codePointAt`.\nexport function start(code) {\n return code ? startRe.test(String.fromCodePoint(code)) : false\n}\n\n/**\n * Checks if the given code point can continue an identifier.\n *\n * @param {number | undefined} code\n * Code point to check.\n * @param {Options | null | undefined} [options]\n * Configuration (optional).\n * @returns {boolean}\n * Whether `code` can continue an identifier.\n */\n// Note: `undefined` is supported so you can pass the result from `''.codePointAt`.\nexport function cont(code, options) {\n const settings = options || emptyOptions\n const re = settings.jsx ? contReJsx : contRe\n return code ? re.test(String.fromCodePoint(code)) : false\n}\n\n/**\n * Checks if the given value is a valid identifier name.\n *\n * @param {string} name\n * Identifier to check.\n * @param {Options | null | undefined} [options]\n * Configuration (optional).\n * @returns {boolean}\n * Whether `name` can be an identifier.\n */\nexport function name(name, options) {\n const settings = options || emptyOptions\n const re = settings.jsx ? nameReJsx : nameRe\n return re.test(name)\n}\n","/**\n * @typedef {import('hast').Nodes} Nodes\n */\n\n// HTML whitespace expression.\n// See .\nconst re = /[ \\t\\n\\f\\r]/g\n\n/**\n * Check if the given value is *inter-element whitespace*.\n *\n * @param {Nodes | string} thing\n * Thing to check (`Node` or `string`).\n * @returns {boolean}\n * Whether the `value` is inter-element whitespace (`boolean`): consisting of\n * zero or more of space, tab (`\\t`), line feed (`\\n`), carriage return\n * (`\\r`), or form feed (`\\f`); if a node is passed it must be a `Text` node,\n * whose `value` field is checked.\n */\nexport function whitespace(thing) {\n return typeof thing === 'object'\n ? thing.type === 'text'\n ? empty(thing.value)\n : false\n : empty(thing)\n}\n\n/**\n * @param {string} value\n * @returns {boolean}\n */\nfunction empty(value) {\n return value.replace(re, '') === ''\n}\n","/**\n * @typedef {import('./info.js').Info} Info\n * @typedef {Record} Properties\n * @typedef {Record} Normal\n */\n\nexport class Schema {\n /**\n * @constructor\n * @param {Properties} property\n * @param {Normal} normal\n * @param {string} [space]\n */\n constructor(property, normal, space) {\n this.property = property\n this.normal = normal\n if (space) {\n this.space = space\n }\n }\n}\n\n/** @type {Properties} */\nSchema.prototype.property = {}\n/** @type {Normal} */\nSchema.prototype.normal = {}\n/** @type {string|null} */\nSchema.prototype.space = null\n","/**\n * @typedef {import('./schema.js').Properties} Properties\n * @typedef {import('./schema.js').Normal} Normal\n */\n\nimport {Schema} from './schema.js'\n\n/**\n * @param {Schema[]} definitions\n * @param {string} [space]\n * @returns {Schema}\n */\nexport function merge(definitions, space) {\n /** @type {Properties} */\n const property = {}\n /** @type {Normal} */\n const normal = {}\n let index = -1\n\n while (++index < definitions.length) {\n Object.assign(property, definitions[index].property)\n Object.assign(normal, definitions[index].normal)\n }\n\n return new Schema(property, normal, space)\n}\n","/**\n * @param {string} value\n * @returns {string}\n */\nexport function normalize(value) {\n return value.toLowerCase()\n}\n","export class Info {\n /**\n * @constructor\n * @param {string} property\n * @param {string} attribute\n */\n constructor(property, attribute) {\n /** @type {string} */\n this.property = property\n /** @type {string} */\n this.attribute = attribute\n }\n}\n\n/** @type {string|null} */\nInfo.prototype.space = null\nInfo.prototype.boolean = false\nInfo.prototype.booleanish = false\nInfo.prototype.overloadedBoolean = false\nInfo.prototype.number = false\nInfo.prototype.commaSeparated = false\nInfo.prototype.spaceSeparated = false\nInfo.prototype.commaOrSpaceSeparated = false\nInfo.prototype.mustUseProperty = false\nInfo.prototype.defined = false\n","let powers = 0\n\nexport const boolean = increment()\nexport const booleanish = increment()\nexport const overloadedBoolean = increment()\nexport const number = increment()\nexport const spaceSeparated = increment()\nexport const commaSeparated = increment()\nexport const commaOrSpaceSeparated = increment()\n\nfunction increment() {\n return 2 ** ++powers\n}\n","import {Info} from './info.js'\nimport * as types from './types.js'\n\n/** @type {Array} */\n// @ts-expect-error: hush.\nconst checks = Object.keys(types)\n\nexport class DefinedInfo extends Info {\n /**\n * @constructor\n * @param {string} property\n * @param {string} attribute\n * @param {number|null} [mask]\n * @param {string} [space]\n */\n constructor(property, attribute, mask, space) {\n let index = -1\n\n super(property, attribute)\n\n mark(this, 'space', space)\n\n if (typeof mask === 'number') {\n while (++index < checks.length) {\n const check = checks[index]\n mark(this, checks[index], (mask & types[check]) === types[check])\n }\n }\n }\n}\n\nDefinedInfo.prototype.defined = true\n\n/**\n * @param {DefinedInfo} values\n * @param {string} key\n * @param {unknown} value\n */\nfunction mark(values, key, value) {\n if (value) {\n // @ts-expect-error: assume `value` matches the expected value of `key`.\n values[key] = value\n }\n}\n","/**\n * @typedef {import('./schema.js').Properties} Properties\n * @typedef {import('./schema.js').Normal} Normal\n *\n * @typedef {Record} Attributes\n *\n * @typedef {Object} Definition\n * @property {Record} properties\n * @property {(attributes: Attributes, property: string) => string} transform\n * @property {string} [space]\n * @property {Attributes} [attributes]\n * @property {Array} [mustUseProperty]\n */\n\nimport {normalize} from '../normalize.js'\nimport {Schema} from './schema.js'\nimport {DefinedInfo} from './defined-info.js'\n\nconst own = {}.hasOwnProperty\n\n/**\n * @param {Definition} definition\n * @returns {Schema}\n */\nexport function create(definition) {\n /** @type {Properties} */\n const property = {}\n /** @type {Normal} */\n const normal = {}\n /** @type {string} */\n let prop\n\n for (prop in definition.properties) {\n if (own.call(definition.properties, prop)) {\n const value = definition.properties[prop]\n const info = new DefinedInfo(\n prop,\n definition.transform(definition.attributes || {}, prop),\n value,\n definition.space\n )\n\n if (\n definition.mustUseProperty &&\n definition.mustUseProperty.includes(prop)\n ) {\n info.mustUseProperty = true\n }\n\n property[prop] = info\n\n normal[normalize(prop)] = prop\n normal[normalize(info.attribute)] = prop\n }\n }\n\n return new Schema(property, normal, definition.space)\n}\n","import {create} from './util/create.js'\n\nexport const xlink = create({\n space: 'xlink',\n transform(_, prop) {\n return 'xlink:' + prop.slice(5).toLowerCase()\n },\n properties: {\n xLinkActuate: null,\n xLinkArcRole: null,\n xLinkHref: null,\n xLinkRole: null,\n xLinkShow: null,\n xLinkTitle: null,\n xLinkType: null\n }\n})\n","import {create} from './util/create.js'\n\nexport const xml = create({\n space: 'xml',\n transform(_, prop) {\n return 'xml:' + prop.slice(3).toLowerCase()\n },\n properties: {xmlLang: null, xmlBase: null, xmlSpace: null}\n})\n","/**\n * @param {Record} attributes\n * @param {string} attribute\n * @returns {string}\n */\nexport function caseSensitiveTransform(attributes, attribute) {\n return attribute in attributes ? attributes[attribute] : attribute\n}\n","import {caseSensitiveTransform} from './case-sensitive-transform.js'\n\n/**\n * @param {Record} attributes\n * @param {string} property\n * @returns {string}\n */\nexport function caseInsensitiveTransform(attributes, property) {\n return caseSensitiveTransform(attributes, property.toLowerCase())\n}\n","import {create} from './util/create.js'\nimport {caseInsensitiveTransform} from './util/case-insensitive-transform.js'\n\nexport const xmlns = create({\n space: 'xmlns',\n attributes: {xmlnsxlink: 'xmlns:xlink'},\n transform: caseInsensitiveTransform,\n properties: {xmlns: null, xmlnsXLink: null}\n})\n","import {booleanish, number, spaceSeparated} from './util/types.js'\nimport {create} from './util/create.js'\n\nexport const aria = create({\n transform(_, prop) {\n return prop === 'role' ? prop : 'aria-' + prop.slice(4).toLowerCase()\n },\n properties: {\n ariaActiveDescendant: null,\n ariaAtomic: booleanish,\n ariaAutoComplete: null,\n ariaBusy: booleanish,\n ariaChecked: booleanish,\n ariaColCount: number,\n ariaColIndex: number,\n ariaColSpan: number,\n ariaControls: spaceSeparated,\n ariaCurrent: null,\n ariaDescribedBy: spaceSeparated,\n ariaDetails: null,\n ariaDisabled: booleanish,\n ariaDropEffect: spaceSeparated,\n ariaErrorMessage: null,\n ariaExpanded: booleanish,\n ariaFlowTo: spaceSeparated,\n ariaGrabbed: booleanish,\n ariaHasPopup: null,\n ariaHidden: booleanish,\n ariaInvalid: null,\n ariaKeyShortcuts: null,\n ariaLabel: null,\n ariaLabelledBy: spaceSeparated,\n ariaLevel: number,\n ariaLive: null,\n ariaModal: booleanish,\n ariaMultiLine: booleanish,\n ariaMultiSelectable: booleanish,\n ariaOrientation: null,\n ariaOwns: spaceSeparated,\n ariaPlaceholder: null,\n ariaPosInSet: number,\n ariaPressed: booleanish,\n ariaReadOnly: booleanish,\n ariaRelevant: null,\n ariaRequired: booleanish,\n ariaRoleDescription: spaceSeparated,\n ariaRowCount: number,\n ariaRowIndex: number,\n ariaRowSpan: number,\n ariaSelected: booleanish,\n ariaSetSize: number,\n ariaSort: null,\n ariaValueMax: number,\n ariaValueMin: number,\n ariaValueNow: number,\n ariaValueText: null,\n role: null\n }\n})\n","import {\n boolean,\n overloadedBoolean,\n booleanish,\n number,\n spaceSeparated,\n commaSeparated\n} from './util/types.js'\nimport {create} from './util/create.js'\nimport {caseInsensitiveTransform} from './util/case-insensitive-transform.js'\n\nexport const html = create({\n space: 'html',\n attributes: {\n acceptcharset: 'accept-charset',\n classname: 'class',\n htmlfor: 'for',\n httpequiv: 'http-equiv'\n },\n transform: caseInsensitiveTransform,\n mustUseProperty: ['checked', 'multiple', 'muted', 'selected'],\n properties: {\n // Standard Properties.\n abbr: null,\n accept: commaSeparated,\n acceptCharset: spaceSeparated,\n accessKey: spaceSeparated,\n action: null,\n allow: null,\n allowFullScreen: boolean,\n allowPaymentRequest: boolean,\n allowUserMedia: boolean,\n alt: null,\n as: null,\n async: boolean,\n autoCapitalize: null,\n autoComplete: spaceSeparated,\n autoFocus: boolean,\n autoPlay: boolean,\n blocking: spaceSeparated,\n capture: null,\n charSet: null,\n checked: boolean,\n cite: null,\n className: spaceSeparated,\n cols: number,\n colSpan: null,\n content: null,\n contentEditable: booleanish,\n controls: boolean,\n controlsList: spaceSeparated,\n coords: number | commaSeparated,\n crossOrigin: null,\n data: null,\n dateTime: null,\n decoding: null,\n default: boolean,\n defer: boolean,\n dir: null,\n dirName: null,\n disabled: boolean,\n download: overloadedBoolean,\n draggable: booleanish,\n encType: null,\n enterKeyHint: null,\n fetchPriority: null,\n form: null,\n formAction: null,\n formEncType: null,\n formMethod: null,\n formNoValidate: boolean,\n formTarget: null,\n headers: spaceSeparated,\n height: number,\n hidden: boolean,\n high: number,\n href: null,\n hrefLang: null,\n htmlFor: spaceSeparated,\n httpEquiv: spaceSeparated,\n id: null,\n imageSizes: null,\n imageSrcSet: null,\n inert: boolean,\n inputMode: null,\n integrity: null,\n is: null,\n isMap: boolean,\n itemId: null,\n itemProp: spaceSeparated,\n itemRef: spaceSeparated,\n itemScope: boolean,\n itemType: spaceSeparated,\n kind: null,\n label: null,\n lang: null,\n language: null,\n list: null,\n loading: null,\n loop: boolean,\n low: number,\n manifest: null,\n max: null,\n maxLength: number,\n media: null,\n method: null,\n min: null,\n minLength: number,\n multiple: boolean,\n muted: boolean,\n name: null,\n nonce: null,\n noModule: boolean,\n noValidate: boolean,\n onAbort: null,\n onAfterPrint: null,\n onAuxClick: null,\n onBeforeMatch: null,\n onBeforePrint: null,\n onBeforeToggle: null,\n onBeforeUnload: null,\n onBlur: null,\n onCancel: null,\n onCanPlay: null,\n onCanPlayThrough: null,\n onChange: null,\n onClick: null,\n onClose: null,\n onContextLost: null,\n onContextMenu: null,\n onContextRestored: null,\n onCopy: null,\n onCueChange: null,\n onCut: null,\n onDblClick: null,\n onDrag: null,\n onDragEnd: null,\n onDragEnter: null,\n onDragExit: null,\n onDragLeave: null,\n onDragOver: null,\n onDragStart: null,\n onDrop: null,\n onDurationChange: null,\n onEmptied: null,\n onEnded: null,\n onError: null,\n onFocus: null,\n onFormData: null,\n onHashChange: null,\n onInput: null,\n onInvalid: null,\n onKeyDown: null,\n onKeyPress: null,\n onKeyUp: null,\n onLanguageChange: null,\n onLoad: null,\n onLoadedData: null,\n onLoadedMetadata: null,\n onLoadEnd: null,\n onLoadStart: null,\n onMessage: null,\n onMessageError: null,\n onMouseDown: null,\n onMouseEnter: null,\n onMouseLeave: null,\n onMouseMove: null,\n onMouseOut: null,\n onMouseOver: null,\n onMouseUp: null,\n onOffline: null,\n onOnline: null,\n onPageHide: null,\n onPageShow: null,\n onPaste: null,\n onPause: null,\n onPlay: null,\n onPlaying: null,\n onPopState: null,\n onProgress: null,\n onRateChange: null,\n onRejectionHandled: null,\n onReset: null,\n onResize: null,\n onScroll: null,\n onScrollEnd: null,\n onSecurityPolicyViolation: null,\n onSeeked: null,\n onSeeking: null,\n onSelect: null,\n onSlotChange: null,\n onStalled: null,\n onStorage: null,\n onSubmit: null,\n onSuspend: null,\n onTimeUpdate: null,\n onToggle: null,\n onUnhandledRejection: null,\n onUnload: null,\n onVolumeChange: null,\n onWaiting: null,\n onWheel: null,\n open: boolean,\n optimum: number,\n pattern: null,\n ping: spaceSeparated,\n placeholder: null,\n playsInline: boolean,\n popover: null,\n popoverTarget: null,\n popoverTargetAction: null,\n poster: null,\n preload: null,\n readOnly: boolean,\n referrerPolicy: null,\n rel: spaceSeparated,\n required: boolean,\n reversed: boolean,\n rows: number,\n rowSpan: number,\n sandbox: spaceSeparated,\n scope: null,\n scoped: boolean,\n seamless: boolean,\n selected: boolean,\n shadowRootClonable: boolean,\n shadowRootDelegatesFocus: boolean,\n shadowRootMode: null,\n shape: null,\n size: number,\n sizes: null,\n slot: null,\n span: number,\n spellCheck: booleanish,\n src: null,\n srcDoc: null,\n srcLang: null,\n srcSet: null,\n start: number,\n step: null,\n style: null,\n tabIndex: number,\n target: null,\n title: null,\n translate: null,\n type: null,\n typeMustMatch: boolean,\n useMap: null,\n value: booleanish,\n width: number,\n wrap: null,\n writingSuggestions: null,\n\n // Legacy.\n // See: https://html.spec.whatwg.org/#other-elements,-attributes-and-apis\n align: null, // Several. Use CSS `text-align` instead,\n aLink: null, // ``. Use CSS `a:active {color}` instead\n archive: spaceSeparated, // ``. List of URIs to archives\n axis: null, // `
` and ``. Use `scope` on ``\n background: null, // ``. Use CSS `background-image` instead\n bgColor: null, // `` and table elements. Use CSS `background-color` instead\n border: number, // ``. Use CSS `border-width` instead,\n borderColor: null, // `
`. Use CSS `border-color` instead,\n bottomMargin: number, // ``\n cellPadding: null, // `
`\n cellSpacing: null, // `
`\n char: null, // Several table elements. When `align=char`, sets the character to align on\n charOff: null, // Several table elements. When `char`, offsets the alignment\n classId: null, // ``\n clear: null, // `
`. Use CSS `clear` instead\n code: null, // ``\n codeBase: null, // ``\n codeType: null, // ``\n color: null, // `` and `
`. Use CSS instead\n compact: boolean, // Lists. Use CSS to reduce space between items instead\n declare: boolean, // ``\n event: null, // `\n * ^\n * ```\n *\n * @type {State}\n */\n function continuationRawTagOpen(code) {\n if (code === 47) {\n effects.consume(code);\n buffer = '';\n return continuationRawEndTag;\n }\n return continuation(code);\n }\n\n /**\n * In raw continuation, after ` | \n * ^^^^^^\n * ```\n *\n * @type {State}\n */\n function continuationRawEndTag(code) {\n if (code === 62) {\n const name = buffer.toLowerCase();\n if (htmlRawNames.includes(name)) {\n effects.consume(code);\n return continuationClose;\n }\n return continuation(code);\n }\n if (asciiAlpha(code) && buffer.length < 8) {\n effects.consume(code);\n // @ts-expect-error: not null.\n buffer += String.fromCharCode(code);\n return continuationRawEndTag;\n }\n return continuation(code);\n }\n\n /**\n * In cdata continuation, after `]`, expecting `]>`.\n *\n * ```markdown\n * > | &<]]>\n * ^\n * ```\n *\n * @type {State}\n */\n function continuationCdataInside(code) {\n if (code === 93) {\n effects.consume(code);\n return continuationDeclarationInside;\n }\n return continuation(code);\n }\n\n /**\n * In declaration or instruction continuation, at `>`.\n *\n * ```markdown\n * > | \n * ^\n * > | \n * ^\n * > | \n * ^\n * > | \n * ^\n * > | &<]]>\n * ^\n * ```\n *\n * @type {State}\n */\n function continuationDeclarationInside(code) {\n if (code === 62) {\n effects.consume(code);\n return continuationClose;\n }\n\n // More dashes.\n if (code === 45 && marker === 2) {\n effects.consume(code);\n return continuationDeclarationInside;\n }\n return continuation(code);\n }\n\n /**\n * In closed continuation: everything we get until the eol/eof is part of it.\n *\n * ```markdown\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function continuationClose(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit(\"htmlFlowData\");\n return continuationAfter(code);\n }\n effects.consume(code);\n return continuationClose;\n }\n\n /**\n * Done.\n *\n * ```markdown\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function continuationAfter(code) {\n effects.exit(\"htmlFlow\");\n // // Feel free to interrupt.\n // tokenizer.interrupt = false\n // // No longer concrete.\n // tokenizer.concrete = false\n return ok(code);\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeNonLazyContinuationStart(effects, ok, nok) {\n const self = this;\n return start;\n\n /**\n * At eol, before continuation.\n *\n * ```markdown\n * > | * ```js\n * ^\n * | b\n * ```\n *\n * @type {State}\n */\n function start(code) {\n if (markdownLineEnding(code)) {\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n return after;\n }\n return nok(code);\n }\n\n /**\n * A continuation.\n *\n * ```markdown\n * | * ```js\n * > | b\n * ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n return self.parser.lazy[self.now().line] ? nok(code) : ok(code);\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeBlankLineBefore(effects, ok, nok) {\n return start;\n\n /**\n * Before eol, expecting blank line.\n *\n * ```markdown\n * > |
\n * ^\n * |\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n return effects.attempt(blankLine, ok, nok);\n }\n}","/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding, markdownSpace } from 'micromark-util-character';\n/** @type {Construct} */\nconst nonLazyContinuation = {\n tokenize: tokenizeNonLazyContinuation,\n partial: true\n};\n\n/** @type {Construct} */\nexport const codeFenced = {\n name: 'codeFenced',\n tokenize: tokenizeCodeFenced,\n concrete: true\n};\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeCodeFenced(effects, ok, nok) {\n const self = this;\n /** @type {Construct} */\n const closeStart = {\n tokenize: tokenizeCloseStart,\n partial: true\n };\n let initialPrefix = 0;\n let sizeOpen = 0;\n /** @type {NonNullable} */\n let marker;\n return start;\n\n /**\n * Start of code.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function start(code) {\n // To do: parse whitespace like `markdown-rs`.\n return beforeSequenceOpen(code);\n }\n\n /**\n * In opening fence, after prefix, at sequence.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function beforeSequenceOpen(code) {\n const tail = self.events[self.events.length - 1];\n initialPrefix = tail && tail[1].type === \"linePrefix\" ? tail[2].sliceSerialize(tail[1], true).length : 0;\n marker = code;\n effects.enter(\"codeFenced\");\n effects.enter(\"codeFencedFence\");\n effects.enter(\"codeFencedFenceSequence\");\n return sequenceOpen(code);\n }\n\n /**\n * In opening fence sequence.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function sequenceOpen(code) {\n if (code === marker) {\n sizeOpen++;\n effects.consume(code);\n return sequenceOpen;\n }\n if (sizeOpen < 3) {\n return nok(code);\n }\n effects.exit(\"codeFencedFenceSequence\");\n return markdownSpace(code) ? factorySpace(effects, infoBefore, \"whitespace\")(code) : infoBefore(code);\n }\n\n /**\n * In opening fence, after the sequence (and optional whitespace), before info.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function infoBefore(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit(\"codeFencedFence\");\n return self.interrupt ? ok(code) : effects.check(nonLazyContinuation, atNonLazyBreak, after)(code);\n }\n effects.enter(\"codeFencedFenceInfo\");\n effects.enter(\"chunkString\", {\n contentType: \"string\"\n });\n return info(code);\n }\n\n /**\n * In info.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function info(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit(\"chunkString\");\n effects.exit(\"codeFencedFenceInfo\");\n return infoBefore(code);\n }\n if (markdownSpace(code)) {\n effects.exit(\"chunkString\");\n effects.exit(\"codeFencedFenceInfo\");\n return factorySpace(effects, metaBefore, \"whitespace\")(code);\n }\n if (code === 96 && code === marker) {\n return nok(code);\n }\n effects.consume(code);\n return info;\n }\n\n /**\n * In opening fence, after info and whitespace, before meta.\n *\n * ```markdown\n * > | ~~~js eval\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function metaBefore(code) {\n if (code === null || markdownLineEnding(code)) {\n return infoBefore(code);\n }\n effects.enter(\"codeFencedFenceMeta\");\n effects.enter(\"chunkString\", {\n contentType: \"string\"\n });\n return meta(code);\n }\n\n /**\n * In meta.\n *\n * ```markdown\n * > | ~~~js eval\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function meta(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit(\"chunkString\");\n effects.exit(\"codeFencedFenceMeta\");\n return infoBefore(code);\n }\n if (code === 96 && code === marker) {\n return nok(code);\n }\n effects.consume(code);\n return meta;\n }\n\n /**\n * At eol/eof in code, before a non-lazy closing fence or content.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * > | alert(1)\n * ^\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function atNonLazyBreak(code) {\n return effects.attempt(closeStart, after, contentBefore)(code);\n }\n\n /**\n * Before code content, not a closing fence, at eol.\n *\n * ```markdown\n * | ~~~js\n * > | alert(1)\n * ^\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function contentBefore(code) {\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n return contentStart;\n }\n\n /**\n * Before code content, not a closing fence.\n *\n * ```markdown\n * | ~~~js\n * > | alert(1)\n * ^\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function contentStart(code) {\n return initialPrefix > 0 && markdownSpace(code) ? factorySpace(effects, beforeContentChunk, \"linePrefix\", initialPrefix + 1)(code) : beforeContentChunk(code);\n }\n\n /**\n * Before code content, after optional prefix.\n *\n * ```markdown\n * | ~~~js\n * > | alert(1)\n * ^\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function beforeContentChunk(code) {\n if (code === null || markdownLineEnding(code)) {\n return effects.check(nonLazyContinuation, atNonLazyBreak, after)(code);\n }\n effects.enter(\"codeFlowValue\");\n return contentChunk(code);\n }\n\n /**\n * In code content.\n *\n * ```markdown\n * | ~~~js\n * > | alert(1)\n * ^^^^^^^^\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function contentChunk(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit(\"codeFlowValue\");\n return beforeContentChunk(code);\n }\n effects.consume(code);\n return contentChunk;\n }\n\n /**\n * After code.\n *\n * ```markdown\n * | ~~~js\n * | alert(1)\n * > | ~~~\n * ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n effects.exit(\"codeFenced\");\n return ok(code);\n }\n\n /**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\n function tokenizeCloseStart(effects, ok, nok) {\n let size = 0;\n return startBefore;\n\n /**\n *\n *\n * @type {State}\n */\n function startBefore(code) {\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n return start;\n }\n\n /**\n * Before closing fence, at optional whitespace.\n *\n * ```markdown\n * | ~~~js\n * | alert(1)\n * > | ~~~\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n // Always populated by defaults.\n\n // To do: `enter` here or in next state?\n effects.enter(\"codeFencedFence\");\n return markdownSpace(code) ? factorySpace(effects, beforeSequenceClose, \"linePrefix\", self.parser.constructs.disable.null.includes('codeIndented') ? undefined : 4)(code) : beforeSequenceClose(code);\n }\n\n /**\n * In closing fence, after optional whitespace, at sequence.\n *\n * ```markdown\n * | ~~~js\n * | alert(1)\n * > | ~~~\n * ^\n * ```\n *\n * @type {State}\n */\n function beforeSequenceClose(code) {\n if (code === marker) {\n effects.enter(\"codeFencedFenceSequence\");\n return sequenceClose(code);\n }\n return nok(code);\n }\n\n /**\n * In closing fence sequence.\n *\n * ```markdown\n * | ~~~js\n * | alert(1)\n * > | ~~~\n * ^\n * ```\n *\n * @type {State}\n */\n function sequenceClose(code) {\n if (code === marker) {\n size++;\n effects.consume(code);\n return sequenceClose;\n }\n if (size >= sizeOpen) {\n effects.exit(\"codeFencedFenceSequence\");\n return markdownSpace(code) ? factorySpace(effects, sequenceCloseAfter, \"whitespace\")(code) : sequenceCloseAfter(code);\n }\n return nok(code);\n }\n\n /**\n * After closing fence sequence, after optional whitespace.\n *\n * ```markdown\n * | ~~~js\n * | alert(1)\n * > | ~~~\n * ^\n * ```\n *\n * @type {State}\n */\n function sequenceCloseAfter(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit(\"codeFencedFence\");\n return ok(code);\n }\n return nok(code);\n }\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeNonLazyContinuation(effects, ok, nok) {\n const self = this;\n return start;\n\n /**\n *\n *\n * @type {State}\n */\n function start(code) {\n if (code === null) {\n return nok(code);\n }\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n return lineStart;\n }\n\n /**\n *\n *\n * @type {State}\n */\n function lineStart(code) {\n return self.parser.lazy[self.now().line] ? nok(code) : ok(code);\n }\n}","/// \n\n/* eslint-env browser */\n\nconst element = document.createElement('i')\n\n/**\n * @param {string} value\n * @returns {string|false}\n */\nexport function decodeNamedCharacterReference(value) {\n const characterReference = '&' + value + ';'\n element.innerHTML = characterReference\n const char = element.textContent\n\n // Some named character references do not require the closing semicolon\n // (`¬`, for instance), which leads to situations where parsing the assumed\n // named reference of `¬it;` will result in the string `¬it;`.\n // When we encounter a trailing semicolon after parsing, and the character\n // reference to decode was not a semicolon (`;`), we can assume that the\n // matching was not complete.\n // @ts-expect-error: TypeScript is wrong that `textContent` on elements can\n // yield `null`.\n if (char.charCodeAt(char.length - 1) === 59 /* `;` */ && value !== 'semi') {\n return false\n }\n\n // If the decoded string is equal to the input, the character reference was\n // not valid.\n // @ts-expect-error: TypeScript is wrong that `textContent` on elements can\n // yield `null`.\n return char === characterReference ? false : char\n}\n","/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport { decodeNamedCharacterReference } from 'decode-named-character-reference';\nimport { asciiAlphanumeric, asciiDigit, asciiHexDigit } from 'micromark-util-character';\n/** @type {Construct} */\nexport const characterReference = {\n name: 'characterReference',\n tokenize: tokenizeCharacterReference\n};\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeCharacterReference(effects, ok, nok) {\n const self = this;\n let size = 0;\n /** @type {number} */\n let max;\n /** @type {(code: Code) => boolean} */\n let test;\n return start;\n\n /**\n * Start of character reference.\n *\n * ```markdown\n * > | a&b\n * ^\n * > | a{b\n * ^\n * > | a b\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter(\"characterReference\");\n effects.enter(\"characterReferenceMarker\");\n effects.consume(code);\n effects.exit(\"characterReferenceMarker\");\n return open;\n }\n\n /**\n * After `&`, at `#` for numeric references or alphanumeric for named\n * references.\n *\n * ```markdown\n * > | a&b\n * ^\n * > | a{b\n * ^\n * > | a b\n * ^\n * ```\n *\n * @type {State}\n */\n function open(code) {\n if (code === 35) {\n effects.enter(\"characterReferenceMarkerNumeric\");\n effects.consume(code);\n effects.exit(\"characterReferenceMarkerNumeric\");\n return numeric;\n }\n effects.enter(\"characterReferenceValue\");\n max = 31;\n test = asciiAlphanumeric;\n return value(code);\n }\n\n /**\n * After `#`, at `x` for hexadecimals or digit for decimals.\n *\n * ```markdown\n * > | a{b\n * ^\n * > | a b\n * ^\n * ```\n *\n * @type {State}\n */\n function numeric(code) {\n if (code === 88 || code === 120) {\n effects.enter(\"characterReferenceMarkerHexadecimal\");\n effects.consume(code);\n effects.exit(\"characterReferenceMarkerHexadecimal\");\n effects.enter(\"characterReferenceValue\");\n max = 6;\n test = asciiHexDigit;\n return value;\n }\n effects.enter(\"characterReferenceValue\");\n max = 7;\n test = asciiDigit;\n return value(code);\n }\n\n /**\n * After markers (`&#x`, `&#`, or `&`), in value, before `;`.\n *\n * The character reference kind defines what and how many characters are\n * allowed.\n *\n * ```markdown\n * > | a&b\n * ^^^\n * > | a{b\n * ^^^\n * > | a b\n * ^\n * ```\n *\n * @type {State}\n */\n function value(code) {\n if (code === 59 && size) {\n const token = effects.exit(\"characterReferenceValue\");\n if (test === asciiAlphanumeric && !decodeNamedCharacterReference(self.sliceSerialize(token))) {\n return nok(code);\n }\n\n // To do: `markdown-rs` uses a different name:\n // `CharacterReferenceMarkerSemi`.\n effects.enter(\"characterReferenceMarker\");\n effects.consume(code);\n effects.exit(\"characterReferenceMarker\");\n effects.exit(\"characterReference\");\n return ok;\n }\n if (test(code) && size++ < max) {\n effects.consume(code);\n return value;\n }\n return nok(code);\n }\n}","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport { asciiPunctuation } from 'micromark-util-character';\n/** @type {Construct} */\nexport const characterEscape = {\n name: 'characterEscape',\n tokenize: tokenizeCharacterEscape\n};\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeCharacterEscape(effects, ok, nok) {\n return start;\n\n /**\n * Start of character escape.\n *\n * ```markdown\n * > | a\\*b\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter(\"characterEscape\");\n effects.enter(\"escapeMarker\");\n effects.consume(code);\n effects.exit(\"escapeMarker\");\n return inside;\n }\n\n /**\n * After `\\`, at punctuation.\n *\n * ```markdown\n * > | a\\*b\n * ^\n * ```\n *\n * @type {State}\n */\n function inside(code) {\n // ASCII punctuation.\n if (asciiPunctuation(code)) {\n effects.enter(\"characterEscapeValue\");\n effects.consume(code);\n effects.exit(\"characterEscapeValue\");\n effects.exit(\"characterEscape\");\n return ok;\n }\n return nok(code);\n }\n}","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding } from 'micromark-util-character';\n/** @type {Construct} */\nexport const lineEnding = {\n name: 'lineEnding',\n tokenize: tokenizeLineEnding\n};\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeLineEnding(effects, ok) {\n return start;\n\n /** @type {State} */\n function start(code) {\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n return factorySpace(effects, ok, \"linePrefix\");\n }\n}","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport { factoryDestination } from 'micromark-factory-destination';\nimport { factoryLabel } from 'micromark-factory-label';\nimport { factoryTitle } from 'micromark-factory-title';\nimport { factoryWhitespace } from 'micromark-factory-whitespace';\nimport { markdownLineEndingOrSpace } from 'micromark-util-character';\nimport { push, splice } from 'micromark-util-chunked';\nimport { normalizeIdentifier } from 'micromark-util-normalize-identifier';\nimport { resolveAll } from 'micromark-util-resolve-all';\n/** @type {Construct} */\nexport const labelEnd = {\n name: 'labelEnd',\n tokenize: tokenizeLabelEnd,\n resolveTo: resolveToLabelEnd,\n resolveAll: resolveAllLabelEnd\n};\n\n/** @type {Construct} */\nconst resourceConstruct = {\n tokenize: tokenizeResource\n};\n/** @type {Construct} */\nconst referenceFullConstruct = {\n tokenize: tokenizeReferenceFull\n};\n/** @type {Construct} */\nconst referenceCollapsedConstruct = {\n tokenize: tokenizeReferenceCollapsed\n};\n\n/** @type {Resolver} */\nfunction resolveAllLabelEnd(events) {\n let index = -1;\n while (++index < events.length) {\n const token = events[index][1];\n if (token.type === \"labelImage\" || token.type === \"labelLink\" || token.type === \"labelEnd\") {\n // Remove the marker.\n events.splice(index + 1, token.type === \"labelImage\" ? 4 : 2);\n token.type = \"data\";\n index++;\n }\n }\n return events;\n}\n\n/** @type {Resolver} */\nfunction resolveToLabelEnd(events, context) {\n let index = events.length;\n let offset = 0;\n /** @type {Token} */\n let token;\n /** @type {number | undefined} */\n let open;\n /** @type {number | undefined} */\n let close;\n /** @type {Array} */\n let media;\n\n // Find an opening.\n while (index--) {\n token = events[index][1];\n if (open) {\n // If we see another link, or inactive link label, we’ve been here before.\n if (token.type === \"link\" || token.type === \"labelLink\" && token._inactive) {\n break;\n }\n\n // Mark other link openings as inactive, as we can’t have links in\n // links.\n if (events[index][0] === 'enter' && token.type === \"labelLink\") {\n token._inactive = true;\n }\n } else if (close) {\n if (events[index][0] === 'enter' && (token.type === \"labelImage\" || token.type === \"labelLink\") && !token._balanced) {\n open = index;\n if (token.type !== \"labelLink\") {\n offset = 2;\n break;\n }\n }\n } else if (token.type === \"labelEnd\") {\n close = index;\n }\n }\n const group = {\n type: events[open][1].type === \"labelLink\" ? \"link\" : \"image\",\n start: Object.assign({}, events[open][1].start),\n end: Object.assign({}, events[events.length - 1][1].end)\n };\n const label = {\n type: \"label\",\n start: Object.assign({}, events[open][1].start),\n end: Object.assign({}, events[close][1].end)\n };\n const text = {\n type: \"labelText\",\n start: Object.assign({}, events[open + offset + 2][1].end),\n end: Object.assign({}, events[close - 2][1].start)\n };\n media = [['enter', group, context], ['enter', label, context]];\n\n // Opening marker.\n media = push(media, events.slice(open + 1, open + offset + 3));\n\n // Text open.\n media = push(media, [['enter', text, context]]);\n\n // Always populated by defaults.\n\n // Between.\n media = push(media, resolveAll(context.parser.constructs.insideSpan.null, events.slice(open + offset + 4, close - 3), context));\n\n // Text close, marker close, label close.\n media = push(media, [['exit', text, context], events[close - 2], events[close - 1], ['exit', label, context]]);\n\n // Reference, resource, or so.\n media = push(media, events.slice(close + 1));\n\n // Media close.\n media = push(media, [['exit', group, context]]);\n splice(events, open, events.length, media);\n return events;\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeLabelEnd(effects, ok, nok) {\n const self = this;\n let index = self.events.length;\n /** @type {Token} */\n let labelStart;\n /** @type {boolean} */\n let defined;\n\n // Find an opening.\n while (index--) {\n if ((self.events[index][1].type === \"labelImage\" || self.events[index][1].type === \"labelLink\") && !self.events[index][1]._balanced) {\n labelStart = self.events[index][1];\n break;\n }\n }\n return start;\n\n /**\n * Start of label end.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * > | [a][b] c\n * ^\n * > | [a][] b\n * ^\n * > | [a] b\n * ```\n *\n * @type {State}\n */\n function start(code) {\n // If there is not an okay opening.\n if (!labelStart) {\n return nok(code);\n }\n\n // If the corresponding label (link) start is marked as inactive,\n // it means we’d be wrapping a link, like this:\n //\n // ```markdown\n // > | a [b [c](d) e](f) g.\n // ^\n // ```\n //\n // We can’t have that, so it’s just balanced brackets.\n if (labelStart._inactive) {\n return labelEndNok(code);\n }\n defined = self.parser.defined.includes(normalizeIdentifier(self.sliceSerialize({\n start: labelStart.end,\n end: self.now()\n })));\n effects.enter(\"labelEnd\");\n effects.enter(\"labelMarker\");\n effects.consume(code);\n effects.exit(\"labelMarker\");\n effects.exit(\"labelEnd\");\n return after;\n }\n\n /**\n * After `]`.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * > | [a][b] c\n * ^\n * > | [a][] b\n * ^\n * > | [a] b\n * ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n // Note: `markdown-rs` also parses GFM footnotes here, which for us is in\n // an extension.\n\n // Resource (`[asd](fgh)`)?\n if (code === 40) {\n return effects.attempt(resourceConstruct, labelEndOk, defined ? labelEndOk : labelEndNok)(code);\n }\n\n // Full (`[asd][fgh]`) or collapsed (`[asd][]`) reference?\n if (code === 91) {\n return effects.attempt(referenceFullConstruct, labelEndOk, defined ? referenceNotFull : labelEndNok)(code);\n }\n\n // Shortcut (`[asd]`) reference?\n return defined ? labelEndOk(code) : labelEndNok(code);\n }\n\n /**\n * After `]`, at `[`, but not at a full reference.\n *\n * > 👉 **Note**: we only get here if the label is defined.\n *\n * ```markdown\n * > | [a][] b\n * ^\n * > | [a] b\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceNotFull(code) {\n return effects.attempt(referenceCollapsedConstruct, labelEndOk, labelEndNok)(code);\n }\n\n /**\n * Done, we found something.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * > | [a][b] c\n * ^\n * > | [a][] b\n * ^\n * > | [a] b\n * ^\n * ```\n *\n * @type {State}\n */\n function labelEndOk(code) {\n // Note: `markdown-rs` does a bunch of stuff here.\n return ok(code);\n }\n\n /**\n * Done, it’s nothing.\n *\n * There was an okay opening, but we didn’t match anything.\n *\n * ```markdown\n * > | [a](b c\n * ^\n * > | [a][b c\n * ^\n * > | [a] b\n * ^\n * ```\n *\n * @type {State}\n */\n function labelEndNok(code) {\n labelStart._balanced = true;\n return nok(code);\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeResource(effects, ok, nok) {\n return resourceStart;\n\n /**\n * At a resource.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceStart(code) {\n effects.enter(\"resource\");\n effects.enter(\"resourceMarker\");\n effects.consume(code);\n effects.exit(\"resourceMarker\");\n return resourceBefore;\n }\n\n /**\n * In resource, after `(`, at optional whitespace.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceBefore(code) {\n return markdownLineEndingOrSpace(code) ? factoryWhitespace(effects, resourceOpen)(code) : resourceOpen(code);\n }\n\n /**\n * In resource, after optional whitespace, at `)` or a destination.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceOpen(code) {\n if (code === 41) {\n return resourceEnd(code);\n }\n return factoryDestination(effects, resourceDestinationAfter, resourceDestinationMissing, \"resourceDestination\", \"resourceDestinationLiteral\", \"resourceDestinationLiteralMarker\", \"resourceDestinationRaw\", \"resourceDestinationString\", 32)(code);\n }\n\n /**\n * In resource, after destination, at optional whitespace.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceDestinationAfter(code) {\n return markdownLineEndingOrSpace(code) ? factoryWhitespace(effects, resourceBetween)(code) : resourceEnd(code);\n }\n\n /**\n * At invalid destination.\n *\n * ```markdown\n * > | [a](<<) b\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceDestinationMissing(code) {\n return nok(code);\n }\n\n /**\n * In resource, after destination and whitespace, at `(` or title.\n *\n * ```markdown\n * > | [a](b ) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceBetween(code) {\n if (code === 34 || code === 39 || code === 40) {\n return factoryTitle(effects, resourceTitleAfter, nok, \"resourceTitle\", \"resourceTitleMarker\", \"resourceTitleString\")(code);\n }\n return resourceEnd(code);\n }\n\n /**\n * In resource, after title, at optional whitespace.\n *\n * ```markdown\n * > | [a](b \"c\") d\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceTitleAfter(code) {\n return markdownLineEndingOrSpace(code) ? factoryWhitespace(effects, resourceEnd)(code) : resourceEnd(code);\n }\n\n /**\n * In resource, at `)`.\n *\n * ```markdown\n * > | [a](b) d\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceEnd(code) {\n if (code === 41) {\n effects.enter(\"resourceMarker\");\n effects.consume(code);\n effects.exit(\"resourceMarker\");\n effects.exit(\"resource\");\n return ok;\n }\n return nok(code);\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeReferenceFull(effects, ok, nok) {\n const self = this;\n return referenceFull;\n\n /**\n * In a reference (full), at the `[`.\n *\n * ```markdown\n * > | [a][b] d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceFull(code) {\n return factoryLabel.call(self, effects, referenceFullAfter, referenceFullMissing, \"reference\", \"referenceMarker\", \"referenceString\")(code);\n }\n\n /**\n * In a reference (full), after `]`.\n *\n * ```markdown\n * > | [a][b] d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceFullAfter(code) {\n return self.parser.defined.includes(normalizeIdentifier(self.sliceSerialize(self.events[self.events.length - 1][1]).slice(1, -1))) ? ok(code) : nok(code);\n }\n\n /**\n * In reference (full) that was missing.\n *\n * ```markdown\n * > | [a][b d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceFullMissing(code) {\n return nok(code);\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeReferenceCollapsed(effects, ok, nok) {\n return referenceCollapsedStart;\n\n /**\n * In reference (collapsed), at `[`.\n *\n * > 👉 **Note**: we only get here if the label is defined.\n *\n * ```markdown\n * > | [a][] d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceCollapsedStart(code) {\n // We only attempt a collapsed label if there’s a `[`.\n\n effects.enter(\"reference\");\n effects.enter(\"referenceMarker\");\n effects.consume(code);\n effects.exit(\"referenceMarker\");\n return referenceCollapsedOpen;\n }\n\n /**\n * In reference (collapsed), at `]`.\n *\n * > 👉 **Note**: we only get here if the label is defined.\n *\n * ```markdown\n * > | [a][] d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceCollapsedOpen(code) {\n if (code === 93) {\n effects.enter(\"referenceMarker\");\n effects.consume(code);\n effects.exit(\"referenceMarker\");\n effects.exit(\"reference\");\n return ok;\n }\n return nok(code);\n }\n}","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport { labelEnd } from './label-end.js';\n\n/** @type {Construct} */\nexport const labelStartImage = {\n name: 'labelStartImage',\n tokenize: tokenizeLabelStartImage,\n resolveAll: labelEnd.resolveAll\n};\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeLabelStartImage(effects, ok, nok) {\n const self = this;\n return start;\n\n /**\n * Start of label (image) start.\n *\n * ```markdown\n * > | a ![b] c\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter(\"labelImage\");\n effects.enter(\"labelImageMarker\");\n effects.consume(code);\n effects.exit(\"labelImageMarker\");\n return open;\n }\n\n /**\n * After `!`, at `[`.\n *\n * ```markdown\n * > | a ![b] c\n * ^\n * ```\n *\n * @type {State}\n */\n function open(code) {\n if (code === 91) {\n effects.enter(\"labelMarker\");\n effects.consume(code);\n effects.exit(\"labelMarker\");\n effects.exit(\"labelImage\");\n return after;\n }\n return nok(code);\n }\n\n /**\n * After `![`.\n *\n * ```markdown\n * > | a ![b] c\n * ^\n * ```\n *\n * This is needed in because, when GFM footnotes are enabled, images never\n * form when started with a `^`.\n * Instead, links form:\n *\n * ```markdown\n * ![^a](b)\n *\n * ![^a][b]\n *\n * [b]: c\n * ```\n *\n * ```html\n *

!^a

\n *

!^a

\n * ```\n *\n * @type {State}\n */\n function after(code) {\n // To do: use a new field to do this, this is still needed for\n // `micromark-extension-gfm-footnote`, but the `label-start-link`\n // behavior isn’t.\n // Hidden footnotes hook.\n /* c8 ignore next 3 */\n return code === 94 && '_hiddenFootnoteSupport' in self.parser.constructs ? nok(code) : ok(code);\n }\n}","/**\n * @typedef {import('micromark-util-types').Code} Code\n */\n\nimport {\n markdownLineEndingOrSpace,\n unicodePunctuation,\n unicodeWhitespace\n} from 'micromark-util-character'\n/**\n * Classify whether a code represents whitespace, punctuation, or something\n * else.\n *\n * Used for attention (emphasis, strong), whose sequences can open or close\n * based on the class of surrounding characters.\n *\n * > 👉 **Note**: eof (`null`) is seen as whitespace.\n *\n * @param {Code} code\n * Code.\n * @returns {typeof constants.characterGroupWhitespace | typeof constants.characterGroupPunctuation | undefined}\n * Group.\n */\nexport function classifyCharacter(code) {\n if (\n code === null ||\n markdownLineEndingOrSpace(code) ||\n unicodeWhitespace(code)\n ) {\n return 1\n }\n if (unicodePunctuation(code)) {\n return 2\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').Point} Point\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport { push, splice } from 'micromark-util-chunked';\nimport { classifyCharacter } from 'micromark-util-classify-character';\nimport { resolveAll } from 'micromark-util-resolve-all';\n/** @type {Construct} */\nexport const attention = {\n name: 'attention',\n tokenize: tokenizeAttention,\n resolveAll: resolveAllAttention\n};\n\n/**\n * Take all events and resolve attention to emphasis or strong.\n *\n * @type {Resolver}\n */\n// eslint-disable-next-line complexity\nfunction resolveAllAttention(events, context) {\n let index = -1;\n /** @type {number} */\n let open;\n /** @type {Token} */\n let group;\n /** @type {Token} */\n let text;\n /** @type {Token} */\n let openingSequence;\n /** @type {Token} */\n let closingSequence;\n /** @type {number} */\n let use;\n /** @type {Array} */\n let nextEvents;\n /** @type {number} */\n let offset;\n\n // Walk through all events.\n //\n // Note: performance of this is fine on an mb of normal markdown, but it’s\n // a bottleneck for malicious stuff.\n while (++index < events.length) {\n // Find a token that can close.\n if (events[index][0] === 'enter' && events[index][1].type === 'attentionSequence' && events[index][1]._close) {\n open = index;\n\n // Now walk back to find an opener.\n while (open--) {\n // Find a token that can open the closer.\n if (events[open][0] === 'exit' && events[open][1].type === 'attentionSequence' && events[open][1]._open &&\n // If the markers are the same:\n context.sliceSerialize(events[open][1]).charCodeAt(0) === context.sliceSerialize(events[index][1]).charCodeAt(0)) {\n // If the opening can close or the closing can open,\n // and the close size *is not* a multiple of three,\n // but the sum of the opening and closing size *is* multiple of three,\n // then don’t match.\n if ((events[open][1]._close || events[index][1]._open) && (events[index][1].end.offset - events[index][1].start.offset) % 3 && !((events[open][1].end.offset - events[open][1].start.offset + events[index][1].end.offset - events[index][1].start.offset) % 3)) {\n continue;\n }\n\n // Number of markers to use from the sequence.\n use = events[open][1].end.offset - events[open][1].start.offset > 1 && events[index][1].end.offset - events[index][1].start.offset > 1 ? 2 : 1;\n const start = Object.assign({}, events[open][1].end);\n const end = Object.assign({}, events[index][1].start);\n movePoint(start, -use);\n movePoint(end, use);\n openingSequence = {\n type: use > 1 ? \"strongSequence\" : \"emphasisSequence\",\n start,\n end: Object.assign({}, events[open][1].end)\n };\n closingSequence = {\n type: use > 1 ? \"strongSequence\" : \"emphasisSequence\",\n start: Object.assign({}, events[index][1].start),\n end\n };\n text = {\n type: use > 1 ? \"strongText\" : \"emphasisText\",\n start: Object.assign({}, events[open][1].end),\n end: Object.assign({}, events[index][1].start)\n };\n group = {\n type: use > 1 ? \"strong\" : \"emphasis\",\n start: Object.assign({}, openingSequence.start),\n end: Object.assign({}, closingSequence.end)\n };\n events[open][1].end = Object.assign({}, openingSequence.start);\n events[index][1].start = Object.assign({}, closingSequence.end);\n nextEvents = [];\n\n // If there are more markers in the opening, add them before.\n if (events[open][1].end.offset - events[open][1].start.offset) {\n nextEvents = push(nextEvents, [['enter', events[open][1], context], ['exit', events[open][1], context]]);\n }\n\n // Opening.\n nextEvents = push(nextEvents, [['enter', group, context], ['enter', openingSequence, context], ['exit', openingSequence, context], ['enter', text, context]]);\n\n // Always populated by defaults.\n\n // Between.\n nextEvents = push(nextEvents, resolveAll(context.parser.constructs.insideSpan.null, events.slice(open + 1, index), context));\n\n // Closing.\n nextEvents = push(nextEvents, [['exit', text, context], ['enter', closingSequence, context], ['exit', closingSequence, context], ['exit', group, context]]);\n\n // If there are more markers in the closing, add them after.\n if (events[index][1].end.offset - events[index][1].start.offset) {\n offset = 2;\n nextEvents = push(nextEvents, [['enter', events[index][1], context], ['exit', events[index][1], context]]);\n } else {\n offset = 0;\n }\n splice(events, open - 1, index - open + 3, nextEvents);\n index = open + nextEvents.length - offset - 2;\n break;\n }\n }\n }\n }\n\n // Remove remaining sequences.\n index = -1;\n while (++index < events.length) {\n if (events[index][1].type === 'attentionSequence') {\n events[index][1].type = 'data';\n }\n }\n return events;\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeAttention(effects, ok) {\n const attentionMarkers = this.parser.constructs.attentionMarkers.null;\n const previous = this.previous;\n const before = classifyCharacter(previous);\n\n /** @type {NonNullable} */\n let marker;\n return start;\n\n /**\n * Before a sequence.\n *\n * ```markdown\n * > | **\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n marker = code;\n effects.enter('attentionSequence');\n return inside(code);\n }\n\n /**\n * In a sequence.\n *\n * ```markdown\n * > | **\n * ^^\n * ```\n *\n * @type {State}\n */\n function inside(code) {\n if (code === marker) {\n effects.consume(code);\n return inside;\n }\n const token = effects.exit('attentionSequence');\n\n // To do: next major: move this to resolver, just like `markdown-rs`.\n const after = classifyCharacter(code);\n\n // Always populated by defaults.\n\n const open = !after || after === 2 && before || attentionMarkers.includes(code);\n const close = !before || before === 2 && after || attentionMarkers.includes(previous);\n token._open = Boolean(marker === 42 ? open : open && (before || !close));\n token._close = Boolean(marker === 42 ? close : close && (after || !open));\n return ok(code);\n }\n}\n\n/**\n * Move a point a bit.\n *\n * Note: `move` only works inside lines! It’s not possible to move past other\n * chunks (replacement characters, tabs, or line endings).\n *\n * @param {Point} point\n * @param {number} offset\n * @returns {undefined}\n */\nfunction movePoint(point, offset) {\n point.column += offset;\n point.offset += offset;\n point._bufferIndex += offset;\n}","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport { asciiAlpha, asciiAlphanumeric, asciiAtext, asciiControl } from 'micromark-util-character';\n/** @type {Construct} */\nexport const autolink = {\n name: 'autolink',\n tokenize: tokenizeAutolink\n};\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeAutolink(effects, ok, nok) {\n let size = 0;\n return start;\n\n /**\n * Start of an autolink.\n *\n * ```markdown\n * > | ab\n * ^\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter(\"autolink\");\n effects.enter(\"autolinkMarker\");\n effects.consume(code);\n effects.exit(\"autolinkMarker\");\n effects.enter(\"autolinkProtocol\");\n return open;\n }\n\n /**\n * After `<`, at protocol or atext.\n *\n * ```markdown\n * > | ab\n * ^\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function open(code) {\n if (asciiAlpha(code)) {\n effects.consume(code);\n return schemeOrEmailAtext;\n }\n if (code === 64) {\n return nok(code);\n }\n return emailAtext(code);\n }\n\n /**\n * At second byte of protocol or atext.\n *\n * ```markdown\n * > | ab\n * ^\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function schemeOrEmailAtext(code) {\n // ASCII alphanumeric and `+`, `-`, and `.`.\n if (code === 43 || code === 45 || code === 46 || asciiAlphanumeric(code)) {\n // Count the previous alphabetical from `open` too.\n size = 1;\n return schemeInsideOrEmailAtext(code);\n }\n return emailAtext(code);\n }\n\n /**\n * In ambiguous protocol or atext.\n *\n * ```markdown\n * > | ab\n * ^\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function schemeInsideOrEmailAtext(code) {\n if (code === 58) {\n effects.consume(code);\n size = 0;\n return urlInside;\n }\n\n // ASCII alphanumeric and `+`, `-`, and `.`.\n if ((code === 43 || code === 45 || code === 46 || asciiAlphanumeric(code)) && size++ < 32) {\n effects.consume(code);\n return schemeInsideOrEmailAtext;\n }\n size = 0;\n return emailAtext(code);\n }\n\n /**\n * After protocol, in URL.\n *\n * ```markdown\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function urlInside(code) {\n if (code === 62) {\n effects.exit(\"autolinkProtocol\");\n effects.enter(\"autolinkMarker\");\n effects.consume(code);\n effects.exit(\"autolinkMarker\");\n effects.exit(\"autolink\");\n return ok;\n }\n\n // ASCII control, space, or `<`.\n if (code === null || code === 32 || code === 60 || asciiControl(code)) {\n return nok(code);\n }\n effects.consume(code);\n return urlInside;\n }\n\n /**\n * In email atext.\n *\n * ```markdown\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function emailAtext(code) {\n if (code === 64) {\n effects.consume(code);\n return emailAtSignOrDot;\n }\n if (asciiAtext(code)) {\n effects.consume(code);\n return emailAtext;\n }\n return nok(code);\n }\n\n /**\n * In label, after at-sign or dot.\n *\n * ```markdown\n * > | ab\n * ^ ^\n * ```\n *\n * @type {State}\n */\n function emailAtSignOrDot(code) {\n return asciiAlphanumeric(code) ? emailLabel(code) : nok(code);\n }\n\n /**\n * In label, where `.` and `>` are allowed.\n *\n * ```markdown\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function emailLabel(code) {\n if (code === 46) {\n effects.consume(code);\n size = 0;\n return emailAtSignOrDot;\n }\n if (code === 62) {\n // Exit, then change the token type.\n effects.exit(\"autolinkProtocol\").type = \"autolinkEmail\";\n effects.enter(\"autolinkMarker\");\n effects.consume(code);\n effects.exit(\"autolinkMarker\");\n effects.exit(\"autolink\");\n return ok;\n }\n return emailValue(code);\n }\n\n /**\n * In label, where `.` and `>` are *not* allowed.\n *\n * Though, this is also used in `emailLabel` to parse other values.\n *\n * ```markdown\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function emailValue(code) {\n // ASCII alphanumeric or `-`.\n if ((code === 45 || asciiAlphanumeric(code)) && size++ < 63) {\n const next = code === 45 ? emailValue : emailLabel;\n effects.consume(code);\n return next;\n }\n return nok(code);\n }\n}","/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { asciiAlpha, asciiAlphanumeric, markdownLineEnding, markdownLineEndingOrSpace, markdownSpace } from 'micromark-util-character';\n/** @type {Construct} */\nexport const htmlText = {\n name: 'htmlText',\n tokenize: tokenizeHtmlText\n};\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeHtmlText(effects, ok, nok) {\n const self = this;\n /** @type {NonNullable | undefined} */\n let marker;\n /** @type {number} */\n let index;\n /** @type {State} */\n let returnState;\n return start;\n\n /**\n * Start of HTML (text).\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter(\"htmlText\");\n effects.enter(\"htmlTextData\");\n effects.consume(code);\n return open;\n }\n\n /**\n * After `<`, at tag name or other stuff.\n *\n * ```markdown\n * > | a c\n * ^\n * > | a c\n * ^\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function open(code) {\n if (code === 33) {\n effects.consume(code);\n return declarationOpen;\n }\n if (code === 47) {\n effects.consume(code);\n return tagCloseStart;\n }\n if (code === 63) {\n effects.consume(code);\n return instruction;\n }\n\n // ASCII alphabetical.\n if (asciiAlpha(code)) {\n effects.consume(code);\n return tagOpen;\n }\n return nok(code);\n }\n\n /**\n * After ` | a c\n * ^\n * > | a c\n * ^\n * > | a &<]]> c\n * ^\n * ```\n *\n * @type {State}\n */\n function declarationOpen(code) {\n if (code === 45) {\n effects.consume(code);\n return commentOpenInside;\n }\n if (code === 91) {\n effects.consume(code);\n index = 0;\n return cdataOpenInside;\n }\n if (asciiAlpha(code)) {\n effects.consume(code);\n return declaration;\n }\n return nok(code);\n }\n\n /**\n * In a comment, after ` | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function commentOpenInside(code) {\n if (code === 45) {\n effects.consume(code);\n return commentEnd;\n }\n return nok(code);\n }\n\n /**\n * In comment.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function comment(code) {\n if (code === null) {\n return nok(code);\n }\n if (code === 45) {\n effects.consume(code);\n return commentClose;\n }\n if (markdownLineEnding(code)) {\n returnState = comment;\n return lineEndingBefore(code);\n }\n effects.consume(code);\n return comment;\n }\n\n /**\n * In comment, after `-`.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function commentClose(code) {\n if (code === 45) {\n effects.consume(code);\n return commentEnd;\n }\n return comment(code);\n }\n\n /**\n * In comment, after `--`.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function commentEnd(code) {\n return code === 62 ? end(code) : code === 45 ? commentClose(code) : comment(code);\n }\n\n /**\n * After ` | a &<]]> b\n * ^^^^^^\n * ```\n *\n * @type {State}\n */\n function cdataOpenInside(code) {\n const value = \"CDATA[\";\n if (code === value.charCodeAt(index++)) {\n effects.consume(code);\n return index === value.length ? cdata : cdataOpenInside;\n }\n return nok(code);\n }\n\n /**\n * In CDATA.\n *\n * ```markdown\n * > | a &<]]> b\n * ^^^\n * ```\n *\n * @type {State}\n */\n function cdata(code) {\n if (code === null) {\n return nok(code);\n }\n if (code === 93) {\n effects.consume(code);\n return cdataClose;\n }\n if (markdownLineEnding(code)) {\n returnState = cdata;\n return lineEndingBefore(code);\n }\n effects.consume(code);\n return cdata;\n }\n\n /**\n * In CDATA, after `]`, at another `]`.\n *\n * ```markdown\n * > | a &<]]> b\n * ^\n * ```\n *\n * @type {State}\n */\n function cdataClose(code) {\n if (code === 93) {\n effects.consume(code);\n return cdataEnd;\n }\n return cdata(code);\n }\n\n /**\n * In CDATA, after `]]`, at `>`.\n *\n * ```markdown\n * > | a &<]]> b\n * ^\n * ```\n *\n * @type {State}\n */\n function cdataEnd(code) {\n if (code === 62) {\n return end(code);\n }\n if (code === 93) {\n effects.consume(code);\n return cdataEnd;\n }\n return cdata(code);\n }\n\n /**\n * In declaration.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function declaration(code) {\n if (code === null || code === 62) {\n return end(code);\n }\n if (markdownLineEnding(code)) {\n returnState = declaration;\n return lineEndingBefore(code);\n }\n effects.consume(code);\n return declaration;\n }\n\n /**\n * In instruction.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function instruction(code) {\n if (code === null) {\n return nok(code);\n }\n if (code === 63) {\n effects.consume(code);\n return instructionClose;\n }\n if (markdownLineEnding(code)) {\n returnState = instruction;\n return lineEndingBefore(code);\n }\n effects.consume(code);\n return instruction;\n }\n\n /**\n * In instruction, after `?`, at `>`.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function instructionClose(code) {\n return code === 62 ? end(code) : instruction(code);\n }\n\n /**\n * After ` | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagCloseStart(code) {\n // ASCII alphabetical.\n if (asciiAlpha(code)) {\n effects.consume(code);\n return tagClose;\n }\n return nok(code);\n }\n\n /**\n * After ` | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagClose(code) {\n // ASCII alphanumerical and `-`.\n if (code === 45 || asciiAlphanumeric(code)) {\n effects.consume(code);\n return tagClose;\n }\n return tagCloseBetween(code);\n }\n\n /**\n * In closing tag, after tag name.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagCloseBetween(code) {\n if (markdownLineEnding(code)) {\n returnState = tagCloseBetween;\n return lineEndingBefore(code);\n }\n if (markdownSpace(code)) {\n effects.consume(code);\n return tagCloseBetween;\n }\n return end(code);\n }\n\n /**\n * After ` | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpen(code) {\n // ASCII alphanumerical and `-`.\n if (code === 45 || asciiAlphanumeric(code)) {\n effects.consume(code);\n return tagOpen;\n }\n if (code === 47 || code === 62 || markdownLineEndingOrSpace(code)) {\n return tagOpenBetween(code);\n }\n return nok(code);\n }\n\n /**\n * In opening tag, after tag name.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenBetween(code) {\n if (code === 47) {\n effects.consume(code);\n return end;\n }\n\n // ASCII alphabetical and `:` and `_`.\n if (code === 58 || code === 95 || asciiAlpha(code)) {\n effects.consume(code);\n return tagOpenAttributeName;\n }\n if (markdownLineEnding(code)) {\n returnState = tagOpenBetween;\n return lineEndingBefore(code);\n }\n if (markdownSpace(code)) {\n effects.consume(code);\n return tagOpenBetween;\n }\n return end(code);\n }\n\n /**\n * In attribute name.\n *\n * ```markdown\n * > | a d\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeName(code) {\n // ASCII alphabetical and `-`, `.`, `:`, and `_`.\n if (code === 45 || code === 46 || code === 58 || code === 95 || asciiAlphanumeric(code)) {\n effects.consume(code);\n return tagOpenAttributeName;\n }\n return tagOpenAttributeNameAfter(code);\n }\n\n /**\n * After attribute name, before initializer, the end of the tag, or\n * whitespace.\n *\n * ```markdown\n * > | a d\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeNameAfter(code) {\n if (code === 61) {\n effects.consume(code);\n return tagOpenAttributeValueBefore;\n }\n if (markdownLineEnding(code)) {\n returnState = tagOpenAttributeNameAfter;\n return lineEndingBefore(code);\n }\n if (markdownSpace(code)) {\n effects.consume(code);\n return tagOpenAttributeNameAfter;\n }\n return tagOpenBetween(code);\n }\n\n /**\n * Before unquoted, double quoted, or single quoted attribute value, allowing\n * whitespace.\n *\n * ```markdown\n * > | a e\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeValueBefore(code) {\n if (code === null || code === 60 || code === 61 || code === 62 || code === 96) {\n return nok(code);\n }\n if (code === 34 || code === 39) {\n effects.consume(code);\n marker = code;\n return tagOpenAttributeValueQuoted;\n }\n if (markdownLineEnding(code)) {\n returnState = tagOpenAttributeValueBefore;\n return lineEndingBefore(code);\n }\n if (markdownSpace(code)) {\n effects.consume(code);\n return tagOpenAttributeValueBefore;\n }\n effects.consume(code);\n return tagOpenAttributeValueUnquoted;\n }\n\n /**\n * In double or single quoted attribute value.\n *\n * ```markdown\n * > | a e\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeValueQuoted(code) {\n if (code === marker) {\n effects.consume(code);\n marker = undefined;\n return tagOpenAttributeValueQuotedAfter;\n }\n if (code === null) {\n return nok(code);\n }\n if (markdownLineEnding(code)) {\n returnState = tagOpenAttributeValueQuoted;\n return lineEndingBefore(code);\n }\n effects.consume(code);\n return tagOpenAttributeValueQuoted;\n }\n\n /**\n * In unquoted attribute value.\n *\n * ```markdown\n * > | a e\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeValueUnquoted(code) {\n if (code === null || code === 34 || code === 39 || code === 60 || code === 61 || code === 96) {\n return nok(code);\n }\n if (code === 47 || code === 62 || markdownLineEndingOrSpace(code)) {\n return tagOpenBetween(code);\n }\n effects.consume(code);\n return tagOpenAttributeValueUnquoted;\n }\n\n /**\n * After double or single quoted attribute value, before whitespace or the end\n * of the tag.\n *\n * ```markdown\n * > | a e\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeValueQuotedAfter(code) {\n if (code === 47 || code === 62 || markdownLineEndingOrSpace(code)) {\n return tagOpenBetween(code);\n }\n return nok(code);\n }\n\n /**\n * In certain circumstances of a tag where only an `>` is allowed.\n *\n * ```markdown\n * > | a e\n * ^\n * ```\n *\n * @type {State}\n */\n function end(code) {\n if (code === 62) {\n effects.consume(code);\n effects.exit(\"htmlTextData\");\n effects.exit(\"htmlText\");\n return ok;\n }\n return nok(code);\n }\n\n /**\n * At eol.\n *\n * > 👉 **Note**: we can’t have blank lines in text, so no need to worry about\n * > empty tokens.\n *\n * ```markdown\n * > | a \n * ```\n *\n * @type {State}\n */\n function lineEndingBefore(code) {\n effects.exit(\"htmlTextData\");\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n return lineEndingAfter;\n }\n\n /**\n * After eol, at optional whitespace.\n *\n * > 👉 **Note**: we can’t have blank lines in text, so no need to worry about\n * > empty tokens.\n *\n * ```markdown\n * | a \n * ^\n * ```\n *\n * @type {State}\n */\n function lineEndingAfter(code) {\n // Always populated by defaults.\n\n return markdownSpace(code) ? factorySpace(effects, lineEndingAfterPrefix, \"linePrefix\", self.parser.constructs.disable.null.includes('codeIndented') ? undefined : 4)(code) : lineEndingAfterPrefix(code);\n }\n\n /**\n * After eol, after optional whitespace.\n *\n * > 👉 **Note**: we can’t have blank lines in text, so no need to worry about\n * > empty tokens.\n *\n * ```markdown\n * | a \n * ^\n * ```\n *\n * @type {State}\n */\n function lineEndingAfterPrefix(code) {\n effects.enter(\"htmlTextData\");\n return returnState(code);\n }\n}","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport { labelEnd } from './label-end.js';\n\n/** @type {Construct} */\nexport const labelStartLink = {\n name: 'labelStartLink',\n tokenize: tokenizeLabelStartLink,\n resolveAll: labelEnd.resolveAll\n};\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeLabelStartLink(effects, ok, nok) {\n const self = this;\n return start;\n\n /**\n * Start of label (link) start.\n *\n * ```markdown\n * > | a [b] c\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter(\"labelLink\");\n effects.enter(\"labelMarker\");\n effects.consume(code);\n effects.exit(\"labelMarker\");\n effects.exit(\"labelLink\");\n return after;\n }\n\n /** @type {State} */\n function after(code) {\n // To do: this isn’t needed in `micromark-extension-gfm-footnote`,\n // remove.\n // Hidden footnotes hook.\n /* c8 ignore next 3 */\n return code === 94 && '_hiddenFootnoteSupport' in self.parser.constructs ? nok(code) : ok(code);\n }\n}","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport { markdownLineEnding } from 'micromark-util-character';\n/** @type {Construct} */\nexport const hardBreakEscape = {\n name: 'hardBreakEscape',\n tokenize: tokenizeHardBreakEscape\n};\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeHardBreakEscape(effects, ok, nok) {\n return start;\n\n /**\n * Start of a hard break (escape).\n *\n * ```markdown\n * > | a\\\n * ^\n * | b\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter(\"hardBreakEscape\");\n effects.consume(code);\n return after;\n }\n\n /**\n * After `\\`, at eol.\n *\n * ```markdown\n * > | a\\\n * ^\n * | b\n * ```\n *\n * @type {State}\n */\n function after(code) {\n if (markdownLineEnding(code)) {\n effects.exit(\"hardBreakEscape\");\n return ok(code);\n }\n return nok(code);\n }\n}","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Previous} Previous\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport { markdownLineEnding } from 'micromark-util-character';\n/** @type {Construct} */\nexport const codeText = {\n name: 'codeText',\n tokenize: tokenizeCodeText,\n resolve: resolveCodeText,\n previous\n};\n\n// To do: next major: don’t resolve, like `markdown-rs`.\n/** @type {Resolver} */\nfunction resolveCodeText(events) {\n let tailExitIndex = events.length - 4;\n let headEnterIndex = 3;\n /** @type {number} */\n let index;\n /** @type {number | undefined} */\n let enter;\n\n // If we start and end with an EOL or a space.\n if ((events[headEnterIndex][1].type === \"lineEnding\" || events[headEnterIndex][1].type === 'space') && (events[tailExitIndex][1].type === \"lineEnding\" || events[tailExitIndex][1].type === 'space')) {\n index = headEnterIndex;\n\n // And we have data.\n while (++index < tailExitIndex) {\n if (events[index][1].type === \"codeTextData\") {\n // Then we have padding.\n events[headEnterIndex][1].type = \"codeTextPadding\";\n events[tailExitIndex][1].type = \"codeTextPadding\";\n headEnterIndex += 2;\n tailExitIndex -= 2;\n break;\n }\n }\n }\n\n // Merge adjacent spaces and data.\n index = headEnterIndex - 1;\n tailExitIndex++;\n while (++index <= tailExitIndex) {\n if (enter === undefined) {\n if (index !== tailExitIndex && events[index][1].type !== \"lineEnding\") {\n enter = index;\n }\n } else if (index === tailExitIndex || events[index][1].type === \"lineEnding\") {\n events[enter][1].type = \"codeTextData\";\n if (index !== enter + 2) {\n events[enter][1].end = events[index - 1][1].end;\n events.splice(enter + 2, index - enter - 2);\n tailExitIndex -= index - enter - 2;\n index = enter + 2;\n }\n enter = undefined;\n }\n }\n return events;\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Previous}\n */\nfunction previous(code) {\n // If there is a previous code, there will always be a tail.\n return code !== 96 || this.events[this.events.length - 1][1].type === \"characterEscape\";\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeCodeText(effects, ok, nok) {\n const self = this;\n let sizeOpen = 0;\n /** @type {number} */\n let size;\n /** @type {Token} */\n let token;\n return start;\n\n /**\n * Start of code (text).\n *\n * ```markdown\n * > | `a`\n * ^\n * > | \\`a`\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter(\"codeText\");\n effects.enter(\"codeTextSequence\");\n return sequenceOpen(code);\n }\n\n /**\n * In opening sequence.\n *\n * ```markdown\n * > | `a`\n * ^\n * ```\n *\n * @type {State}\n */\n function sequenceOpen(code) {\n if (code === 96) {\n effects.consume(code);\n sizeOpen++;\n return sequenceOpen;\n }\n effects.exit(\"codeTextSequence\");\n return between(code);\n }\n\n /**\n * Between something and something else.\n *\n * ```markdown\n * > | `a`\n * ^^\n * ```\n *\n * @type {State}\n */\n function between(code) {\n // EOF.\n if (code === null) {\n return nok(code);\n }\n\n // To do: next major: don’t do spaces in resolve, but when compiling,\n // like `markdown-rs`.\n // Tabs don’t work, and virtual spaces don’t make sense.\n if (code === 32) {\n effects.enter('space');\n effects.consume(code);\n effects.exit('space');\n return between;\n }\n\n // Closing fence? Could also be data.\n if (code === 96) {\n token = effects.enter(\"codeTextSequence\");\n size = 0;\n return sequenceClose(code);\n }\n if (markdownLineEnding(code)) {\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n return between;\n }\n\n // Data.\n effects.enter(\"codeTextData\");\n return data(code);\n }\n\n /**\n * In data.\n *\n * ```markdown\n * > | `a`\n * ^\n * ```\n *\n * @type {State}\n */\n function data(code) {\n if (code === null || code === 32 || code === 96 || markdownLineEnding(code)) {\n effects.exit(\"codeTextData\");\n return between(code);\n }\n effects.consume(code);\n return data;\n }\n\n /**\n * In closing sequence.\n *\n * ```markdown\n * > | `a`\n * ^\n * ```\n *\n * @type {State}\n */\n function sequenceClose(code) {\n // More.\n if (code === 96) {\n effects.consume(code);\n size++;\n return sequenceClose;\n }\n\n // Done!\n if (size === sizeOpen) {\n effects.exit(\"codeTextSequence\");\n effects.exit(\"codeText\");\n return ok(code);\n }\n\n // More or less accents: mark as data.\n token.type = \"codeTextData\";\n return data(code);\n }\n}","/**\n * @typedef {import('micromark-util-types').Extension} Extension\n */\n\nimport {\n attention,\n autolink,\n blockQuote,\n characterEscape,\n characterReference,\n codeFenced,\n codeIndented,\n codeText,\n definition,\n hardBreakEscape,\n headingAtx,\n htmlFlow,\n htmlText,\n labelEnd,\n labelStartImage,\n labelStartLink,\n lineEnding,\n list,\n setextUnderline,\n thematicBreak\n} from 'micromark-core-commonmark'\nimport {resolver as resolveText} from './initialize/text.js'\n\n/** @satisfies {Extension['document']} */\nexport const document = {\n [42]: list,\n [43]: list,\n [45]: list,\n [48]: list,\n [49]: list,\n [50]: list,\n [51]: list,\n [52]: list,\n [53]: list,\n [54]: list,\n [55]: list,\n [56]: list,\n [57]: list,\n [62]: blockQuote\n}\n\n/** @satisfies {Extension['contentInitial']} */\nexport const contentInitial = {\n [91]: definition\n}\n\n/** @satisfies {Extension['flowInitial']} */\nexport const flowInitial = {\n [-2]: codeIndented,\n [-1]: codeIndented,\n [32]: codeIndented\n}\n\n/** @satisfies {Extension['flow']} */\nexport const flow = {\n [35]: headingAtx,\n [42]: thematicBreak,\n [45]: [setextUnderline, thematicBreak],\n [60]: htmlFlow,\n [61]: setextUnderline,\n [95]: thematicBreak,\n [96]: codeFenced,\n [126]: codeFenced\n}\n\n/** @satisfies {Extension['string']} */\nexport const string = {\n [38]: characterReference,\n [92]: characterEscape\n}\n\n/** @satisfies {Extension['text']} */\nexport const text = {\n [-5]: lineEnding,\n [-4]: lineEnding,\n [-3]: lineEnding,\n [33]: labelStartImage,\n [38]: characterReference,\n [42]: attention,\n [60]: [autolink, htmlText],\n [91]: labelStartLink,\n [92]: [hardBreakEscape, characterEscape],\n [93]: labelEnd,\n [95]: attention,\n [96]: codeText\n}\n\n/** @satisfies {Extension['insideSpan']} */\nexport const insideSpan = {\n null: [attention, resolveText]\n}\n\n/** @satisfies {Extension['attentionMarkers']} */\nexport const attentionMarkers = {\n null: [42, 95]\n}\n\n/** @satisfies {Extension['disable']} */\nexport const disable = {\n null: []\n}\n","/**\n * @typedef {import('micromark-util-types').Create} Create\n * @typedef {import('micromark-util-types').FullNormalizedExtension} FullNormalizedExtension\n * @typedef {import('micromark-util-types').InitialConstruct} InitialConstruct\n * @typedef {import('micromark-util-types').ParseContext} ParseContext\n * @typedef {import('micromark-util-types').ParseOptions} ParseOptions\n */\n\nimport {combineExtensions} from 'micromark-util-combine-extensions'\nimport {content} from './initialize/content.js'\nimport {document} from './initialize/document.js'\nimport {flow} from './initialize/flow.js'\nimport {string, text} from './initialize/text.js'\nimport {createTokenizer} from './create-tokenizer.js'\nimport * as defaultConstructs from './constructs.js'\n\n/**\n * @param {ParseOptions | null | undefined} [options]\n * @returns {ParseContext}\n */\nexport function parse(options) {\n const settings = options || {}\n const constructs =\n /** @type {FullNormalizedExtension} */\n combineExtensions([defaultConstructs, ...(settings.extensions || [])])\n\n /** @type {ParseContext} */\n const parser = {\n defined: [],\n lazy: {},\n constructs,\n content: create(content),\n document: create(document),\n flow: create(flow),\n string: create(string),\n text: create(text)\n }\n return parser\n\n /**\n * @param {InitialConstruct} initial\n */\n function create(initial) {\n return creator\n /** @type {Create} */\n function creator(from) {\n return createTokenizer(parser, initial, from)\n }\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Chunk} Chunk\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Encoding} Encoding\n * @typedef {import('micromark-util-types').Value} Value\n */\n\n/**\n * @callback Preprocessor\n * @param {Value} value\n * @param {Encoding | null | undefined} [encoding]\n * @param {boolean | null | undefined} [end=false]\n * @returns {Array}\n */\n\nconst search = /[\\0\\t\\n\\r]/g\n\n/**\n * @returns {Preprocessor}\n */\nexport function preprocess() {\n let column = 1\n let buffer = ''\n /** @type {boolean | undefined} */\n let start = true\n /** @type {boolean | undefined} */\n let atCarriageReturn\n return preprocessor\n\n /** @type {Preprocessor} */\n // eslint-disable-next-line complexity\n function preprocessor(value, encoding, end) {\n /** @type {Array} */\n const chunks = []\n /** @type {RegExpMatchArray | null} */\n let match\n /** @type {number} */\n let next\n /** @type {number} */\n let startPosition\n /** @type {number} */\n let endPosition\n /** @type {Code} */\n let code\n value =\n buffer +\n (typeof value === 'string'\n ? value.toString()\n : new TextDecoder(encoding || undefined).decode(value))\n startPosition = 0\n buffer = ''\n if (start) {\n // To do: `markdown-rs` actually parses BOMs (byte order mark).\n if (value.charCodeAt(0) === 65279) {\n startPosition++\n }\n start = undefined\n }\n while (startPosition < value.length) {\n search.lastIndex = startPosition\n match = search.exec(value)\n endPosition =\n match && match.index !== undefined ? match.index : value.length\n code = value.charCodeAt(endPosition)\n if (!match) {\n buffer = value.slice(startPosition)\n break\n }\n if (code === 10 && startPosition === endPosition && atCarriageReturn) {\n chunks.push(-3)\n atCarriageReturn = undefined\n } else {\n if (atCarriageReturn) {\n chunks.push(-5)\n atCarriageReturn = undefined\n }\n if (startPosition < endPosition) {\n chunks.push(value.slice(startPosition, endPosition))\n column += endPosition - startPosition\n }\n switch (code) {\n case 0: {\n chunks.push(65533)\n column++\n break\n }\n case 9: {\n next = Math.ceil(column / 4) * 4\n chunks.push(-2)\n while (column++ < next) chunks.push(-1)\n break\n }\n case 10: {\n chunks.push(-4)\n column = 1\n break\n }\n default: {\n atCarriageReturn = true\n column = 1\n }\n }\n }\n startPosition = endPosition + 1\n }\n if (end) {\n if (atCarriageReturn) chunks.push(-5)\n if (buffer) chunks.push(buffer)\n chunks.push(null)\n }\n return chunks\n }\n}\n","/**\n * Turn the number (in string form as either hexa- or plain decimal) coming from\n * a numeric character reference into a character.\n *\n * Sort of like `String.fromCodePoint(Number.parseInt(value, base))`, but makes\n * non-characters and control characters safe.\n *\n * @param {string} value\n * Value to decode.\n * @param {number} base\n * Numeric base.\n * @returns {string}\n * Character.\n */\nexport function decodeNumericCharacterReference(value, base) {\n const code = Number.parseInt(value, base);\n if (\n // C0 except for HT, LF, FF, CR, space.\n code < 9 || code === 11 || code > 13 && code < 32 ||\n // Control character (DEL) of C0, and C1 controls.\n code > 126 && code < 160 ||\n // Lone high surrogates and low surrogates.\n code > 55_295 && code < 57_344 ||\n // Noncharacters.\n code > 64_975 && code < 65_008 || /* eslint-disable no-bitwise */\n (code & 65_535) === 65_535 || (code & 65_535) === 65_534 || /* eslint-enable no-bitwise */\n // Out of range\n code > 1_114_111) {\n return \"\\uFFFD\";\n }\n return String.fromCodePoint(code);\n}","import {decodeNamedCharacterReference} from 'decode-named-character-reference'\nimport {decodeNumericCharacterReference} from 'micromark-util-decode-numeric-character-reference'\nconst characterEscapeOrReference =\n /\\\\([!-/:-@[-`{-~])|&(#(?:\\d{1,7}|x[\\da-f]{1,6})|[\\da-z]{1,31});/gi\n\n/**\n * Decode markdown strings (which occur in places such as fenced code info\n * strings, destinations, labels, and titles).\n *\n * The “string” content type allows character escapes and -references.\n * This decodes those.\n *\n * @param {string} value\n * Value to decode.\n * @returns {string}\n * Decoded value.\n */\nexport function decodeString(value) {\n return value.replace(characterEscapeOrReference, decode)\n}\n\n/**\n * @param {string} $0\n * @param {string} $1\n * @param {string} $2\n * @returns {string}\n */\nfunction decode($0, $1, $2) {\n if ($1) {\n // Escape.\n return $1\n }\n\n // Reference.\n const head = $2.charCodeAt(0)\n if (head === 35) {\n const head = $2.charCodeAt(1)\n const hex = head === 120 || head === 88\n return decodeNumericCharacterReference($2.slice(hex ? 2 : 1), hex ? 16 : 10)\n }\n return decodeNamedCharacterReference($2) || $0\n}\n","/**\n * @typedef {import('mdast').Break} Break\n * @typedef {import('mdast').Blockquote} Blockquote\n * @typedef {import('mdast').Code} Code\n * @typedef {import('mdast').Definition} Definition\n * @typedef {import('mdast').Emphasis} Emphasis\n * @typedef {import('mdast').Heading} Heading\n * @typedef {import('mdast').Html} Html\n * @typedef {import('mdast').Image} Image\n * @typedef {import('mdast').InlineCode} InlineCode\n * @typedef {import('mdast').Link} Link\n * @typedef {import('mdast').List} List\n * @typedef {import('mdast').ListItem} ListItem\n * @typedef {import('mdast').Nodes} Nodes\n * @typedef {import('mdast').Paragraph} Paragraph\n * @typedef {import('mdast').Parent} Parent\n * @typedef {import('mdast').PhrasingContent} PhrasingContent\n * @typedef {import('mdast').ReferenceType} ReferenceType\n * @typedef {import('mdast').Root} Root\n * @typedef {import('mdast').Strong} Strong\n * @typedef {import('mdast').Text} Text\n * @typedef {import('mdast').ThematicBreak} ThematicBreak\n *\n * @typedef {import('micromark-util-types').Encoding} Encoding\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').ParseOptions} ParseOptions\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Value} Value\n *\n * @typedef {import('unist').Point} Point\n *\n * @typedef {import('../index.js').CompileData} CompileData\n */\n\n/**\n * @typedef {Omit & {type: 'fragment', children: Array}} Fragment\n */\n\n/**\n * @callback Transform\n * Extra transform, to change the AST afterwards.\n * @param {Root} tree\n * Tree to transform.\n * @returns {Root | null | undefined | void}\n * New tree or nothing (in which case the current tree is used).\n *\n * @callback Handle\n * Handle a token.\n * @param {CompileContext} this\n * Context.\n * @param {Token} token\n * Current token.\n * @returns {undefined | void}\n * Nothing.\n *\n * @typedef {Record} Handles\n * Token types mapping to handles\n *\n * @callback OnEnterError\n * Handle the case where the `right` token is open, but it is closed (by the\n * `left` token) or because we reached the end of the document.\n * @param {Omit} this\n * Context.\n * @param {Token | undefined} left\n * Left token.\n * @param {Token} right\n * Right token.\n * @returns {undefined}\n * Nothing.\n *\n * @callback OnExitError\n * Handle the case where the `right` token is open but it is closed by\n * exiting the `left` token.\n * @param {Omit} this\n * Context.\n * @param {Token} left\n * Left token.\n * @param {Token} right\n * Right token.\n * @returns {undefined}\n * Nothing.\n *\n * @typedef {[Token, OnEnterError | undefined]} TokenTuple\n * Open token on the stack, with an optional error handler for when\n * that token isn’t closed properly.\n */\n\n/**\n * @typedef Config\n * Configuration.\n *\n * We have our defaults, but extensions will add more.\n * @property {Array} canContainEols\n * Token types where line endings are used.\n * @property {Handles} enter\n * Opening handles.\n * @property {Handles} exit\n * Closing handles.\n * @property {Array} transforms\n * Tree transforms.\n *\n * @typedef {Partial} Extension\n * Change how markdown tokens from micromark are turned into mdast.\n *\n * @typedef CompileContext\n * mdast compiler context.\n * @property {Array} stack\n * Stack of nodes.\n * @property {Array} tokenStack\n * Stack of tokens.\n * @property {(this: CompileContext) => undefined} buffer\n * Capture some of the output data.\n * @property {(this: CompileContext) => string} resume\n * Stop capturing and access the output data.\n * @property {(this: CompileContext, node: Nodes, token: Token, onError?: OnEnterError) => undefined} enter\n * Enter a node.\n * @property {(this: CompileContext, token: Token, onError?: OnExitError) => undefined} exit\n * Exit a node.\n * @property {TokenizeContext['sliceSerialize']} sliceSerialize\n * Get the string value of a token.\n * @property {Config} config\n * Configuration.\n * @property {CompileData} data\n * Info passed around; key/value store.\n *\n * @typedef FromMarkdownOptions\n * Configuration for how to build mdast.\n * @property {Array> | null | undefined} [mdastExtensions]\n * Extensions for this utility to change how tokens are turned into a tree.\n *\n * @typedef {ParseOptions & FromMarkdownOptions} Options\n * Configuration.\n */\n\nimport { toString } from 'mdast-util-to-string';\nimport { parse, postprocess, preprocess } from 'micromark';\nimport { decodeNumericCharacterReference } from 'micromark-util-decode-numeric-character-reference';\nimport { decodeString } from 'micromark-util-decode-string';\nimport { normalizeIdentifier } from 'micromark-util-normalize-identifier';\nimport { decodeNamedCharacterReference } from 'decode-named-character-reference';\nimport { stringifyPosition } from 'unist-util-stringify-position';\nconst own = {}.hasOwnProperty;\n\n/**\n * Turn markdown into a syntax tree.\n *\n * @overload\n * @param {Value} value\n * @param {Encoding | null | undefined} [encoding]\n * @param {Options | null | undefined} [options]\n * @returns {Root}\n *\n * @overload\n * @param {Value} value\n * @param {Options | null | undefined} [options]\n * @returns {Root}\n *\n * @param {Value} value\n * Markdown to parse.\n * @param {Encoding | Options | null | undefined} [encoding]\n * Character encoding for when `value` is `Buffer`.\n * @param {Options | null | undefined} [options]\n * Configuration.\n * @returns {Root}\n * mdast tree.\n */\nexport function fromMarkdown(value, encoding, options) {\n if (typeof encoding !== 'string') {\n options = encoding;\n encoding = undefined;\n }\n return compiler(options)(postprocess(parse(options).document().write(preprocess()(value, encoding, true))));\n}\n\n/**\n * Note this compiler only understand complete buffering, not streaming.\n *\n * @param {Options | null | undefined} [options]\n */\nfunction compiler(options) {\n /** @type {Config} */\n const config = {\n transforms: [],\n canContainEols: ['emphasis', 'fragment', 'heading', 'paragraph', 'strong'],\n enter: {\n autolink: opener(link),\n autolinkProtocol: onenterdata,\n autolinkEmail: onenterdata,\n atxHeading: opener(heading),\n blockQuote: opener(blockQuote),\n characterEscape: onenterdata,\n characterReference: onenterdata,\n codeFenced: opener(codeFlow),\n codeFencedFenceInfo: buffer,\n codeFencedFenceMeta: buffer,\n codeIndented: opener(codeFlow, buffer),\n codeText: opener(codeText, buffer),\n codeTextData: onenterdata,\n data: onenterdata,\n codeFlowValue: onenterdata,\n definition: opener(definition),\n definitionDestinationString: buffer,\n definitionLabelString: buffer,\n definitionTitleString: buffer,\n emphasis: opener(emphasis),\n hardBreakEscape: opener(hardBreak),\n hardBreakTrailing: opener(hardBreak),\n htmlFlow: opener(html, buffer),\n htmlFlowData: onenterdata,\n htmlText: opener(html, buffer),\n htmlTextData: onenterdata,\n image: opener(image),\n label: buffer,\n link: opener(link),\n listItem: opener(listItem),\n listItemValue: onenterlistitemvalue,\n listOrdered: opener(list, onenterlistordered),\n listUnordered: opener(list),\n paragraph: opener(paragraph),\n reference: onenterreference,\n referenceString: buffer,\n resourceDestinationString: buffer,\n resourceTitleString: buffer,\n setextHeading: opener(heading),\n strong: opener(strong),\n thematicBreak: opener(thematicBreak)\n },\n exit: {\n atxHeading: closer(),\n atxHeadingSequence: onexitatxheadingsequence,\n autolink: closer(),\n autolinkEmail: onexitautolinkemail,\n autolinkProtocol: onexitautolinkprotocol,\n blockQuote: closer(),\n characterEscapeValue: onexitdata,\n characterReferenceMarkerHexadecimal: onexitcharacterreferencemarker,\n characterReferenceMarkerNumeric: onexitcharacterreferencemarker,\n characterReferenceValue: onexitcharacterreferencevalue,\n characterReference: onexitcharacterreference,\n codeFenced: closer(onexitcodefenced),\n codeFencedFence: onexitcodefencedfence,\n codeFencedFenceInfo: onexitcodefencedfenceinfo,\n codeFencedFenceMeta: onexitcodefencedfencemeta,\n codeFlowValue: onexitdata,\n codeIndented: closer(onexitcodeindented),\n codeText: closer(onexitcodetext),\n codeTextData: onexitdata,\n data: onexitdata,\n definition: closer(),\n definitionDestinationString: onexitdefinitiondestinationstring,\n definitionLabelString: onexitdefinitionlabelstring,\n definitionTitleString: onexitdefinitiontitlestring,\n emphasis: closer(),\n hardBreakEscape: closer(onexithardbreak),\n hardBreakTrailing: closer(onexithardbreak),\n htmlFlow: closer(onexithtmlflow),\n htmlFlowData: onexitdata,\n htmlText: closer(onexithtmltext),\n htmlTextData: onexitdata,\n image: closer(onexitimage),\n label: onexitlabel,\n labelText: onexitlabeltext,\n lineEnding: onexitlineending,\n link: closer(onexitlink),\n listItem: closer(),\n listOrdered: closer(),\n listUnordered: closer(),\n paragraph: closer(),\n referenceString: onexitreferencestring,\n resourceDestinationString: onexitresourcedestinationstring,\n resourceTitleString: onexitresourcetitlestring,\n resource: onexitresource,\n setextHeading: closer(onexitsetextheading),\n setextHeadingLineSequence: onexitsetextheadinglinesequence,\n setextHeadingText: onexitsetextheadingtext,\n strong: closer(),\n thematicBreak: closer()\n }\n };\n configure(config, (options || {}).mdastExtensions || []);\n\n /** @type {CompileData} */\n const data = {};\n return compile;\n\n /**\n * Turn micromark events into an mdast tree.\n *\n * @param {Array} events\n * Events.\n * @returns {Root}\n * mdast tree.\n */\n function compile(events) {\n /** @type {Root} */\n let tree = {\n type: 'root',\n children: []\n };\n /** @type {Omit} */\n const context = {\n stack: [tree],\n tokenStack: [],\n config,\n enter,\n exit,\n buffer,\n resume,\n data\n };\n /** @type {Array} */\n const listStack = [];\n let index = -1;\n while (++index < events.length) {\n // We preprocess lists to add `listItem` tokens, and to infer whether\n // items the list itself are spread out.\n if (events[index][1].type === \"listOrdered\" || events[index][1].type === \"listUnordered\") {\n if (events[index][0] === 'enter') {\n listStack.push(index);\n } else {\n const tail = listStack.pop();\n index = prepareList(events, tail, index);\n }\n }\n }\n index = -1;\n while (++index < events.length) {\n const handler = config[events[index][0]];\n if (own.call(handler, events[index][1].type)) {\n handler[events[index][1].type].call(Object.assign({\n sliceSerialize: events[index][2].sliceSerialize\n }, context), events[index][1]);\n }\n }\n\n // Handle tokens still being open.\n if (context.tokenStack.length > 0) {\n const tail = context.tokenStack[context.tokenStack.length - 1];\n const handler = tail[1] || defaultOnError;\n handler.call(context, undefined, tail[0]);\n }\n\n // Figure out `root` position.\n tree.position = {\n start: point(events.length > 0 ? events[0][1].start : {\n line: 1,\n column: 1,\n offset: 0\n }),\n end: point(events.length > 0 ? events[events.length - 2][1].end : {\n line: 1,\n column: 1,\n offset: 0\n })\n };\n\n // Call transforms.\n index = -1;\n while (++index < config.transforms.length) {\n tree = config.transforms[index](tree) || tree;\n }\n return tree;\n }\n\n /**\n * @param {Array} events\n * @param {number} start\n * @param {number} length\n * @returns {number}\n */\n function prepareList(events, start, length) {\n let index = start - 1;\n let containerBalance = -1;\n let listSpread = false;\n /** @type {Token | undefined} */\n let listItem;\n /** @type {number | undefined} */\n let lineIndex;\n /** @type {number | undefined} */\n let firstBlankLineIndex;\n /** @type {boolean | undefined} */\n let atMarker;\n while (++index <= length) {\n const event = events[index];\n switch (event[1].type) {\n case \"listUnordered\":\n case \"listOrdered\":\n case \"blockQuote\":\n {\n if (event[0] === 'enter') {\n containerBalance++;\n } else {\n containerBalance--;\n }\n atMarker = undefined;\n break;\n }\n case \"lineEndingBlank\":\n {\n if (event[0] === 'enter') {\n if (listItem && !atMarker && !containerBalance && !firstBlankLineIndex) {\n firstBlankLineIndex = index;\n }\n atMarker = undefined;\n }\n break;\n }\n case \"linePrefix\":\n case \"listItemValue\":\n case \"listItemMarker\":\n case \"listItemPrefix\":\n case \"listItemPrefixWhitespace\":\n {\n // Empty.\n\n break;\n }\n default:\n {\n atMarker = undefined;\n }\n }\n if (!containerBalance && event[0] === 'enter' && event[1].type === \"listItemPrefix\" || containerBalance === -1 && event[0] === 'exit' && (event[1].type === \"listUnordered\" || event[1].type === \"listOrdered\")) {\n if (listItem) {\n let tailIndex = index;\n lineIndex = undefined;\n while (tailIndex--) {\n const tailEvent = events[tailIndex];\n if (tailEvent[1].type === \"lineEnding\" || tailEvent[1].type === \"lineEndingBlank\") {\n if (tailEvent[0] === 'exit') continue;\n if (lineIndex) {\n events[lineIndex][1].type = \"lineEndingBlank\";\n listSpread = true;\n }\n tailEvent[1].type = \"lineEnding\";\n lineIndex = tailIndex;\n } else if (tailEvent[1].type === \"linePrefix\" || tailEvent[1].type === \"blockQuotePrefix\" || tailEvent[1].type === \"blockQuotePrefixWhitespace\" || tailEvent[1].type === \"blockQuoteMarker\" || tailEvent[1].type === \"listItemIndent\") {\n // Empty\n } else {\n break;\n }\n }\n if (firstBlankLineIndex && (!lineIndex || firstBlankLineIndex < lineIndex)) {\n listItem._spread = true;\n }\n\n // Fix position.\n listItem.end = Object.assign({}, lineIndex ? events[lineIndex][1].start : event[1].end);\n events.splice(lineIndex || index, 0, ['exit', listItem, event[2]]);\n index++;\n length++;\n }\n\n // Create a new list item.\n if (event[1].type === \"listItemPrefix\") {\n /** @type {Token} */\n const item = {\n type: 'listItem',\n _spread: false,\n start: Object.assign({}, event[1].start),\n // @ts-expect-error: we’ll add `end` in a second.\n end: undefined\n };\n listItem = item;\n events.splice(index, 0, ['enter', item, event[2]]);\n index++;\n length++;\n firstBlankLineIndex = undefined;\n atMarker = true;\n }\n }\n }\n events[start][1]._spread = listSpread;\n return length;\n }\n\n /**\n * Create an opener handle.\n *\n * @param {(token: Token) => Nodes} create\n * Create a node.\n * @param {Handle | undefined} [and]\n * Optional function to also run.\n * @returns {Handle}\n * Handle.\n */\n function opener(create, and) {\n return open;\n\n /**\n * @this {CompileContext}\n * @param {Token} token\n * @returns {undefined}\n */\n function open(token) {\n enter.call(this, create(token), token);\n if (and) and.call(this, token);\n }\n }\n\n /**\n * @this {CompileContext}\n * @returns {undefined}\n */\n function buffer() {\n this.stack.push({\n type: 'fragment',\n children: []\n });\n }\n\n /**\n * @this {CompileContext}\n * Context.\n * @param {Nodes} node\n * Node to enter.\n * @param {Token} token\n * Corresponding token.\n * @param {OnEnterError | undefined} [errorHandler]\n * Handle the case where this token is open, but it is closed by something else.\n * @returns {undefined}\n * Nothing.\n */\n function enter(node, token, errorHandler) {\n const parent = this.stack[this.stack.length - 1];\n /** @type {Array} */\n const siblings = parent.children;\n siblings.push(node);\n this.stack.push(node);\n this.tokenStack.push([token, errorHandler]);\n node.position = {\n start: point(token.start),\n // @ts-expect-error: `end` will be patched later.\n end: undefined\n };\n }\n\n /**\n * Create a closer handle.\n *\n * @param {Handle | undefined} [and]\n * Optional function to also run.\n * @returns {Handle}\n * Handle.\n */\n function closer(and) {\n return close;\n\n /**\n * @this {CompileContext}\n * @param {Token} token\n * @returns {undefined}\n */\n function close(token) {\n if (and) and.call(this, token);\n exit.call(this, token);\n }\n }\n\n /**\n * @this {CompileContext}\n * Context.\n * @param {Token} token\n * Corresponding token.\n * @param {OnExitError | undefined} [onExitError]\n * Handle the case where another token is open.\n * @returns {undefined}\n * Nothing.\n */\n function exit(token, onExitError) {\n const node = this.stack.pop();\n const open = this.tokenStack.pop();\n if (!open) {\n throw new Error('Cannot close `' + token.type + '` (' + stringifyPosition({\n start: token.start,\n end: token.end\n }) + '): it’s not open');\n } else if (open[0].type !== token.type) {\n if (onExitError) {\n onExitError.call(this, token, open[0]);\n } else {\n const handler = open[1] || defaultOnError;\n handler.call(this, token, open[0]);\n }\n }\n node.position.end = point(token.end);\n }\n\n /**\n * @this {CompileContext}\n * @returns {string}\n */\n function resume() {\n return toString(this.stack.pop());\n }\n\n //\n // Handlers.\n //\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onenterlistordered() {\n this.data.expectingFirstListItemValue = true;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onenterlistitemvalue(token) {\n if (this.data.expectingFirstListItemValue) {\n const ancestor = this.stack[this.stack.length - 2];\n ancestor.start = Number.parseInt(this.sliceSerialize(token), 10);\n this.data.expectingFirstListItemValue = undefined;\n }\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodefencedfenceinfo() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.lang = data;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodefencedfencemeta() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.meta = data;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodefencedfence() {\n // Exit if this is the closing fence.\n if (this.data.flowCodeInside) return;\n this.buffer();\n this.data.flowCodeInside = true;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodefenced() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.value = data.replace(/^(\\r?\\n|\\r)|(\\r?\\n|\\r)$/g, '');\n this.data.flowCodeInside = undefined;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodeindented() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.value = data.replace(/(\\r?\\n|\\r)$/g, '');\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitdefinitionlabelstring(token) {\n const label = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.label = label;\n node.identifier = normalizeIdentifier(this.sliceSerialize(token)).toLowerCase();\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitdefinitiontitlestring() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.title = data;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitdefinitiondestinationstring() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.url = data;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitatxheadingsequence(token) {\n const node = this.stack[this.stack.length - 1];\n if (!node.depth) {\n const depth = this.sliceSerialize(token).length;\n node.depth = depth;\n }\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitsetextheadingtext() {\n this.data.setextHeadingSlurpLineEnding = true;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitsetextheadinglinesequence(token) {\n const node = this.stack[this.stack.length - 1];\n node.depth = this.sliceSerialize(token).codePointAt(0) === 61 ? 1 : 2;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitsetextheading() {\n this.data.setextHeadingSlurpLineEnding = undefined;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onenterdata(token) {\n const node = this.stack[this.stack.length - 1];\n /** @type {Array} */\n const siblings = node.children;\n let tail = siblings[siblings.length - 1];\n if (!tail || tail.type !== 'text') {\n // Add a new text node.\n tail = text();\n tail.position = {\n start: point(token.start),\n // @ts-expect-error: we’ll add `end` later.\n end: undefined\n };\n siblings.push(tail);\n }\n this.stack.push(tail);\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitdata(token) {\n const tail = this.stack.pop();\n tail.value += this.sliceSerialize(token);\n tail.position.end = point(token.end);\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitlineending(token) {\n const context = this.stack[this.stack.length - 1];\n // If we’re at a hard break, include the line ending in there.\n if (this.data.atHardBreak) {\n const tail = context.children[context.children.length - 1];\n tail.position.end = point(token.end);\n this.data.atHardBreak = undefined;\n return;\n }\n if (!this.data.setextHeadingSlurpLineEnding && config.canContainEols.includes(context.type)) {\n onenterdata.call(this, token);\n onexitdata.call(this, token);\n }\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexithardbreak() {\n this.data.atHardBreak = true;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexithtmlflow() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.value = data;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexithtmltext() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.value = data;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitcodetext() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.value = data;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitlink() {\n const node = this.stack[this.stack.length - 1];\n // Note: there are also `identifier` and `label` fields on this link node!\n // These are used / cleaned here.\n\n // To do: clean.\n if (this.data.inReference) {\n /** @type {ReferenceType} */\n const referenceType = this.data.referenceType || 'shortcut';\n node.type += 'Reference';\n // @ts-expect-error: mutate.\n node.referenceType = referenceType;\n // @ts-expect-error: mutate.\n delete node.url;\n delete node.title;\n } else {\n // @ts-expect-error: mutate.\n delete node.identifier;\n // @ts-expect-error: mutate.\n delete node.label;\n }\n this.data.referenceType = undefined;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitimage() {\n const node = this.stack[this.stack.length - 1];\n // Note: there are also `identifier` and `label` fields on this link node!\n // These are used / cleaned here.\n\n // To do: clean.\n if (this.data.inReference) {\n /** @type {ReferenceType} */\n const referenceType = this.data.referenceType || 'shortcut';\n node.type += 'Reference';\n // @ts-expect-error: mutate.\n node.referenceType = referenceType;\n // @ts-expect-error: mutate.\n delete node.url;\n delete node.title;\n } else {\n // @ts-expect-error: mutate.\n delete node.identifier;\n // @ts-expect-error: mutate.\n delete node.label;\n }\n this.data.referenceType = undefined;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitlabeltext(token) {\n const string = this.sliceSerialize(token);\n const ancestor = this.stack[this.stack.length - 2];\n // @ts-expect-error: stash this on the node, as it might become a reference\n // later.\n ancestor.label = decodeString(string);\n // @ts-expect-error: same as above.\n ancestor.identifier = normalizeIdentifier(string).toLowerCase();\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitlabel() {\n const fragment = this.stack[this.stack.length - 1];\n const value = this.resume();\n const node = this.stack[this.stack.length - 1];\n // Assume a reference.\n this.data.inReference = true;\n if (node.type === 'link') {\n /** @type {Array} */\n const children = fragment.children;\n node.children = children;\n } else {\n node.alt = value;\n }\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitresourcedestinationstring() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.url = data;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitresourcetitlestring() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.title = data;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitresource() {\n this.data.inReference = undefined;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onenterreference() {\n this.data.referenceType = 'collapsed';\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitreferencestring(token) {\n const label = this.resume();\n const node = this.stack[this.stack.length - 1];\n // @ts-expect-error: stash this on the node, as it might become a reference\n // later.\n node.label = label;\n // @ts-expect-error: same as above.\n node.identifier = normalizeIdentifier(this.sliceSerialize(token)).toLowerCase();\n this.data.referenceType = 'full';\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitcharacterreferencemarker(token) {\n this.data.characterReferenceType = token.type;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcharacterreferencevalue(token) {\n const data = this.sliceSerialize(token);\n const type = this.data.characterReferenceType;\n /** @type {string} */\n let value;\n if (type) {\n value = decodeNumericCharacterReference(data, type === \"characterReferenceMarkerNumeric\" ? 10 : 16);\n this.data.characterReferenceType = undefined;\n } else {\n const result = decodeNamedCharacterReference(data);\n value = result;\n }\n const tail = this.stack[this.stack.length - 1];\n tail.value += value;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcharacterreference(token) {\n const tail = this.stack.pop();\n tail.position.end = point(token.end);\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitautolinkprotocol(token) {\n onexitdata.call(this, token);\n const node = this.stack[this.stack.length - 1];\n node.url = this.sliceSerialize(token);\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitautolinkemail(token) {\n onexitdata.call(this, token);\n const node = this.stack[this.stack.length - 1];\n node.url = 'mailto:' + this.sliceSerialize(token);\n }\n\n //\n // Creaters.\n //\n\n /** @returns {Blockquote} */\n function blockQuote() {\n return {\n type: 'blockquote',\n children: []\n };\n }\n\n /** @returns {Code} */\n function codeFlow() {\n return {\n type: 'code',\n lang: null,\n meta: null,\n value: ''\n };\n }\n\n /** @returns {InlineCode} */\n function codeText() {\n return {\n type: 'inlineCode',\n value: ''\n };\n }\n\n /** @returns {Definition} */\n function definition() {\n return {\n type: 'definition',\n identifier: '',\n label: null,\n title: null,\n url: ''\n };\n }\n\n /** @returns {Emphasis} */\n function emphasis() {\n return {\n type: 'emphasis',\n children: []\n };\n }\n\n /** @returns {Heading} */\n function heading() {\n return {\n type: 'heading',\n // @ts-expect-error `depth` will be set later.\n depth: 0,\n children: []\n };\n }\n\n /** @returns {Break} */\n function hardBreak() {\n return {\n type: 'break'\n };\n }\n\n /** @returns {Html} */\n function html() {\n return {\n type: 'html',\n value: ''\n };\n }\n\n /** @returns {Image} */\n function image() {\n return {\n type: 'image',\n title: null,\n url: '',\n alt: null\n };\n }\n\n /** @returns {Link} */\n function link() {\n return {\n type: 'link',\n title: null,\n url: '',\n children: []\n };\n }\n\n /**\n * @param {Token} token\n * @returns {List}\n */\n function list(token) {\n return {\n type: 'list',\n ordered: token.type === 'listOrdered',\n start: null,\n spread: token._spread,\n children: []\n };\n }\n\n /**\n * @param {Token} token\n * @returns {ListItem}\n */\n function listItem(token) {\n return {\n type: 'listItem',\n spread: token._spread,\n checked: null,\n children: []\n };\n }\n\n /** @returns {Paragraph} */\n function paragraph() {\n return {\n type: 'paragraph',\n children: []\n };\n }\n\n /** @returns {Strong} */\n function strong() {\n return {\n type: 'strong',\n children: []\n };\n }\n\n /** @returns {Text} */\n function text() {\n return {\n type: 'text',\n value: ''\n };\n }\n\n /** @returns {ThematicBreak} */\n function thematicBreak() {\n return {\n type: 'thematicBreak'\n };\n }\n}\n\n/**\n * Copy a point-like value.\n *\n * @param {Point} d\n * Point-like value.\n * @returns {Point}\n * unist point.\n */\nfunction point(d) {\n return {\n line: d.line,\n column: d.column,\n offset: d.offset\n };\n}\n\n/**\n * @param {Config} combined\n * @param {Array | Extension>} extensions\n * @returns {undefined}\n */\nfunction configure(combined, extensions) {\n let index = -1;\n while (++index < extensions.length) {\n const value = extensions[index];\n if (Array.isArray(value)) {\n configure(combined, value);\n } else {\n extension(combined, value);\n }\n }\n}\n\n/**\n * @param {Config} combined\n * @param {Extension} extension\n * @returns {undefined}\n */\nfunction extension(combined, extension) {\n /** @type {keyof Extension} */\n let key;\n for (key in extension) {\n if (own.call(extension, key)) {\n switch (key) {\n case 'canContainEols':\n {\n const right = extension[key];\n if (right) {\n combined[key].push(...right);\n }\n break;\n }\n case 'transforms':\n {\n const right = extension[key];\n if (right) {\n combined[key].push(...right);\n }\n break;\n }\n case 'enter':\n case 'exit':\n {\n const right = extension[key];\n if (right) {\n Object.assign(combined[key], right);\n }\n break;\n }\n // No default\n }\n }\n }\n}\n\n/** @type {OnEnterError} */\nfunction defaultOnError(left, right) {\n if (left) {\n throw new Error('Cannot close `' + left.type + '` (' + stringifyPosition({\n start: left.start,\n end: left.end\n }) + '): a different token (`' + right.type + '`, ' + stringifyPosition({\n start: right.start,\n end: right.end\n }) + ') is open');\n } else {\n throw new Error('Cannot close document, a token (`' + right.type + '`, ' + stringifyPosition({\n start: right.start,\n end: right.end\n }) + ') is still open');\n }\n}","/**\n * @typedef {import('micromark-util-types').Event} Event\n */\n\nimport {subtokenize} from 'micromark-util-subtokenize'\n\n/**\n * @param {Array} events\n * @returns {Array}\n */\nexport function postprocess(events) {\n while (!subtokenize(events)) {\n // Empty\n }\n return events\n}\n","/**\n * @typedef {import('mdast').Root} Root\n * @typedef {import('mdast-util-from-markdown').Options} FromMarkdownOptions\n * @typedef {import('unified').Parser} Parser\n * @typedef {import('unified').Processor} Processor\n */\n\n/**\n * @typedef {Omit} Options\n */\n\nimport {fromMarkdown} from 'mdast-util-from-markdown'\n\n/**\n * Aadd support for parsing from markdown.\n *\n * @param {Readonly | null | undefined} [options]\n * Configuration (optional).\n * @returns {undefined}\n * Nothing.\n */\nexport default function remarkParse(options) {\n /** @type {Processor} */\n // @ts-expect-error: TS in JSDoc generates wrong types if `this` is typed regularly.\n const self = this\n\n self.parser = parser\n\n /**\n * @type {Parser}\n */\n function parser(doc) {\n return fromMarkdown(doc, {\n ...self.data('settings'),\n ...options,\n // Note: these options are not in the readme.\n // The goal is for them to be set by plugins on `data` instead of being\n // passed by users.\n extensions: self.data('micromarkExtensions') || [],\n mdastExtensions: self.data('fromMarkdownExtensions') || []\n })\n }\n}\n","export const VOID = -1;\nexport const PRIMITIVE = 0;\nexport const ARRAY = 1;\nexport const OBJECT = 2;\nexport const DATE = 3;\nexport const REGEXP = 4;\nexport const MAP = 5;\nexport const SET = 6;\nexport const ERROR = 7;\nexport const BIGINT = 8;\n// export const SYMBOL = 9;\n","import {\n VOID, PRIMITIVE,\n ARRAY, OBJECT,\n DATE, REGEXP, MAP, SET,\n ERROR, BIGINT\n} from './types.js';\n\nconst env = typeof self === 'object' ? self : globalThis;\n\nconst deserializer = ($, _) => {\n const as = (out, index) => {\n $.set(index, out);\n return out;\n };\n\n const unpair = index => {\n if ($.has(index))\n return $.get(index);\n\n const [type, value] = _[index];\n switch (type) {\n case PRIMITIVE:\n case VOID:\n return as(value, index);\n case ARRAY: {\n const arr = as([], index);\n for (const index of value)\n arr.push(unpair(index));\n return arr;\n }\n case OBJECT: {\n const object = as({}, index);\n for (const [key, index] of value)\n object[unpair(key)] = unpair(index);\n return object;\n }\n case DATE:\n return as(new Date(value), index);\n case REGEXP: {\n const {source, flags} = value;\n return as(new RegExp(source, flags), index);\n }\n case MAP: {\n const map = as(new Map, index);\n for (const [key, index] of value)\n map.set(unpair(key), unpair(index));\n return map;\n }\n case SET: {\n const set = as(new Set, index);\n for (const index of value)\n set.add(unpair(index));\n return set;\n }\n case ERROR: {\n const {name, message} = value;\n return as(new env[name](message), index);\n }\n case BIGINT:\n return as(BigInt(value), index);\n case 'BigInt':\n return as(Object(BigInt(value)), index);\n }\n return as(new env[type](value), index);\n };\n\n return unpair;\n};\n\n/**\n * @typedef {Array} Record a type representation\n */\n\n/**\n * Returns a deserialized value from a serialized array of Records.\n * @param {Record[]} serialized a previously serialized value.\n * @returns {any}\n */\nexport const deserialize = serialized => deserializer(new Map, serialized)(0);\n","import {\n VOID, PRIMITIVE,\n ARRAY, OBJECT,\n DATE, REGEXP, MAP, SET,\n ERROR, BIGINT\n} from './types.js';\n\nconst EMPTY = '';\n\nconst {toString} = {};\nconst {keys} = Object;\n\nconst typeOf = value => {\n const type = typeof value;\n if (type !== 'object' || !value)\n return [PRIMITIVE, type];\n\n const asString = toString.call(value).slice(8, -1);\n switch (asString) {\n case 'Array':\n return [ARRAY, EMPTY];\n case 'Object':\n return [OBJECT, EMPTY];\n case 'Date':\n return [DATE, EMPTY];\n case 'RegExp':\n return [REGEXP, EMPTY];\n case 'Map':\n return [MAP, EMPTY];\n case 'Set':\n return [SET, EMPTY];\n }\n\n if (asString.includes('Array'))\n return [ARRAY, asString];\n\n if (asString.includes('Error'))\n return [ERROR, asString];\n\n return [OBJECT, asString];\n};\n\nconst shouldSkip = ([TYPE, type]) => (\n TYPE === PRIMITIVE &&\n (type === 'function' || type === 'symbol')\n);\n\nconst serializer = (strict, json, $, _) => {\n\n const as = (out, value) => {\n const index = _.push(out) - 1;\n $.set(value, index);\n return index;\n };\n\n const pair = value => {\n if ($.has(value))\n return $.get(value);\n\n let [TYPE, type] = typeOf(value);\n switch (TYPE) {\n case PRIMITIVE: {\n let entry = value;\n switch (type) {\n case 'bigint':\n TYPE = BIGINT;\n entry = value.toString();\n break;\n case 'function':\n case 'symbol':\n if (strict)\n throw new TypeError('unable to serialize ' + type);\n entry = null;\n break;\n case 'undefined':\n return as([VOID], value);\n }\n return as([TYPE, entry], value);\n }\n case ARRAY: {\n if (type)\n return as([type, [...value]], value);\n \n const arr = [];\n const index = as([TYPE, arr], value);\n for (const entry of value)\n arr.push(pair(entry));\n return index;\n }\n case OBJECT: {\n if (type) {\n switch (type) {\n case 'BigInt':\n return as([type, value.toString()], value);\n case 'Boolean':\n case 'Number':\n case 'String':\n return as([type, value.valueOf()], value);\n }\n }\n\n if (json && ('toJSON' in value))\n return pair(value.toJSON());\n\n const entries = [];\n const index = as([TYPE, entries], value);\n for (const key of keys(value)) {\n if (strict || !shouldSkip(typeOf(value[key])))\n entries.push([pair(key), pair(value[key])]);\n }\n return index;\n }\n case DATE:\n return as([TYPE, value.toISOString()], value);\n case REGEXP: {\n const {source, flags} = value;\n return as([TYPE, {source, flags}], value);\n }\n case MAP: {\n const entries = [];\n const index = as([TYPE, entries], value);\n for (const [key, entry] of value) {\n if (strict || !(shouldSkip(typeOf(key)) || shouldSkip(typeOf(entry))))\n entries.push([pair(key), pair(entry)]);\n }\n return index;\n }\n case SET: {\n const entries = [];\n const index = as([TYPE, entries], value);\n for (const entry of value) {\n if (strict || !shouldSkip(typeOf(entry)))\n entries.push(pair(entry));\n }\n return index;\n }\n }\n\n const {message} = value;\n return as([TYPE, {name: type, message}], value);\n };\n\n return pair;\n};\n\n/**\n * @typedef {Array} Record a type representation\n */\n\n/**\n * Returns an array of serialized Records.\n * @param {any} value a serializable value.\n * @param {{json?: boolean, lossy?: boolean}?} options an object with a `lossy` or `json` property that,\n * if `true`, will not throw errors on incompatible types, and behave more\n * like JSON stringify would behave. Symbol and Function will be discarded.\n * @returns {Record[]}\n */\n export const serialize = (value, {json, lossy} = {}) => {\n const _ = [];\n return serializer(!(json || lossy), !!json, new Map, _)(value), _;\n};\n","import {deserialize} from './deserialize.js';\nimport {serialize} from './serialize.js';\n\n/**\n * @typedef {Array} Record a type representation\n */\n\n/**\n * Returns an array of serialized Records.\n * @param {any} any a serializable value.\n * @param {{transfer?: any[], json?: boolean, lossy?: boolean}?} options an object with\n * a transfer option (ignored when polyfilled) and/or non standard fields that\n * fallback to the polyfill if present.\n * @returns {Record[]}\n */\nexport default typeof structuredClone === \"function\" ?\n /* c8 ignore start */\n (any, options) => (\n options && ('json' in options || 'lossy' in options) ?\n deserialize(serialize(any, options)) : structuredClone(any)\n ) :\n (any, options) => deserialize(serialize(any, options));\n /* c8 ignore stop */\n\nexport {deserialize, serialize};\n","import {asciiAlphanumeric} from 'micromark-util-character'\nimport {encode} from 'micromark-util-encode'\n/**\n * Make a value safe for injection as a URL.\n *\n * This encodes unsafe characters with percent-encoding and skips already\n * encoded sequences (see `normalizeUri`).\n * Further unsafe characters are encoded as character references (see\n * `micromark-util-encode`).\n *\n * A regex of allowed protocols can be given, in which case the URL is\n * sanitized.\n * For example, `/^(https?|ircs?|mailto|xmpp)$/i` can be used for `a[href]`, or\n * `/^https?$/i` for `img[src]` (this is what `github.com` allows).\n * If the URL includes an unknown protocol (one not matched by `protocol`, such\n * as a dangerous example, `javascript:`), the value is ignored.\n *\n * @param {string | null | undefined} url\n * URI to sanitize.\n * @param {RegExp | null | undefined} [protocol]\n * Allowed protocols.\n * @returns {string}\n * Sanitized URI.\n */\nexport function sanitizeUri(url, protocol) {\n const value = encode(normalizeUri(url || ''))\n if (!protocol) {\n return value\n }\n const colon = value.indexOf(':')\n const questionMark = value.indexOf('?')\n const numberSign = value.indexOf('#')\n const slash = value.indexOf('/')\n if (\n // If there is no protocol, it’s relative.\n colon < 0 ||\n // If the first colon is after a `?`, `#`, or `/`, it’s not a protocol.\n (slash > -1 && colon > slash) ||\n (questionMark > -1 && colon > questionMark) ||\n (numberSign > -1 && colon > numberSign) ||\n // It is a protocol, it should be allowed.\n protocol.test(value.slice(0, colon))\n ) {\n return value\n }\n return ''\n}\n\n/**\n * Normalize a URL.\n *\n * Encode unsafe characters with percent-encoding, skipping already encoded\n * sequences.\n *\n * @param {string} value\n * URI to normalize.\n * @returns {string}\n * Normalized URI.\n */\nexport function normalizeUri(value) {\n /** @type {Array} */\n const result = []\n let index = -1\n let start = 0\n let skip = 0\n while (++index < value.length) {\n const code = value.charCodeAt(index)\n /** @type {string} */\n let replace = ''\n\n // A correct percent encoded value.\n if (\n code === 37 &&\n asciiAlphanumeric(value.charCodeAt(index + 1)) &&\n asciiAlphanumeric(value.charCodeAt(index + 2))\n ) {\n skip = 2\n }\n // ASCII.\n else if (code < 128) {\n if (!/[!#$&-;=?-Z_a-z~]/.test(String.fromCharCode(code))) {\n replace = String.fromCharCode(code)\n }\n }\n // Astral.\n else if (code > 55_295 && code < 57_344) {\n const next = value.charCodeAt(index + 1)\n\n // A correct surrogate pair.\n if (code < 56_320 && next > 56_319 && next < 57_344) {\n replace = String.fromCharCode(code, next)\n skip = 1\n }\n // Lone surrogate.\n else {\n replace = '\\uFFFD'\n }\n }\n // Unicode.\n else {\n replace = String.fromCharCode(code)\n }\n if (replace) {\n result.push(value.slice(start, index), encodeURIComponent(replace))\n start = index + skip + 1\n replace = ''\n }\n if (skip) {\n index += skip\n skip = 0\n }\n }\n return result.join('') + value.slice(start)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n *\n * @typedef {import('./state.js').State} State\n */\n\n/**\n * @callback FootnoteBackContentTemplate\n * Generate content for the backreference dynamically.\n *\n * For the following markdown:\n *\n * ```markdown\n * Alpha[^micromark], bravo[^micromark], and charlie[^remark].\n *\n * [^remark]: things about remark\n * [^micromark]: things about micromark\n * ```\n *\n * This function will be called with:\n *\n * * `0` and `0` for the backreference from `things about micromark` to\n * `alpha`, as it is the first used definition, and the first call to it\n * * `0` and `1` for the backreference from `things about micromark` to\n * `bravo`, as it is the first used definition, and the second call to it\n * * `1` and `0` for the backreference from `things about remark` to\n * `charlie`, as it is the second used definition\n * @param {number} referenceIndex\n * Index of the definition in the order that they are first referenced,\n * 0-indexed.\n * @param {number} rereferenceIndex\n * Index of calls to the same definition, 0-indexed.\n * @returns {Array | ElementContent | string}\n * Content for the backreference when linking back from definitions to their\n * reference.\n *\n * @callback FootnoteBackLabelTemplate\n * Generate a back label dynamically.\n *\n * For the following markdown:\n *\n * ```markdown\n * Alpha[^micromark], bravo[^micromark], and charlie[^remark].\n *\n * [^remark]: things about remark\n * [^micromark]: things about micromark\n * ```\n *\n * This function will be called with:\n *\n * * `0` and `0` for the backreference from `things about micromark` to\n * `alpha`, as it is the first used definition, and the first call to it\n * * `0` and `1` for the backreference from `things about micromark` to\n * `bravo`, as it is the first used definition, and the second call to it\n * * `1` and `0` for the backreference from `things about remark` to\n * `charlie`, as it is the second used definition\n * @param {number} referenceIndex\n * Index of the definition in the order that they are first referenced,\n * 0-indexed.\n * @param {number} rereferenceIndex\n * Index of calls to the same definition, 0-indexed.\n * @returns {string}\n * Back label to use when linking back from definitions to their reference.\n */\n\nimport structuredClone from '@ungap/structured-clone'\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\n\n/**\n * Generate the default content that GitHub uses on backreferences.\n *\n * @param {number} _\n * Index of the definition in the order that they are first referenced,\n * 0-indexed.\n * @param {number} rereferenceIndex\n * Index of calls to the same definition, 0-indexed.\n * @returns {Array}\n * Content.\n */\nexport function defaultFootnoteBackContent(_, rereferenceIndex) {\n /** @type {Array} */\n const result = [{type: 'text', value: '↩'}]\n\n if (rereferenceIndex > 1) {\n result.push({\n type: 'element',\n tagName: 'sup',\n properties: {},\n children: [{type: 'text', value: String(rereferenceIndex)}]\n })\n }\n\n return result\n}\n\n/**\n * Generate the default label that GitHub uses on backreferences.\n *\n * @param {number} referenceIndex\n * Index of the definition in the order that they are first referenced,\n * 0-indexed.\n * @param {number} rereferenceIndex\n * Index of calls to the same definition, 0-indexed.\n * @returns {string}\n * Label.\n */\nexport function defaultFootnoteBackLabel(referenceIndex, rereferenceIndex) {\n return (\n 'Back to reference ' +\n (referenceIndex + 1) +\n (rereferenceIndex > 1 ? '-' + rereferenceIndex : '')\n )\n}\n\n/**\n * Generate a hast footer for called footnote definitions.\n *\n * @param {State} state\n * Info passed around.\n * @returns {Element | undefined}\n * `section` element or `undefined`.\n */\n// eslint-disable-next-line complexity\nexport function footer(state) {\n const clobberPrefix =\n typeof state.options.clobberPrefix === 'string'\n ? state.options.clobberPrefix\n : 'user-content-'\n const footnoteBackContent =\n state.options.footnoteBackContent || defaultFootnoteBackContent\n const footnoteBackLabel =\n state.options.footnoteBackLabel || defaultFootnoteBackLabel\n const footnoteLabel = state.options.footnoteLabel || 'Footnotes'\n const footnoteLabelTagName = state.options.footnoteLabelTagName || 'h2'\n const footnoteLabelProperties = state.options.footnoteLabelProperties || {\n className: ['sr-only']\n }\n /** @type {Array} */\n const listItems = []\n let referenceIndex = -1\n\n while (++referenceIndex < state.footnoteOrder.length) {\n const definition = state.footnoteById.get(\n state.footnoteOrder[referenceIndex]\n )\n\n if (!definition) {\n continue\n }\n\n const content = state.all(definition)\n const id = String(definition.identifier).toUpperCase()\n const safeId = normalizeUri(id.toLowerCase())\n let rereferenceIndex = 0\n /** @type {Array} */\n const backReferences = []\n const counts = state.footnoteCounts.get(id)\n\n // eslint-disable-next-line no-unmodified-loop-condition\n while (counts !== undefined && ++rereferenceIndex <= counts) {\n if (backReferences.length > 0) {\n backReferences.push({type: 'text', value: ' '})\n }\n\n let children =\n typeof footnoteBackContent === 'string'\n ? footnoteBackContent\n : footnoteBackContent(referenceIndex, rereferenceIndex)\n\n if (typeof children === 'string') {\n children = {type: 'text', value: children}\n }\n\n backReferences.push({\n type: 'element',\n tagName: 'a',\n properties: {\n href:\n '#' +\n clobberPrefix +\n 'fnref-' +\n safeId +\n (rereferenceIndex > 1 ? '-' + rereferenceIndex : ''),\n dataFootnoteBackref: '',\n ariaLabel:\n typeof footnoteBackLabel === 'string'\n ? footnoteBackLabel\n : footnoteBackLabel(referenceIndex, rereferenceIndex),\n className: ['data-footnote-backref']\n },\n children: Array.isArray(children) ? children : [children]\n })\n }\n\n const tail = content[content.length - 1]\n\n if (tail && tail.type === 'element' && tail.tagName === 'p') {\n const tailTail = tail.children[tail.children.length - 1]\n if (tailTail && tailTail.type === 'text') {\n tailTail.value += ' '\n } else {\n tail.children.push({type: 'text', value: ' '})\n }\n\n tail.children.push(...backReferences)\n } else {\n content.push(...backReferences)\n }\n\n /** @type {Element} */\n const listItem = {\n type: 'element',\n tagName: 'li',\n properties: {id: clobberPrefix + 'fn-' + safeId},\n children: state.wrap(content, true)\n }\n\n state.patch(definition, listItem)\n\n listItems.push(listItem)\n }\n\n if (listItems.length === 0) {\n return\n }\n\n return {\n type: 'element',\n tagName: 'section',\n properties: {dataFootnotes: true, className: ['footnotes']},\n children: [\n {\n type: 'element',\n tagName: footnoteLabelTagName,\n properties: {\n ...structuredClone(footnoteLabelProperties),\n id: 'footnote-label'\n },\n children: [{type: 'text', value: footnoteLabel}]\n },\n {type: 'text', value: '\\n'},\n {\n type: 'element',\n tagName: 'ol',\n properties: {},\n children: state.wrap(listItems, true)\n },\n {type: 'text', value: '\\n'}\n ]\n }\n}\n","/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Parent} Parent\n */\n\n/**\n * @template Fn\n * @template Fallback\n * @typedef {Fn extends (value: any) => value is infer Thing ? Thing : Fallback} Predicate\n */\n\n/**\n * @callback Check\n * Check that an arbitrary value is a node.\n * @param {unknown} this\n * The given context.\n * @param {unknown} [node]\n * Anything (typically a node).\n * @param {number | null | undefined} [index]\n * The node’s position in its parent.\n * @param {Parent | null | undefined} [parent]\n * The node’s parent.\n * @returns {boolean}\n * Whether this is a node and passes a test.\n *\n * @typedef {Record | Node} Props\n * Object to check for equivalence.\n *\n * Note: `Node` is included as it is common but is not indexable.\n *\n * @typedef {Array | Props | TestFunction | string | null | undefined} Test\n * Check for an arbitrary node.\n *\n * @callback TestFunction\n * Check if a node passes a test.\n * @param {unknown} this\n * The given context.\n * @param {Node} node\n * A node.\n * @param {number | undefined} [index]\n * The node’s position in its parent.\n * @param {Parent | undefined} [parent]\n * The node’s parent.\n * @returns {boolean | undefined | void}\n * Whether this node passes the test.\n *\n * Note: `void` is included until TS sees no return as `undefined`.\n */\n\n/**\n * Check if `node` is a `Node` and whether it passes the given test.\n *\n * @param {unknown} node\n * Thing to check, typically `Node`.\n * @param {Test} test\n * A check for a specific node.\n * @param {number | null | undefined} index\n * The node’s position in its parent.\n * @param {Parent | null | undefined} parent\n * The node’s parent.\n * @param {unknown} context\n * Context object (`this`) to pass to `test` functions.\n * @returns {boolean}\n * Whether `node` is a node and passes a test.\n */\nexport const is =\n // Note: overloads in JSDoc can’t yet use different `@template`s.\n /**\n * @type {(\n * ((node: unknown, test: Condition, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & {type: Condition}) &\n * ((node: unknown, test: Condition, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & Condition) &\n * ((node: unknown, test: Condition, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & Predicate) &\n * ((node?: null | undefined) => false) &\n * ((node: unknown, test?: null | undefined, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node) &\n * ((node: unknown, test?: Test, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => boolean)\n * )}\n */\n (\n /**\n * @param {unknown} [node]\n * @param {Test} [test]\n * @param {number | null | undefined} [index]\n * @param {Parent | null | undefined} [parent]\n * @param {unknown} [context]\n * @returns {boolean}\n */\n // eslint-disable-next-line max-params\n function (node, test, index, parent, context) {\n const check = convert(test)\n\n if (\n index !== undefined &&\n index !== null &&\n (typeof index !== 'number' ||\n index < 0 ||\n index === Number.POSITIVE_INFINITY)\n ) {\n throw new Error('Expected positive finite index')\n }\n\n if (\n parent !== undefined &&\n parent !== null &&\n (!is(parent) || !parent.children)\n ) {\n throw new Error('Expected parent node')\n }\n\n if (\n (parent === undefined || parent === null) !==\n (index === undefined || index === null)\n ) {\n throw new Error('Expected both parent and index')\n }\n\n return looksLikeANode(node)\n ? check.call(context, node, index, parent)\n : false\n }\n )\n\n/**\n * Generate an assertion from a test.\n *\n * Useful if you’re going to test many nodes, for example when creating a\n * utility where something else passes a compatible test.\n *\n * The created function is a bit faster because it expects valid input only:\n * a `node`, `index`, and `parent`.\n *\n * @param {Test} test\n * * when nullish, checks if `node` is a `Node`.\n * * when `string`, works like passing `(node) => node.type === test`.\n * * when `function` checks if function passed the node is true.\n * * when `object`, checks that all keys in test are in node, and that they have (strictly) equal values.\n * * when `array`, checks if any one of the subtests pass.\n * @returns {Check}\n * An assertion.\n */\nexport const convert =\n // Note: overloads in JSDoc can’t yet use different `@template`s.\n /**\n * @type {(\n * ((test: Condition) => (node: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & {type: Condition}) &\n * ((test: Condition) => (node: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & Condition) &\n * ((test: Condition) => (node: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & Predicate) &\n * ((test?: null | undefined) => (node?: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node) &\n * ((test?: Test) => Check)\n * )}\n */\n (\n /**\n * @param {Test} [test]\n * @returns {Check}\n */\n function (test) {\n if (test === null || test === undefined) {\n return ok\n }\n\n if (typeof test === 'function') {\n return castFactory(test)\n }\n\n if (typeof test === 'object') {\n return Array.isArray(test) ? anyFactory(test) : propsFactory(test)\n }\n\n if (typeof test === 'string') {\n return typeFactory(test)\n }\n\n throw new Error('Expected function, string, or object as test')\n }\n )\n\n/**\n * @param {Array} tests\n * @returns {Check}\n */\nfunction anyFactory(tests) {\n /** @type {Array} */\n const checks = []\n let index = -1\n\n while (++index < tests.length) {\n checks[index] = convert(tests[index])\n }\n\n return castFactory(any)\n\n /**\n * @this {unknown}\n * @type {TestFunction}\n */\n function any(...parameters) {\n let index = -1\n\n while (++index < checks.length) {\n if (checks[index].apply(this, parameters)) return true\n }\n\n return false\n }\n}\n\n/**\n * Turn an object into a test for a node with a certain fields.\n *\n * @param {Props} check\n * @returns {Check}\n */\nfunction propsFactory(check) {\n const checkAsRecord = /** @type {Record} */ (check)\n\n return castFactory(all)\n\n /**\n * @param {Node} node\n * @returns {boolean}\n */\n function all(node) {\n const nodeAsRecord = /** @type {Record} */ (\n /** @type {unknown} */ (node)\n )\n\n /** @type {string} */\n let key\n\n for (key in check) {\n if (nodeAsRecord[key] !== checkAsRecord[key]) return false\n }\n\n return true\n }\n}\n\n/**\n * Turn a string into a test for a node with a certain type.\n *\n * @param {string} check\n * @returns {Check}\n */\nfunction typeFactory(check) {\n return castFactory(type)\n\n /**\n * @param {Node} node\n */\n function type(node) {\n return node && node.type === check\n }\n}\n\n/**\n * Turn a custom test into a test for a node that passes that test.\n *\n * @param {TestFunction} testFunction\n * @returns {Check}\n */\nfunction castFactory(testFunction) {\n return check\n\n /**\n * @this {unknown}\n * @type {Check}\n */\n function check(value, index, parent) {\n return Boolean(\n looksLikeANode(value) &&\n testFunction.call(\n this,\n value,\n typeof index === 'number' ? index : undefined,\n parent || undefined\n )\n )\n }\n}\n\nfunction ok() {\n return true\n}\n\n/**\n * @param {unknown} value\n * @returns {value is Node}\n */\nfunction looksLikeANode(value) {\n return value !== null && typeof value === 'object' && 'type' in value\n}\n","/**\n * @typedef {import('unist').Node} UnistNode\n * @typedef {import('unist').Parent} UnistParent\n */\n\n/**\n * @typedef {Exclude | undefined} Test\n * Test from `unist-util-is`.\n *\n * Note: we have remove and add `undefined`, because otherwise when generating\n * automatic `.d.ts` files, TS tries to flatten paths from a local perspective,\n * which doesn’t work when publishing on npm.\n */\n\n/**\n * @typedef {(\n * Fn extends (value: any) => value is infer Thing\n * ? Thing\n * : Fallback\n * )} Predicate\n * Get the value of a type guard `Fn`.\n * @template Fn\n * Value; typically function that is a type guard (such as `(x): x is Y`).\n * @template Fallback\n * Value to yield if `Fn` is not a type guard.\n */\n\n/**\n * @typedef {(\n * Check extends null | undefined // No test.\n * ? Value\n * : Value extends {type: Check} // String (type) test.\n * ? Value\n * : Value extends Check // Partial test.\n * ? Value\n * : Check extends Function // Function test.\n * ? Predicate extends Value\n * ? Predicate\n * : never\n * : never // Some other test?\n * )} MatchesOne\n * Check whether a node matches a primitive check in the type system.\n * @template Value\n * Value; typically unist `Node`.\n * @template Check\n * Value; typically `unist-util-is`-compatible test, but not arrays.\n */\n\n/**\n * @typedef {(\n * Check extends Array\n * ? MatchesOne\n * : MatchesOne\n * )} Matches\n * Check whether a node matches a check in the type system.\n * @template Value\n * Value; typically unist `Node`.\n * @template Check\n * Value; typically `unist-util-is`-compatible test.\n */\n\n/**\n * @typedef {0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10} Uint\n * Number; capped reasonably.\n */\n\n/**\n * @typedef {I extends 0 ? 1 : I extends 1 ? 2 : I extends 2 ? 3 : I extends 3 ? 4 : I extends 4 ? 5 : I extends 5 ? 6 : I extends 6 ? 7 : I extends 7 ? 8 : I extends 8 ? 9 : 10} Increment\n * Increment a number in the type system.\n * @template {Uint} [I=0]\n * Index.\n */\n\n/**\n * @typedef {(\n * Node extends UnistParent\n * ? Node extends {children: Array}\n * ? Child extends Children ? Node : never\n * : never\n * : never\n * )} InternalParent\n * Collect nodes that can be parents of `Child`.\n * @template {UnistNode} Node\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n */\n\n/**\n * @typedef {InternalParent, Child>} Parent\n * Collect nodes in `Tree` that can be parents of `Child`.\n * @template {UnistNode} Tree\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n */\n\n/**\n * @typedef {(\n * Depth extends Max\n * ? never\n * :\n * | InternalParent\n * | InternalAncestor, Max, Increment>\n * )} InternalAncestor\n * Collect nodes in `Tree` that can be ancestors of `Child`.\n * @template {UnistNode} Node\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n * @template {Uint} [Max=10]\n * Max; searches up to this depth.\n * @template {Uint} [Depth=0]\n * Current depth.\n */\n\n/**\n * @typedef {InternalAncestor, Child>} Ancestor\n * Collect nodes in `Tree` that can be ancestors of `Child`.\n * @template {UnistNode} Tree\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n */\n\n/**\n * @typedef {(\n * Tree extends UnistParent\n * ? Depth extends Max\n * ? Tree\n * : Tree | InclusiveDescendant>\n * : Tree\n * )} InclusiveDescendant\n * Collect all (inclusive) descendants of `Tree`.\n *\n * > 👉 **Note**: for performance reasons, this seems to be the fastest way to\n * > recurse without actually running into an infinite loop, which the\n * > previous version did.\n * >\n * > Practically, a max of `2` is typically enough assuming a `Root` is\n * > passed, but it doesn’t improve performance.\n * > It gets higher with `List > ListItem > Table > TableRow > TableCell`.\n * > Using up to `10` doesn’t hurt or help either.\n * @template {UnistNode} Tree\n * Tree type.\n * @template {Uint} [Max=10]\n * Max; searches up to this depth.\n * @template {Uint} [Depth=0]\n * Current depth.\n */\n\n/**\n * @typedef {'skip' | boolean} Action\n * Union of the action types.\n *\n * @typedef {number} Index\n * Move to the sibling at `index` next (after node itself is completely\n * traversed).\n *\n * Useful if mutating the tree, such as removing the node the visitor is\n * currently on, or any of its previous siblings.\n * Results less than 0 or greater than or equal to `children.length` stop\n * traversing the parent.\n *\n * @typedef {[(Action | null | undefined | void)?, (Index | null | undefined)?]} ActionTuple\n * List with one or two values, the first an action, the second an index.\n *\n * @typedef {Action | ActionTuple | Index | null | undefined | void} VisitorResult\n * Any value that can be returned from a visitor.\n */\n\n/**\n * @callback Visitor\n * Handle a node (matching `test`, if given).\n *\n * Visitors are free to transform `node`.\n * They can also transform the parent of node (the last of `ancestors`).\n *\n * Replacing `node` itself, if `SKIP` is not returned, still causes its\n * descendants to be walked (which is a bug).\n *\n * When adding or removing previous siblings of `node` (or next siblings, in\n * case of reverse), the `Visitor` should return a new `Index` to specify the\n * sibling to traverse after `node` is traversed.\n * Adding or removing next siblings of `node` (or previous siblings, in case\n * of reverse) is handled as expected without needing to return a new `Index`.\n *\n * Removing the children property of an ancestor still results in them being\n * traversed.\n * @param {Visited} node\n * Found node.\n * @param {Array} ancestors\n * Ancestors of `node`.\n * @returns {VisitorResult}\n * What to do next.\n *\n * An `Index` is treated as a tuple of `[CONTINUE, Index]`.\n * An `Action` is treated as a tuple of `[Action]`.\n *\n * Passing a tuple back only makes sense if the `Action` is `SKIP`.\n * When the `Action` is `EXIT`, that action can be returned.\n * When the `Action` is `CONTINUE`, `Index` can be returned.\n * @template {UnistNode} [Visited=UnistNode]\n * Visited node type.\n * @template {UnistParent} [VisitedParents=UnistParent]\n * Ancestor type.\n */\n\n/**\n * @typedef {Visitor, Check>, Ancestor, Check>>>} BuildVisitor\n * Build a typed `Visitor` function from a tree and a test.\n *\n * It will infer which values are passed as `node` and which as `parents`.\n * @template {UnistNode} [Tree=UnistNode]\n * Tree type.\n * @template {Test} [Check=Test]\n * Test type.\n */\n\nimport {convert} from 'unist-util-is'\nimport {color} from 'unist-util-visit-parents/do-not-use-color'\n\n/** @type {Readonly} */\nconst empty = []\n\n/**\n * Continue traversing as normal.\n */\nexport const CONTINUE = true\n\n/**\n * Stop traversing immediately.\n */\nexport const EXIT = false\n\n/**\n * Do not traverse this node’s children.\n */\nexport const SKIP = 'skip'\n\n/**\n * Visit nodes, with ancestral information.\n *\n * This algorithm performs *depth-first* *tree traversal* in *preorder*\n * (**NLR**) or if `reverse` is given, in *reverse preorder* (**NRL**).\n *\n * You can choose for which nodes `visitor` is called by passing a `test`.\n * For complex tests, you should test yourself in `visitor`, as it will be\n * faster and will have improved type information.\n *\n * Walking the tree is an intensive task.\n * Make use of the return values of the visitor when possible.\n * Instead of walking a tree multiple times, walk it once, use `unist-util-is`\n * to check if a node matches, and then perform different operations.\n *\n * You can change the tree.\n * See `Visitor` for more info.\n *\n * @overload\n * @param {Tree} tree\n * @param {Check} check\n * @param {BuildVisitor} visitor\n * @param {boolean | null | undefined} [reverse]\n * @returns {undefined}\n *\n * @overload\n * @param {Tree} tree\n * @param {BuildVisitor} visitor\n * @param {boolean | null | undefined} [reverse]\n * @returns {undefined}\n *\n * @param {UnistNode} tree\n * Tree to traverse.\n * @param {Visitor | Test} test\n * `unist-util-is`-compatible test\n * @param {Visitor | boolean | null | undefined} [visitor]\n * Handle each node.\n * @param {boolean | null | undefined} [reverse]\n * Traverse in reverse preorder (NRL) instead of the default preorder (NLR).\n * @returns {undefined}\n * Nothing.\n *\n * @template {UnistNode} Tree\n * Node type.\n * @template {Test} Check\n * `unist-util-is`-compatible test.\n */\nexport function visitParents(tree, test, visitor, reverse) {\n /** @type {Test} */\n let check\n\n if (typeof test === 'function' && typeof visitor !== 'function') {\n reverse = visitor\n // @ts-expect-error no visitor given, so `visitor` is test.\n visitor = test\n } else {\n // @ts-expect-error visitor given, so `test` isn’t a visitor.\n check = test\n }\n\n const is = convert(check)\n const step = reverse ? -1 : 1\n\n factory(tree, undefined, [])()\n\n /**\n * @param {UnistNode} node\n * @param {number | undefined} index\n * @param {Array} parents\n */\n function factory(node, index, parents) {\n const value = /** @type {Record} */ (\n node && typeof node === 'object' ? node : {}\n )\n\n if (typeof value.type === 'string') {\n const name =\n // `hast`\n typeof value.tagName === 'string'\n ? value.tagName\n : // `xast`\n typeof value.name === 'string'\n ? value.name\n : undefined\n\n Object.defineProperty(visit, 'name', {\n value:\n 'node (' + color(node.type + (name ? '<' + name + '>' : '')) + ')'\n })\n }\n\n return visit\n\n function visit() {\n /** @type {Readonly} */\n let result = empty\n /** @type {Readonly} */\n let subresult\n /** @type {number} */\n let offset\n /** @type {Array} */\n let grandparents\n\n if (!test || is(node, index, parents[parents.length - 1] || undefined)) {\n // @ts-expect-error: `visitor` is now a visitor.\n result = toResult(visitor(node, parents))\n\n if (result[0] === EXIT) {\n return result\n }\n }\n\n if ('children' in node && node.children) {\n const nodeAsParent = /** @type {UnistParent} */ (node)\n\n if (nodeAsParent.children && result[0] !== SKIP) {\n offset = (reverse ? nodeAsParent.children.length : -1) + step\n grandparents = parents.concat(nodeAsParent)\n\n while (offset > -1 && offset < nodeAsParent.children.length) {\n const child = nodeAsParent.children[offset]\n\n subresult = factory(child, offset, grandparents)()\n\n if (subresult[0] === EXIT) {\n return subresult\n }\n\n offset =\n typeof subresult[1] === 'number' ? subresult[1] : offset + step\n }\n }\n }\n\n return result\n }\n }\n}\n\n/**\n * Turn a return value into a clean result.\n *\n * @param {VisitorResult} value\n * Valid return values from visitors.\n * @returns {Readonly}\n * Clean result.\n */\nfunction toResult(value) {\n if (Array.isArray(value)) {\n return value\n }\n\n if (typeof value === 'number') {\n return [CONTINUE, value]\n }\n\n return value === null || value === undefined ? empty : [value]\n}\n","/**\n * @typedef {import('unist').Node} UnistNode\n * @typedef {import('unist').Parent} UnistParent\n * @typedef {import('unist-util-visit-parents').VisitorResult} VisitorResult\n */\n\n/**\n * @typedef {Exclude | undefined} Test\n * Test from `unist-util-is`.\n *\n * Note: we have remove and add `undefined`, because otherwise when generating\n * automatic `.d.ts` files, TS tries to flatten paths from a local perspective,\n * which doesn’t work when publishing on npm.\n */\n\n// To do: use types from `unist-util-visit-parents` when it’s released.\n\n/**\n * @typedef {(\n * Fn extends (value: any) => value is infer Thing\n * ? Thing\n * : Fallback\n * )} Predicate\n * Get the value of a type guard `Fn`.\n * @template Fn\n * Value; typically function that is a type guard (such as `(x): x is Y`).\n * @template Fallback\n * Value to yield if `Fn` is not a type guard.\n */\n\n/**\n * @typedef {(\n * Check extends null | undefined // No test.\n * ? Value\n * : Value extends {type: Check} // String (type) test.\n * ? Value\n * : Value extends Check // Partial test.\n * ? Value\n * : Check extends Function // Function test.\n * ? Predicate extends Value\n * ? Predicate\n * : never\n * : never // Some other test?\n * )} MatchesOne\n * Check whether a node matches a primitive check in the type system.\n * @template Value\n * Value; typically unist `Node`.\n * @template Check\n * Value; typically `unist-util-is`-compatible test, but not arrays.\n */\n\n/**\n * @typedef {(\n * Check extends Array\n * ? MatchesOne\n * : MatchesOne\n * )} Matches\n * Check whether a node matches a check in the type system.\n * @template Value\n * Value; typically unist `Node`.\n * @template Check\n * Value; typically `unist-util-is`-compatible test.\n */\n\n/**\n * @typedef {0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10} Uint\n * Number; capped reasonably.\n */\n\n/**\n * @typedef {I extends 0 ? 1 : I extends 1 ? 2 : I extends 2 ? 3 : I extends 3 ? 4 : I extends 4 ? 5 : I extends 5 ? 6 : I extends 6 ? 7 : I extends 7 ? 8 : I extends 8 ? 9 : 10} Increment\n * Increment a number in the type system.\n * @template {Uint} [I=0]\n * Index.\n */\n\n/**\n * @typedef {(\n * Node extends UnistParent\n * ? Node extends {children: Array}\n * ? Child extends Children ? Node : never\n * : never\n * : never\n * )} InternalParent\n * Collect nodes that can be parents of `Child`.\n * @template {UnistNode} Node\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n */\n\n/**\n * @typedef {InternalParent, Child>} Parent\n * Collect nodes in `Tree` that can be parents of `Child`.\n * @template {UnistNode} Tree\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n */\n\n/**\n * @typedef {(\n * Depth extends Max\n * ? never\n * :\n * | InternalParent\n * | InternalAncestor, Max, Increment>\n * )} InternalAncestor\n * Collect nodes in `Tree` that can be ancestors of `Child`.\n * @template {UnistNode} Node\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n * @template {Uint} [Max=10]\n * Max; searches up to this depth.\n * @template {Uint} [Depth=0]\n * Current depth.\n */\n\n/**\n * @typedef {(\n * Tree extends UnistParent\n * ? Depth extends Max\n * ? Tree\n * : Tree | InclusiveDescendant>\n * : Tree\n * )} InclusiveDescendant\n * Collect all (inclusive) descendants of `Tree`.\n *\n * > 👉 **Note**: for performance reasons, this seems to be the fastest way to\n * > recurse without actually running into an infinite loop, which the\n * > previous version did.\n * >\n * > Practically, a max of `2` is typically enough assuming a `Root` is\n * > passed, but it doesn’t improve performance.\n * > It gets higher with `List > ListItem > Table > TableRow > TableCell`.\n * > Using up to `10` doesn’t hurt or help either.\n * @template {UnistNode} Tree\n * Tree type.\n * @template {Uint} [Max=10]\n * Max; searches up to this depth.\n * @template {Uint} [Depth=0]\n * Current depth.\n */\n\n/**\n * @callback Visitor\n * Handle a node (matching `test`, if given).\n *\n * Visitors are free to transform `node`.\n * They can also transform `parent`.\n *\n * Replacing `node` itself, if `SKIP` is not returned, still causes its\n * descendants to be walked (which is a bug).\n *\n * When adding or removing previous siblings of `node` (or next siblings, in\n * case of reverse), the `Visitor` should return a new `Index` to specify the\n * sibling to traverse after `node` is traversed.\n * Adding or removing next siblings of `node` (or previous siblings, in case\n * of reverse) is handled as expected without needing to return a new `Index`.\n *\n * Removing the children property of `parent` still results in them being\n * traversed.\n * @param {Visited} node\n * Found node.\n * @param {Visited extends UnistNode ? number | undefined : never} index\n * Index of `node` in `parent`.\n * @param {Ancestor extends UnistParent ? Ancestor | undefined : never} parent\n * Parent of `node`.\n * @returns {VisitorResult}\n * What to do next.\n *\n * An `Index` is treated as a tuple of `[CONTINUE, Index]`.\n * An `Action` is treated as a tuple of `[Action]`.\n *\n * Passing a tuple back only makes sense if the `Action` is `SKIP`.\n * When the `Action` is `EXIT`, that action can be returned.\n * When the `Action` is `CONTINUE`, `Index` can be returned.\n * @template {UnistNode} [Visited=UnistNode]\n * Visited node type.\n * @template {UnistParent} [Ancestor=UnistParent]\n * Ancestor type.\n */\n\n/**\n * @typedef {Visitor>} BuildVisitorFromMatch\n * Build a typed `Visitor` function from a node and all possible parents.\n *\n * It will infer which values are passed as `node` and which as `parent`.\n * @template {UnistNode} Visited\n * Node type.\n * @template {UnistParent} Ancestor\n * Parent type.\n */\n\n/**\n * @typedef {(\n * BuildVisitorFromMatch<\n * Matches,\n * Extract\n * >\n * )} BuildVisitorFromDescendants\n * Build a typed `Visitor` function from a list of descendants and a test.\n *\n * It will infer which values are passed as `node` and which as `parent`.\n * @template {UnistNode} Descendant\n * Node type.\n * @template {Test} Check\n * Test type.\n */\n\n/**\n * @typedef {(\n * BuildVisitorFromDescendants<\n * InclusiveDescendant,\n * Check\n * >\n * )} BuildVisitor\n * Build a typed `Visitor` function from a tree and a test.\n *\n * It will infer which values are passed as `node` and which as `parent`.\n * @template {UnistNode} [Tree=UnistNode]\n * Node type.\n * @template {Test} [Check=Test]\n * Test type.\n */\n\nimport {visitParents} from 'unist-util-visit-parents'\n\nexport {CONTINUE, EXIT, SKIP} from 'unist-util-visit-parents'\n\n/**\n * Visit nodes.\n *\n * This algorithm performs *depth-first* *tree traversal* in *preorder*\n * (**NLR**) or if `reverse` is given, in *reverse preorder* (**NRL**).\n *\n * You can choose for which nodes `visitor` is called by passing a `test`.\n * For complex tests, you should test yourself in `visitor`, as it will be\n * faster and will have improved type information.\n *\n * Walking the tree is an intensive task.\n * Make use of the return values of the visitor when possible.\n * Instead of walking a tree multiple times, walk it once, use `unist-util-is`\n * to check if a node matches, and then perform different operations.\n *\n * You can change the tree.\n * See `Visitor` for more info.\n *\n * @overload\n * @param {Tree} tree\n * @param {Check} check\n * @param {BuildVisitor} visitor\n * @param {boolean | null | undefined} [reverse]\n * @returns {undefined}\n *\n * @overload\n * @param {Tree} tree\n * @param {BuildVisitor} visitor\n * @param {boolean | null | undefined} [reverse]\n * @returns {undefined}\n *\n * @param {UnistNode} tree\n * Tree to traverse.\n * @param {Visitor | Test} testOrVisitor\n * `unist-util-is`-compatible test (optional, omit to pass a visitor).\n * @param {Visitor | boolean | null | undefined} [visitorOrReverse]\n * Handle each node (when test is omitted, pass `reverse`).\n * @param {boolean | null | undefined} [maybeReverse=false]\n * Traverse in reverse preorder (NRL) instead of the default preorder (NLR).\n * @returns {undefined}\n * Nothing.\n *\n * @template {UnistNode} Tree\n * Node type.\n * @template {Test} Check\n * `unist-util-is`-compatible test.\n */\nexport function visit(tree, testOrVisitor, visitorOrReverse, maybeReverse) {\n /** @type {boolean | null | undefined} */\n let reverse\n /** @type {Test} */\n let test\n /** @type {Visitor} */\n let visitor\n\n if (\n typeof testOrVisitor === 'function' &&\n typeof visitorOrReverse !== 'function'\n ) {\n test = undefined\n visitor = testOrVisitor\n reverse = visitorOrReverse\n } else {\n // @ts-expect-error: assume the overload with test was given.\n test = testOrVisitor\n // @ts-expect-error: assume the overload with test was given.\n visitor = visitorOrReverse\n reverse = maybeReverse\n }\n\n visitParents(tree, test, overload, reverse)\n\n /**\n * @param {UnistNode} node\n * @param {Array} parents\n */\n function overload(node, parents) {\n const parent = parents[parents.length - 1]\n const index = parent ? parent.children.indexOf(node) : undefined\n return visitor(node, index, parent)\n }\n}\n","/**\n * @typedef {import('hast').ElementContent} ElementContent\n *\n * @typedef {import('mdast').Nodes} Nodes\n * @typedef {import('mdast').Reference} Reference\n *\n * @typedef {import('./state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Return the content of a reference without definition as plain text.\n *\n * @param {State} state\n * Info passed around.\n * @param {Extract} node\n * Reference node (image, link).\n * @returns {Array}\n * hast content.\n */\nexport function revert(state, node) {\n const subtype = node.referenceType\n let suffix = ']'\n\n if (subtype === 'collapsed') {\n suffix += '[]'\n } else if (subtype === 'full') {\n suffix += '[' + (node.label || node.identifier) + ']'\n }\n\n if (node.type === 'imageReference') {\n return [{type: 'text', value: '![' + node.alt + suffix}]\n }\n\n const contents = state.all(node)\n const head = contents[0]\n\n if (head && head.type === 'text') {\n head.value = '[' + head.value\n } else {\n contents.unshift({type: 'text', value: '['})\n }\n\n const tail = contents[contents.length - 1]\n\n if (tail && tail.type === 'text') {\n tail.value += suffix\n } else {\n contents.push({type: 'text', value: suffix})\n }\n\n return contents\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').ListItem} ListItem\n * @typedef {import('mdast').Parents} Parents\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `listItem` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {ListItem} node\n * mdast node.\n * @param {Parents | undefined} parent\n * Parent of `node`.\n * @returns {Element}\n * hast node.\n */\nexport function listItem(state, node, parent) {\n const results = state.all(node)\n const loose = parent ? listLoose(parent) : listItemLoose(node)\n /** @type {Properties} */\n const properties = {}\n /** @type {Array} */\n const children = []\n\n if (typeof node.checked === 'boolean') {\n const head = results[0]\n /** @type {Element} */\n let paragraph\n\n if (head && head.type === 'element' && head.tagName === 'p') {\n paragraph = head\n } else {\n paragraph = {type: 'element', tagName: 'p', properties: {}, children: []}\n results.unshift(paragraph)\n }\n\n if (paragraph.children.length > 0) {\n paragraph.children.unshift({type: 'text', value: ' '})\n }\n\n paragraph.children.unshift({\n type: 'element',\n tagName: 'input',\n properties: {type: 'checkbox', checked: node.checked, disabled: true},\n children: []\n })\n\n // According to github-markdown-css, this class hides bullet.\n // See: .\n properties.className = ['task-list-item']\n }\n\n let index = -1\n\n while (++index < results.length) {\n const child = results[index]\n\n // Add eols before nodes, except if this is a loose, first paragraph.\n if (\n loose ||\n index !== 0 ||\n child.type !== 'element' ||\n child.tagName !== 'p'\n ) {\n children.push({type: 'text', value: '\\n'})\n }\n\n if (child.type === 'element' && child.tagName === 'p' && !loose) {\n children.push(...child.children)\n } else {\n children.push(child)\n }\n }\n\n const tail = results[results.length - 1]\n\n // Add a final eol.\n if (tail && (loose || tail.type !== 'element' || tail.tagName !== 'p')) {\n children.push({type: 'text', value: '\\n'})\n }\n\n /** @type {Element} */\n const result = {type: 'element', tagName: 'li', properties, children}\n state.patch(node, result)\n return state.applyData(node, result)\n}\n\n/**\n * @param {Parents} node\n * @return {Boolean}\n */\nfunction listLoose(node) {\n let loose = false\n if (node.type === 'list') {\n loose = node.spread || false\n const children = node.children\n let index = -1\n\n while (!loose && ++index < children.length) {\n loose = listItemLoose(children[index])\n }\n }\n\n return loose\n}\n\n/**\n * @param {ListItem} node\n * @return {Boolean}\n */\nfunction listItemLoose(node) {\n const spread = node.spread\n\n return spread === null || spread === undefined\n ? node.children.length > 1\n : spread\n}\n","const tab = 9 /* `\\t` */\nconst space = 32 /* ` ` */\n\n/**\n * Remove initial and final spaces and tabs at the line breaks in `value`.\n * Does not trim initial and final spaces and tabs of the value itself.\n *\n * @param {string} value\n * Value to trim.\n * @returns {string}\n * Trimmed value.\n */\nexport function trimLines(value) {\n const source = String(value)\n const search = /\\r?\\n|\\r/g\n let match = search.exec(source)\n let last = 0\n /** @type {Array} */\n const lines = []\n\n while (match) {\n lines.push(\n trimLine(source.slice(last, match.index), last > 0, true),\n match[0]\n )\n\n last = match.index + match[0].length\n match = search.exec(source)\n }\n\n lines.push(trimLine(source.slice(last), last > 0, false))\n\n return lines.join('')\n}\n\n/**\n * @param {string} value\n * Line to trim.\n * @param {boolean} start\n * Whether to trim the start of the line.\n * @param {boolean} end\n * Whether to trim the end of the line.\n * @returns {string}\n * Trimmed line.\n */\nfunction trimLine(value, start, end) {\n let startIndex = 0\n let endIndex = value.length\n\n if (start) {\n let code = value.codePointAt(startIndex)\n\n while (code === tab || code === space) {\n startIndex++\n code = value.codePointAt(startIndex)\n }\n }\n\n if (end) {\n let code = value.codePointAt(endIndex - 1)\n\n while (code === tab || code === space) {\n endIndex--\n code = value.codePointAt(endIndex - 1)\n }\n }\n\n return endIndex > startIndex ? value.slice(startIndex, endIndex) : ''\n}\n","import {blockquote} from './blockquote.js'\nimport {hardBreak} from './break.js'\nimport {code} from './code.js'\nimport {strikethrough} from './delete.js'\nimport {emphasis} from './emphasis.js'\nimport {footnoteReference} from './footnote-reference.js'\nimport {heading} from './heading.js'\nimport {html} from './html.js'\nimport {imageReference} from './image-reference.js'\nimport {image} from './image.js'\nimport {inlineCode} from './inline-code.js'\nimport {linkReference} from './link-reference.js'\nimport {link} from './link.js'\nimport {listItem} from './list-item.js'\nimport {list} from './list.js'\nimport {paragraph} from './paragraph.js'\nimport {root} from './root.js'\nimport {strong} from './strong.js'\nimport {table} from './table.js'\nimport {tableRow} from './table-row.js'\nimport {tableCell} from './table-cell.js'\nimport {text} from './text.js'\nimport {thematicBreak} from './thematic-break.js'\n\n/**\n * Default handlers for nodes.\n *\n * @satisfies {import('../state.js').Handlers}\n */\nexport const handlers = {\n blockquote,\n break: hardBreak,\n code,\n delete: strikethrough,\n emphasis,\n footnoteReference,\n heading,\n html,\n imageReference,\n image,\n inlineCode,\n linkReference,\n link,\n listItem,\n list,\n paragraph,\n // @ts-expect-error: root is different, but hard to type.\n root,\n strong,\n table,\n tableCell,\n tableRow,\n text,\n thematicBreak,\n toml: ignore,\n yaml: ignore,\n definition: ignore,\n footnoteDefinition: ignore\n}\n\n// Return nothing for nodes that are ignored.\nfunction ignore() {\n return undefined\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Blockquote} Blockquote\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `blockquote` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {Blockquote} node\n * mdast node.\n * @returns {Element}\n * hast node.\n */\nexport function blockquote(state, node) {\n /** @type {Element} */\n const result = {\n type: 'element',\n tagName: 'blockquote',\n properties: {},\n children: state.wrap(state.all(node), true)\n }\n state.patch(node, result)\n return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Text} Text\n * @typedef {import('mdast').Break} Break\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `break` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {Break} node\n * mdast node.\n * @returns {Array}\n * hast element content.\n */\nexport function hardBreak(state, node) {\n /** @type {Element} */\n const result = {type: 'element', tagName: 'br', properties: {}, children: []}\n state.patch(node, result)\n return [state.applyData(node, result), {type: 'text', value: '\\n'}]\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').Code} Code\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `code` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {Code} node\n * mdast node.\n * @returns {Element}\n * hast node.\n */\nexport function code(state, node) {\n const value = node.value ? node.value + '\\n' : ''\n /** @type {Properties} */\n const properties = {}\n\n if (node.lang) {\n properties.className = ['language-' + node.lang]\n }\n\n // Create ``.\n /** @type {Element} */\n let result = {\n type: 'element',\n tagName: 'code',\n properties,\n children: [{type: 'text', value}]\n }\n\n if (node.meta) {\n result.data = {meta: node.meta}\n }\n\n state.patch(node, result)\n result = state.applyData(node, result)\n\n // Create `
`.\n  result = {type: 'element', tagName: 'pre', properties: {}, children: [result]}\n  state.patch(node, result)\n  return result\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Delete} Delete\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `delete` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Delete} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function strikethrough(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'del',\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Emphasis} Emphasis\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `emphasis` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Emphasis} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function emphasis(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'em',\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').FootnoteReference} FootnoteReference\n * @typedef {import('../state.js').State} State\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\n\n/**\n * Turn an mdast `footnoteReference` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {FootnoteReference} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function footnoteReference(state, node) {\n  const clobberPrefix =\n    typeof state.options.clobberPrefix === 'string'\n      ? state.options.clobberPrefix\n      : 'user-content-'\n  const id = String(node.identifier).toUpperCase()\n  const safeId = normalizeUri(id.toLowerCase())\n  const index = state.footnoteOrder.indexOf(id)\n  /** @type {number} */\n  let counter\n\n  let reuseCounter = state.footnoteCounts.get(id)\n\n  if (reuseCounter === undefined) {\n    reuseCounter = 0\n    state.footnoteOrder.push(id)\n    counter = state.footnoteOrder.length\n  } else {\n    counter = index + 1\n  }\n\n  reuseCounter += 1\n  state.footnoteCounts.set(id, reuseCounter)\n\n  /** @type {Element} */\n  const link = {\n    type: 'element',\n    tagName: 'a',\n    properties: {\n      href: '#' + clobberPrefix + 'fn-' + safeId,\n      id:\n        clobberPrefix +\n        'fnref-' +\n        safeId +\n        (reuseCounter > 1 ? '-' + reuseCounter : ''),\n      dataFootnoteRef: true,\n      ariaDescribedBy: ['footnote-label']\n    },\n    children: [{type: 'text', value: String(counter)}]\n  }\n  state.patch(node, link)\n\n  /** @type {Element} */\n  const sup = {\n    type: 'element',\n    tagName: 'sup',\n    properties: {},\n    children: [link]\n  }\n  state.patch(node, sup)\n  return state.applyData(node, sup)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Heading} Heading\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `heading` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Heading} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function heading(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'h' + node.depth,\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Html} Html\n * @typedef {import('../state.js').State} State\n * @typedef {import('../../index.js').Raw} Raw\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `html` node into hast (`raw` node in dangerous mode, otherwise\n * nothing).\n *\n * @param {State} state\n *   Info passed around.\n * @param {Html} node\n *   mdast node.\n * @returns {Element | Raw | undefined}\n *   hast node.\n */\nexport function html(state, node) {\n  if (state.options.allowDangerousHtml) {\n    /** @type {Raw} */\n    const result = {type: 'raw', value: node.value}\n    state.patch(node, result)\n    return state.applyData(node, result)\n  }\n\n  return undefined\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').ImageReference} ImageReference\n * @typedef {import('../state.js').State} State\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\nimport {revert} from '../revert.js'\n\n/**\n * Turn an mdast `imageReference` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {ImageReference} node\n *   mdast node.\n * @returns {Array | ElementContent}\n *   hast node.\n */\nexport function imageReference(state, node) {\n  const id = String(node.identifier).toUpperCase()\n  const definition = state.definitionById.get(id)\n\n  if (!definition) {\n    return revert(state, node)\n  }\n\n  /** @type {Properties} */\n  const properties = {src: normalizeUri(definition.url || ''), alt: node.alt}\n\n  if (definition.title !== null && definition.title !== undefined) {\n    properties.title = definition.title\n  }\n\n  /** @type {Element} */\n  const result = {type: 'element', tagName: 'img', properties, children: []}\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').Image} Image\n * @typedef {import('../state.js').State} State\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\n\n/**\n * Turn an mdast `image` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Image} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function image(state, node) {\n  /** @type {Properties} */\n  const properties = {src: normalizeUri(node.url)}\n\n  if (node.alt !== null && node.alt !== undefined) {\n    properties.alt = node.alt\n  }\n\n  if (node.title !== null && node.title !== undefined) {\n    properties.title = node.title\n  }\n\n  /** @type {Element} */\n  const result = {type: 'element', tagName: 'img', properties, children: []}\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Text} Text\n * @typedef {import('mdast').InlineCode} InlineCode\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `inlineCode` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {InlineCode} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function inlineCode(state, node) {\n  /** @type {Text} */\n  const text = {type: 'text', value: node.value.replace(/\\r?\\n|\\r/g, ' ')}\n  state.patch(node, text)\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'code',\n    properties: {},\n    children: [text]\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').LinkReference} LinkReference\n * @typedef {import('../state.js').State} State\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\nimport {revert} from '../revert.js'\n\n/**\n * Turn an mdast `linkReference` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {LinkReference} node\n *   mdast node.\n * @returns {Array | ElementContent}\n *   hast node.\n */\nexport function linkReference(state, node) {\n  const id = String(node.identifier).toUpperCase()\n  const definition = state.definitionById.get(id)\n\n  if (!definition) {\n    return revert(state, node)\n  }\n\n  /** @type {Properties} */\n  const properties = {href: normalizeUri(definition.url || '')}\n\n  if (definition.title !== null && definition.title !== undefined) {\n    properties.title = definition.title\n  }\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'a',\n    properties,\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').Link} Link\n * @typedef {import('../state.js').State} State\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\n\n/**\n * Turn an mdast `link` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Link} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function link(state, node) {\n  /** @type {Properties} */\n  const properties = {href: normalizeUri(node.url)}\n\n  if (node.title !== null && node.title !== undefined) {\n    properties.title = node.title\n  }\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'a',\n    properties,\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').List} List\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `list` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {List} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function list(state, node) {\n  /** @type {Properties} */\n  const properties = {}\n  const results = state.all(node)\n  let index = -1\n\n  if (typeof node.start === 'number' && node.start !== 1) {\n    properties.start = node.start\n  }\n\n  // Like GitHub, add a class for custom styling.\n  while (++index < results.length) {\n    const child = results[index]\n\n    if (\n      child.type === 'element' &&\n      child.tagName === 'li' &&\n      child.properties &&\n      Array.isArray(child.properties.className) &&\n      child.properties.className.includes('task-list-item')\n    ) {\n      properties.className = ['contains-task-list']\n      break\n    }\n  }\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: node.ordered ? 'ol' : 'ul',\n    properties,\n    children: state.wrap(results, true)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Paragraph} Paragraph\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `paragraph` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Paragraph} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function paragraph(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'p',\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Parents} HastParents\n * @typedef {import('hast').Root} HastRoot\n * @typedef {import('mdast').Root} MdastRoot\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `root` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {MdastRoot} node\n *   mdast node.\n * @returns {HastParents}\n *   hast node.\n */\nexport function root(state, node) {\n  /** @type {HastRoot} */\n  const result = {type: 'root', children: state.wrap(state.all(node))}\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Strong} Strong\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `strong` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Strong} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function strong(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'strong',\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Table} Table\n * @typedef {import('../state.js').State} State\n */\n\nimport {pointEnd, pointStart} from 'unist-util-position'\n\n/**\n * Turn an mdast `table` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Table} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function table(state, node) {\n  const rows = state.all(node)\n  const firstRow = rows.shift()\n  /** @type {Array} */\n  const tableContent = []\n\n  if (firstRow) {\n    /** @type {Element} */\n    const head = {\n      type: 'element',\n      tagName: 'thead',\n      properties: {},\n      children: state.wrap([firstRow], true)\n    }\n    state.patch(node.children[0], head)\n    tableContent.push(head)\n  }\n\n  if (rows.length > 0) {\n    /** @type {Element} */\n    const body = {\n      type: 'element',\n      tagName: 'tbody',\n      properties: {},\n      children: state.wrap(rows, true)\n    }\n\n    const start = pointStart(node.children[1])\n    const end = pointEnd(node.children[node.children.length - 1])\n    if (start && end) body.position = {start, end}\n    tableContent.push(body)\n  }\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'table',\n    properties: {},\n    children: state.wrap(tableContent, true)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').TableCell} TableCell\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `tableCell` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {TableCell} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function tableCell(state, node) {\n  // Note: this function is normally not called: see `table-row` for how rows\n  // and their cells are compiled.\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'td', // Assume body cell.\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').Parents} Parents\n * @typedef {import('mdast').TableRow} TableRow\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `tableRow` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {TableRow} node\n *   mdast node.\n * @param {Parents | undefined} parent\n *   Parent of `node`.\n * @returns {Element}\n *   hast node.\n */\nexport function tableRow(state, node, parent) {\n  const siblings = parent ? parent.children : undefined\n  // Generate a body row when without parent.\n  const rowIndex = siblings ? siblings.indexOf(node) : 1\n  const tagName = rowIndex === 0 ? 'th' : 'td'\n  // To do: option to use `style`?\n  const align = parent && parent.type === 'table' ? parent.align : undefined\n  const length = align ? align.length : node.children.length\n  let cellIndex = -1\n  /** @type {Array} */\n  const cells = []\n\n  while (++cellIndex < length) {\n    // Note: can also be undefined.\n    const cell = node.children[cellIndex]\n    /** @type {Properties} */\n    const properties = {}\n    const alignValue = align ? align[cellIndex] : undefined\n\n    if (alignValue) {\n      properties.align = alignValue\n    }\n\n    /** @type {Element} */\n    let result = {type: 'element', tagName, properties, children: []}\n\n    if (cell) {\n      result.children = state.all(cell)\n      state.patch(cell, result)\n      result = state.applyData(cell, result)\n    }\n\n    cells.push(result)\n  }\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'tr',\n    properties: {},\n    children: state.wrap(cells, true)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} HastElement\n * @typedef {import('hast').Text} HastText\n * @typedef {import('mdast').Text} MdastText\n * @typedef {import('../state.js').State} State\n */\n\nimport {trimLines} from 'trim-lines'\n\n/**\n * Turn an mdast `text` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {MdastText} node\n *   mdast node.\n * @returns {HastElement | HastText}\n *   hast node.\n */\nexport function text(state, node) {\n  /** @type {HastText} */\n  const result = {type: 'text', value: trimLines(String(node.value))}\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').ThematicBreak} ThematicBreak\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `thematicBreak` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {ThematicBreak} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function thematicBreak(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'hr',\n    properties: {},\n    children: []\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} HastElement\n * @typedef {import('hast').ElementContent} HastElementContent\n * @typedef {import('hast').Nodes} HastNodes\n * @typedef {import('hast').Properties} HastProperties\n * @typedef {import('hast').RootContent} HastRootContent\n * @typedef {import('hast').Text} HastText\n *\n * @typedef {import('mdast').Definition} MdastDefinition\n * @typedef {import('mdast').FootnoteDefinition} MdastFootnoteDefinition\n * @typedef {import('mdast').Nodes} MdastNodes\n * @typedef {import('mdast').Parents} MdastParents\n *\n * @typedef {import('vfile').VFile} VFile\n *\n * @typedef {import('./footer.js').FootnoteBackContentTemplate} FootnoteBackContentTemplate\n * @typedef {import('./footer.js').FootnoteBackLabelTemplate} FootnoteBackLabelTemplate\n */\n\n/**\n * @callback Handler\n *   Handle a node.\n * @param {State} state\n *   Info passed around.\n * @param {any} node\n *   mdast node to handle.\n * @param {MdastParents | undefined} parent\n *   Parent of `node`.\n * @returns {Array | HastElementContent | undefined}\n *   hast node.\n *\n * @typedef {Partial>} Handlers\n *   Handle nodes.\n *\n * @typedef Options\n *   Configuration (optional).\n * @property {boolean | null | undefined} [allowDangerousHtml=false]\n *   Whether to persist raw HTML in markdown in the hast tree (default:\n *   `false`).\n * @property {string | null | undefined} [clobberPrefix='user-content-']\n *   Prefix to use before the `id` property on footnotes to prevent them from\n *   *clobbering* (default: `'user-content-'`).\n *\n *   Pass `''` for trusted markdown and when you are careful with\n *   polyfilling.\n *   You could pass a different prefix.\n *\n *   DOM clobbering is this:\n *\n *   ```html\n *   

\n * \n * ```\n *\n * The above example shows that elements are made available by browsers, by\n * their ID, on the `window` object.\n * This is a security risk because you might be expecting some other variable\n * at that place.\n * It can also break polyfills.\n * Using a prefix solves these problems.\n * @property {VFile | null | undefined} [file]\n * Corresponding virtual file representing the input document (optional).\n * @property {FootnoteBackContentTemplate | string | null | undefined} [footnoteBackContent]\n * Content of the backreference back to references (default: `defaultFootnoteBackContent`).\n *\n * The default value is:\n *\n * ```js\n * function defaultFootnoteBackContent(_, rereferenceIndex) {\n * const result = [{type: 'text', value: '↩'}]\n *\n * if (rereferenceIndex > 1) {\n * result.push({\n * type: 'element',\n * tagName: 'sup',\n * properties: {},\n * children: [{type: 'text', value: String(rereferenceIndex)}]\n * })\n * }\n *\n * return result\n * }\n * ```\n *\n * This content is used in the `a` element of each backreference (the `↩`\n * links).\n * @property {FootnoteBackLabelTemplate | string | null | undefined} [footnoteBackLabel]\n * Label to describe the backreference back to references (default:\n * `defaultFootnoteBackLabel`).\n *\n * The default value is:\n *\n * ```js\n * function defaultFootnoteBackLabel(referenceIndex, rereferenceIndex) {\n * return (\n * 'Back to reference ' +\n * (referenceIndex + 1) +\n * (rereferenceIndex > 1 ? '-' + rereferenceIndex : '')\n * )\n * }\n * ```\n *\n * Change it when the markdown is not in English.\n *\n * This label is used in the `ariaLabel` property on each backreference\n * (the `↩` links).\n * It affects users of assistive technology.\n * @property {string | null | undefined} [footnoteLabel='Footnotes']\n * Textual label to use for the footnotes section (default: `'Footnotes'`).\n *\n * Change it when the markdown is not in English.\n *\n * This label is typically hidden visually (assuming a `sr-only` CSS class\n * is defined that does that) and so affects screen readers only.\n * If you do have such a class, but want to show this section to everyone,\n * pass different properties with the `footnoteLabelProperties` option.\n * @property {HastProperties | null | undefined} [footnoteLabelProperties={className: ['sr-only']}]\n * Properties to use on the footnote label (default: `{className:\n * ['sr-only']}`).\n *\n * Change it to show the label and add other properties.\n *\n * This label is typically hidden visually (assuming an `sr-only` CSS class\n * is defined that does that) and so affects screen readers only.\n * If you do have such a class, but want to show this section to everyone,\n * pass an empty string.\n * You can also add different properties.\n *\n * > **Note**: `id: 'footnote-label'` is always added, because footnote\n * > calls use it with `aria-describedby` to provide an accessible label.\n * @property {string | null | undefined} [footnoteLabelTagName='h2']\n * HTML tag name to use for the footnote label element (default: `'h2'`).\n *\n * Change it to match your document structure.\n *\n * This label is typically hidden visually (assuming a `sr-only` CSS class\n * is defined that does that) and so affects screen readers only.\n * If you do have such a class, but want to show this section to everyone,\n * pass different properties with the `footnoteLabelProperties` option.\n * @property {Handlers | null | undefined} [handlers]\n * Extra handlers for nodes (optional).\n * @property {Array | null | undefined} [passThrough]\n * List of custom mdast node types to pass through (keep) in hast (note that\n * the node itself is passed, but eventual children are transformed)\n * (optional).\n * @property {Handler | null | undefined} [unknownHandler]\n * Handler for all unknown nodes (optional).\n *\n * @typedef State\n * Info passed around.\n * @property {(node: MdastNodes) => Array} all\n * Transform the children of an mdast parent to hast.\n * @property {(from: MdastNodes, to: Type) => HastElement | Type} applyData\n * Honor the `data` of `from`, and generate an element instead of `node`.\n * @property {Map} definitionById\n * Definitions by their identifier.\n * @property {Map} footnoteById\n * Footnote definitions by their identifier.\n * @property {Map} footnoteCounts\n * Counts for how often the same footnote was called.\n * @property {Array} footnoteOrder\n * Identifiers of order when footnote calls first appear in tree order.\n * @property {Handlers} handlers\n * Applied handlers.\n * @property {(node: MdastNodes, parent: MdastParents | undefined) => Array | HastElementContent | undefined} one\n * Transform an mdast node to hast.\n * @property {Options} options\n * Configuration.\n * @property {(from: MdastNodes, node: HastNodes) => undefined} patch\n * Copy a node’s positional info.\n * @property {(nodes: Array, loose?: boolean | undefined) => Array} wrap\n * Wrap `nodes` with line endings between each node, adds initial/final line endings when `loose`.\n */\n\nimport structuredClone from '@ungap/structured-clone'\nimport {visit} from 'unist-util-visit'\nimport {position} from 'unist-util-position'\nimport {handlers as defaultHandlers} from './handlers/index.js'\n\nconst own = {}.hasOwnProperty\n\n/** @type {Options} */\nconst emptyOptions = {}\n\n/**\n * Create `state` from an mdast tree.\n *\n * @param {MdastNodes} tree\n * mdast node to transform.\n * @param {Options | null | undefined} [options]\n * Configuration (optional).\n * @returns {State}\n * `state` function.\n */\nexport function createState(tree, options) {\n const settings = options || emptyOptions\n /** @type {Map} */\n const definitionById = new Map()\n /** @type {Map} */\n const footnoteById = new Map()\n /** @type {Map} */\n const footnoteCounts = new Map()\n /** @type {Handlers} */\n // @ts-expect-error: the root handler returns a root.\n // Hard to type.\n const handlers = {...defaultHandlers, ...settings.handlers}\n\n /** @type {State} */\n const state = {\n all,\n applyData,\n definitionById,\n footnoteById,\n footnoteCounts,\n footnoteOrder: [],\n handlers,\n one,\n options: settings,\n patch,\n wrap\n }\n\n visit(tree, function (node) {\n if (node.type === 'definition' || node.type === 'footnoteDefinition') {\n const map = node.type === 'definition' ? definitionById : footnoteById\n const id = String(node.identifier).toUpperCase()\n\n // Mimick CM behavior of link definitions.\n // See: .\n if (!map.has(id)) {\n // @ts-expect-error: node type matches map.\n map.set(id, node)\n }\n }\n })\n\n return state\n\n /**\n * Transform an mdast node into a hast node.\n *\n * @param {MdastNodes} node\n * mdast node.\n * @param {MdastParents | undefined} [parent]\n * Parent of `node`.\n * @returns {Array | HastElementContent | undefined}\n * Resulting hast node.\n */\n function one(node, parent) {\n const type = node.type\n const handle = state.handlers[type]\n\n if (own.call(state.handlers, type) && handle) {\n return handle(state, node, parent)\n }\n\n if (state.options.passThrough && state.options.passThrough.includes(type)) {\n if ('children' in node) {\n const {children, ...shallow} = node\n const result = structuredClone(shallow)\n // @ts-expect-error: TS doesn’t understand…\n result.children = state.all(node)\n // @ts-expect-error: TS doesn’t understand…\n return result\n }\n\n // @ts-expect-error: it’s custom.\n return structuredClone(node)\n }\n\n const unknown = state.options.unknownHandler || defaultUnknownHandler\n\n return unknown(state, node, parent)\n }\n\n /**\n * Transform the children of an mdast node into hast nodes.\n *\n * @param {MdastNodes} parent\n * mdast node to compile\n * @returns {Array}\n * Resulting hast nodes.\n */\n function all(parent) {\n /** @type {Array} */\n const values = []\n\n if ('children' in parent) {\n const nodes = parent.children\n let index = -1\n while (++index < nodes.length) {\n const result = state.one(nodes[index], parent)\n\n // To do: see if we van clean this? Can we merge texts?\n if (result) {\n if (index && nodes[index - 1].type === 'break') {\n if (!Array.isArray(result) && result.type === 'text') {\n result.value = trimMarkdownSpaceStart(result.value)\n }\n\n if (!Array.isArray(result) && result.type === 'element') {\n const head = result.children[0]\n\n if (head && head.type === 'text') {\n head.value = trimMarkdownSpaceStart(head.value)\n }\n }\n }\n\n if (Array.isArray(result)) {\n values.push(...result)\n } else {\n values.push(result)\n }\n }\n }\n }\n\n return values\n }\n}\n\n/**\n * Copy a node’s positional info.\n *\n * @param {MdastNodes} from\n * mdast node to copy from.\n * @param {HastNodes} to\n * hast node to copy into.\n * @returns {undefined}\n * Nothing.\n */\nfunction patch(from, to) {\n if (from.position) to.position = position(from)\n}\n\n/**\n * Honor the `data` of `from` and maybe generate an element instead of `to`.\n *\n * @template {HastNodes} Type\n * Node type.\n * @param {MdastNodes} from\n * mdast node to use data from.\n * @param {Type} to\n * hast node to change.\n * @returns {HastElement | Type}\n * Nothing.\n */\nfunction applyData(from, to) {\n /** @type {HastElement | Type} */\n let result = to\n\n // Handle `data.hName`, `data.hProperties, `data.hChildren`.\n if (from && from.data) {\n const hName = from.data.hName\n const hChildren = from.data.hChildren\n const hProperties = from.data.hProperties\n\n if (typeof hName === 'string') {\n // Transforming the node resulted in an element with a different name\n // than wanted:\n if (result.type === 'element') {\n result.tagName = hName\n }\n // Transforming the node resulted in a non-element, which happens for\n // raw, text, and root nodes (unless custom handlers are passed).\n // The intent of `hName` is to create an element, but likely also to keep\n // the content around (otherwise: pass `hChildren`).\n else {\n /** @type {Array} */\n // @ts-expect-error: assume no doctypes in `root`.\n const children = 'children' in result ? result.children : [result]\n result = {type: 'element', tagName: hName, properties: {}, children}\n }\n }\n\n if (result.type === 'element' && hProperties) {\n Object.assign(result.properties, structuredClone(hProperties))\n }\n\n if (\n 'children' in result &&\n result.children &&\n hChildren !== null &&\n hChildren !== undefined\n ) {\n result.children = hChildren\n }\n }\n\n return result\n}\n\n/**\n * Transform an unknown node.\n *\n * @param {State} state\n * Info passed around.\n * @param {MdastNodes} node\n * Unknown mdast node.\n * @returns {HastElement | HastText}\n * Resulting hast node.\n */\nfunction defaultUnknownHandler(state, node) {\n const data = node.data || {}\n /** @type {HastElement | HastText} */\n const result =\n 'value' in node &&\n !(own.call(data, 'hProperties') || own.call(data, 'hChildren'))\n ? {type: 'text', value: node.value}\n : {\n type: 'element',\n tagName: 'div',\n properties: {},\n children: state.all(node)\n }\n\n state.patch(node, result)\n return state.applyData(node, result)\n}\n\n/**\n * Wrap `nodes` with line endings between each node.\n *\n * @template {HastRootContent} Type\n * Node type.\n * @param {Array} nodes\n * List of nodes to wrap.\n * @param {boolean | undefined} [loose=false]\n * Whether to add line endings at start and end (default: `false`).\n * @returns {Array}\n * Wrapped nodes.\n */\nexport function wrap(nodes, loose) {\n /** @type {Array} */\n const result = []\n let index = -1\n\n if (loose) {\n result.push({type: 'text', value: '\\n'})\n }\n\n while (++index < nodes.length) {\n if (index) result.push({type: 'text', value: '\\n'})\n result.push(nodes[index])\n }\n\n if (loose && nodes.length > 0) {\n result.push({type: 'text', value: '\\n'})\n }\n\n return result\n}\n\n/**\n * Trim spaces and tabs at the start of `value`.\n *\n * @param {string} value\n * Value to trim.\n * @returns {string}\n * Result.\n */\nfunction trimMarkdownSpaceStart(value) {\n let index = 0\n let code = value.charCodeAt(index)\n\n while (code === 9 || code === 32) {\n index++\n code = value.charCodeAt(index)\n }\n\n return value.slice(index)\n}\n","/**\n * @typedef {import('hast').Nodes} HastNodes\n * @typedef {import('mdast').Nodes} MdastNodes\n * @typedef {import('./state.js').Options} Options\n */\n\nimport {ok as assert} from 'devlop'\nimport {footer} from './footer.js'\nimport {createState} from './state.js'\n\n/**\n * Transform mdast to hast.\n *\n * ##### Notes\n *\n * ###### HTML\n *\n * Raw HTML is available in mdast as `html` nodes and can be embedded in hast\n * as semistandard `raw` nodes.\n * Most utilities ignore `raw` nodes but two notable ones don’t:\n *\n * * `hast-util-to-html` also has an option `allowDangerousHtml` which will\n * output the raw HTML.\n * This is typically discouraged as noted by the option name but is useful\n * if you completely trust authors\n * * `hast-util-raw` can handle the raw embedded HTML strings by parsing them\n * into standard hast nodes (`element`, `text`, etc).\n * This is a heavy task as it needs a full HTML parser, but it is the only\n * way to support untrusted content\n *\n * ###### Footnotes\n *\n * Many options supported here relate to footnotes.\n * Footnotes are not specified by CommonMark, which we follow by default.\n * They are supported by GitHub, so footnotes can be enabled in markdown with\n * `mdast-util-gfm`.\n *\n * The options `footnoteBackLabel` and `footnoteLabel` define natural language\n * that explains footnotes, which is hidden for sighted users but shown to\n * assistive technology.\n * When your page is not in English, you must define translated values.\n *\n * Back references use ARIA attributes, but the section label itself uses a\n * heading that is hidden with an `sr-only` class.\n * To show it to sighted users, define different attributes in\n * `footnoteLabelProperties`.\n *\n * ###### Clobbering\n *\n * Footnotes introduces a problem, as it links footnote calls to footnote\n * definitions on the page through `id` attributes generated from user content,\n * which results in DOM clobbering.\n *\n * DOM clobbering is this:\n *\n * ```html\n *

\n * \n * ```\n *\n * Elements by their ID are made available by browsers on the `window` object,\n * which is a security risk.\n * Using a prefix solves this problem.\n *\n * More information on how to handle clobbering and the prefix is explained in\n * Example: headings (DOM clobbering) in `rehype-sanitize`.\n *\n * ###### Unknown nodes\n *\n * Unknown nodes are nodes with a type that isn’t in `handlers` or `passThrough`.\n * The default behavior for unknown nodes is:\n *\n * * when the node has a `value` (and doesn’t have `data.hName`,\n * `data.hProperties`, or `data.hChildren`, see later), create a hast `text`\n * node\n * * otherwise, create a `
` element (which could be changed with\n * `data.hName`), with its children mapped from mdast to hast as well\n *\n * This behavior can be changed by passing an `unknownHandler`.\n *\n * @param {MdastNodes} tree\n * mdast tree.\n * @param {Options | null | undefined} [options]\n * Configuration (optional).\n * @returns {HastNodes}\n * hast tree.\n */\nexport function toHast(tree, options) {\n const state = createState(tree, options)\n const node = state.one(tree, undefined)\n const foot = footer(state)\n /** @type {HastNodes} */\n const result = Array.isArray(node)\n ? {type: 'root', children: node}\n : node || {type: 'root', children: []}\n\n if (foot) {\n // If there’s a footer, there were definitions, meaning block\n // content.\n // So `result` is a parent node.\n assert('children' in result)\n result.children.push({type: 'text', value: '\\n'}, foot)\n }\n\n return result\n}\n","// Include `data` fields in mdast and `raw` nodes in hast.\n/// \n\n/**\n * @typedef {import('hast').Root} HastRoot\n * @typedef {import('mdast').Root} MdastRoot\n * @typedef {import('mdast-util-to-hast').Options} ToHastOptions\n * @typedef {import('unified').Processor} Processor\n * @typedef {import('vfile').VFile} VFile\n */\n\n/**\n * @typedef {Omit} Options\n *\n * @callback TransformBridge\n * Bridge-mode.\n *\n * Runs the destination with the new hast tree.\n * Discards result.\n * @param {MdastRoot} tree\n * Tree.\n * @param {VFile} file\n * File.\n * @returns {Promise}\n * Nothing.\n *\n * @callback TransformMutate\n * Mutate-mode.\n *\n * Further transformers run on the hast tree.\n * @param {MdastRoot} tree\n * Tree.\n * @param {VFile} file\n * File.\n * @returns {HastRoot}\n * Tree (hast).\n */\n\nimport {toHast} from 'mdast-util-to-hast'\n\n/**\n * Turn markdown into HTML.\n *\n * ##### Notes\n *\n * ###### Signature\n *\n * * if a processor is given, runs the (rehype) plugins used on it with a\n * hast tree, then discards the result (*bridge mode*)\n * * otherwise, returns a hast tree, the plugins used after `remarkRehype`\n * are rehype plugins (*mutate mode*)\n *\n * > 👉 **Note**: It’s highly unlikely that you want to pass a `processor`.\n *\n * ###### HTML\n *\n * Raw HTML is available in mdast as `html` nodes and can be embedded in hast\n * as semistandard `raw` nodes.\n * Most plugins ignore `raw` nodes but two notable ones don’t:\n *\n * * `rehype-stringify` also has an option `allowDangerousHtml` which will\n * output the raw HTML.\n * This is typically discouraged as noted by the option name but is useful if\n * you completely trust authors\n * * `rehype-raw` can handle the raw embedded HTML strings by parsing them\n * into standard hast nodes (`element`, `text`, etc).\n * This is a heavy task as it needs a full HTML parser, but it is the only way\n * to support untrusted content\n *\n * ###### Footnotes\n *\n * Many options supported here relate to footnotes.\n * Footnotes are not specified by CommonMark, which we follow by default.\n * They are supported by GitHub, so footnotes can be enabled in markdown with\n * `remark-gfm`.\n *\n * The options `footnoteBackLabel` and `footnoteLabel` define natural language\n * that explains footnotes, which is hidden for sighted users but shown to\n * assistive technology.\n * When your page is not in English, you must define translated values.\n *\n * Back references use ARIA attributes, but the section label itself uses a\n * heading that is hidden with an `sr-only` class.\n * To show it to sighted users, define different attributes in\n * `footnoteLabelProperties`.\n *\n * ###### Clobbering\n *\n * Footnotes introduces a problem, as it links footnote calls to footnote\n * definitions on the page through `id` attributes generated from user content,\n * which results in DOM clobbering.\n *\n * DOM clobbering is this:\n *\n * ```html\n *

\n * \n * ```\n *\n * Elements by their ID are made available by browsers on the `window` object,\n * which is a security risk.\n * Using a prefix solves this problem.\n *\n * More information on how to handle clobbering and the prefix is explained in\n * *Example: headings (DOM clobbering)* in `rehype-sanitize`.\n *\n * ###### Unknown nodes\n *\n * Unknown nodes are nodes with a type that isn’t in `handlers` or `passThrough`.\n * The default behavior for unknown nodes is:\n *\n * * when the node has a `value` (and doesn’t have `data.hName`,\n * `data.hProperties`, or `data.hChildren`, see later), create a hast `text`\n * node\n * * otherwise, create a `
` element (which could be changed with\n * `data.hName`), with its children mapped from mdast to hast as well\n *\n * This behavior can be changed by passing an `unknownHandler`.\n *\n * @overload\n * @param {Processor} processor\n * @param {Readonly | null | undefined} [options]\n * @returns {TransformBridge}\n *\n * @overload\n * @param {Readonly | null | undefined} [options]\n * @returns {TransformMutate}\n *\n * @param {Readonly | Processor | null | undefined} [destination]\n * Processor or configuration (optional).\n * @param {Readonly | null | undefined} [options]\n * When a processor was given, configuration (optional).\n * @returns {TransformBridge | TransformMutate}\n * Transform.\n */\nexport default function remarkRehype(destination, options) {\n if (destination && 'run' in destination) {\n /**\n * @type {TransformBridge}\n */\n return async function (tree, file) {\n // Cast because root in -> root out.\n const hastTree = /** @type {HastRoot} */ (\n toHast(tree, {file, ...options})\n )\n await destination.run(hastTree, file)\n }\n }\n\n /**\n * @type {TransformMutate}\n */\n return function (tree, file) {\n // Cast because root in -> root out.\n return /** @type {HastRoot} */ (\n toHast(tree, {file, ...(options || destination)})\n )\n }\n}\n","/**\n * Throw a given error.\n *\n * @param {Error|null|undefined} [error]\n * Maybe error.\n * @returns {asserts error is null|undefined}\n */\nexport function bail(error) {\n if (error) {\n throw error\n }\n}\n","export default function isPlainObject(value) {\n\tif (typeof value !== 'object' || value === null) {\n\t\treturn false;\n\t}\n\n\tconst prototype = Object.getPrototypeOf(value);\n\treturn (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in value) && !(Symbol.iterator in value);\n}\n","// To do: remove `void`s\n// To do: remove `null` from output of our APIs, allow it as user APIs.\n\n/**\n * @typedef {(error?: Error | null | undefined, ...output: Array) => void} Callback\n * Callback.\n *\n * @typedef {(...input: Array) => any} Middleware\n * Ware.\n *\n * @typedef Pipeline\n * Pipeline.\n * @property {Run} run\n * Run the pipeline.\n * @property {Use} use\n * Add middleware.\n *\n * @typedef {(...input: Array) => void} Run\n * Call all middleware.\n *\n * Calls `done` on completion with either an error or the output of the\n * last middleware.\n *\n * > 👉 **Note**: as the length of input defines whether async functions get a\n * > `next` function,\n * > it’s recommended to keep `input` at one value normally.\n\n *\n * @typedef {(fn: Middleware) => Pipeline} Use\n * Add middleware.\n */\n\n/**\n * Create new middleware.\n *\n * @returns {Pipeline}\n * Pipeline.\n */\nexport function trough() {\n /** @type {Array} */\n const fns = []\n /** @type {Pipeline} */\n const pipeline = {run, use}\n\n return pipeline\n\n /** @type {Run} */\n function run(...values) {\n let middlewareIndex = -1\n /** @type {Callback} */\n const callback = values.pop()\n\n if (typeof callback !== 'function') {\n throw new TypeError('Expected function as last argument, not ' + callback)\n }\n\n next(null, ...values)\n\n /**\n * Run the next `fn`, or we’re done.\n *\n * @param {Error | null | undefined} error\n * @param {Array} output\n */\n function next(error, ...output) {\n const fn = fns[++middlewareIndex]\n let index = -1\n\n if (error) {\n callback(error)\n return\n }\n\n // Copy non-nullish input into values.\n while (++index < values.length) {\n if (output[index] === null || output[index] === undefined) {\n output[index] = values[index]\n }\n }\n\n // Save the newly created `output` for the next call.\n values = output\n\n // Next or done.\n if (fn) {\n wrap(fn, next)(...output)\n } else {\n callback(null, ...output)\n }\n }\n }\n\n /** @type {Use} */\n function use(middelware) {\n if (typeof middelware !== 'function') {\n throw new TypeError(\n 'Expected `middelware` to be a function, not ' + middelware\n )\n }\n\n fns.push(middelware)\n return pipeline\n }\n}\n\n/**\n * Wrap `middleware` into a uniform interface.\n *\n * You can pass all input to the resulting function.\n * `callback` is then called with the output of `middleware`.\n *\n * If `middleware` accepts more arguments than the later given in input,\n * an extra `done` function is passed to it after that input,\n * which must be called by `middleware`.\n *\n * The first value in `input` is the main input value.\n * All other input values are the rest input values.\n * The values given to `callback` are the input values,\n * merged with every non-nullish output value.\n *\n * * if `middleware` throws an error,\n * returns a promise that is rejected,\n * or calls the given `done` function with an error,\n * `callback` is called with that error\n * * if `middleware` returns a value or returns a promise that is resolved,\n * that value is the main output value\n * * if `middleware` calls `done`,\n * all non-nullish values except for the first one (the error) overwrite the\n * output values\n *\n * @param {Middleware} middleware\n * Function to wrap.\n * @param {Callback} callback\n * Callback called with the output of `middleware`.\n * @returns {Run}\n * Wrapped middleware.\n */\nexport function wrap(middleware, callback) {\n /** @type {boolean} */\n let called\n\n return wrapped\n\n /**\n * Call `middleware`.\n * @this {any}\n * @param {Array} parameters\n * @returns {void}\n */\n function wrapped(...parameters) {\n const fnExpectsCallback = middleware.length > parameters.length\n /** @type {any} */\n let result\n\n if (fnExpectsCallback) {\n parameters.push(done)\n }\n\n try {\n result = middleware.apply(this, parameters)\n } catch (error) {\n const exception = /** @type {Error} */ (error)\n\n // Well, this is quite the pickle.\n // `middleware` received a callback and called it synchronously, but that\n // threw an error.\n // The only thing left to do is to throw the thing instead.\n if (fnExpectsCallback && called) {\n throw exception\n }\n\n return done(exception)\n }\n\n if (!fnExpectsCallback) {\n if (result && result.then && typeof result.then === 'function') {\n result.then(then, done)\n } else if (result instanceof Error) {\n done(result)\n } else {\n then(result)\n }\n }\n }\n\n /**\n * Call `callback`, only once.\n *\n * @type {Callback}\n */\n function done(error, ...output) {\n if (!called) {\n called = true\n callback(error, ...output)\n }\n }\n\n /**\n * Call `done` with one value.\n *\n * @param {any} [value]\n */\n function then(value) {\n done(null, value)\n }\n}\n","// A derivative work based on:\n// .\n// Which is licensed:\n//\n// MIT License\n//\n// Copyright (c) 2013 James Halliday\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy of\n// this software and associated documentation files (the \"Software\"), to deal in\n// the Software without restriction, including without limitation the rights to\n// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\n// the Software, and to permit persons to whom the Software is furnished to do so,\n// subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in all\n// copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\n// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\n// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\n// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n// A derivative work based on:\n//\n// Parts of that are extracted from Node’s internal `path` module:\n// .\n// Which is licensed:\n//\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nexport const path = {basename, dirname, extname, join, sep: '/'}\n\n/* eslint-disable max-depth, complexity */\n\n/**\n * Get the basename from a path.\n *\n * @param {string} path\n * File path.\n * @param {string | null | undefined} [ext]\n * Extension to strip.\n * @returns {string}\n * Stem or basename.\n */\nfunction basename(path, ext) {\n if (ext !== undefined && typeof ext !== 'string') {\n throw new TypeError('\"ext\" argument must be a string')\n }\n\n assertPath(path)\n let start = 0\n let end = -1\n let index = path.length\n /** @type {boolean | undefined} */\n let seenNonSlash\n\n if (ext === undefined || ext.length === 0 || ext.length > path.length) {\n while (index--) {\n if (path.codePointAt(index) === 47 /* `/` */) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now.\n if (seenNonSlash) {\n start = index + 1\n break\n }\n } else if (end < 0) {\n // We saw the first non-path separator, mark this as the end of our\n // path component.\n seenNonSlash = true\n end = index + 1\n }\n }\n\n return end < 0 ? '' : path.slice(start, end)\n }\n\n if (ext === path) {\n return ''\n }\n\n let firstNonSlashEnd = -1\n let extIndex = ext.length - 1\n\n while (index--) {\n if (path.codePointAt(index) === 47 /* `/` */) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now.\n if (seenNonSlash) {\n start = index + 1\n break\n }\n } else {\n if (firstNonSlashEnd < 0) {\n // We saw the first non-path separator, remember this index in case\n // we need it if the extension ends up not matching.\n seenNonSlash = true\n firstNonSlashEnd = index + 1\n }\n\n if (extIndex > -1) {\n // Try to match the explicit extension.\n if (path.codePointAt(index) === ext.codePointAt(extIndex--)) {\n if (extIndex < 0) {\n // We matched the extension, so mark this as the end of our path\n // component\n end = index\n }\n } else {\n // Extension does not match, so our result is the entire path\n // component\n extIndex = -1\n end = firstNonSlashEnd\n }\n }\n }\n }\n\n if (start === end) {\n end = firstNonSlashEnd\n } else if (end < 0) {\n end = path.length\n }\n\n return path.slice(start, end)\n}\n\n/**\n * Get the dirname from a path.\n *\n * @param {string} path\n * File path.\n * @returns {string}\n * File path.\n */\nfunction dirname(path) {\n assertPath(path)\n\n if (path.length === 0) {\n return '.'\n }\n\n let end = -1\n let index = path.length\n /** @type {boolean | undefined} */\n let unmatchedSlash\n\n // Prefix `--` is important to not run on `0`.\n while (--index) {\n if (path.codePointAt(index) === 47 /* `/` */) {\n if (unmatchedSlash) {\n end = index\n break\n }\n } else if (!unmatchedSlash) {\n // We saw the first non-path separator\n unmatchedSlash = true\n }\n }\n\n return end < 0\n ? path.codePointAt(0) === 47 /* `/` */\n ? '/'\n : '.'\n : end === 1 && path.codePointAt(0) === 47 /* `/` */\n ? '//'\n : path.slice(0, end)\n}\n\n/**\n * Get an extname from a path.\n *\n * @param {string} path\n * File path.\n * @returns {string}\n * Extname.\n */\nfunction extname(path) {\n assertPath(path)\n\n let index = path.length\n\n let end = -1\n let startPart = 0\n let startDot = -1\n // Track the state of characters (if any) we see before our first dot and\n // after any path separator we find.\n let preDotState = 0\n /** @type {boolean | undefined} */\n let unmatchedSlash\n\n while (index--) {\n const code = path.codePointAt(index)\n\n if (code === 47 /* `/` */) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now.\n if (unmatchedSlash) {\n startPart = index + 1\n break\n }\n\n continue\n }\n\n if (end < 0) {\n // We saw the first non-path separator, mark this as the end of our\n // extension.\n unmatchedSlash = true\n end = index + 1\n }\n\n if (code === 46 /* `.` */) {\n // If this is our first dot, mark it as the start of our extension.\n if (startDot < 0) {\n startDot = index\n } else if (preDotState !== 1) {\n preDotState = 1\n }\n } else if (startDot > -1) {\n // We saw a non-dot and non-path separator before our dot, so we should\n // have a good chance at having a non-empty extension.\n preDotState = -1\n }\n }\n\n if (\n startDot < 0 ||\n end < 0 ||\n // We saw a non-dot character immediately before the dot.\n preDotState === 0 ||\n // The (right-most) trimmed path component is exactly `..`.\n (preDotState === 1 && startDot === end - 1 && startDot === startPart + 1)\n ) {\n return ''\n }\n\n return path.slice(startDot, end)\n}\n\n/**\n * Join segments from a path.\n *\n * @param {Array} segments\n * Path segments.\n * @returns {string}\n * File path.\n */\nfunction join(...segments) {\n let index = -1\n /** @type {string | undefined} */\n let joined\n\n while (++index < segments.length) {\n assertPath(segments[index])\n\n if (segments[index]) {\n joined =\n joined === undefined ? segments[index] : joined + '/' + segments[index]\n }\n }\n\n return joined === undefined ? '.' : normalize(joined)\n}\n\n/**\n * Normalize a basic file path.\n *\n * @param {string} path\n * File path.\n * @returns {string}\n * File path.\n */\n// Note: `normalize` is not exposed as `path.normalize`, so some code is\n// manually removed from it.\nfunction normalize(path) {\n assertPath(path)\n\n const absolute = path.codePointAt(0) === 47 /* `/` */\n\n // Normalize the path according to POSIX rules.\n let value = normalizeString(path, !absolute)\n\n if (value.length === 0 && !absolute) {\n value = '.'\n }\n\n if (value.length > 0 && path.codePointAt(path.length - 1) === 47 /* / */) {\n value += '/'\n }\n\n return absolute ? '/' + value : value\n}\n\n/**\n * Resolve `.` and `..` elements in a path with directory names.\n *\n * @param {string} path\n * File path.\n * @param {boolean} allowAboveRoot\n * Whether `..` can move above root.\n * @returns {string}\n * File path.\n */\nfunction normalizeString(path, allowAboveRoot) {\n let result = ''\n let lastSegmentLength = 0\n let lastSlash = -1\n let dots = 0\n let index = -1\n /** @type {number | undefined} */\n let code\n /** @type {number} */\n let lastSlashIndex\n\n while (++index <= path.length) {\n if (index < path.length) {\n code = path.codePointAt(index)\n } else if (code === 47 /* `/` */) {\n break\n } else {\n code = 47 /* `/` */\n }\n\n if (code === 47 /* `/` */) {\n if (lastSlash === index - 1 || dots === 1) {\n // Empty.\n } else if (lastSlash !== index - 1 && dots === 2) {\n if (\n result.length < 2 ||\n lastSegmentLength !== 2 ||\n result.codePointAt(result.length - 1) !== 46 /* `.` */ ||\n result.codePointAt(result.length - 2) !== 46 /* `.` */\n ) {\n if (result.length > 2) {\n lastSlashIndex = result.lastIndexOf('/')\n\n if (lastSlashIndex !== result.length - 1) {\n if (lastSlashIndex < 0) {\n result = ''\n lastSegmentLength = 0\n } else {\n result = result.slice(0, lastSlashIndex)\n lastSegmentLength = result.length - 1 - result.lastIndexOf('/')\n }\n\n lastSlash = index\n dots = 0\n continue\n }\n } else if (result.length > 0) {\n result = ''\n lastSegmentLength = 0\n lastSlash = index\n dots = 0\n continue\n }\n }\n\n if (allowAboveRoot) {\n result = result.length > 0 ? result + '/..' : '..'\n lastSegmentLength = 2\n }\n } else {\n if (result.length > 0) {\n result += '/' + path.slice(lastSlash + 1, index)\n } else {\n result = path.slice(lastSlash + 1, index)\n }\n\n lastSegmentLength = index - lastSlash - 1\n }\n\n lastSlash = index\n dots = 0\n } else if (code === 46 /* `.` */ && dots > -1) {\n dots++\n } else {\n dots = -1\n }\n }\n\n return result\n}\n\n/**\n * Make sure `path` is a string.\n *\n * @param {string} path\n * File path.\n * @returns {asserts path is string}\n * Nothing.\n */\nfunction assertPath(path) {\n if (typeof path !== 'string') {\n throw new TypeError(\n 'Path must be a string. Received ' + JSON.stringify(path)\n )\n }\n}\n\n/* eslint-enable max-depth, complexity */\n","// Somewhat based on:\n// .\n// But I don’t think one tiny line of code can be copyrighted. 😅\nexport const proc = {cwd}\n\nfunction cwd() {\n return '/'\n}\n","/**\n * Checks if a value has the shape of a WHATWG URL object.\n *\n * Using a symbol or instanceof would not be able to recognize URL objects\n * coming from other implementations (e.g. in Electron), so instead we are\n * checking some well known properties for a lack of a better test.\n *\n * We use `href` and `protocol` as they are the only properties that are\n * easy to retrieve and calculate due to the lazy nature of the getters.\n *\n * We check for auth attribute to distinguish legacy url instance with\n * WHATWG URL instance.\n *\n * @param {unknown} fileUrlOrPath\n * File path or URL.\n * @returns {fileUrlOrPath is URL}\n * Whether it’s a URL.\n */\n// From: \nexport function isUrl(fileUrlOrPath) {\n return Boolean(\n fileUrlOrPath !== null &&\n typeof fileUrlOrPath === 'object' &&\n 'href' in fileUrlOrPath &&\n fileUrlOrPath.href &&\n 'protocol' in fileUrlOrPath &&\n fileUrlOrPath.protocol &&\n // @ts-expect-error: indexing is fine.\n fileUrlOrPath.auth === undefined\n )\n}\n","import {isUrl} from './minurl.shared.js'\n\nexport {isUrl} from './minurl.shared.js'\n\n// See: \n\n/**\n * @param {URL | string} path\n * File URL.\n * @returns {string}\n * File URL.\n */\nexport function urlToPath(path) {\n if (typeof path === 'string') {\n path = new URL(path)\n } else if (!isUrl(path)) {\n /** @type {NodeJS.ErrnoException} */\n const error = new TypeError(\n 'The \"path\" argument must be of type string or an instance of URL. Received `' +\n path +\n '`'\n )\n error.code = 'ERR_INVALID_ARG_TYPE'\n throw error\n }\n\n if (path.protocol !== 'file:') {\n /** @type {NodeJS.ErrnoException} */\n const error = new TypeError('The URL must be of scheme file')\n error.code = 'ERR_INVALID_URL_SCHEME'\n throw error\n }\n\n return getPathFromURLPosix(path)\n}\n\n/**\n * Get a path from a POSIX URL.\n *\n * @param {URL} url\n * URL.\n * @returns {string}\n * File path.\n */\nfunction getPathFromURLPosix(url) {\n if (url.hostname !== '') {\n /** @type {NodeJS.ErrnoException} */\n const error = new TypeError(\n 'File URL host must be \"localhost\" or empty on darwin'\n )\n error.code = 'ERR_INVALID_FILE_URL_HOST'\n throw error\n }\n\n const pathname = url.pathname\n let index = -1\n\n while (++index < pathname.length) {\n if (\n pathname.codePointAt(index) === 37 /* `%` */ &&\n pathname.codePointAt(index + 1) === 50 /* `2` */\n ) {\n const third = pathname.codePointAt(index + 2)\n if (third === 70 /* `F` */ || third === 102 /* `f` */) {\n /** @type {NodeJS.ErrnoException} */\n const error = new TypeError(\n 'File URL path must not include encoded / characters'\n )\n error.code = 'ERR_INVALID_FILE_URL_PATH'\n throw error\n }\n }\n }\n\n return decodeURIComponent(pathname)\n}\n","/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Point} Point\n * @typedef {import('unist').Position} Position\n * @typedef {import('vfile-message').Options} MessageOptions\n * @typedef {import('../index.js').Data} Data\n * @typedef {import('../index.js').Value} Value\n */\n\n/**\n * @typedef {object & {type: string, position?: Position | undefined}} NodeLike\n *\n * @typedef {Options | URL | VFile | Value} Compatible\n * Things that can be passed to the constructor.\n *\n * @typedef VFileCoreOptions\n * Set multiple values.\n * @property {string | null | undefined} [basename]\n * Set `basename` (name).\n * @property {string | null | undefined} [cwd]\n * Set `cwd` (working directory).\n * @property {Data | null | undefined} [data]\n * Set `data` (associated info).\n * @property {string | null | undefined} [dirname]\n * Set `dirname` (path w/o basename).\n * @property {string | null | undefined} [extname]\n * Set `extname` (extension with dot).\n * @property {Array | null | undefined} [history]\n * Set `history` (paths the file moved between).\n * @property {URL | string | null | undefined} [path]\n * Set `path` (current path).\n * @property {string | null | undefined} [stem]\n * Set `stem` (name without extension).\n * @property {Value | null | undefined} [value]\n * Set `value` (the contents of the file).\n *\n * @typedef Map\n * Raw source map.\n *\n * See:\n * .\n * @property {number} version\n * Which version of the source map spec this map is following.\n * @property {Array} sources\n * An array of URLs to the original source files.\n * @property {Array} names\n * An array of identifiers which can be referenced by individual mappings.\n * @property {string | undefined} [sourceRoot]\n * The URL root from which all sources are relative.\n * @property {Array | undefined} [sourcesContent]\n * An array of contents of the original source files.\n * @property {string} mappings\n * A string of base64 VLQs which contain the actual mappings.\n * @property {string} file\n * The generated file this source map is associated with.\n *\n * @typedef {Record & VFileCoreOptions} Options\n * Configuration.\n *\n * A bunch of keys that will be shallow copied over to the new file.\n *\n * @typedef {Record} ReporterSettings\n * Configuration for reporters.\n */\n\n/**\n * @template [Settings=ReporterSettings]\n * Options type.\n * @callback Reporter\n * Type for a reporter.\n * @param {Array} files\n * Files to report.\n * @param {Settings} options\n * Configuration.\n * @returns {string}\n * Report.\n */\n\nimport {VFileMessage} from 'vfile-message'\nimport {path} from 'vfile/do-not-use-conditional-minpath'\nimport {proc} from 'vfile/do-not-use-conditional-minproc'\nimport {urlToPath, isUrl} from 'vfile/do-not-use-conditional-minurl'\n\n/**\n * Order of setting (least specific to most), we need this because otherwise\n * `{stem: 'a', path: '~/b.js'}` would throw, as a path is needed before a\n * stem can be set.\n */\nconst order = /** @type {const} */ ([\n 'history',\n 'path',\n 'basename',\n 'stem',\n 'extname',\n 'dirname'\n])\n\nexport class VFile {\n /**\n * Create a new virtual file.\n *\n * `options` is treated as:\n *\n * * `string` or `Uint8Array` — `{value: options}`\n * * `URL` — `{path: options}`\n * * `VFile` — shallow copies its data over to the new file\n * * `object` — all fields are shallow copied over to the new file\n *\n * Path related fields are set in the following order (least specific to\n * most specific): `history`, `path`, `basename`, `stem`, `extname`,\n * `dirname`.\n *\n * You cannot set `dirname` or `extname` without setting either `history`,\n * `path`, `basename`, or `stem` too.\n *\n * @param {Compatible | null | undefined} [value]\n * File value.\n * @returns\n * New instance.\n */\n constructor(value) {\n /** @type {Options | VFile} */\n let options\n\n if (!value) {\n options = {}\n } else if (isUrl(value)) {\n options = {path: value}\n } else if (typeof value === 'string' || isUint8Array(value)) {\n options = {value}\n } else {\n options = value\n }\n\n /* eslint-disable no-unused-expressions */\n\n /**\n * Base of `path` (default: `process.cwd()` or `'/'` in browsers).\n *\n * @type {string}\n */\n this.cwd = proc.cwd()\n\n /**\n * Place to store custom info (default: `{}`).\n *\n * It’s OK to store custom data directly on the file but moving it to\n * `data` is recommended.\n *\n * @type {Data}\n */\n this.data = {}\n\n /**\n * List of file paths the file moved between.\n *\n * The first is the original path and the last is the current path.\n *\n * @type {Array}\n */\n this.history = []\n\n /**\n * List of messages associated with the file.\n *\n * @type {Array}\n */\n this.messages = []\n\n /**\n * Raw value.\n *\n * @type {Value}\n */\n this.value\n\n // The below are non-standard, they are “well-known”.\n // As in, used in several tools.\n /**\n * Source map.\n *\n * This type is equivalent to the `RawSourceMap` type from the `source-map`\n * module.\n *\n * @type {Map | null | undefined}\n */\n this.map\n\n /**\n * Custom, non-string, compiled, representation.\n *\n * This is used by unified to store non-string results.\n * One example is when turning markdown into React nodes.\n *\n * @type {unknown}\n */\n this.result\n\n /**\n * Whether a file was saved to disk.\n *\n * This is used by vfile reporters.\n *\n * @type {boolean}\n */\n this.stored\n /* eslint-enable no-unused-expressions */\n\n // Set path related properties in the correct order.\n let index = -1\n\n while (++index < order.length) {\n const prop = order[index]\n\n // Note: we specifically use `in` instead of `hasOwnProperty` to accept\n // `vfile`s too.\n if (\n prop in options &&\n options[prop] !== undefined &&\n options[prop] !== null\n ) {\n // @ts-expect-error: TS doesn’t understand basic reality.\n this[prop] = prop === 'history' ? [...options[prop]] : options[prop]\n }\n }\n\n /** @type {string} */\n let prop\n\n // Set non-path related properties.\n for (prop in options) {\n // @ts-expect-error: fine to set other things.\n if (!order.includes(prop)) {\n // @ts-expect-error: fine to set other things.\n this[prop] = options[prop]\n }\n }\n }\n\n /**\n * Get the basename (including extname) (example: `'index.min.js'`).\n *\n * @returns {string | undefined}\n * Basename.\n */\n get basename() {\n return typeof this.path === 'string' ? path.basename(this.path) : undefined\n }\n\n /**\n * Set basename (including extname) (`'index.min.js'`).\n *\n * Cannot contain path separators (`'/'` on unix, macOS, and browsers, `'\\'`\n * on windows).\n * Cannot be nullified (use `file.path = file.dirname` instead).\n *\n * @param {string} basename\n * Basename.\n * @returns {undefined}\n * Nothing.\n */\n set basename(basename) {\n assertNonEmpty(basename, 'basename')\n assertPart(basename, 'basename')\n this.path = path.join(this.dirname || '', basename)\n }\n\n /**\n * Get the parent path (example: `'~'`).\n *\n * @returns {string | undefined}\n * Dirname.\n */\n get dirname() {\n return typeof this.path === 'string' ? path.dirname(this.path) : undefined\n }\n\n /**\n * Set the parent path (example: `'~'`).\n *\n * Cannot be set if there’s no `path` yet.\n *\n * @param {string | undefined} dirname\n * Dirname.\n * @returns {undefined}\n * Nothing.\n */\n set dirname(dirname) {\n assertPath(this.basename, 'dirname')\n this.path = path.join(dirname || '', this.basename)\n }\n\n /**\n * Get the extname (including dot) (example: `'.js'`).\n *\n * @returns {string | undefined}\n * Extname.\n */\n get extname() {\n return typeof this.path === 'string' ? path.extname(this.path) : undefined\n }\n\n /**\n * Set the extname (including dot) (example: `'.js'`).\n *\n * Cannot contain path separators (`'/'` on unix, macOS, and browsers, `'\\'`\n * on windows).\n * Cannot be set if there’s no `path` yet.\n *\n * @param {string | undefined} extname\n * Extname.\n * @returns {undefined}\n * Nothing.\n */\n set extname(extname) {\n assertPart(extname, 'extname')\n assertPath(this.dirname, 'extname')\n\n if (extname) {\n if (extname.codePointAt(0) !== 46 /* `.` */) {\n throw new Error('`extname` must start with `.`')\n }\n\n if (extname.includes('.', 1)) {\n throw new Error('`extname` cannot contain multiple dots')\n }\n }\n\n this.path = path.join(this.dirname, this.stem + (extname || ''))\n }\n\n /**\n * Get the full path (example: `'~/index.min.js'`).\n *\n * @returns {string}\n * Path.\n */\n get path() {\n return this.history[this.history.length - 1]\n }\n\n /**\n * Set the full path (example: `'~/index.min.js'`).\n *\n * Cannot be nullified.\n * You can set a file URL (a `URL` object with a `file:` protocol) which will\n * be turned into a path with `url.fileURLToPath`.\n *\n * @param {URL | string} path\n * Path.\n * @returns {undefined}\n * Nothing.\n */\n set path(path) {\n if (isUrl(path)) {\n path = urlToPath(path)\n }\n\n assertNonEmpty(path, 'path')\n\n if (this.path !== path) {\n this.history.push(path)\n }\n }\n\n /**\n * Get the stem (basename w/o extname) (example: `'index.min'`).\n *\n * @returns {string | undefined}\n * Stem.\n */\n get stem() {\n return typeof this.path === 'string'\n ? path.basename(this.path, this.extname)\n : undefined\n }\n\n /**\n * Set the stem (basename w/o extname) (example: `'index.min'`).\n *\n * Cannot contain path separators (`'/'` on unix, macOS, and browsers, `'\\'`\n * on windows).\n * Cannot be nullified (use `file.path = file.dirname` instead).\n *\n * @param {string} stem\n * Stem.\n * @returns {undefined}\n * Nothing.\n */\n set stem(stem) {\n assertNonEmpty(stem, 'stem')\n assertPart(stem, 'stem')\n this.path = path.join(this.dirname || '', stem + (this.extname || ''))\n }\n\n // Normal prototypal methods.\n /**\n * Create a fatal message for `reason` associated with the file.\n *\n * The `fatal` field of the message is set to `true` (error; file not usable)\n * and the `file` field is set to the current file path.\n * The message is added to the `messages` field on `file`.\n *\n * > 🪦 **Note**: also has obsolete signatures.\n *\n * @overload\n * @param {string} reason\n * @param {MessageOptions | null | undefined} [options]\n * @returns {never}\n *\n * @overload\n * @param {string} reason\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns {never}\n *\n * @overload\n * @param {string} reason\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns {never}\n *\n * @overload\n * @param {string} reason\n * @param {string | null | undefined} [origin]\n * @returns {never}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns {never}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns {never}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {string | null | undefined} [origin]\n * @returns {never}\n *\n * @param {Error | VFileMessage | string} causeOrReason\n * Reason for message, should use markdown.\n * @param {Node | NodeLike | MessageOptions | Point | Position | string | null | undefined} [optionsOrParentOrPlace]\n * Configuration (optional).\n * @param {string | null | undefined} [origin]\n * Place in code where the message originates (example:\n * `'my-package:my-rule'` or `'my-rule'`).\n * @returns {never}\n * Never.\n * @throws {VFileMessage}\n * Message.\n */\n fail(causeOrReason, optionsOrParentOrPlace, origin) {\n // @ts-expect-error: the overloads are fine.\n const message = this.message(causeOrReason, optionsOrParentOrPlace, origin)\n\n message.fatal = true\n\n throw message\n }\n\n /**\n * Create an info message for `reason` associated with the file.\n *\n * The `fatal` field of the message is set to `undefined` (info; change\n * likely not needed) and the `file` field is set to the current file path.\n * The message is added to the `messages` field on `file`.\n *\n * > 🪦 **Note**: also has obsolete signatures.\n *\n * @overload\n * @param {string} reason\n * @param {MessageOptions | null | undefined} [options]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {string} reason\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {string} reason\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {string} reason\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @param {Error | VFileMessage | string} causeOrReason\n * Reason for message, should use markdown.\n * @param {Node | NodeLike | MessageOptions | Point | Position | string | null | undefined} [optionsOrParentOrPlace]\n * Configuration (optional).\n * @param {string | null | undefined} [origin]\n * Place in code where the message originates (example:\n * `'my-package:my-rule'` or `'my-rule'`).\n * @returns {VFileMessage}\n * Message.\n */\n info(causeOrReason, optionsOrParentOrPlace, origin) {\n // @ts-expect-error: the overloads are fine.\n const message = this.message(causeOrReason, optionsOrParentOrPlace, origin)\n\n message.fatal = undefined\n\n return message\n }\n\n /**\n * Create a message for `reason` associated with the file.\n *\n * The `fatal` field of the message is set to `false` (warning; change may be\n * needed) and the `file` field is set to the current file path.\n * The message is added to the `messages` field on `file`.\n *\n * > 🪦 **Note**: also has obsolete signatures.\n *\n * @overload\n * @param {string} reason\n * @param {MessageOptions | null | undefined} [options]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {string} reason\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {string} reason\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {string} reason\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @param {Error | VFileMessage | string} causeOrReason\n * Reason for message, should use markdown.\n * @param {Node | NodeLike | MessageOptions | Point | Position | string | null | undefined} [optionsOrParentOrPlace]\n * Configuration (optional).\n * @param {string | null | undefined} [origin]\n * Place in code where the message originates (example:\n * `'my-package:my-rule'` or `'my-rule'`).\n * @returns {VFileMessage}\n * Message.\n */\n message(causeOrReason, optionsOrParentOrPlace, origin) {\n const message = new VFileMessage(\n // @ts-expect-error: the overloads are fine.\n causeOrReason,\n optionsOrParentOrPlace,\n origin\n )\n\n if (this.path) {\n message.name = this.path + ':' + message.name\n message.file = this.path\n }\n\n message.fatal = false\n\n this.messages.push(message)\n\n return message\n }\n\n /**\n * Serialize the file.\n *\n * > **Note**: which encodings are supported depends on the engine.\n * > For info on Node.js, see:\n * > .\n *\n * @param {string | null | undefined} [encoding='utf8']\n * Character encoding to understand `value` as when it’s a `Uint8Array`\n * (default: `'utf-8'`).\n * @returns {string}\n * Serialized file.\n */\n toString(encoding) {\n if (this.value === undefined) {\n return ''\n }\n\n if (typeof this.value === 'string') {\n return this.value\n }\n\n const decoder = new TextDecoder(encoding || undefined)\n return decoder.decode(this.value)\n }\n}\n\n/**\n * Assert that `part` is not a path (as in, does not contain `path.sep`).\n *\n * @param {string | null | undefined} part\n * File path part.\n * @param {string} name\n * Part name.\n * @returns {undefined}\n * Nothing.\n */\nfunction assertPart(part, name) {\n if (part && part.includes(path.sep)) {\n throw new Error(\n '`' + name + '` cannot be a path: did not expect `' + path.sep + '`'\n )\n }\n}\n\n/**\n * Assert that `part` is not empty.\n *\n * @param {string | undefined} part\n * Thing.\n * @param {string} name\n * Part name.\n * @returns {asserts part is string}\n * Nothing.\n */\nfunction assertNonEmpty(part, name) {\n if (!part) {\n throw new Error('`' + name + '` cannot be empty')\n }\n}\n\n/**\n * Assert `path` exists.\n *\n * @param {string | undefined} path\n * Path.\n * @param {string} name\n * Dependency name.\n * @returns {asserts path is string}\n * Nothing.\n */\nfunction assertPath(path, name) {\n if (!path) {\n throw new Error('Setting `' + name + '` requires `path` to be set too')\n }\n}\n\n/**\n * Assert `value` is an `Uint8Array`.\n *\n * @param {unknown} value\n * thing.\n * @returns {value is Uint8Array}\n * Whether `value` is an `Uint8Array`.\n */\nfunction isUint8Array(value) {\n return Boolean(\n value &&\n typeof value === 'object' &&\n 'byteLength' in value &&\n 'byteOffset' in value\n )\n}\n","export const CallableInstance =\n /**\n * @type {new , Result>(property: string | symbol) => (...parameters: Parameters) => Result}\n */\n (\n /** @type {unknown} */\n (\n /**\n * @this {Function}\n * @param {string | symbol} property\n * @returns {(...parameters: Array) => unknown}\n */\n function (property) {\n const self = this\n const constr = self.constructor\n const proto = /** @type {Record} */ (\n // Prototypes do exist.\n // type-coverage:ignore-next-line\n constr.prototype\n )\n const func = proto[property]\n /** @type {(...parameters: Array) => unknown} */\n const apply = function () {\n return func.apply(apply, arguments)\n }\n\n Object.setPrototypeOf(apply, proto)\n\n const names = Object.getOwnPropertyNames(func)\n\n for (const p of names) {\n const descriptor = Object.getOwnPropertyDescriptor(func, p)\n if (descriptor) Object.defineProperty(apply, p, descriptor)\n }\n\n return apply\n }\n )\n )\n","/**\n * @typedef {import('trough').Pipeline} Pipeline\n *\n * @typedef {import('unist').Node} Node\n *\n * @typedef {import('vfile').Compatible} Compatible\n * @typedef {import('vfile').Value} Value\n *\n * @typedef {import('../index.js').CompileResultMap} CompileResultMap\n * @typedef {import('../index.js').Data} Data\n * @typedef {import('../index.js').Settings} Settings\n */\n\n/**\n * @typedef {CompileResultMap[keyof CompileResultMap]} CompileResults\n * Acceptable results from compilers.\n *\n * To register custom results, add them to\n * {@link CompileResultMap `CompileResultMap`}.\n */\n\n/**\n * @template {Node} [Tree=Node]\n * The node that the compiler receives (default: `Node`).\n * @template {CompileResults} [Result=CompileResults]\n * The thing that the compiler yields (default: `CompileResults`).\n * @callback Compiler\n * A **compiler** handles the compiling of a syntax tree to something else\n * (in most cases, text) (TypeScript type).\n *\n * It is used in the stringify phase and called with a {@link Node `Node`}\n * and {@link VFile `VFile`} representation of the document to compile.\n * It should return the textual representation of the given tree (typically\n * `string`).\n *\n * > 👉 **Note**: unified typically compiles by serializing: most compilers\n * > return `string` (or `Uint8Array`).\n * > Some compilers, such as the one configured with\n * > [`rehype-react`][rehype-react], return other values (in this case, a\n * > React tree).\n * > If you’re using a compiler that doesn’t serialize, expect different\n * > result values.\n * >\n * > To register custom results in TypeScript, add them to\n * > {@link CompileResultMap `CompileResultMap`}.\n *\n * [rehype-react]: https://github.com/rehypejs/rehype-react\n * @param {Tree} tree\n * Tree to compile.\n * @param {VFile} file\n * File associated with `tree`.\n * @returns {Result}\n * New content: compiled text (`string` or `Uint8Array`, for `file.value`) or\n * something else (for `file.result`).\n */\n\n/**\n * @template {Node} [Tree=Node]\n * The node that the parser yields (default: `Node`)\n * @callback Parser\n * A **parser** handles the parsing of text to a syntax tree.\n *\n * It is used in the parse phase and is called with a `string` and\n * {@link VFile `VFile`} of the document to parse.\n * It must return the syntax tree representation of the given file\n * ({@link Node `Node`}).\n * @param {string} document\n * Document to parse.\n * @param {VFile} file\n * File associated with `document`.\n * @returns {Tree}\n * Node representing the given file.\n */\n\n/**\n * @typedef {(\n * Plugin, any, any> |\n * PluginTuple, any, any> |\n * Preset\n * )} Pluggable\n * Union of the different ways to add plugins and settings.\n */\n\n/**\n * @typedef {Array} PluggableList\n * List of plugins and presets.\n */\n\n// Note: we can’t use `callback` yet as it messes up `this`:\n// .\n/**\n * @template {Array} [PluginParameters=[]]\n * Arguments passed to the plugin (default: `[]`, the empty tuple).\n * @template {Node | string | undefined} [Input=Node]\n * Value that is expected as input (default: `Node`).\n *\n * * If the plugin returns a {@link Transformer `Transformer`}, this\n * should be the node it expects.\n * * If the plugin sets a {@link Parser `Parser`}, this should be\n * `string`.\n * * If the plugin sets a {@link Compiler `Compiler`}, this should be the\n * node it expects.\n * @template [Output=Input]\n * Value that is yielded as output (default: `Input`).\n *\n * * If the plugin returns a {@link Transformer `Transformer`}, this\n * should be the node that that yields.\n * * If the plugin sets a {@link Parser `Parser`}, this should be the\n * node that it yields.\n * * If the plugin sets a {@link Compiler `Compiler`}, this should be\n * result it yields.\n * @typedef {(\n * (this: Processor, ...parameters: PluginParameters) =>\n * Input extends string ? // Parser.\n * Output extends Node | undefined ? undefined | void : never :\n * Output extends CompileResults ? // Compiler.\n * Input extends Node | undefined ? undefined | void : never :\n * Transformer<\n * Input extends Node ? Input : Node,\n * Output extends Node ? Output : Node\n * > | undefined | void\n * )} Plugin\n * Single plugin.\n *\n * Plugins configure the processors they are applied on in the following\n * ways:\n *\n * * they change the processor, such as the parser, the compiler, or by\n * configuring data\n * * they specify how to handle trees and files\n *\n * In practice, they are functions that can receive options and configure the\n * processor (`this`).\n *\n * > 👉 **Note**: plugins are called when the processor is *frozen*, not when\n * > they are applied.\n */\n\n/**\n * Tuple of a plugin and its configuration.\n *\n * The first item is a plugin, the rest are its parameters.\n *\n * @template {Array} [TupleParameters=[]]\n * Arguments passed to the plugin (default: `[]`, the empty tuple).\n * @template {Node | string | undefined} [Input=undefined]\n * Value that is expected as input (optional).\n *\n * * If the plugin returns a {@link Transformer `Transformer`}, this\n * should be the node it expects.\n * * If the plugin sets a {@link Parser `Parser`}, this should be\n * `string`.\n * * If the plugin sets a {@link Compiler `Compiler`}, this should be the\n * node it expects.\n * @template [Output=undefined] (optional).\n * Value that is yielded as output.\n *\n * * If the plugin returns a {@link Transformer `Transformer`}, this\n * should be the node that that yields.\n * * If the plugin sets a {@link Parser `Parser`}, this should be the\n * node that it yields.\n * * If the plugin sets a {@link Compiler `Compiler`}, this should be\n * result it yields.\n * @typedef {(\n * [\n * plugin: Plugin,\n * ...parameters: TupleParameters\n * ]\n * )} PluginTuple\n */\n\n/**\n * @typedef Preset\n * Sharable configuration.\n *\n * They can contain plugins and settings.\n * @property {PluggableList | undefined} [plugins]\n * List of plugins and presets (optional).\n * @property {Settings | undefined} [settings]\n * Shared settings for parsers and compilers (optional).\n */\n\n/**\n * @template {VFile} [File=VFile]\n * The file that the callback receives (default: `VFile`).\n * @callback ProcessCallback\n * Callback called when the process is done.\n *\n * Called with either an error or a result.\n * @param {Error | undefined} [error]\n * Fatal error (optional).\n * @param {File | undefined} [file]\n * Processed file (optional).\n * @returns {undefined}\n * Nothing.\n */\n\n/**\n * @template {Node} [Tree=Node]\n * The tree that the callback receives (default: `Node`).\n * @callback RunCallback\n * Callback called when transformers are done.\n *\n * Called with either an error or results.\n * @param {Error | undefined} [error]\n * Fatal error (optional).\n * @param {Tree | undefined} [tree]\n * Transformed tree (optional).\n * @param {VFile | undefined} [file]\n * File (optional).\n * @returns {undefined}\n * Nothing.\n */\n\n/**\n * @template {Node} [Output=Node]\n * Node type that the transformer yields (default: `Node`).\n * @callback TransformCallback\n * Callback passed to transforms.\n *\n * If the signature of a `transformer` accepts a third argument, the\n * transformer may perform asynchronous operations, and must call it.\n * @param {Error | undefined} [error]\n * Fatal error to stop the process (optional).\n * @param {Output | undefined} [tree]\n * New, changed, tree (optional).\n * @param {VFile | undefined} [file]\n * New, changed, file (optional).\n * @returns {undefined}\n * Nothing.\n */\n\n/**\n * @template {Node} [Input=Node]\n * Node type that the transformer expects (default: `Node`).\n * @template {Node} [Output=Input]\n * Node type that the transformer yields (default: `Input`).\n * @callback Transformer\n * Transformers handle syntax trees and files.\n *\n * They are functions that are called each time a syntax tree and file are\n * passed through the run phase.\n * When an error occurs in them (either because it’s thrown, returned,\n * rejected, or passed to `next`), the process stops.\n *\n * The run phase is handled by [`trough`][trough], see its documentation for\n * the exact semantics of these functions.\n *\n * > 👉 **Note**: you should likely ignore `next`: don’t accept it.\n * > it supports callback-style async work.\n * > But promises are likely easier to reason about.\n *\n * [trough]: https://github.com/wooorm/trough#function-fninput-next\n * @param {Input} tree\n * Tree to handle.\n * @param {VFile} file\n * File to handle.\n * @param {TransformCallback} next\n * Callback.\n * @returns {(\n * Promise |\n * Promise | // For some reason this is needed separately.\n * Output |\n * Error |\n * undefined |\n * void\n * )}\n * If you accept `next`, nothing.\n * Otherwise:\n *\n * * `Error` — fatal error to stop the process\n * * `Promise` or `undefined` — the next transformer keeps using\n * same tree\n * * `Promise` or `Node` — new, changed, tree\n */\n\n/**\n * @template {Node | undefined} ParseTree\n * Output of `parse`.\n * @template {Node | undefined} HeadTree\n * Input for `run`.\n * @template {Node | undefined} TailTree\n * Output for `run`.\n * @template {Node | undefined} CompileTree\n * Input of `stringify`.\n * @template {CompileResults | undefined} CompileResult\n * Output of `stringify`.\n * @template {Node | string | undefined} Input\n * Input of plugin.\n * @template Output\n * Output of plugin (optional).\n * @typedef {(\n * Input extends string\n * ? Output extends Node | undefined\n * ? // Parser.\n * Processor<\n * Output extends undefined ? ParseTree : Output,\n * HeadTree,\n * TailTree,\n * CompileTree,\n * CompileResult\n * >\n * : // Unknown.\n * Processor\n * : Output extends CompileResults\n * ? Input extends Node | undefined\n * ? // Compiler.\n * Processor<\n * ParseTree,\n * HeadTree,\n * TailTree,\n * Input extends undefined ? CompileTree : Input,\n * Output extends undefined ? CompileResult : Output\n * >\n * : // Unknown.\n * Processor\n * : Input extends Node | undefined\n * ? Output extends Node | undefined\n * ? // Transform.\n * Processor<\n * ParseTree,\n * HeadTree extends undefined ? Input : HeadTree,\n * Output extends undefined ? TailTree : Output,\n * CompileTree,\n * CompileResult\n * >\n * : // Unknown.\n * Processor\n * : // Unknown.\n * Processor\n * )} UsePlugin\n * Create a processor based on the input/output of a {@link Plugin plugin}.\n */\n\n/**\n * @template {CompileResults | undefined} Result\n * Node type that the transformer yields.\n * @typedef {(\n * Result extends Value | undefined ?\n * VFile :\n * VFile & {result: Result}\n * )} VFileWithOutput\n * Type to generate a {@link VFile `VFile`} corresponding to a compiler result.\n *\n * If a result that is not acceptable on a `VFile` is used, that will\n * be stored on the `result` field of {@link VFile `VFile`}.\n */\n\nimport {bail} from 'bail'\nimport extend from 'extend'\nimport {ok as assert} from 'devlop'\nimport isPlainObj from 'is-plain-obj'\nimport {trough} from 'trough'\nimport {VFile} from 'vfile'\nimport {CallableInstance} from './callable-instance.js'\n\n// To do: next major: drop `Compiler`, `Parser`: prefer lowercase.\n\n// To do: we could start yielding `never` in TS when a parser is missing and\n// `parse` is called.\n// Currently, we allow directly setting `processor.parser`, which is untyped.\n\nconst own = {}.hasOwnProperty\n\n/**\n * @template {Node | undefined} [ParseTree=undefined]\n * Output of `parse` (optional).\n * @template {Node | undefined} [HeadTree=undefined]\n * Input for `run` (optional).\n * @template {Node | undefined} [TailTree=undefined]\n * Output for `run` (optional).\n * @template {Node | undefined} [CompileTree=undefined]\n * Input of `stringify` (optional).\n * @template {CompileResults | undefined} [CompileResult=undefined]\n * Output of `stringify` (optional).\n * @extends {CallableInstance<[], Processor>}\n */\nexport class Processor extends CallableInstance {\n /**\n * Create a processor.\n */\n constructor() {\n // If `Processor()` is called (w/o new), `copy` is called instead.\n super('copy')\n\n /**\n * Compiler to use (deprecated).\n *\n * @deprecated\n * Use `compiler` instead.\n * @type {(\n * Compiler<\n * CompileTree extends undefined ? Node : CompileTree,\n * CompileResult extends undefined ? CompileResults : CompileResult\n * > |\n * undefined\n * )}\n */\n this.Compiler = undefined\n\n /**\n * Parser to use (deprecated).\n *\n * @deprecated\n * Use `parser` instead.\n * @type {(\n * Parser |\n * undefined\n * )}\n */\n this.Parser = undefined\n\n // Note: the following fields are considered private.\n // However, they are needed for tests, and TSC generates an untyped\n // `private freezeIndex` field for, which trips `type-coverage` up.\n // Instead, we use `@deprecated` to visualize that they shouldn’t be used.\n /**\n * Internal list of configured plugins.\n *\n * @deprecated\n * This is a private internal property and should not be used.\n * @type {Array>>}\n */\n this.attachers = []\n\n /**\n * Compiler to use.\n *\n * @type {(\n * Compiler<\n * CompileTree extends undefined ? Node : CompileTree,\n * CompileResult extends undefined ? CompileResults : CompileResult\n * > |\n * undefined\n * )}\n */\n this.compiler = undefined\n\n /**\n * Internal state to track where we are while freezing.\n *\n * @deprecated\n * This is a private internal property and should not be used.\n * @type {number}\n */\n this.freezeIndex = -1\n\n /**\n * Internal state to track whether we’re frozen.\n *\n * @deprecated\n * This is a private internal property and should not be used.\n * @type {boolean | undefined}\n */\n this.frozen = undefined\n\n /**\n * Internal state.\n *\n * @deprecated\n * This is a private internal property and should not be used.\n * @type {Data}\n */\n this.namespace = {}\n\n /**\n * Parser to use.\n *\n * @type {(\n * Parser |\n * undefined\n * )}\n */\n this.parser = undefined\n\n /**\n * Internal list of configured transformers.\n *\n * @deprecated\n * This is a private internal property and should not be used.\n * @type {Pipeline}\n */\n this.transformers = trough()\n }\n\n /**\n * Copy a processor.\n *\n * @deprecated\n * This is a private internal method and should not be used.\n * @returns {Processor}\n * New *unfrozen* processor ({@link Processor `Processor`}) that is\n * configured to work the same as its ancestor.\n * When the descendant processor is configured in the future it does not\n * affect the ancestral processor.\n */\n copy() {\n // Cast as the type parameters will be the same after attaching.\n const destination =\n /** @type {Processor} */ (\n new Processor()\n )\n let index = -1\n\n while (++index < this.attachers.length) {\n const attacher = this.attachers[index]\n destination.use(...attacher)\n }\n\n destination.data(extend(true, {}, this.namespace))\n\n return destination\n }\n\n /**\n * Configure the processor with info available to all plugins.\n * Information is stored in an object.\n *\n * Typically, options can be given to a specific plugin, but sometimes it\n * makes sense to have information shared with several plugins.\n * For example, a list of HTML elements that are self-closing, which is\n * needed during all phases.\n *\n * > 👉 **Note**: setting information cannot occur on *frozen* processors.\n * > Call the processor first to create a new unfrozen processor.\n *\n * > 👉 **Note**: to register custom data in TypeScript, augment the\n * > {@link Data `Data`} interface.\n *\n * @example\n * This example show how to get and set info:\n *\n * ```js\n * import {unified} from 'unified'\n *\n * const processor = unified().data('alpha', 'bravo')\n *\n * processor.data('alpha') // => 'bravo'\n *\n * processor.data() // => {alpha: 'bravo'}\n *\n * processor.data({charlie: 'delta'})\n *\n * processor.data() // => {charlie: 'delta'}\n * ```\n *\n * @template {keyof Data} Key\n *\n * @overload\n * @returns {Data}\n *\n * @overload\n * @param {Data} dataset\n * @returns {Processor}\n *\n * @overload\n * @param {Key} key\n * @returns {Data[Key]}\n *\n * @overload\n * @param {Key} key\n * @param {Data[Key]} value\n * @returns {Processor}\n *\n * @param {Data | Key} [key]\n * Key to get or set, or entire dataset to set, or nothing to get the\n * entire dataset (optional).\n * @param {Data[Key]} [value]\n * Value to set (optional).\n * @returns {unknown}\n * The current processor when setting, the value at `key` when getting, or\n * the entire dataset when getting without key.\n */\n data(key, value) {\n if (typeof key === 'string') {\n // Set `key`.\n if (arguments.length === 2) {\n assertUnfrozen('data', this.frozen)\n this.namespace[key] = value\n return this\n }\n\n // Get `key`.\n return (own.call(this.namespace, key) && this.namespace[key]) || undefined\n }\n\n // Set space.\n if (key) {\n assertUnfrozen('data', this.frozen)\n this.namespace = key\n return this\n }\n\n // Get space.\n return this.namespace\n }\n\n /**\n * Freeze a processor.\n *\n * Frozen processors are meant to be extended and not to be configured\n * directly.\n *\n * When a processor is frozen it cannot be unfrozen.\n * New processors working the same way can be created by calling the\n * processor.\n *\n * It’s possible to freeze processors explicitly by calling `.freeze()`.\n * Processors freeze automatically when `.parse()`, `.run()`, `.runSync()`,\n * `.stringify()`, `.process()`, or `.processSync()` are called.\n *\n * @returns {Processor}\n * The current processor.\n */\n freeze() {\n if (this.frozen) {\n return this\n }\n\n // Cast so that we can type plugins easier.\n // Plugins are supposed to be usable on different processors, not just on\n // this exact processor.\n const self = /** @type {Processor} */ (/** @type {unknown} */ (this))\n\n while (++this.freezeIndex < this.attachers.length) {\n const [attacher, ...options] = this.attachers[this.freezeIndex]\n\n if (options[0] === false) {\n continue\n }\n\n if (options[0] === true) {\n options[0] = undefined\n }\n\n const transformer = attacher.call(self, ...options)\n\n if (typeof transformer === 'function') {\n this.transformers.use(transformer)\n }\n }\n\n this.frozen = true\n this.freezeIndex = Number.POSITIVE_INFINITY\n\n return this\n }\n\n /**\n * Parse text to a syntax tree.\n *\n * > 👉 **Note**: `parse` freezes the processor if not already *frozen*.\n *\n * > 👉 **Note**: `parse` performs the parse phase, not the run phase or other\n * > phases.\n *\n * @param {Compatible | undefined} [file]\n * file to parse (optional); typically `string` or `VFile`; any value\n * accepted as `x` in `new VFile(x)`.\n * @returns {ParseTree extends undefined ? Node : ParseTree}\n * Syntax tree representing `file`.\n */\n parse(file) {\n this.freeze()\n const realFile = vfile(file)\n const parser = this.parser || this.Parser\n assertParser('parse', parser)\n return parser(String(realFile), realFile)\n }\n\n /**\n * Process the given file as configured on the processor.\n *\n * > 👉 **Note**: `process` freezes the processor if not already *frozen*.\n *\n * > 👉 **Note**: `process` performs the parse, run, and stringify phases.\n *\n * @overload\n * @param {Compatible | undefined} file\n * @param {ProcessCallback>} done\n * @returns {undefined}\n *\n * @overload\n * @param {Compatible | undefined} [file]\n * @returns {Promise>}\n *\n * @param {Compatible | undefined} [file]\n * File (optional); typically `string` or `VFile`]; any value accepted as\n * `x` in `new VFile(x)`.\n * @param {ProcessCallback> | undefined} [done]\n * Callback (optional).\n * @returns {Promise | undefined}\n * Nothing if `done` is given.\n * Otherwise a promise, rejected with a fatal error or resolved with the\n * processed file.\n *\n * The parsed, transformed, and compiled value is available at\n * `file.value` (see note).\n *\n * > 👉 **Note**: unified typically compiles by serializing: most\n * > compilers return `string` (or `Uint8Array`).\n * > Some compilers, such as the one configured with\n * > [`rehype-react`][rehype-react], return other values (in this case, a\n * > React tree).\n * > If you’re using a compiler that doesn’t serialize, expect different\n * > result values.\n * >\n * > To register custom results in TypeScript, add them to\n * > {@link CompileResultMap `CompileResultMap`}.\n *\n * [rehype-react]: https://github.com/rehypejs/rehype-react\n */\n process(file, done) {\n const self = this\n\n this.freeze()\n assertParser('process', this.parser || this.Parser)\n assertCompiler('process', this.compiler || this.Compiler)\n\n return done ? executor(undefined, done) : new Promise(executor)\n\n // Note: `void`s needed for TS.\n /**\n * @param {((file: VFileWithOutput) => undefined | void) | undefined} resolve\n * @param {(error: Error | undefined) => undefined | void} reject\n * @returns {undefined}\n */\n function executor(resolve, reject) {\n const realFile = vfile(file)\n // Assume `ParseTree` (the result of the parser) matches `HeadTree` (the\n // input of the first transform).\n const parseTree =\n /** @type {HeadTree extends undefined ? Node : HeadTree} */ (\n /** @type {unknown} */ (self.parse(realFile))\n )\n\n self.run(parseTree, realFile, function (error, tree, file) {\n if (error || !tree || !file) {\n return realDone(error)\n }\n\n // Assume `TailTree` (the output of the last transform) matches\n // `CompileTree` (the input of the compiler).\n const compileTree =\n /** @type {CompileTree extends undefined ? Node : CompileTree} */ (\n /** @type {unknown} */ (tree)\n )\n\n const compileResult = self.stringify(compileTree, file)\n\n if (looksLikeAValue(compileResult)) {\n file.value = compileResult\n } else {\n file.result = compileResult\n }\n\n realDone(error, /** @type {VFileWithOutput} */ (file))\n })\n\n /**\n * @param {Error | undefined} error\n * @param {VFileWithOutput | undefined} [file]\n * @returns {undefined}\n */\n function realDone(error, file) {\n if (error || !file) {\n reject(error)\n } else if (resolve) {\n resolve(file)\n } else {\n assert(done, '`done` is defined if `resolve` is not')\n done(undefined, file)\n }\n }\n }\n }\n\n /**\n * Process the given file as configured on the processor.\n *\n * An error is thrown if asynchronous transforms are configured.\n *\n * > 👉 **Note**: `processSync` freezes the processor if not already *frozen*.\n *\n * > 👉 **Note**: `processSync` performs the parse, run, and stringify phases.\n *\n * @param {Compatible | undefined} [file]\n * File (optional); typically `string` or `VFile`; any value accepted as\n * `x` in `new VFile(x)`.\n * @returns {VFileWithOutput}\n * The processed file.\n *\n * The parsed, transformed, and compiled value is available at\n * `file.value` (see note).\n *\n * > 👉 **Note**: unified typically compiles by serializing: most\n * > compilers return `string` (or `Uint8Array`).\n * > Some compilers, such as the one configured with\n * > [`rehype-react`][rehype-react], return other values (in this case, a\n * > React tree).\n * > If you’re using a compiler that doesn’t serialize, expect different\n * > result values.\n * >\n * > To register custom results in TypeScript, add them to\n * > {@link CompileResultMap `CompileResultMap`}.\n *\n * [rehype-react]: https://github.com/rehypejs/rehype-react\n */\n processSync(file) {\n /** @type {boolean} */\n let complete = false\n /** @type {VFileWithOutput | undefined} */\n let result\n\n this.freeze()\n assertParser('processSync', this.parser || this.Parser)\n assertCompiler('processSync', this.compiler || this.Compiler)\n\n this.process(file, realDone)\n assertDone('processSync', 'process', complete)\n assert(result, 'we either bailed on an error or have a tree')\n\n return result\n\n /**\n * @type {ProcessCallback>}\n */\n function realDone(error, file) {\n complete = true\n bail(error)\n result = file\n }\n }\n\n /**\n * Run *transformers* on a syntax tree.\n *\n * > 👉 **Note**: `run` freezes the processor if not already *frozen*.\n *\n * > 👉 **Note**: `run` performs the run phase, not other phases.\n *\n * @overload\n * @param {HeadTree extends undefined ? Node : HeadTree} tree\n * @param {RunCallback} done\n * @returns {undefined}\n *\n * @overload\n * @param {HeadTree extends undefined ? Node : HeadTree} tree\n * @param {Compatible | undefined} file\n * @param {RunCallback} done\n * @returns {undefined}\n *\n * @overload\n * @param {HeadTree extends undefined ? Node : HeadTree} tree\n * @param {Compatible | undefined} [file]\n * @returns {Promise}\n *\n * @param {HeadTree extends undefined ? Node : HeadTree} tree\n * Tree to transform and inspect.\n * @param {(\n * RunCallback |\n * Compatible\n * )} [file]\n * File associated with `node` (optional); any value accepted as `x` in\n * `new VFile(x)`.\n * @param {RunCallback} [done]\n * Callback (optional).\n * @returns {Promise | undefined}\n * Nothing if `done` is given.\n * Otherwise, a promise rejected with a fatal error or resolved with the\n * transformed tree.\n */\n run(tree, file, done) {\n assertNode(tree)\n this.freeze()\n\n const transformers = this.transformers\n\n if (!done && typeof file === 'function') {\n done = file\n file = undefined\n }\n\n return done ? executor(undefined, done) : new Promise(executor)\n\n // Note: `void`s needed for TS.\n /**\n * @param {(\n * ((tree: TailTree extends undefined ? Node : TailTree) => undefined | void) |\n * undefined\n * )} resolve\n * @param {(error: Error) => undefined | void} reject\n * @returns {undefined}\n */\n function executor(resolve, reject) {\n assert(\n typeof file !== 'function',\n '`file` can’t be a `done` anymore, we checked'\n )\n const realFile = vfile(file)\n transformers.run(tree, realFile, realDone)\n\n /**\n * @param {Error | undefined} error\n * @param {Node} outputTree\n * @param {VFile} file\n * @returns {undefined}\n */\n function realDone(error, outputTree, file) {\n const resultingTree =\n /** @type {TailTree extends undefined ? Node : TailTree} */ (\n outputTree || tree\n )\n\n if (error) {\n reject(error)\n } else if (resolve) {\n resolve(resultingTree)\n } else {\n assert(done, '`done` is defined if `resolve` is not')\n done(undefined, resultingTree, file)\n }\n }\n }\n }\n\n /**\n * Run *transformers* on a syntax tree.\n *\n * An error is thrown if asynchronous transforms are configured.\n *\n * > 👉 **Note**: `runSync` freezes the processor if not already *frozen*.\n *\n * > 👉 **Note**: `runSync` performs the run phase, not other phases.\n *\n * @param {HeadTree extends undefined ? Node : HeadTree} tree\n * Tree to transform and inspect.\n * @param {Compatible | undefined} [file]\n * File associated with `node` (optional); any value accepted as `x` in\n * `new VFile(x)`.\n * @returns {TailTree extends undefined ? Node : TailTree}\n * Transformed tree.\n */\n runSync(tree, file) {\n /** @type {boolean} */\n let complete = false\n /** @type {(TailTree extends undefined ? Node : TailTree) | undefined} */\n let result\n\n this.run(tree, file, realDone)\n\n assertDone('runSync', 'run', complete)\n assert(result, 'we either bailed on an error or have a tree')\n return result\n\n /**\n * @type {RunCallback}\n */\n function realDone(error, tree) {\n bail(error)\n result = tree\n complete = true\n }\n }\n\n /**\n * Compile a syntax tree.\n *\n * > 👉 **Note**: `stringify` freezes the processor if not already *frozen*.\n *\n * > 👉 **Note**: `stringify` performs the stringify phase, not the run phase\n * > or other phases.\n *\n * @param {CompileTree extends undefined ? Node : CompileTree} tree\n * Tree to compile.\n * @param {Compatible | undefined} [file]\n * File associated with `node` (optional); any value accepted as `x` in\n * `new VFile(x)`.\n * @returns {CompileResult extends undefined ? Value : CompileResult}\n * Textual representation of the tree (see note).\n *\n * > 👉 **Note**: unified typically compiles by serializing: most compilers\n * > return `string` (or `Uint8Array`).\n * > Some compilers, such as the one configured with\n * > [`rehype-react`][rehype-react], return other values (in this case, a\n * > React tree).\n * > If you’re using a compiler that doesn’t serialize, expect different\n * > result values.\n * >\n * > To register custom results in TypeScript, add them to\n * > {@link CompileResultMap `CompileResultMap`}.\n *\n * [rehype-react]: https://github.com/rehypejs/rehype-react\n */\n stringify(tree, file) {\n this.freeze()\n const realFile = vfile(file)\n const compiler = this.compiler || this.Compiler\n assertCompiler('stringify', compiler)\n assertNode(tree)\n\n return compiler(tree, realFile)\n }\n\n /**\n * Configure the processor to use a plugin, a list of usable values, or a\n * preset.\n *\n * If the processor is already using a plugin, the previous plugin\n * configuration is changed based on the options that are passed in.\n * In other words, the plugin is not added a second time.\n *\n * > 👉 **Note**: `use` cannot be called on *frozen* processors.\n * > Call the processor first to create a new unfrozen processor.\n *\n * @example\n * There are many ways to pass plugins to `.use()`.\n * This example gives an overview:\n *\n * ```js\n * import {unified} from 'unified'\n *\n * unified()\n * // Plugin with options:\n * .use(pluginA, {x: true, y: true})\n * // Passing the same plugin again merges configuration (to `{x: true, y: false, z: true}`):\n * .use(pluginA, {y: false, z: true})\n * // Plugins:\n * .use([pluginB, pluginC])\n * // Two plugins, the second with options:\n * .use([pluginD, [pluginE, {}]])\n * // Preset with plugins and settings:\n * .use({plugins: [pluginF, [pluginG, {}]], settings: {position: false}})\n * // Settings only:\n * .use({settings: {position: false}})\n * ```\n *\n * @template {Array} [Parameters=[]]\n * @template {Node | string | undefined} [Input=undefined]\n * @template [Output=Input]\n *\n * @overload\n * @param {Preset | null | undefined} [preset]\n * @returns {Processor}\n *\n * @overload\n * @param {PluggableList} list\n * @returns {Processor}\n *\n * @overload\n * @param {Plugin} plugin\n * @param {...(Parameters | [boolean])} parameters\n * @returns {UsePlugin}\n *\n * @param {PluggableList | Plugin | Preset | null | undefined} value\n * Usable value.\n * @param {...unknown} parameters\n * Parameters, when a plugin is given as a usable value.\n * @returns {Processor}\n * Current processor.\n */\n use(value, ...parameters) {\n const attachers = this.attachers\n const namespace = this.namespace\n\n assertUnfrozen('use', this.frozen)\n\n if (value === null || value === undefined) {\n // Empty.\n } else if (typeof value === 'function') {\n addPlugin(value, parameters)\n } else if (typeof value === 'object') {\n if (Array.isArray(value)) {\n addList(value)\n } else {\n addPreset(value)\n }\n } else {\n throw new TypeError('Expected usable value, not `' + value + '`')\n }\n\n return this\n\n /**\n * @param {Pluggable} value\n * @returns {undefined}\n */\n function add(value) {\n if (typeof value === 'function') {\n addPlugin(value, [])\n } else if (typeof value === 'object') {\n if (Array.isArray(value)) {\n const [plugin, ...parameters] =\n /** @type {PluginTuple>} */ (value)\n addPlugin(plugin, parameters)\n } else {\n addPreset(value)\n }\n } else {\n throw new TypeError('Expected usable value, not `' + value + '`')\n }\n }\n\n /**\n * @param {Preset} result\n * @returns {undefined}\n */\n function addPreset(result) {\n if (!('plugins' in result) && !('settings' in result)) {\n throw new Error(\n 'Expected usable value but received an empty preset, which is probably a mistake: presets typically come with `plugins` and sometimes with `settings`, but this has neither'\n )\n }\n\n addList(result.plugins)\n\n if (result.settings) {\n namespace.settings = extend(true, namespace.settings, result.settings)\n }\n }\n\n /**\n * @param {PluggableList | null | undefined} plugins\n * @returns {undefined}\n */\n function addList(plugins) {\n let index = -1\n\n if (plugins === null || plugins === undefined) {\n // Empty.\n } else if (Array.isArray(plugins)) {\n while (++index < plugins.length) {\n const thing = plugins[index]\n add(thing)\n }\n } else {\n throw new TypeError('Expected a list of plugins, not `' + plugins + '`')\n }\n }\n\n /**\n * @param {Plugin} plugin\n * @param {Array} parameters\n * @returns {undefined}\n */\n function addPlugin(plugin, parameters) {\n let index = -1\n let entryIndex = -1\n\n while (++index < attachers.length) {\n if (attachers[index][0] === plugin) {\n entryIndex = index\n break\n }\n }\n\n if (entryIndex === -1) {\n attachers.push([plugin, ...parameters])\n }\n // Only set if there was at least a `primary` value, otherwise we’d change\n // `arguments.length`.\n else if (parameters.length > 0) {\n let [primary, ...rest] = parameters\n const currentPrimary = attachers[entryIndex][1]\n if (isPlainObj(currentPrimary) && isPlainObj(primary)) {\n primary = extend(true, currentPrimary, primary)\n }\n\n attachers[entryIndex] = [plugin, primary, ...rest]\n }\n }\n }\n}\n\n// Note: this returns a *callable* instance.\n// That’s why it’s documented as a function.\n/**\n * Create a new processor.\n *\n * @example\n * This example shows how a new processor can be created (from `remark`) and linked\n * to **stdin**(4) and **stdout**(4).\n *\n * ```js\n * import process from 'node:process'\n * import concatStream from 'concat-stream'\n * import {remark} from 'remark'\n *\n * process.stdin.pipe(\n * concatStream(function (buf) {\n * process.stdout.write(String(remark().processSync(buf)))\n * })\n * )\n * ```\n *\n * @returns\n * New *unfrozen* processor (`processor`).\n *\n * This processor is configured to work the same as its ancestor.\n * When the descendant processor is configured in the future it does not\n * affect the ancestral processor.\n */\nexport const unified = new Processor().freeze()\n\n/**\n * Assert a parser is available.\n *\n * @param {string} name\n * @param {unknown} value\n * @returns {asserts value is Parser}\n */\nfunction assertParser(name, value) {\n if (typeof value !== 'function') {\n throw new TypeError('Cannot `' + name + '` without `parser`')\n }\n}\n\n/**\n * Assert a compiler is available.\n *\n * @param {string} name\n * @param {unknown} value\n * @returns {asserts value is Compiler}\n */\nfunction assertCompiler(name, value) {\n if (typeof value !== 'function') {\n throw new TypeError('Cannot `' + name + '` without `compiler`')\n }\n}\n\n/**\n * Assert the processor is not frozen.\n *\n * @param {string} name\n * @param {unknown} frozen\n * @returns {asserts frozen is false}\n */\nfunction assertUnfrozen(name, frozen) {\n if (frozen) {\n throw new Error(\n 'Cannot call `' +\n name +\n '` on a frozen processor.\\nCreate a new processor first, by calling it: use `processor()` instead of `processor`.'\n )\n }\n}\n\n/**\n * Assert `node` is a unist node.\n *\n * @param {unknown} node\n * @returns {asserts node is Node}\n */\nfunction assertNode(node) {\n // `isPlainObj` unfortunately uses `any` instead of `unknown`.\n // type-coverage:ignore-next-line\n if (!isPlainObj(node) || typeof node.type !== 'string') {\n throw new TypeError('Expected node, got `' + node + '`')\n // Fine.\n }\n}\n\n/**\n * Assert that `complete` is `true`.\n *\n * @param {string} name\n * @param {string} asyncName\n * @param {unknown} complete\n * @returns {asserts complete is true}\n */\nfunction assertDone(name, asyncName, complete) {\n if (!complete) {\n throw new Error(\n '`' + name + '` finished async. Use `' + asyncName + '` instead'\n )\n }\n}\n\n/**\n * @param {Compatible | undefined} [value]\n * @returns {VFile}\n */\nfunction vfile(value) {\n return looksLikeAVFile(value) ? value : new VFile(value)\n}\n\n/**\n * @param {Compatible | undefined} [value]\n * @returns {value is VFile}\n */\nfunction looksLikeAVFile(value) {\n return Boolean(\n value &&\n typeof value === 'object' &&\n 'message' in value &&\n 'messages' in value\n )\n}\n\n/**\n * @param {unknown} [value]\n * @returns {value is Value}\n */\nfunction looksLikeAValue(value) {\n return typeof value === 'string' || isUint8Array(value)\n}\n\n/**\n * Assert `value` is an `Uint8Array`.\n *\n * @param {unknown} value\n * thing.\n * @returns {value is Uint8Array}\n * Whether `value` is an `Uint8Array`.\n */\nfunction isUint8Array(value) {\n return Boolean(\n value &&\n typeof value === 'object' &&\n 'byteLength' in value &&\n 'byteOffset' in value\n )\n}\n","// Register `Raw` in tree:\n/// \n\n/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n * @typedef {import('hast').Nodes} Nodes\n * @typedef {import('hast').Parents} Parents\n * @typedef {import('hast').Root} Root\n * @typedef {import('hast-util-to-jsx-runtime').Components} JsxRuntimeComponents\n * @typedef {import('remark-rehype').Options} RemarkRehypeOptions\n * @typedef {import('unist-util-visit').BuildVisitor} Visitor\n * @typedef {import('unified').PluggableList} PluggableList\n */\n\n/**\n * @callback AllowElement\n * Filter elements.\n * @param {Readonly} element\n * Element to check.\n * @param {number} index\n * Index of `element` in `parent`.\n * @param {Readonly | undefined} parent\n * Parent of `element`.\n * @returns {boolean | null | undefined}\n * Whether to allow `element` (default: `false`).\n *\n * @typedef {Partial} Components\n * Map tag names to components.\n *\n * @typedef Deprecation\n * Deprecation.\n * @property {string} from\n * Old field.\n * @property {string} id\n * ID in readme.\n * @property {keyof Options} [to]\n * New field.\n *\n * @typedef Options\n * Configuration.\n * @property {AllowElement | null | undefined} [allowElement]\n * Filter elements (optional);\n * `allowedElements` / `disallowedElements` is used first.\n * @property {ReadonlyArray | null | undefined} [allowedElements]\n * Tag names to allow (default: all tag names);\n * cannot combine w/ `disallowedElements`.\n * @property {string | null | undefined} [children]\n * Markdown.\n * @property {string | null | undefined} [className]\n * Wrap in a `div` with this class name.\n * @property {Components | null | undefined} [components]\n * Map tag names to components.\n * @property {ReadonlyArray | null | undefined} [disallowedElements]\n * Tag names to disallow (default: `[]`);\n * cannot combine w/ `allowedElements`.\n * @property {PluggableList | null | undefined} [rehypePlugins]\n * List of rehype plugins to use.\n * @property {PluggableList | null | undefined} [remarkPlugins]\n * List of remark plugins to use.\n * @property {Readonly | null | undefined} [remarkRehypeOptions]\n * Options to pass through to `remark-rehype`.\n * @property {boolean | null | undefined} [skipHtml=false]\n * Ignore HTML in markdown completely (default: `false`).\n * @property {boolean | null | undefined} [unwrapDisallowed=false]\n * Extract (unwrap) what’s in disallowed elements (default: `false`);\n * normally when say `strong` is not allowed, it and it’s children are dropped,\n * with `unwrapDisallowed` the element itself is replaced by its children.\n * @property {UrlTransform | null | undefined} [urlTransform]\n * Change URLs (default: `defaultUrlTransform`)\n *\n * @callback UrlTransform\n * Transform all URLs.\n * @param {string} url\n * URL.\n * @param {string} key\n * Property name (example: `'href'`).\n * @param {Readonly} node\n * Node.\n * @returns {string | null | undefined}\n * Transformed URL (optional).\n */\n\nimport {unreachable} from 'devlop'\nimport {toJsxRuntime} from 'hast-util-to-jsx-runtime'\nimport {urlAttributes} from 'html-url-attributes'\n// @ts-expect-error: untyped.\nimport {Fragment, jsx, jsxs} from 'react/jsx-runtime'\nimport remarkParse from 'remark-parse'\nimport remarkRehype from 'remark-rehype'\nimport {unified} from 'unified'\nimport {visit} from 'unist-util-visit'\nimport {VFile} from 'vfile'\n\nconst changelog =\n 'https://github.com/remarkjs/react-markdown/blob/main/changelog.md'\n\n/** @type {PluggableList} */\nconst emptyPlugins = []\n/** @type {Readonly} */\nconst emptyRemarkRehypeOptions = {allowDangerousHtml: true}\nconst safeProtocol = /^(https?|ircs?|mailto|xmpp)$/i\n\n// Mutable because we `delete` any time it’s used and a message is sent.\n/** @type {ReadonlyArray>} */\nconst deprecations = [\n {from: 'astPlugins', id: 'remove-buggy-html-in-markdown-parser'},\n {from: 'allowDangerousHtml', id: 'remove-buggy-html-in-markdown-parser'},\n {\n from: 'allowNode',\n id: 'replace-allownode-allowedtypes-and-disallowedtypes',\n to: 'allowElement'\n },\n {\n from: 'allowedTypes',\n id: 'replace-allownode-allowedtypes-and-disallowedtypes',\n to: 'allowedElements'\n },\n {\n from: 'disallowedTypes',\n id: 'replace-allownode-allowedtypes-and-disallowedtypes',\n to: 'disallowedElements'\n },\n {from: 'escapeHtml', id: 'remove-buggy-html-in-markdown-parser'},\n {from: 'includeElementIndex', id: '#remove-includeelementindex'},\n {\n from: 'includeNodeIndex',\n id: 'change-includenodeindex-to-includeelementindex'\n },\n {from: 'linkTarget', id: 'remove-linktarget'},\n {from: 'plugins', id: 'change-plugins-to-remarkplugins', to: 'remarkPlugins'},\n {from: 'rawSourcePos', id: '#remove-rawsourcepos'},\n {from: 'renderers', id: 'change-renderers-to-components', to: 'components'},\n {from: 'source', id: 'change-source-to-children', to: 'children'},\n {from: 'sourcePos', id: '#remove-sourcepos'},\n {from: 'transformImageUri', id: '#add-urltransform', to: 'urlTransform'},\n {from: 'transformLinkUri', id: '#add-urltransform', to: 'urlTransform'}\n]\n\n/**\n * Component to render markdown.\n *\n * @param {Readonly} options\n * Props.\n * @returns {JSX.Element}\n * React element.\n */\nexport function Markdown(options) {\n const allowedElements = options.allowedElements\n const allowElement = options.allowElement\n const children = options.children || ''\n const className = options.className\n const components = options.components\n const disallowedElements = options.disallowedElements\n const rehypePlugins = options.rehypePlugins || emptyPlugins\n const remarkPlugins = options.remarkPlugins || emptyPlugins\n const remarkRehypeOptions = options.remarkRehypeOptions\n ? {...options.remarkRehypeOptions, ...emptyRemarkRehypeOptions}\n : emptyRemarkRehypeOptions\n const skipHtml = options.skipHtml\n const unwrapDisallowed = options.unwrapDisallowed\n const urlTransform = options.urlTransform || defaultUrlTransform\n\n const processor = unified()\n .use(remarkParse)\n .use(remarkPlugins)\n .use(remarkRehype, remarkRehypeOptions)\n .use(rehypePlugins)\n\n const file = new VFile()\n\n if (typeof children === 'string') {\n file.value = children\n } else {\n unreachable(\n 'Unexpected value `' +\n children +\n '` for `children` prop, expected `string`'\n )\n }\n\n if (allowedElements && disallowedElements) {\n unreachable(\n 'Unexpected combined `allowedElements` and `disallowedElements`, expected one or the other'\n )\n }\n\n for (const deprecation of deprecations) {\n if (Object.hasOwn(options, deprecation.from)) {\n unreachable(\n 'Unexpected `' +\n deprecation.from +\n '` prop, ' +\n (deprecation.to\n ? 'use `' + deprecation.to + '` instead'\n : 'remove it') +\n ' (see <' +\n changelog +\n '#' +\n deprecation.id +\n '> for more info)'\n )\n }\n }\n\n const mdastTree = processor.parse(file)\n /** @type {Nodes} */\n let hastTree = processor.runSync(mdastTree, file)\n\n // Wrap in `div` if there’s a class name.\n if (className) {\n hastTree = {\n type: 'element',\n tagName: 'div',\n properties: {className},\n // Assume no doctypes.\n children: /** @type {Array} */ (\n hastTree.type === 'root' ? hastTree.children : [hastTree]\n )\n }\n }\n\n visit(hastTree, transform)\n\n return toJsxRuntime(hastTree, {\n Fragment,\n components,\n ignoreInvalidStyle: true,\n jsx,\n jsxs,\n passKeys: true,\n passNode: true\n })\n\n /** @type {Visitor} */\n function transform(node, index, parent) {\n if (node.type === 'raw' && parent && typeof index === 'number') {\n if (skipHtml) {\n parent.children.splice(index, 1)\n } else {\n parent.children[index] = {type: 'text', value: node.value}\n }\n\n return index\n }\n\n if (node.type === 'element') {\n /** @type {string} */\n let key\n\n for (key in urlAttributes) {\n if (\n Object.hasOwn(urlAttributes, key) &&\n Object.hasOwn(node.properties, key)\n ) {\n const value = node.properties[key]\n const test = urlAttributes[key]\n if (test === null || test.includes(node.tagName)) {\n node.properties[key] = urlTransform(String(value || ''), key, node)\n }\n }\n }\n }\n\n if (node.type === 'element') {\n let remove = allowedElements\n ? !allowedElements.includes(node.tagName)\n : disallowedElements\n ? disallowedElements.includes(node.tagName)\n : false\n\n if (!remove && allowElement && typeof index === 'number') {\n remove = !allowElement(node, index, parent)\n }\n\n if (remove && parent && typeof index === 'number') {\n if (unwrapDisallowed && node.children) {\n parent.children.splice(index, 1, ...node.children)\n } else {\n parent.children.splice(index, 1)\n }\n\n return index\n }\n }\n }\n}\n\n/**\n * Make a URL safe.\n *\n * @satisfies {UrlTransform}\n * @param {string} value\n * URL.\n * @returns {string}\n * Safe URL.\n */\nexport function defaultUrlTransform(value) {\n // Same as:\n // \n // But without the `encode` part.\n const colon = value.indexOf(':')\n const questionMark = value.indexOf('?')\n const numberSign = value.indexOf('#')\n const slash = value.indexOf('/')\n\n if (\n // If there is no protocol, it’s relative.\n colon < 0 ||\n // If the first colon is after a `?`, `#`, or `/`, it’s not a protocol.\n (slash > -1 && colon > slash) ||\n (questionMark > -1 && colon > questionMark) ||\n (numberSign > -1 && colon > numberSign) ||\n // It is a protocol, it should be allowed.\n safeProtocol.test(value.slice(0, colon))\n ) {\n return value\n }\n\n return ''\n}\n","\nimport { STRINGS } from '../../constants/strings';\nimport '../../styles/view/TextFile.css';\nimport {React, useState, useEffect} from 'react';\nimport Markdown from 'react-markdown'\nimport {getFilesPrefix } from '../../utils/utils';\n\n\nconst FileTopBar = ({onBackInfo, buttonInfo}) => {\n return (
\n {onBackInfo && \n \n }\n {buttonInfo && \n \n }\n
);\n}\n\n\nfunction FileApp({file, buttonInfo, onBackInfo}) {\n const [fileContent, setFileContent] = useState(\"\");\n const keysToIgnore = ['filename'];\n const filteredContent = Object.keys(file.content).reduce((acc, key) => {\n if (!keysToIgnore.includes(key)){\n acc[key] = file.content[key];\n }\n return acc;\n }, {});\n \n const handleMouseDown = (event) => {\n event.stopPropagation(); // Prevent the drag event from being triggered\n };\n\n useEffect(() => {\n const fetchMarkdown = async () => {\n try {\n if(file.content.type && file.content.type === 'markdown'){\n //console.log(file);\n const fp = getFilesPrefix() + file.getFilePath();\n const response = await fetch(fp);\n const text = await response.text();\n setFileContent(text);\n }\n else{\n setFileContent(\"no filepath key provided in json file\");\n }\n } catch (error) {\n console.error('Error fetching markdown file:', error);\n }\n };\n fetchMarkdown();\n }, [file]);\n \n\n return (\n
\n \n
\n {\n (file.content.type && file.content.type === 'markdown') ?\n (
\n {fileContent} \n
) \n :\n (\n
\n {Object.keys(filteredContent).map((key, index) => (\n

\n {key}: {Array.isArray(filteredContent[key]) \n ? filteredContent[key].join(\", \") : filteredContent[key]}\n

\n ))}
)}\n
\n
\n );\n}\n\nexport default FileApp;\n\n","import '../../styles/view/AppFolder.css';\nimport React, { useState } from 'react';\n\nconst Listbox = ({ options, onSelect, default_text=\"Select attribute\"}) => {\n\n const [selectedOption, setSelectedOption] = useState(default_text);\n\n const handleChange = (e) => {\n const value = e.target.value;\n setSelectedOption(value);\n onSelect(value);\n };\n\n return (\n \n );\n};\n\nexport default Listbox;\n","import React, {useState} from 'react';\nimport '../../styles/view/AppFolder.css';\nimport '../../styles/view/TextFile.css';\nimport FileApp from './FileApp';\nimport { iconImgFromType, getFilesURL} from '../../utils/utils';\nimport { Directory } from '../../data/data';\nimport { STRINGS } from '../../constants/strings';\nimport { AppContext } from '../../hooks/AppContext';\nimport Listbox from '../misc/Listbox';\n\nclass ViewType {\n static Grid = new ViewType(\"grid\")\n static List = new ViewType(\"list\")\n constructor(name) {\n this.name = name\n }\n }\n\nconst FolderEntry = ({fkey, icon, name, onclick}) => {\n const [showTooltip, setShowTooltip] = useState(false);\n return (\n
setShowTooltip(true)}\n onMouseLeave={() => setShowTooltip(false)}\n onClick={onclick} \n >\n {name}\n

{name}

\n {showTooltip &&
{name}
}\n
\n );\n};\n\n\nconst AppFolder = ({itemKey, name, openApp, data, view_type=ViewType.List, searchBar=true}) => {\n const [dataToShow, setDataToShow] = useState(data.content);\n const [currData, setCurrData] = useState(data);\n const [inputValue, setInputValue] = useState('');\n const [selectedOption, setSelectedOption] = useState('');\n const [options, setOptions] = useState([]);\n const {replaceApp} = React.useContext(AppContext);\n\n const getOptionsOnData = (data) => {\n if (data.content.length === 0) {\n return options;\n }\n let keys = new Set();\n data.content.forEach((file) => {\n if (file instanceof Directory){\n keys.add('name');\n }\n else {\n Object.keys(file.content).forEach((key) => {\n keys.add(key);\n });\n }\n });\n const opt = Array.from(keys);\n if (options.length !== opt.length){\n setOptions(opt);\n }\n return options;\n };\n\n\n const handleSelect = (value) => {\n setSelectedOption(value);\n handleInputChange({target: {value: inputValue}});\n };\n\n const handleInputChange = (value) => {\n setInputValue(value.target.value);\n const filteredData = currData.content.filter((file) => {\n if (file.name.toString().toLowerCase().includes(value.target.value.toString().toLowerCase())){ \n return true;\n }\n return Object.keys(file.content).some((key) => {\n return key === selectedOption && file.content[key].toString().toLowerCase().includes(value.target.value.toLowerCase());\n });\n });\n setDataToShow(filteredData);\n }\n\n return (\n
\n {searchBar && \n
\n \n \n \n
\n }\n
\n { dataToShow &&\n dataToShow.map((file, index) => (\n {\n if (file instanceof Directory){\n setDataToShow(file.content);\n setCurrData(file);\n replaceApp(itemKey, file.name,\n )\n }\n else {\n \n replaceApp(itemKey, file.name,\n {window.open(file.content.url? file.content.url : `${getFilesURL()}/${file.content.filename}`, \"_blank\")}\n }: null}\n onBackInfo={{\n text: STRINGS.APP_FOLDER.BACK_BUTTON,\n onclick: () => {replaceApp(itemKey, name, )}\n }}/>)\n }\n }}>\n ))\n }\n
\n
\n );\n};\n\nexport default AppFolder;","import '../../styles/view/Desktop.css';\nimport React from 'react';\nimport DesktopIcon from './DesktopIcon';\nimport AppFolder from '../apps/AppFolder';\nimport FileApp from '../apps/FileApp';\nimport { Directory } from '../../data/data';\nimport { getFilesURL } from '../../utils/utils';\nimport { AppContext } from '../../hooks/AppContext';\n\n\nfunction DesktopArea({data}) {\n\n const {addApp} = React.useContext(AppContext);\n\n const data_to_icon = (key, value) => { \n return { \n icon_type: value instanceof Directory ? 'folder' : 'file',\n name: value.name,\n onclick: () => { \n if (value instanceof Directory){\n addApp(key, \n \n )\n }\n else {\n addApp(key, {\n window.open(value.content.url ? value.className.url \n : `${getFilesURL()}/${value.content.filename}`, \"_blank\")}\n }\n : null\n }\n />)\n }\n }\n }\n }\n return(\n
\n {data && Object.keys(data).length > 0 && data.content.map((key, index) => {\n return \n})}\n
\n ) \n}\n\nexport default DesktopArea;\n\n","import { Directory, File } from \"../data/data\";\nimport {replaceLastOccurrence} from '../utils/utils';\n\n\nexport class Command {\n constructor(description) {\n this.description = description;\n }\n \n describe(){\n return this.description;\n }\n\n help(){\n return 'help: ' + this.description;\n }\n\n execute({output, args, onWindowClose, fs}) {\n const help_flags = ['-h', '--help'];\n if (args.length > 1 && args.some(arg => help_flags.includes(arg))) {\n output((prevOutput) => [...prevOutput, this.help()]);\n return true;\n }\n return false;\n }\n}\n\nexport function beautify_output(output) {\n return output.map(obj => {\n const row = Object.values(obj)\n .map(value => `${value}`)\n .join(' | ');\n return row;\n });\n}\n\nexport function transformToTableWithHeader(objects) {\n const allKeys = objects.reduce((keys, obj) => {\n return keys.concat(Object.keys(obj));\n }, []);\n const columnWidths = allKeys.reduce((widths, key) => {\n widths[key] = Math.max(...objects.map(obj => String(obj[key]).length));\n return widths;\n }, {});\n const header = allKeys.map(key => key.padEnd(columnWidths[key])).join(' | ');\n const rows = objects.map(obj => {\n return allKeys.map(key => String(obj[key]).padEnd(columnWidths[key])).join(' | ');\n });\n return [header, ...rows];\n}\n\n\nexport function retrieveObjectsAsString(objects) {\n const ret = [];\n for (const obj of objects) {\n ret.push('-----------------------')\n if (typeof obj === 'object') {\n for (const key in obj) {\n if (Array.isArray(obj[key])) {\n ret.push(`${key}: ${obj[key]}`); \n }\n else if (typeof obj[key] === 'object') {\n ret.push(`${key}: ${retrieveObjectsAsString(obj[key])}`);\n } else {\n ret.push(`${key}: ${obj[key]}`);\n }\n }\n } else {\n ret.push(obj);\n }\n } \n return ret;\n}\n\nexport function find_key(target_str, fs, match_prefix=false) {\n if (!fs) {\n return null;\n }\n \n if ((target_str.startsWith('/') || target_str.startsWith('~/')) && fs.parentDirectory) {\n return find_key(target_str, find_root(fs), match_prefix);\n }\n if (target_str.startsWith('../') && fs.parentDirectory) {\n fs = fs.parentDirectory ? fs.parentDirectory : fs;\n target_str = target_str.slice(3);\n const res = find_key(target_str, fs, match_prefix);\n return !res? res : '../' + res;\n }\n if (target_str.endsWith('/')) {\n target_str = target_str.slice(0, -1);\n }\n if (target_str.includes('/')) {\n const path = target_str.split('/')\n let currentObj = fs;\n for (const dir of path) {\n if (dir === '') {\n continue;\n }\n if (currentObj instanceof Directory) {\n currentObj = currentObj.content.find((obj) => find_id(obj).toUpperCase() === dir.toUpperCase() \n || (match_prefix && find_id(obj).toUpperCase().startsWith(dir.toUpperCase())));\n }\n else{\n currentObj = find_obj(dir, currentObj);\n }\n if (!currentObj) {\n break;\n }\n }\n return !find_id(currentObj) ? null : target_str.split(\"/\")[target_str.split(\"/\").length -1 ] !== '' ?\n replaceLastOccurrence(target_str, target_str.split(\"/\")[target_str.split(\"/\").length-1], find_id(currentObj)) : find_id(currentObj);\n }\n else {\n if (fs instanceof Directory) {\n const currentObj = fs.content.find((obj) => find_id(obj).toUpperCase() === target_str.toUpperCase()\n || (match_prefix && find_id(obj).toUpperCase().startsWith(target_str.toUpperCase())));\n return !find_id(currentObj) ? null : target_str !== '' ? find_id(currentObj) : null;\n }\n else{\n for (const key in fs) {\n if (key.toUpperCase() === target_str.toUpperCase() || (match_prefix && key.toUpperCase().startsWith(target_str.toUpperCase()))) {\n return key;\n }\n if (typeof fs[key] === 'object') {\n const result = find_key(target_str, fs[key], match_prefix);\n if (result) {\n return result;\n }\n }\n }\n }\n }\n return null;\n}\n\nexport function find_obj(target_str, fs) {\n if (target_str.startsWith('/') || target_str.startsWith('~/')) {\n fs = find_root(fs);\n target_str = target_str.startsWith('/') ? target_str.slice(1) : target_str.slice(2);\n }\n if (target_str.startsWith('../')) {\n fs = fs.parentDirectory ? fs.parentDirectory : fs;\n target_str = target_str.slice(2);\n }\n if (target_str.includes('/')) {\n const path = target_str.split('/');\n let currentObj = fs;\n for (const dir of path) {\n if (dir === '') {\n continue;\n }\n currentObj = find_obj(dir, currentObj);\n if (!currentObj) {\n break;\n }\n }\n return currentObj;\n }\n else {\n if (fs instanceof Directory) {\n if (target_str === fs.name) {\n return target_str\n }\n const currentObj = fs.content.find((obj) => find_id(obj) === target_str);\n return currentObj;\n }\n for (const key in fs) {\n if (key === target_str) {\n return fs[key];\n }\n if (typeof fs[key] === 'object') {\n const result = find_obj(target_str, fs[key]);\n if (result) {\n return result;\n }\n }\n if (find_id(fs[key]) === target_str) {\n return fs;\n }\n }\n return null;\n }\n}\n\nexport function find_id(obj) {\n if (typeof obj === 'string'){\n return obj;\n }\n if (obj instanceof Directory) {\n return obj.name;\n }\n for (const key in obj) {\n if (key === 'parentDirectory') {\n continue;\n }\n if (typeof obj[key] === 'object') {\n const result = find_id(obj[key]);\n if (result) {\n return result;\n }\n }\n if (['filename', 'id', 'uri', 'doi'].includes(key.toLowerCase())) {\n return obj[key];\n }\n }\n if (obj instanceof File) {\n return obj.name;\n }\n return null;\n}\n\nexport function find_root(fs) {\n if (!fs) {\n return null;\n }\n var target_obj = fs;\n while (target_obj.parentDirectory) {\n target_obj = target_obj.parentDirectory;\n }\n return target_obj;\n}\n\n","\nimport { File } from '../../data/data';\nimport { Command, find_obj, retrieveObjectsAsString } from '../Commands';\n\nexport class CatCommand extends Command {\n constructor(description='Concatenate files and print on the standard output') {\n super(description);\n }\n \n execute({output, args, onWindowClose, fs}) {\n const res = super.execute({output, args, onWindowClose, fs});\n if (res) {\n return res;\n }\n var new_output = [];\n for(const arg of args.slice(1)) {\n const target_obj = find_obj(arg, fs);\n if (!target_obj) {\n new_output.push(`File not found: ${arg}`);\n }\n if (target_obj instanceof File) {\n new_output = [...new_output, ...(retrieveObjectsAsString([target_obj.content]))];\n }\n }\n if (new_output.length === 0) {\n output((prevOutput) => [...prevOutput, 'File not found']);\n return;\n }\n output((prevOutput) => [...prevOutput, '', ...new_output, '']);\n }\n }","import { LsCommand } from \"./LsCommand\";\nimport { CatCommand } from \"./CatCommand\";\nimport { CdCommand } from \"./CdCommand\";\nimport { PwdCommand } from \"./PwdCommand\";\nimport { ExitCommand } from \"./ExitCommand\";\nimport { ClearCommand } from \"./ClearCommand\";\n\nexport const nixCommands = { LsCommand, CatCommand,\n CdCommand, PwdCommand, ExitCommand, ClearCommand};","import { Command, find_obj, find_id, find_root } from '../Commands';\nimport { Directory, File } from '../../data/data';\n\nexport class LsCommand extends Command {\n constructor(description='List directory content') {\n super(description);\n }\n \n execute({output, args, onWindowClose, fs}) {\n const res = super.execute({output, args, onWindowClose, fs});\n if (res) {\n return res;\n }\n var target_obj = fs;\n if (args.length > 1) {\n const target_str = args[1].trim();\n if (['/', '~'].includes(target_str)){\n target_obj = find_root(fs);\n }\n else if (target_str !== '' && target_str !== '.') {\n target_obj = find_obj(target_str, fs); \n }\n }\n if (!target_obj) {\n output((prevOutput) => [...prevOutput, 'Directory not found']);\n return;\n }\n if (target_obj instanceof File) {\n output((prevOutput) => [...prevOutput, 'This is a file']);\n return;\n }\n if (target_obj instanceof Directory) {\n const result = target_obj.content.map((item) => find_id(item));\n output((prevOutput) => [...prevOutput, ...result]);\n return;\n }\n }\n }\n ","import { Directory } from '../../data/data';\nimport { Command, find_obj, find_key, find_root } from '../Commands';\n\n\n\nexport class CdCommand extends Command {\n constructor(description='Change directory') {\n super(description);\n }\n \n execute({output, args, onWindowClose, fs, updateFs, rootFs}) {\n const res = super.execute({output, args, onWindowClose, fs});\n if (res) {\n return res;\n }\n if (args.length < 2 ) {\n output((prevOutput) => [...prevOutput, 'cd: missing operand']);\n return;\n }\n if (args[1] === '.' || args[1] === './') {\n return;\n }\n if (args[1] === '/' || args[1] === '~') {\n updateFs(find_root(fs), '~');\n return;\n }\n\n if (args[1] === '../' || args[1] === '..') {\n const parent = fs.parentDirectory ? fs.parentDirectory : fs;\n updateFs(parent, parent.name === 'root' ? '~' : parent.name);\n return;\n }\n const target_str = args[1].trim();\n const target_key = find_key(target_str, fs);\n if (!target_key) {\n output((prevOutput) => [...prevOutput, `cd: ${target_str}: No such file or directory`]);\n return;\n }\n const target_obj = find_obj(target_key, fs);\n if (!target_obj || !(target_obj instanceof Directory)) {\n output((prevOutput) => [...prevOutput, `cd: ${target_str}: Not a directory`]);\n return;\n }\n updateFs(target_obj, args[1]);\n }\n }\n \n ","import { Command } from '../Commands';\n\n\nexport class PwdCommand extends Command {\n constructor(description='Print name of current/working directory') {\n super(description);\n }\n \n execute({output, args, onWindowClose, fs}) {\n const res = super.execute({output, args, onWindowClose, fs});\n if (res) {\n return res;\n }\n const outputStr = [fs.name === 'root' ? '~' : fs.name];\n var currentDir = fs;\n while (currentDir.parentDirectory) {\n currentDir = currentDir.parentDirectory;\n outputStr.push(currentDir.name === 'root' ? '~' : currentDir.name);\n \n }\n outputStr.reverse();\n output((prevOutput) => [...prevOutput, outputStr.join('/')]);\n }\n }\n ","import { Command } from '../Commands';\n\n\nexport class ExitCommand extends Command {\n constructor(description='Exit the terminal') {\n super(description);\n }\n \n execute({output, args, onWindowClose, fs, itemKey}) {\n output((prevOutput) => [...prevOutput, 'Goodbye!']);\n setTimeout(() => {\n onWindowClose(null, itemKey);\n }, 500);\n }\n }\n","import { Command } from '../Commands';\n\nexport class ClearCommand extends Command {\n constructor(description='Clear the terminal') {\n super(description);\n }\n\n execute({output, args, onWindowClose, fs}) {\n output([]);\n }\n}","import { Command } from './Commands';\nimport { CatCommand } from './NixCommands/CatCommand';\n\n\nexport class SocialsCommand extends Command {\n constructor(description='Print socials') {\n super(description);\n }\n \n execute({output, args, onWindowClose, fs}) {\n const res = super.execute({output, args, onWindowClose, fs});\n if (res) {\n return res;\n }\n new CatCommand().execute({output, args: ['cat', '~/socials'], onWindowClose, fs});\n }\n \n}","import '../../styles/view/Terminal.css';\nimport React, { useState, useEffect, useRef } from 'react';\nimport { find_key } from '../../terminal_commands/Commands';\nimport { nixCommands } from '../../terminal_commands/NixCommands';\nimport {replaceLastOccurrence} from '../../utils/utils';\nimport { SocialsCommand } from '../../terminal_commands/CustomCommands';\nimport { STRINGS } from '../../constants/strings';\n\n\nconst buildWelcomeString = (dirname) => {\n return STRINGS.TERMINAL.PROMP_STRING_PREFIX + dirname + \"$ \"\n}\n\nfunction TerminalApp({itemKey, inputRef, onWindowClose, fs }) {\n const [currDir, setcurrDir] = useState('~');\n const [promptString, setPromptString] = useState(buildWelcomeString(currDir));\n const [input, setInput] = useState('');\n const [data, setData] = useState(fs);\n const [output, setOutput] = useState([STRINGS.TERMINAL.WELCOME_MESSAGE]);\n const outputRef = useRef(null);\n const [command_history, setCommandHistory] = useState([]);\n const [command_history_index, setCommandHistoryIndex] = useState(-1);\n const [cursorPosition, setCursorPosition] = useState(0);\n const commands = {\n help: STRINGS.TERMINAL.HELP_COMMAND,\n history: STRINGS.TERMINAL.HISTORY_COMMAND,\n clear: new nixCommands.ClearCommand(),\n exit: new nixCommands.ExitCommand(),\n ls: new nixCommands.LsCommand(),\n cat: new nixCommands.CatCommand(),\n cd : new nixCommands.CdCommand(),\n pwd: new nixCommands.PwdCommand(),\n socials : new SocialsCommand(),\n };\n \n const updateData = (newData, currDirName) => {\n setData(newData);\n const currDir = currDirName ? currDirName : '~ ';\n setcurrDir(currDir);\n setPromptString(buildWelcomeString(currDir));\n };\n\n const updateCursorPosition = () => {\n if (inputRef.current) {\n setCursorPosition(inputRef.current.selectionStart);\n }\n };\n\n const handleInputChange = (e) => {\n setInput(e.target.value);\n };\n\n const handleInputSubmit = (e) => {\n if (e.key === 'Enter') {\n setOutput((prevOutput) => [...prevOutput, `> ${input}`]);\n processCommand(input);\n setInput('');\n setCommandHistory((prevHistory) => [...prevHistory, input]);\n setCommandHistoryIndex(-1); // Reset index\n \n } else if (e.key === 'Tab') {\n e.preventDefault();\n var matchingCandidate = Object.keys(commands).find((c) =>\n c.startsWith(input.split(' ')[input.split(' ').length - 1])\n );\n if (!matchingCandidate) {\n const str_to_complete = input.slice(0, cursorPosition).split(' ')[input.slice(0, cursorPosition).split(' ').length - 1];\n const candidate = find_key(str_to_complete, data, true);\n if (!candidate){\n return;\n }\n const completedInput = replaceLastOccurrence(input.slice(0, cursorPosition),str_to_complete, candidate);\n const remainingInput = input.slice(cursorPosition+1);\n const modifiedInput = completedInput + remainingInput;\n setInput(modifiedInput);\n }\n if (matchingCandidate) {\n setInput(input.replace(input.split(' ')[input.split(' ').length - 1], matchingCandidate));\n }\n } else if (e.key === 'ArrowUp') {\n e.preventDefault();\n if (command_history_index > 0) {\n setCommandHistoryIndex((prevIndex) => Math.max(0, prevIndex - 1));\n setInput(command_history[Math.max(0, command_history_index - 1)]);\n } else if (command_history_index === -1 && command_history.length > 0) {\n setCommandHistoryIndex(command_history.length - 1);\n setInput(command_history[command_history.length - 1]);\n }\n } else if (e.key === 'ArrowDown') {\n e.preventDefault();\n if (command_history_index < command_history.length - 1 && command_history_index !== -1) {\n setCommandHistoryIndex((prevIndex) => Math.min(command_history.length - 1, prevIndex + 1));\n setInput(command_history[Math.min(command_history.length - 1, command_history_index + 1)]);\n } else if (command_history_index === command_history.length - 1) {\n setCommandHistoryIndex(-1);\n setInput('');\n }\n }\n };\n\n useEffect(() => {\n if (outputRef.current) {\n outputRef.current.scrollTop = outputRef.current.scrollHeight;\n }\n }, [input]);\n\n const processCommand = (command) => {\n const args = command.trim().split(' ')\n const called_cmd = args[0];\n if (called_cmd === 'help') {\n setOutput((prevOutput) => [\n ...prevOutput,\n '',\n 'Available commands:',\n '',\n ...Object.keys(commands).map((cmd) => `${cmd}: ` + ((commands[cmd] && typeof commands[cmd] !== 'string') ? commands[cmd].describe(): commands[cmd])),\n ]);\n } else if (called_cmd === 'history') {\n setOutput((prevOutput) => [\n ...prevOutput,\n '',\n 'Command history:',\n '',\n ...command_history.map((cmd) => cmd),\n ''\n ]);\n } else if (commands[called_cmd]) {\n commands[called_cmd].execute({output: setOutput, args: args, onWindowClose: onWindowClose, itemKey: itemKey,\n fs: data, updateFs: updateData, rootFs: fs, currDir: currDir});\n } else {\n setOutput((prevOutput) => [\n ...prevOutput,\n `Unknown command: ${command.split(' ')[0]}`,\n ]);\n }\n };\n\n const handleMouseDown = (event) => {\n event.stopPropagation(); // Prevent the drag event from being triggered\n };\n\n return (\n
\n
\n {output.map((line, index) => (\n
\n {line || <> }\n
\n ))}\n
\n
\n
{promptString}
\n \n
\n
\n );\n}\n\nexport default TerminalApp;\n","import React from 'react';\nimport '../../styles/view/OpenWindowsSpace.css';\n\n\nconst OpenWindowsSpace = ({ children }) => {\n return (\n
\n {children}\n
\n );\n};\n\nexport default OpenWindowsSpace;","import React from 'react';\nimport '../../styles/view/Settings.css';\nimport { STRINGS } from '../../constants/strings.js';\nimport { AppContext } from '../../hooks/AppContext';\nimport Listbox from '../misc/Listbox.js';\nimport { OSFeel } from '../../constants/enums.js';\n\nfunction SettingsApp({onSuspend, onShutdown}) {\n\n const {theme, feel, isOnline, onChangeFeel, toggleTheme} = React.useContext(AppContext);\n\n const handleShutdown = (e) => {\n onShutdown(e);\n };\n\n const handleSuspend = (e) => {\n onSuspend(e);\n };\n\n const osOptions = () => {\n let keys = new Set();\n for (let option in OSFeel) {\n keys.add(option);\n }\n keys.add(feel.name);\n return Array.from(keys);\n };\n\n return (\n
\n
\n
\n \"user\n

{STRINGS.SETTINGS.DEFAULT_USERNAME}

\n
\n
\n

{STRINGS.SETTINGS.STATUS}:

\n

{isOnline ? STRINGS.SETTINGS.ONLINE : STRINGS.SETTINGS.OFFLINE}

\n
\n
\n
\n
\n
\n {STRINGS.SETTINGS.OS_FEEL}\n {onChangeFeel(value)}}\n default_text={feel.name}\n />\n
\n
\n {STRINGS.SETTINGS.DARK_MODE}\n \n
\n
\n {STRINGS.SETTINGS.SHUTDOWN}\n \n
\n
\n {STRINGS.SETTINGS.SUSPEND}\n \n
\n
\n
\n \n );\n }\n \n export default SettingsApp;","import React from 'react';\nimport './styles/App.css';\nimport Dock from './view/dock/Dock';\nimport DesktopArea from './view/desktopArea/DesktopArea.js';\nimport TerminalApp from './view/apps/TerminalApp.js';\nimport OpenWindowsSpace from './view/desktopArea/OpenWindowsSpace.js';\n\nimport SettingsApp from './view/apps/SettingsApp.js';\nimport { STRINGS } from './constants/strings.js';\nimport { AppContext } from './hooks/AppContext';\n\n\nconst SuspendedScreen = ({onLogin}) => {\n return (\n
\n \"user\n

{STRINGS.SUSPENDED_SCREEN.WELCOME_MESSAGE}

\n \n
\n )\n}\n\nconst Octocat = () => {\n return (\n \n \"GitHub\n );\n}\n\n\nfunction App() {\n const {state, addApp, onShutdown, onSuspend, setSuspend} = React.useContext(AppContext);\n\n var defaultIcons = [\n { src: require('./assets/terminal-icon.png'),\n alt: 'Terminal',\n onclick: () => {\n addApp('Terminal', )\n }\n },\n { src: require('./assets/settings-icon.png'),\n alt: 'Settings',\n onclick: () => addApp('Settings',\n \n )\n },\n { src: require('./assets/pdf-icon.png'), alt: 'CV (pdf)',\n onclick: () => window.open(STRINGS.DOCK.CV_LINK) \n },\n { \n src: require('./assets/academic-icon.png'),\n alt: 'Personal Website',\n onclick: () => window.open(STRINGS.DOCK.PERSONAL_WEBSITE_LINK) \n },\n { src: require('./assets/linktree-icon.png'),\n alt: 'Linktree (Other Links)',\n onclick: () => window.open(STRINGS.DOCK.LINKTREE_LINK)\n },\n ];\n\n return ( \n state.suspended ? \n (
\n setSuspend(false)} />\n
)\n : (
\n \n \n {state.windowApps}\n \n \n \n
\n )\n );\n}\nexport default App;\n","// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://cra.link/PWA\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.0/8 are considered localhost for IPv4.\n window.location.hostname.match(/^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/)\n);\n\nexport function register(config) {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n 'This web app is being served cache-first by a service ' +\n 'worker. To learn more, visit https://cra.link/PWA'\n );\n });\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl, config) {\n navigator.serviceWorker\n .register(swUrl)\n .then((registration) => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n if (installingWorker == null) {\n return;\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n 'New content is available and will be used when all ' +\n 'tabs for this page are closed. See https://cra.link/PWA.'\n );\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration);\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log('Content is cached for offline use.');\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch((error) => {\n console.error('Error during service worker registration:', error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl, config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl, {\n headers: { 'Service-Worker': 'script' },\n })\n .then((response) => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get('content-type');\n if (\n response.status === 404 ||\n (contentType != null && contentType.indexOf('javascript') === -1)\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then((registration) => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config);\n }\n })\n .catch(() => {\n console.log('No internet connection found. App is running in offline mode.');\n });\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready\n .then((registration) => {\n registration.unregister();\n })\n .catch((error) => {\n console.error(error.message);\n });\n }\n}\n","import React from 'react';\nimport ReactDOM from 'react-dom/client';\nimport './styles/index.css';\nimport App from './App';\nimport { AppProvider } from './hooks/AppContext';\nimport * as serviceWorkerRegistration from './serviceWorkerRegistration';\n//import reportWebVitals from './reportWebVitals';\n\nconst root = ReactDOM.createRoot(document.getElementById('root'));\nroot.render(\n \n \n \n \n \n);\n\n// If you want your app to work offline and load faster, you can change\n// unregister() to register() below. Note this comes with some pitfalls.\n// Learn more about service workers: https://cra.link/PWA\nserviceWorkerRegistration.unregister();\n\n// If you want to start measuring performance in your app, pass a function\n// to log results (for example: reportWebVitals(console.log))\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\n//reportWebVitals();\n"],"names":["r","e","t","f","n","Array","isArray","length","clsx","arguments","hasOwn","Object","prototype","hasOwnProperty","toStr","toString","defineProperty","gOPD","getOwnPropertyDescriptor","arr","call","isPlainObject","obj","key","hasOwnConstructor","hasIsPrototypeOf","constructor","setProperty","target","options","name","enumerable","configurable","value","newValue","writable","getProperty","module","exports","extend","src","copy","copyIsArray","clone","i","deep","COMMENT_REGEX","NEWLINE_REGEX","WHITESPACE_REGEX","PROPERTY_REGEX","COLON_REGEX","VALUE_REGEX","SEMICOLON_REGEX","TRIM_REGEX","EMPTY_STRING","trim","str","replace","style","TypeError","lineno","column","updatePosition","lines","match","lastIndexOf","position","start","line","node","Position","whitespace","this","end","source","content","errorsList","error","msg","err","Error","reason","filename","silent","push","re","m","exec","slice","comments","rules","c","comment","pos","charAt","type","declaration","prop","val","ret","property","decl","decls","declarations","ReactPropTypesSecret","require","emptyFunction","emptyFunctionWithReset","resetWarningCache","shim","props","propName","componentName","location","propFullName","secret","getShim","isRequired","ReactPropTypes","array","bigint","bool","func","number","object","string","symbol","any","arrayOf","element","elementType","instanceOf","objectOf","oneOf","oneOfType","shape","exact","checkPropTypes","PropTypes","aa","ca","p","a","b","encodeURIComponent","da","Set","ea","fa","ha","add","ia","window","document","createElement","ja","ka","la","ma","v","d","g","acceptsBooleans","attributeName","attributeNamespace","mustUseProperty","propertyName","sanitizeURL","removeEmptyString","z","split","forEach","toLowerCase","ra","sa","toUpperCase","ta","pa","isNaN","qa","test","oa","removeAttribute","setAttribute","setAttributeNS","xlinkHref","ua","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","va","Symbol","for","wa","ya","za","Aa","Ba","Ca","Da","Ea","Fa","Ga","Ha","Ia","Ja","iterator","Ka","La","A","assign","Ma","stack","Na","Oa","prepareStackTrace","set","Reflect","construct","l","h","k","displayName","includes","Pa","tag","render","Qa","$$typeof","_context","_payload","_init","Ra","Sa","Ta","nodeName","Va","_valueTracker","get","getValue","setValue","stopTracking","Ua","Wa","checked","Xa","activeElement","body","Ya","defaultChecked","defaultValue","_wrapperState","initialChecked","Za","initialValue","controlled","ab","bb","cb","db","ownerDocument","eb","fb","selected","defaultSelected","disabled","gb","dangerouslySetInnerHTML","children","hb","ib","jb","textContent","kb","lb","mb","nb","namespaceURI","innerHTML","valueOf","firstChild","removeChild","appendChild","MSApp","execUnsafeLocalFunction","ob","lastChild","nodeType","nodeValue","pb","animationIterationCount","aspectRatio","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","columns","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridArea","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","fontWeight","lineClamp","lineHeight","opacity","order","orphans","tabSize","widows","zIndex","zoom","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","strokeWidth","qb","rb","sb","indexOf","keys","substring","tb","menuitem","area","base","br","col","embed","hr","img","input","keygen","link","meta","param","track","wbr","ub","vb","is","wb","xb","srcElement","correspondingUseElement","parentNode","yb","zb","Ab","Bb","Cb","stateNode","Db","Eb","Fb","Gb","Hb","Ib","Jb","Kb","Lb","Mb","addEventListener","removeEventListener","Nb","apply","onError","Ob","Pb","Qb","Rb","Sb","Tb","Vb","alternate","return","flags","Wb","memoizedState","dehydrated","Xb","Zb","child","sibling","current","Yb","$b","ac","unstable_scheduleCallback","bc","unstable_cancelCallback","cc","unstable_shouldYield","dc","unstable_requestPaint","B","unstable_now","ec","unstable_getCurrentPriorityLevel","fc","unstable_ImmediatePriority","gc","unstable_UserBlockingPriority","hc","unstable_NormalPriority","ic","unstable_LowPriority","jc","unstable_IdlePriority","kc","lc","oc","Math","clz32","pc","qc","log","LN2","rc","sc","tc","uc","pendingLanes","suspendedLanes","pingedLanes","entangledLanes","entanglements","vc","xc","yc","zc","Ac","eventTimes","Cc","C","Dc","Ec","Fc","Gc","Hc","Ic","Jc","Kc","Lc","Mc","Nc","Oc","Map","Pc","Qc","Rc","Sc","delete","pointerId","Tc","nativeEvent","blockedOn","domEventName","eventSystemFlags","targetContainers","Vc","Wc","priority","isDehydrated","containerInfo","Xc","Yc","dispatchEvent","shift","Zc","$c","ad","bd","cd","ReactCurrentBatchConfig","dd","ed","transition","fd","gd","hd","id","Uc","stopPropagation","jd","kd","ld","md","nd","od","keyCode","charCode","pd","qd","rd","_reactName","_targetInst","currentTarget","isDefaultPrevented","defaultPrevented","returnValue","isPropagationStopped","preventDefault","cancelBubble","persist","isPersistent","wd","xd","yd","sd","eventPhase","bubbles","cancelable","timeStamp","Date","now","isTrusted","td","ud","view","detail","vd","Ad","screenX","screenY","clientX","clientY","pageX","pageY","ctrlKey","shiftKey","altKey","metaKey","getModifierState","zd","button","buttons","relatedTarget","fromElement","toElement","movementX","movementY","Bd","Dd","dataTransfer","Fd","Hd","animationName","elapsedTime","pseudoElement","Id","clipboardData","Jd","Ld","data","Md","Esc","Spacebar","Left","Up","Right","Down","Del","Win","Menu","Apps","Scroll","MozPrintableKey","Nd","Od","Alt","Control","Meta","Shift","Pd","Qd","String","fromCharCode","code","repeat","locale","which","Rd","Td","width","height","pressure","tangentialPressure","tiltX","tiltY","twist","pointerType","isPrimary","Vd","touches","targetTouches","changedTouches","Xd","Yd","deltaX","wheelDeltaX","deltaY","wheelDeltaY","wheelDelta","deltaZ","deltaMode","Zd","$d","ae","be","documentMode","ce","de","ee","fe","ge","he","ie","le","color","date","datetime","email","month","password","range","search","tel","text","time","url","week","me","ne","oe","event","listeners","pe","qe","se","te","ue","ve","we","xe","ye","ze","oninput","Ae","detachEvent","Be","Ce","attachEvent","De","Ee","Fe","He","Ie","Je","Ke","offset","nextSibling","Le","contains","compareDocumentPosition","Me","HTMLIFrameElement","contentWindow","href","Ne","contentEditable","Oe","focusedElem","selectionRange","documentElement","selectionStart","selectionEnd","min","defaultView","getSelection","rangeCount","anchorNode","anchorOffset","focusNode","focusOffset","createRange","setStart","removeAllRanges","addRange","setEnd","left","scrollLeft","top","scrollTop","focus","Pe","Qe","Re","Se","Te","Ue","Ve","We","animationend","animationiteration","animationstart","transitionend","Xe","Ye","Ze","animation","$e","af","bf","cf","df","ef","ff","gf","hf","lf","mf","concat","nf","Ub","instance","listener","D","of","has","pf","qf","rf","random","sf","bind","capture","passive","J","x","u","w","F","tf","uf","parentWindow","vf","wf","na","xa","$a","ba","je","char","ke","unshift","xf","yf","zf","Af","Bf","Cf","Df","Ef","__html","Ff","setTimeout","Gf","clearTimeout","Hf","Promise","Jf","queueMicrotask","resolve","then","catch","If","Kf","Lf","Mf","previousSibling","Nf","Of","Pf","Qf","Rf","Sf","Tf","Uf","E","G","Vf","H","Wf","Xf","Yf","contextTypes","__reactInternalMemoizedUnmaskedChildContext","__reactInternalMemoizedMaskedChildContext","Zf","childContextTypes","$f","ag","bg","getChildContext","cg","__reactInternalMemoizedMergedChildContext","dg","eg","fg","gg","hg","jg","kg","lg","mg","ng","og","pg","qg","rg","sg","tg","ug","vg","wg","xg","yg","I","zg","Ag","Bg","deletions","Cg","pendingProps","overflow","treeContext","retryLane","Dg","mode","Eg","Fg","Gg","memoizedProps","Hg","Ig","Jg","Kg","Lg","ref","_owner","_stringRef","refs","Mg","join","Ng","Og","index","Pg","Qg","Rg","implementation","Sg","Tg","q","y","next","done","Ug","Vg","Wg","Xg","Yg","Zg","$g","ah","_currentValue","bh","childLanes","ch","dependencies","firstContext","lanes","dh","eh","context","memoizedValue","fh","gh","hh","interleaved","ih","jh","kh","updateQueue","baseState","firstBaseUpdate","lastBaseUpdate","shared","pending","effects","lh","mh","eventTime","lane","payload","callback","nh","K","oh","ph","qh","rh","sh","th","uh","vh","wh","xh","yh","tagName","zh","Ah","Bh","L","Ch","revealOrder","Dh","Eh","_workInProgressVersionPrimary","Fh","ReactCurrentDispatcher","Gh","Hh","M","N","O","Ih","Jh","Kh","Lh","P","Mh","Nh","Oh","Ph","Qh","Rh","Sh","Th","baseQueue","queue","Uh","Vh","Wh","lastRenderedReducer","action","hasEagerState","eagerState","lastRenderedState","dispatch","Xh","Yh","Zh","$h","ai","getSnapshot","bi","ci","Q","di","lastEffect","stores","ei","fi","gi","hi","ii","create","destroy","deps","ji","ki","li","mi","ni","oi","pi","qi","ri","si","ti","ui","vi","wi","xi","yi","zi","Ai","R","Bi","readContext","useCallback","useContext","useEffect","useImperativeHandle","useInsertionEffect","useLayoutEffect","useMemo","useReducer","useRef","useState","useDebugValue","useDeferredValue","useTransition","useMutableSource","useSyncExternalStore","useId","unstable_isNewReconciler","identifierPrefix","Ci","defaultProps","Di","Ei","isMounted","_reactInternals","enqueueSetState","enqueueReplaceState","enqueueForceUpdate","Fi","shouldComponentUpdate","isPureReactComponent","Gi","contextType","state","updater","Hi","componentWillReceiveProps","UNSAFE_componentWillReceiveProps","Ii","getDerivedStateFromProps","getSnapshotBeforeUpdate","UNSAFE_componentWillMount","componentWillMount","componentDidMount","Ji","message","digest","Ki","Li","console","Mi","WeakMap","Ni","Oi","Pi","Qi","getDerivedStateFromError","componentDidCatch","Ri","componentStack","Si","pingCache","Ti","Ui","Vi","Wi","ReactCurrentOwner","Xi","Yi","Zi","$i","aj","compare","bj","cj","dj","baseLanes","cachePool","transitions","ej","fj","gj","hj","ij","UNSAFE_componentWillUpdate","componentWillUpdate","componentDidUpdate","jj","kj","pendingContext","lj","zj","Aj","Bj","Cj","mj","nj","oj","fallback","pj","qj","sj","dataset","dgst","tj","uj","_reactRetry","rj","subtreeFlags","vj","wj","isBackwards","rendering","renderingStartTime","last","tail","tailMode","xj","Dj","S","Ej","Fj","wasMultiple","multiple","suppressHydrationWarning","onClick","onclick","size","createElementNS","autoFocus","createTextNode","T","Gj","Hj","Ij","Jj","U","Kj","WeakSet","V","Lj","W","Mj","Nj","Pj","Qj","Rj","Sj","Tj","Uj","Vj","insertBefore","_reactRootContainer","Wj","X","Xj","Yj","Zj","onCommitFiberUnmount","componentWillUnmount","ak","bk","ck","dk","ek","isHidden","fk","gk","display","hk","ik","jk","kk","__reactInternalSnapshotBeforeUpdate","Vk","lk","ceil","mk","nk","ok","Y","Z","pk","qk","rk","sk","tk","Infinity","uk","vk","wk","xk","yk","zk","Ak","Bk","Ck","Dk","callbackNode","expirationTimes","expiredLanes","wc","callbackPriority","ig","Ek","Fk","Gk","Hk","Ik","Jk","Kk","Lk","Mk","Nk","Ok","finishedWork","finishedLanes","Pk","timeoutHandle","Qk","Rk","Sk","Tk","Uk","mutableReadLanes","Bc","Oj","onCommitFiberRoot","mc","onRecoverableError","Wk","onPostCommitFiberRoot","Xk","Yk","$k","isReactComponent","pendingChildren","al","mutableSourceEagerHydrationData","bl","cache","pendingSuspenseBoundaries","dl","el","fl","gl","hl","il","yj","Zk","kl","reportError","ll","_internalRoot","ml","nl","ol","pl","rl","ql","unmount","unstable_scheduleHydration","splice","querySelectorAll","JSON","stringify","form","sl","usingClientEntryPoint","Events","tl","findFiberByHostInstance","bundleType","version","rendererPackageName","ul","rendererConfig","overrideHookState","overrideHookStateDeletePath","overrideHookStateRenamePath","overrideProps","overridePropsDeletePath","overridePropsRenamePath","setErrorHandler","setSuspenseHandler","scheduleUpdate","currentDispatcherRef","findHostInstanceByFiber","findHostInstancesForRefresh","scheduleRefresh","scheduleRoot","setRefreshHandler","getCurrentFiber","reconcilerVersion","__REACT_DEVTOOLS_GLOBAL_HOOK__","vl","isDisabled","supportsFiber","inject","createPortal","cl","createRoot","unstable_strictMode","findDOMNode","flushSync","hydrate","hydrateRoot","hydratedSources","_getVersion","_source","unmountComponentAtNode","unstable_batchedUpdates","unstable_renderSubtreeIntoContainer","checkDCE","_DraggableCore","default","React","nodeInterop","__esModule","_getRequireWildcardCache","newObj","hasPropertyDescriptor","desc","_interopRequireWildcard","_propTypes","_interopRequireDefault","_reactDom","_clsx","_domFns","_positionFns","_shims","_log","cacheBabelInterop","cacheNodeInterop","_extends","_defineProperty","arg","hint","prim","toPrimitive","undefined","res","Number","_toPrimitive","_toPropertyKey","Draggable","Component","_ref","_ref2","prevPropsPosition","super","coreData","onStart","createDraggableData","setState","dragging","dragged","uiData","newState","slackX","slackY","bounds","newStateX","newStateY","getBoundPosition","onDrag","onStop","Boolean","defaultPosition","isElementSVG","warn","SVGElement","_this$props$nodeRef$c","_this$props","nodeRef","axis","defaultClassName","defaultClassNameDragging","defaultClassNameDragged","positionOffset","scale","draggableCoreProps","svgTransform","draggable","validPosition","transformOpts","canDragX","canDragY","createSVGTransform","createCSSTransform","className","onDragStart","onDragStop","cloneElement","Children","only","transform","propTypes","right","bottom","dontSetMe","eventsFor","move","stop","dragEventFor","DraggableCore","NaN","onMouseDown","allowAnyClick","thisNode","Node","handle","matchesSelectorAndParentsTo","cancel","touchIdentifier","getTouchIdentifier","getControlPosition","coreEvent","createCoreData","mounted","enableUserSelectHack","addUserSelectStyles","lastX","lastY","addEvent","handleDrag","handleDragStop","grid","snapToGrid","MouseEvent","createEvent","initMouseEvent","removeUserSelectStyles","removeEvent","handleDragStart","onTouchStart","_this$props2","onMouseUp","onTouchEnd","offsetParent","addClassName","handler","inputOptions","doc","styleEl","getElementById","getElementsByTagName","controlPos","translation","getTranslation","_getPrefix","browserPrefixToKey","getTouch","identifier","findInArray","innerHeight","clientHeight","computedStyle","getComputedStyle","int","paddingTop","paddingBottom","innerWidth","clientWidth","paddingLeft","paddingRight","matchesSelector","selector","baseNode","offsetXYFromParent","evt","offsetParentRect","getBoundingClientRect","outerHeight","borderTopWidth","borderBottomWidth","outerWidth","borderLeftWidth","borderRightWidth","removeClassName","selection","empty","matchesSelectorFunc","method","isFunction","unitSuffix","defaultX","defaultY","classList","RegExp","remove","browserPrefixToStyle","prefix","getPrefix","prefixes","_window$document","out","shouldCapitalize","kebabToTitleCase","isStart","isNum","cloneBounds","ownerWindow","boundNode","querySelector","HTMLElement","boundNodeEl","nodeStyle","boundNodeStyle","offsetLeft","marginLeft","offsetTop","marginTop","marginRight","marginBottom","max","draggableCore","touchObj","pendingX","pendingY","round","parseInt","num","_reactDraggable","_utils","_excluded","ownKeys","enumerableOnly","getOwnPropertySymbols","symbols","filter","sym","_objectSpread","getOwnPropertyDescriptors","defineProperties","_setPrototypeOf","o","setPrototypeOf","__proto__","Resizable","_React$Component","subClass","superClass","_this","_len","args","_key","handleRefs","lastHandleRect","slack","_proto","resetData","runConstraints","minConstraints","maxConstraints","lockAspectRatio","ratio","deltaW","deltaH","abs","oldW","oldH","slackW","slackH","resizeHandler","handlerName","_this2","axisV","axisH","handleRect","transformScale","_this2$runConstraints","dimensionsChanged","renderResizeHandle","handleAxis","_this3","draggableOpts","resizeHandles","handleSize","onResize","onResizeStop","onResizeStart","excluded","sourceKeys","_objectWithoutPropertiesLoose","map","_this3$handleRefs$han","createRef","resizableProps","_Resizable","_propTypes2","ResizableBox","propsWidth","propsHeight","_PropTypes$number","_len2","_key2","_PropTypes$number2","_react","__self","__source","Fragment","jsx","jsxs","forceUpdate","escape","_status","_result","count","toArray","Profiler","PureComponent","StrictMode","Suspense","act","createContext","_currentValue2","_threadCount","Provider","Consumer","_defaultValue","_globalName","createFactory","forwardRef","isValidElement","lazy","memo","startTransition","unstable_act","pop","sortIndex","performance","setImmediate","startTime","expirationTime","priorityLevel","navigator","scheduling","isInputPending","MessageChannel","port2","port1","onmessage","postMessage","unstable_Profiling","unstable_continueExecution","unstable_forceFrameRate","floor","unstable_getFirstCallbackNode","unstable_next","unstable_pauseExecution","unstable_runWithPriority","delay","unstable_wrapCallback","inline_style_parser_1","__importDefault","styleObject","hasIterator","webpackContext","req","webpackContextResolve","__webpack_require__","__webpack_module_cache__","moduleId","cachedModule","__webpack_modules__","getter","definition","toStringTag","icon","showTooltip","setShowTooltip","_jsxs","onMouseEnter","onMouseLeave","_jsx","alt","itemKey","title","onWindowClose","isMinimized","setIsMinimized","isMaximized","setIsMaximized","contentRef","setSize","prev_size","prev_setSize","inputRef","feel","windowFactory","AppContext","offsetWidth","offsetHeight","toggleMinimize","toggleMaximize","ChildrenWithProps","onCloseWindow","getCorners","isMacOs","border","handleContainerClick","createAppBar","onClose","onMinimize","onMaximize","Directory","parentDirectory","addContent","item","File","getFilePath","filepath","loadData","dirname","dir","inferName","publications","certifications","skillsDir","skills","software","teachingDir","teaching","scientificDir","scientific_activities","hobbies","socials","contributing","loadAppData","useNetworkStatus","isOnline","setIsOnline","onLine","updateNetworkStatus","OSFeel","MacOs","isWindows","Windows","isUbuntu","Ubuntu","_OSFeel","AppTheme","isDark","Dark","isLight","Light","_AppTheme","useTheme","theme","setTheme","localStorage","getItem","setItem","toggleTheme","prevTheme","iconImgFromType","icon_type","os_type","replaceLastOccurrence","originalStr","searchStr","replaceStr","lastIndex","MacOsAppBar","UbuntuAppBar","WindowsAppBar","_ref3","file_type","WindowsFactory","createDock","AppWindow","MacOSFactory","UbuntuFactory","useOsFeel","setFeel","new_feel","initialState","fs","windowApps","suspended","openWindowCount","reducer","newApp","popApp","app","windowKey","replacedApp","updatedApps","remainingApps","AppProvider","toggleFeel","_","setSuspend","onChangeFeel","setFS","addApp","onShutdown","onSuspend","replaceApp","icons","feel_style","DockIcon","handleClick","STRINGS","SEARCH_PLACEHOLDER","BACK_BUTTON","SELECT_TEXT","OPEN_BUTTON","PROMP_STRING_PREFIX","WELCOME_MESSAGE","HELP_COMMAND","HISTORY_COMMAND","DARK_MODE","SHUTDOWN","SUSPEND","STATUS","ONLINE","OFFLINE","OS_FEEL","DEFAULT_USERNAME","LOGIN_BUTTON","CV_LINK","LINKTREE_LINK","PERSONAL_WEBSITE_LINK","nameRe","nameReJsx","emptyOptions","Schema","normal","space","merge","definitions","normalize","Info","attribute","boolean","booleanish","overloadedBoolean","commaSeparated","spaceSeparated","commaOrSpaceSeparated","defined","powers","increment","checks","types","DefinedInfo","mask","mark","check","values","own","properties","info","attributes","xlink","xLinkActuate","xLinkArcRole","xLinkHref","xLinkRole","xLinkShow","xLinkTitle","xLinkType","xml","xmlLang","xmlBase","xmlSpace","caseSensitiveTransform","caseInsensitiveTransform","xmlns","xmlnsxlink","xmlnsXLink","aria","ariaActiveDescendant","ariaAtomic","ariaAutoComplete","ariaBusy","ariaChecked","ariaColCount","ariaColIndex","ariaColSpan","ariaControls","ariaCurrent","ariaDescribedBy","ariaDetails","ariaDisabled","ariaDropEffect","ariaErrorMessage","ariaExpanded","ariaFlowTo","ariaGrabbed","ariaHasPopup","ariaHidden","ariaInvalid","ariaKeyShortcuts","ariaLabel","ariaLabelledBy","ariaLevel","ariaLive","ariaModal","ariaMultiLine","ariaMultiSelectable","ariaOrientation","ariaOwns","ariaPlaceholder","ariaPosInSet","ariaPressed","ariaReadOnly","ariaRelevant","ariaRequired","ariaRoleDescription","ariaRowCount","ariaRowIndex","ariaRowSpan","ariaSelected","ariaSetSize","ariaSort","ariaValueMax","ariaValueMin","ariaValueNow","ariaValueText","role","html","acceptcharset","classname","htmlfor","httpequiv","abbr","accept","acceptCharset","accessKey","allow","allowFullScreen","allowPaymentRequest","allowUserMedia","as","async","autoCapitalize","autoComplete","autoPlay","blocking","charSet","cite","cols","colSpan","controls","controlsList","coords","crossOrigin","dateTime","decoding","defer","dirName","download","encType","enterKeyHint","fetchPriority","formAction","formEncType","formMethod","formNoValidate","formTarget","headers","hidden","high","hrefLang","htmlFor","httpEquiv","imageSizes","imageSrcSet","inert","inputMode","integrity","isMap","itemId","itemProp","itemRef","itemScope","itemType","kind","label","lang","language","list","loading","loop","low","manifest","maxLength","media","minLength","muted","nonce","noModule","noValidate","onAbort","onAfterPrint","onAuxClick","onBeforeMatch","onBeforePrint","onBeforeToggle","onBeforeUnload","onBlur","onCancel","onCanPlay","onCanPlayThrough","onChange","onContextLost","onContextMenu","onContextRestored","onCopy","onCueChange","onCut","onDblClick","onDragEnd","onDragEnter","onDragExit","onDragLeave","onDragOver","onDrop","onDurationChange","onEmptied","onEnded","onFocus","onFormData","onHashChange","onInput","onInvalid","onKeyDown","onKeyPress","onKeyUp","onLanguageChange","onLoad","onLoadedData","onLoadedMetadata","onLoadEnd","onLoadStart","onMessage","onMessageError","onMouseMove","onMouseOut","onMouseOver","onOffline","onOnline","onPageHide","onPageShow","onPaste","onPause","onPlay","onPlaying","onPopState","onProgress","onRateChange","onRejectionHandled","onReset","onScroll","onScrollEnd","onSecurityPolicyViolation","onSeeked","onSeeking","onSelect","onSlotChange","onStalled","onStorage","onSubmit","onTimeUpdate","onToggle","onUnhandledRejection","onUnload","onVolumeChange","onWaiting","onWheel","open","optimum","pattern","ping","placeholder","playsInline","popover","popoverTarget","popoverTargetAction","poster","preload","readOnly","referrerPolicy","rel","required","reversed","rows","rowSpan","sandbox","scope","scoped","seamless","shadowRootClonable","shadowRootDelegatesFocus","shadowRootMode","sizes","slot","span","spellCheck","srcDoc","srcLang","srcSet","step","tabIndex","translate","typeMustMatch","useMap","wrap","writingSuggestions","align","aLink","archive","background","bgColor","borderColor","bottomMargin","cellPadding","cellSpacing","charOff","classId","clear","codeBase","codeType","compact","declare","face","frame","frameBorder","hSpace","leftMargin","longDesc","lowSrc","marginHeight","marginWidth","noResize","noHref","noShade","noWrap","profile","prompt","rev","rightMargin","scheme","scrolling","standby","summary","topMargin","valueType","vAlign","vLink","vSpace","allowTransparency","autoCorrect","autoSave","disablePictureInPicture","disableRemotePlayback","results","security","unselectable","svg","accentHeight","alignmentBaseline","arabicForm","baselineShift","capHeight","clipPath","clipRule","colorInterpolation","colorInterpolationFilters","colorProfile","colorRendering","dataType","dominantBaseline","enableBackground","fillRule","floodColor","fontFamily","fontSize","fontSizeAdjust","fontStretch","fontStyle","fontVariant","glyphName","glyphOrientationHorizontal","glyphOrientationVertical","horizAdvX","horizOriginX","horizOriginY","imageRendering","letterSpacing","lightingColor","markerEnd","markerMid","markerStart","navDown","navDownLeft","navDownRight","navLeft","navNext","navPrev","navRight","navUp","navUpLeft","navUpRight","onActivate","onBegin","onEnd","onFocusIn","onFocusOut","onMouseWheel","onRepeat","onShow","onZoom","overlinePosition","overlineThickness","paintOrder","panose1","pointerEvents","renderingIntent","shapeRendering","stopColor","strikethroughPosition","strikethroughThickness","strokeDashArray","strokeDashOffset","strokeLineCap","strokeLineJoin","strokeMiterLimit","textAnchor","textDecoration","textRendering","transformOrigin","typeOf","underlinePosition","underlineThickness","unicodeBidi","unicodeRange","unitsPerEm","vAlphabetic","vHanging","vIdeographic","vMathematical","vectorEffect","vertAdvY","vertOriginX","vertOriginY","wordSpacing","writingMode","xHeight","playbackOrder","timelineBegin","about","accumulate","additive","alphabetic","amplitude","ascent","attributeType","azimuth","bandwidth","baseFrequency","baseProfile","bbox","begin","bias","by","calcMode","clip","clipPathUnits","contentScriptType","contentStyleType","cursor","cx","cy","defaultAction","descent","diffuseConstant","direction","dur","divisor","dx","dy","edgeMode","editable","elevation","exponent","externalResourcesRequired","fill","filterRes","filterUnits","focusable","focusHighlight","format","fr","from","fx","fy","g1","g2","glyphRef","gradientTransform","gradientUnits","hanging","hatchContentUnits","hatchUnits","ideographic","initialVisibility","in","in2","intercept","k1","k2","k3","k4","kernelMatrix","kernelUnitLength","keyPoints","keySplines","keyTimes","kerning","lengthAdjust","limitingConeAngle","local","markerHeight","markerUnits","markerWidth","maskContentUnits","maskUnits","mathematical","mediaCharacterEncoding","mediaContentEncodings","mediaSize","mediaTime","numOctaves","observer","operator","orient","orientation","origin","overlay","path","pathLength","patternContentUnits","patternTransform","patternUnits","phase","pitch","points","pointsAtX","pointsAtY","pointsAtZ","preserveAlpha","preserveAspectRatio","primitiveUnits","propagate","radius","refX","refY","repeatCount","repeatDur","requiredExtensions","requiredFeatures","requiredFonts","requiredFormats","resource","restart","result","rotate","rx","ry","seed","side","slope","snapshotTime","specularConstant","specularExponent","spreadMethod","spacing","startOffset","stdDeviation","stemh","stemv","stitchTiles","stroke","surfaceScale","syncBehavior","syncBehaviorDefault","syncMaster","syncTolerance","syncToleranceDefault","systemLanguage","tableValues","targetX","targetY","textLength","transformBehavior","to","u1","u2","unicode","viewBox","viewTarget","visibility","widths","x1","x2","xChannelSelector","y1","y2","yChannelSelector","zoomAndPan","htmlBase","svgBase","valid","dash","cap","kebab","$0","camelcase","hastToReact","StyleToObject","pointEnd","point","pointStart","stringifyPosition","VFileMessage","causeOrReason","optionsOrParentOrPlace","legacyCause","place","ancestors","cause","ruleId","parent","fatal","file","actual","expected","note","emptyMap","dashSomething","tableElements","tableCellElement","docs","toJsxRuntime","tree","filePath","development","jsxDEV","isStaticChildren","columnNumber","fileName","lineNumber","developmentCreate","fn","productionCreate","components","elementAttributeNameCase","evaluater","createEvaluater","ignoreInvalidStyle","passKeys","passNode","schema","stylePropertyNameCase","tableCellAlignToStyle","one","parentSchema","findComponentFromName","alignValue","createProperty","createElementProps","createChildren","thing","addNode","addChildren","estree","expression","evaluateExpression","crashEstree","mdxExpression","objectExpression","argument","createJsxElementProps","mdxJsxElement","evaluateProgram","mdxEsm","root","countsByName","Type","rest","dashes","find","settings","padRight","padLeft","commas","styleToObject","replacer","toCamel","parseStyle","domCasing","cssCasing","transformStyleToCssCasing","transformStylesToCssCasing","allowExpression","identifiers","isIdentifierName","computed","optional","toDash","$1","urlAttributes","includeImageAlt","includeHtml","all","items","parameters","chunkStart","SpliceBuffer","initial","RangeError","setCursor","POSITIVE_INFINITY","reverse","deleteCount","trunc","removed","chunkedPush","pushMany","unshiftMany","subtokenize","eventsArray","jumps","lineIndex","otherIndex","otherEvent","subevents","more","events","_tokenizer","_isInFirstContentOfListItem","contentType","subcontent","_container","eventIndex","token","startPosition","startPositions","tokenizer","parser","childEvents","gaps","stream","previous","adjust","breaks","sliceStream","defineSkip","_gfmTasklistFirstContentOfListItem","write","syntaxExtension","extension","hook","constructs","existing","before","asciiAlpha","regexCheck","asciiAlphanumeric","asciiAtext","asciiControl","asciiDigit","asciiHexDigit","asciiPunctuation","markdownLineEnding","markdownLineEndingOrSpace","markdownSpace","unicodePunctuation","unicodeWhitespace","regex","factorySpace","limit","enter","consume","exit","tokenize","contentStart","attempt","contentInitial","lineStart","self","childFlow","childToken","lineStartOffset","continued","containerState","continuation","documentContinue","checkNewContainers","_closeFlow","closeFlow","indexBeforeExits","indexBeforeFlow","exitContainers","documentContinued","currentConstruct","concrete","flowStart","interrupt","_gfmTableDynamicInterruptHack","containerConstruct","thereIsANewContainer","thereIsNoNewContainer","containerContinue","flow","flowContinue","writeToChild","eof","seen","entry","nok","disable","null","blankLine","after","partial","chunkInside","contentEnd","continuationConstruct","contentContinue","prefixed","sliceSerialize","flowInitial","afterConstruct","resolver","resolveAll","createResolver","initializeFactory","field","notText","atBreak","resolveAllLineSuffixes","extraResolver","chunks","tabs","bufferIndex","chunk","charCodeAt","_index","_bufferIndex","called","createTokenizer","initialize","columnStart","resolveAllConstructs","consumed","accountForPotentialSkip","fields","constructFactory","addResult","onsuccessfulcheck","expandTabs","atTab","serializeChunks","main","expectedCode","startIndex","startBufferIndex","endIndex","endBufferIndex","head","sliceChunks","chunkIndex","go","restore","onreturn","returnState","bogusState","listOfConstructs","constructIndex","handleListOfConstructs","def","handleMapOfConstructs","handleConstruct","startPoint","startPrevious","startCurrentConstruct","startEventsIndex","startStack","store","resolveTo","thematicBreak","marker","sequence","initialSize","atMarker","inside","onBlank","listItemPrefixWhitespaceConstruct","endOfPrefix","otherPrefix","initialBlankLine","notBlank","furtherBlankLines","notInCurrentItem","indentConstruct","blockQuote","contBefore","factoryDestination","literalType","literalMarkerType","rawType","stringType","balance","enclosedBefore","raw","enclosed","enclosedEscape","rawEscape","factoryLabel","markerType","labelInside","labelEscape","factoryTitle","factoryWhitespace","normalizeIdentifier","labelAfter","markerAfter","destinationBefore","destinationAfter","titleBefore","afterWhitespace","beforeMarker","titleAfter","titleAfterOptionalWhitespace","codeIndented","afterPrefix","furtherStart","headingAtx","sequenceOpen","sequenceFurther","setextUnderline","paragraph","heading","htmlBlockNames","htmlRawNames","htmlFlow","closingTag","buffer","markerB","declarationOpen","tagCloseStart","continuationDeclarationInside","commentOpenInside","cdataOpenInside","slash","basicSelfClosing","completeClosingTagAfter","completeAttributeNameBefore","completeEnd","completeAttributeName","completeAttributeNameAfter","completeAttributeValueBefore","completeAttributeValueQuoted","completeAttributeValueUnquoted","completeAttributeValueQuotedAfter","completeAfter","continuationCommentInside","continuationRawTagOpen","continuationClose","continuationCdataInside","continuationStart","blankLineBefore","continuationAfter","nonLazyContinuationStart","continuationStartNonLazy","continuationBefore","continuationRawEndTag","nonLazyContinuation","codeFenced","closeStart","startBefore","beforeSequenceClose","sequenceClose","sizeOpen","sequenceCloseAfter","initialPrefix","beforeSequenceOpen","infoBefore","atNonLazyBreak","metaBefore","contentBefore","beforeContentChunk","contentChunk","decodeNamedCharacterReference","characterReference","numeric","characterEscape","lineEnding","labelEnd","labelStart","_balanced","_inactive","labelEndNok","resourceConstruct","labelEndOk","referenceFullConstruct","referenceNotFull","referenceCollapsedConstruct","close","group","insideSpan","resourceBefore","resourceOpen","resourceEnd","resourceDestinationAfter","resourceDestinationMissing","resourceBetween","resourceTitleAfter","referenceFullAfter","referenceFullMissing","referenceCollapsedOpen","labelStartImage","classifyCharacter","attention","attentionMarkers","_open","_close","openingSequence","closingSequence","use","nextEvents","movePoint","autolink","schemeOrEmailAtext","emailAtext","schemeInsideOrEmailAtext","urlInside","emailAtSignOrDot","emailLabel","emailValue","htmlText","instruction","tagOpen","commentEnd","commentClose","lineEndingBefore","cdata","cdataClose","cdataEnd","instructionClose","tagClose","tagCloseBetween","tagOpenBetween","tagOpenAttributeName","tagOpenAttributeNameAfter","tagOpenAttributeValueBefore","tagOpenAttributeValueQuoted","tagOpenAttributeValueUnquoted","tagOpenAttributeValueQuotedAfter","lineEndingAfter","lineEndingAfterPrefix","labelStartLink","hardBreakEscape","codeText","between","tailExitIndex","headEnterIndex","resolveText","parse","extensions","combineExtensions","defaultConstructs","decodeNumericCharacterReference","fromCodePoint","characterEscapeOrReference","decode","$2","hex","fromMarkdown","encoding","config","transforms","canContainEols","opener","autolinkProtocol","onenterdata","autolinkEmail","atxHeading","codeFlow","codeFencedFenceInfo","codeFencedFenceMeta","codeTextData","codeFlowValue","definitionDestinationString","definitionLabelString","definitionTitleString","emphasis","hardBreak","hardBreakTrailing","htmlFlowData","htmlTextData","image","listItem","listItemValue","onenterlistitemvalue","listOrdered","onenterlistordered","listUnordered","reference","onenterreference","referenceString","resourceDestinationString","resourceTitleString","setextHeading","strong","closer","atxHeadingSequence","onexitatxheadingsequence","onexitautolinkemail","onexitautolinkprotocol","characterEscapeValue","onexitdata","characterReferenceMarkerHexadecimal","onexitcharacterreferencemarker","characterReferenceMarkerNumeric","characterReferenceValue","onexitcharacterreferencevalue","onexitcharacterreference","onexitcodefenced","codeFencedFence","onexitcodefencedfence","onexitcodefencedfenceinfo","onexitcodefencedfencemeta","onexitcodeindented","onexitcodetext","onexitdefinitiondestinationstring","onexitdefinitionlabelstring","onexitdefinitiontitlestring","onexithardbreak","onexithtmlflow","onexithtmltext","onexitimage","onexitlabel","labelText","onexitlabeltext","onexitlineending","onexitlink","onexitreferencestring","onexitresourcedestinationstring","onexitresourcetitlestring","onexitresource","onexitsetextheading","setextHeadingLineSequence","onexitsetextheadinglinesequence","setextHeadingText","onexitsetextheadingtext","configure","mdastExtensions","compile","tokenStack","resume","listStack","prepareList","defaultOnError","firstBlankLineIndex","containerBalance","listSpread","tailIndex","tailEvent","_spread","and","errorHandler","onExitError","expectingFirstListItemValue","flowCodeInside","depth","setextHeadingSlurpLineEnding","codePointAt","siblings","atHardBreak","inReference","referenceType","ancestor","decodeString","fragment","characterReferenceType","ordered","spread","compiler","postprocess","atCarriageReturn","endPosition","TextDecoder","preprocess","combined","remarkParse","env","globalThis","deserialize","serialized","deserializer","$","unpair","BigInt","EMPTY","asString","shouldSkip","TYPE","serialize","json","lossy","serializer","strict","pair","toJSON","entries","toISOString","structuredClone","normalizeUri","skip","defaultFootnoteBackContent","rereferenceIndex","defaultFootnoteBackLabel","referenceIndex","convert","castFactory","tests","anyFactory","checkAsRecord","nodeAsRecord","propsFactory","typeFactory","testFunction","looksLikeANode","CONTINUE","EXIT","SKIP","visitParents","visitor","factory","parents","visit","subresult","grandparents","toResult","nodeAsParent","testOrVisitor","visitorOrReverse","maybeReverse","revert","subtype","suffix","contents","listItemLoose","tab","trimLines","trimLine","handlers","blockquote","patch","applyData","break","footnoteReference","clobberPrefix","safeId","footnoteOrder","counter","reuseCounter","footnoteCounts","dataFootnoteRef","sup","allowDangerousHtml","imageReference","definitionById","inlineCode","linkReference","loose","listLoose","table","firstRow","tableContent","tableCell","tableRow","cellIndex","cells","cell","toml","ignore","yaml","footnoteDefinition","hName","hChildren","hProperties","defaultUnknownHandler","nodes","trimMarkdownSpaceStart","toHast","footnoteById","defaultHandlers","passThrough","shallow","unknownHandler","createState","foot","footnoteBackContent","footnoteBackLabel","footnoteLabel","footnoteLabelTagName","footnoteLabelProperties","listItems","backReferences","counts","dataFootnoteBackref","tailTail","dataFootnotes","footer","remarkRehype","destination","hastTree","run","bail","getPrototypeOf","trough","fns","pipeline","middlewareIndex","output","middleware","wrapped","_len3","_key3","fnExpectsCallback","_len4","_key4","middelware","basename","ext","assertPath","seenNonSlash","firstNonSlashEnd","extIndex","unmatchedSlash","extname","startPart","startDot","preDotState","joined","segments","absolute","allowAboveRoot","lastSlashIndex","lastSegmentLength","lastSlash","dots","normalizeString","sep","proc","cwd","isUrl","fileUrlOrPath","protocol","auth","urlToPath","URL","hostname","pathname","third","decodeURIComponent","getPathFromURLPosix","VFile","isUint8Array","history","messages","stored","assertNonEmpty","assertPart","stem","fail","part","CallableInstance","proto","names","getOwnPropertyNames","descriptor","Processor","Compiler","Parser","attachers","freezeIndex","frozen","namespace","transformers","attacher","assertUnfrozen","freeze","transformer","realFile","vfile","assertParser","process","assertCompiler","executor","reject","parseTree","realDone","compileTree","compileResult","processSync","complete","assertDone","assertNode","outputTree","resultingTree","runSync","addPlugin","addList","addPreset","plugin","plugins","entryIndex","primary","currentPrimary","isPlainObj","unified","asyncName","looksLikeAVFile","emptyPlugins","emptyRemarkRehypeOptions","safeProtocol","deprecations","Markdown","allowedElements","allowElement","disallowedElements","rehypePlugins","remarkPlugins","remarkRehypeOptions","skipHtml","unwrapDisallowed","urlTransform","defaultUrlTransform","processor","deprecation","mdastTree","colon","questionMark","numberSign","FileTopBar","onBackInfo","buttonInfo","fileContent","setFileContent","keysToIgnore","filteredContent","reduce","acc","handleMouseDown","fp","response","fetch","fetchMarkdown","default_text","selectedOption","setSelectedOption","option","ViewType","_ViewType","Grid","List","FolderEntry","fkey","AppFolder","openApp","view_type","searchBar","dataToShow","setDataToShow","currData","setCurrData","inputValue","setInputValue","setOptions","handleInputChange","filteredData","some","Listbox","opt","getOptionsOnData","FileApp","data_to_icon","DesktopIcon","Command","description","describe","help","execute","help_flags","prevOutput","retrieveObjectsAsString","objects","find_key","target_str","match_prefix","startsWith","find_root","endsWith","currentObj","find_id","find_obj","target_obj","CatCommand","new_output","nixCommands","LsCommand","CdCommand","updateFs","rootFs","target_key","PwdCommand","outputStr","currentDir","ExitCommand","ClearCommand","SocialsCommand","buildWelcomeString","currDir","setcurrDir","promptString","setPromptString","setInput","setData","setOutput","outputRef","command_history","setCommandHistory","command_history_index","setCommandHistoryIndex","cursorPosition","setCursorPosition","commands","ls","cat","pwd","updateData","newData","currDirName","updateCursorPosition","scrollHeight","processCommand","command","called_cmd","cmd","_Fragment","prevHistory","matchingCandidate","str_to_complete","candidate","completedInput","remainingInput","prevIndex","backgroundColor","osOptions","SuspendedScreen","onLogin","Octocat","defaultIcons","TerminalApp","SettingsApp","DesktopArea","onAppOpen","OpenWindowsSpace","Dock","ReactDOM","App","serviceWorker","ready","registration","unregister"],"sourceRoot":""} \ No newline at end of file