spec-up-t 1.1.32 → 1.1.34

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -125,16 +125,16 @@ function backToTop(){const n=document.createElement("a");n.id="back-to-top-a1znc
125
125
  * @license MIT
126
126
  * @since 2024-06-09
127
127
  */
128
- var md=window.markdownit();function fetchCommitHashes(){async function e(e,o){const i=document.createElement("div");i.classList.add("fetched-xref-term"),i.classList.add("transcluded-xref-term"),i.innerHTML="<p class='loadertext'>Loading external reference</p><div class='loader'></div>",o.parentNode.insertBefore(i,o.nextSibling);const s=async function(e,t){const o={};e&&e.length>0&&(o.Authorization="token "+e);try{const e=await fetch("https://api.github.com/repos/"+t.owner+"/"+t.repo+"/contents/"+t.terms_dir+"/"+t.term.replace(/ /g,"-").toLowerCase()+".md",{headers:o});if(403===e.status&&"0"===e.headers.get("X-RateLimit-Remaining")){const t=new Date(1e3*e.headers.get("X-RateLimit-Reset"));return console.error(`❌ Github API rate limit exceeded. Try again after ${t}. See https://trustoverip.github.io/spec-up-t-website/docs/getting-started/github-token for more info.`),r(),!0}console.log(`ℹ️ Github API rate limit: ${e.headers.get("X-RateLimit-Remaining")} requests remaining. See https://trustoverip.github.io/spec-up-t-website/docs/getting-started/github-token for more info.`);const s=await e.json(),a=atob(s.content);return i=(i=a).replace(/\[\[def: ([^\]]+)\]\]/g,""),n.render(i)}catch(e){console.error("Error fetching content:",e)}var i}(t,e),a=new Promise(e=>setTimeout(e,2e3)),[c]=await Promise.all([s,a]),d=Date.now(),l=new Date(d).toLocaleDateString("en-US",{year:"numeric",month:"long",day:"numeric",hour:"2-digit",minute:"2-digit",second:"2-digit"});i.innerHTML="<p class='transclusion-heading'>Current definition</p><small>"+l+"</small>"+c}if("undefined"==typeof allXTrefs||null===allXTrefs)return void console.log("allXTrefs is not defined or does not exist. We will continue without it.");const t=localStorage.getItem("githubToken"),n=window.markdownit().use(window.markdownitDeflist);const r=function(e,t){let n;return function(...r){clearTimeout(n),n=setTimeout(()=>e.apply(this,r),t)}}(()=>{notyf.error('GitHub API rate limit exceeded. See <a target="_blank" rel="noopener" href="https://trustoverip.github.io/spec-up-t-website/docs/getting-started/github-token">documentation</a> for more info.')},3e3);document.querySelectorAll(".x-term-reference").forEach(o=>{const i=o.getAttribute("data-local-href").split(":");allXTrefs.xtrefs.forEach(s=>{if(s.externalSpec===i[1]&&s.term.toLowerCase()===i[2].toLowerCase()){if(!s.commitHash){const e=document.createElement("span");return e.classList.add("no-xref-found-message"),e.innerHTML="No xref found.",void o.parentNode.insertBefore(e,o.nextSibling)}s.commitHash&&s.commitHash&&s.commitHash.substring(0,7);const i=document.createElement("a");i.href="https://github.com/"+s.owner+"/"+s.repo+"/compare/"+s.commitHash+"../main",i.target="_blank",i.rel="noopener noreferrer",i.classList.add("diff","xref-info-links","btn"),i.innerHTML='<svg icon><use xlink:href="#svg-github"></use></svg> Xref &lt; &gt; <svg icon><use xlink:href="#svg-github"></use></svg> Now',i.title="A Diff between the current commit hash of the definition and the commit hash referenced when the link was created.",o.parentNode.insertBefore(i,o.nextSibling);const a=document.createElement("a");a.href="https://github.com/"+s.owner+"/"+s.repo+"/blob/main/"+s.terms_dir+"/"+s.term.replace(/ /g,"-").toLowerCase()+".md",a.target="_blank",a.rel="noopener noreferrer",a.classList.add("latest-version","xref-info-links","btn"),a.innerHTML='<svg icon><use xlink:href="#svg-github"></use></svg> Now',a.title="Go to the repo page of the definition‘s latest version.",i.parentNode.insertBefore(a,o.nextSibling);const c=document.createElement("a");c.href="https://github.com/"+s.owner+"/"+s.repo+"/blob/"+s.commitHash+"/"+s.terms_dir+"/"+s.term.replace(/ /g,"-").toLowerCase()+".md",c.target="_blank",c.rel="noopener noreferrer",c.classList.add("exact-commit-hash","xref-info-links","btn"),c.innerHTML='<svg icon><use xlink:href="#svg-github"></use></svg> Xref',c.title="Go to the repo page of the definition‘s version referenced when the link was created.",a.parentNode.insertBefore(c,o.nextSibling);const d=document.createElement("button");d.classList.add("show-diff-modal","xref-info-links","btn"),d.innerHTML='Xref &lt; &gt; <svg icon><use xlink:href="#svg-github"></use></svg> Now',d.title="Show diff between the latest version and the referenced version",a.parentNode.insertBefore(d,o.nextSibling),d.addEventListener("click",(function(e){e.preventDefault(),function(e,t){const n={};e&&e.length>0&&(n.Authorization="token "+e),fetch("https://api.github.com/repos/"+t.owner+"/"+t.repo+"/contents/"+t.terms_dir+"/"+t.term.replace(/ /g,"-").toLowerCase()+".md",{headers:n}).then(e=>{if(403===e.status&&"0"===e.headers.get("X-RateLimit-Remaining")){const t=new Date(1e3*e.headers.get("X-RateLimit-Reset"));return console.error(`❌ Github API rate limit exceeded. Try again after ${t}. See https://trustoverip.github.io/spec-up-t-website/docs/getting-started/github-token for more info.`),r(),!0}return console.log(`ℹ️ Github API rate limit: ${e.headers.get("X-RateLimit-Remaining")} requests remaining. See https://trustoverip.github.io/spec-up-t-website/docs/getting-started/github-token for more info.`),e.json()}).then(e=>{const n=atob(e.content),r=Diff.diffChars(t.content,n),o=document.createDocumentFragment();r.forEach(e=>{const t=e.added?"green":e.removed?"red":"grey",n=e.added||e.removed?"#ddd":"white";span=document.createElement("span"),span.style.color=t,span.style.backgroundColor=n,span.appendChild(document.createTextNode(e.value)),o.appendChild(span)});const i=document.createElement("div");i.innerHTML="<h1>Diff xref (local snapshot) and latest version</h1>",i.appendChild(o),i.innerHTML=i.innerHTML.replace(/\n/g,"<br>"),showModal(i.innerHTML)}).catch(e=>{console.error("Error fetching content:",e)})}(t,s)}));const l=document.createElement("button");l.classList.add("show-diff-modal","xref-info-links","btn"),l.innerHTML="Xref",l.title="Show the stored version of the term-file",d.parentNode.insertBefore(l,o.nextSibling);const h=/\[\[def: ([^\]]+)\]\]/g;s.content=s.content.replace(h,"");const m=n.render(s.content);l.addEventListener("click",(function(e){e.preventDefault(),showModal(`\n <h1>Term definition (local snapshot)</h1>\n <table>\n <tr>\n <th>Commit hash</th>\n <td>${s.commitHash}</td>\n </tr>\n <tr>\n <th>Content</th>\n <td>${m}</td>\n </tr>\n </table>\n `)}));const f=document.createElement("div");f.classList.add("local-snapshot-xref-term"),f.classList.add("transcluded-xref-term"),f.innerHTML=`<p class='transclusion-heading'>Snapshot</p><p>Commit Hash: ${s.commitHash}</p> ${m}`,o.parentNode.insertBefore(f,o.nextSibling),e(s,o)}})})}document.addEventListener("DOMContentLoaded",(function(){fetchCommitHashes()}));
128
+ var md=window.markdownit();function fetchCommitHashes(){async function e(e,r){const i=document.createElement("div");i.classList.add("fetched-xref-term"),i.classList.add("transcluded-xref-term"),i.innerHTML="<p class='loadertext'>Loading external reference</p><div class='loader'></div>",r.parentNode.insertBefore(i,r.nextSibling);const s=async function(e,t){const r={};e&&e.length>0&&(r.Authorization="token "+e);try{const e=await fetch("https://api.github.com/repos/"+t.owner+"/"+t.repo+"/contents/"+t.terms_dir+"/"+t.term.replace(/ /g,"-").toLowerCase()+".md",{headers:r});if(403===e.status&&"0"===e.headers.get("X-RateLimit-Remaining")){const t=new Date(1e3*e.headers.get("X-RateLimit-Reset"));return console.error(`❌ Github API rate limit exceeded. Try again after ${t}. See https://blockchainbird.github.io/spec-up-t-website/docs/getting-started/github-token for more info.`),o(),!0}console.log(`ℹ️ Github API rate limit: ${e.headers.get("X-RateLimit-Remaining")} requests remaining. See https://blockchainbird.github.io/spec-up-t-website/docs/getting-started/github-token for more info.`);const s=await e.json(),a=atob(s.content);return i=(i=a).replace(/\[\[def: ([^\]]+)\]\]/g,""),n.render(i)}catch(e){console.error("Error fetching content:",e)}var i}(t,e),a=new Promise(e=>setTimeout(e,2e3)),[c]=await Promise.all([s,a]),d=Date.now(),l=new Date(d).toLocaleDateString("en-US",{year:"numeric",month:"long",day:"numeric",hour:"2-digit",minute:"2-digit",second:"2-digit"});i.innerHTML="<p class='transclusion-heading'>Current definition</p><small>"+l+"</small>"+c}if("undefined"==typeof allXTrefs||null===allXTrefs)return void console.log("allXTrefs is not defined or does not exist. We will continue without it.");const t=localStorage.getItem("githubToken"),n=window.markdownit().use(window.markdownitDeflist);const o=function(e,t){let n;return function(...o){clearTimeout(n),n=setTimeout(()=>e.apply(this,o),t)}}(()=>{notyf.error('GitHub API rate limit exceeded. See <a target="_blank" rel="noopener" href="https://blockchainbird.github.io/spec-up-t-website/docs/getting-started/github-token">documentation</a> for more info.')},3e3);document.querySelectorAll(".x-term-reference").forEach(r=>{const i=r.getAttribute("data-local-href").split(":");allXTrefs.xtrefs.forEach(s=>{if(s.externalSpec===i[1]&&s.term.toLowerCase()===i[2].toLowerCase()){if(!s.commitHash){const e=document.createElement("span");return e.classList.add("no-xref-found-message"),e.innerHTML="No xref found.",void r.parentNode.insertBefore(e,r.nextSibling)}s.commitHash&&s.commitHash&&s.commitHash.substring(0,7);const i=document.createElement("a");i.href="https://github.com/"+s.owner+"/"+s.repo+"/compare/"+s.commitHash+"../main",i.target="_blank",i.rel="noopener noreferrer",i.classList.add("diff","xref-info-links","btn"),i.innerHTML='<svg icon><use xlink:href="#svg-github"></use></svg> Xref &lt; &gt; <svg icon><use xlink:href="#svg-github"></use></svg> Now',i.title="A Diff between the current commit hash of the definition and the commit hash referenced when the link was created.",r.parentNode.insertBefore(i,r.nextSibling);const a=document.createElement("a");a.href="https://github.com/"+s.owner+"/"+s.repo+"/blob/main/"+s.terms_dir+"/"+s.term.replace(/ /g,"-").toLowerCase()+".md",a.target="_blank",a.rel="noopener noreferrer",a.classList.add("latest-version","xref-info-links","btn"),a.innerHTML='<svg icon><use xlink:href="#svg-github"></use></svg> Now',a.title="Go to the repo page of the definition‘s latest version.",i.parentNode.insertBefore(a,r.nextSibling);const c=document.createElement("a");c.href="https://github.com/"+s.owner+"/"+s.repo+"/blob/"+s.commitHash+"/"+s.terms_dir+"/"+s.term.replace(/ /g,"-").toLowerCase()+".md",c.target="_blank",c.rel="noopener noreferrer",c.classList.add("exact-commit-hash","xref-info-links","btn"),c.innerHTML='<svg icon><use xlink:href="#svg-github"></use></svg> Xref',c.title="Go to the repo page of the definition‘s version referenced when the link was created.",a.parentNode.insertBefore(c,r.nextSibling);const d=document.createElement("button");d.classList.add("show-diff-modal","xref-info-links","btn"),d.innerHTML='Xref &lt; &gt; <svg icon><use xlink:href="#svg-github"></use></svg> Now',d.title="Show diff between the latest version and the referenced version",a.parentNode.insertBefore(d,r.nextSibling),d.addEventListener("click",(function(e){e.preventDefault(),function(e,t){const n={};e&&e.length>0&&(n.Authorization="token "+e),fetch("https://api.github.com/repos/"+t.owner+"/"+t.repo+"/contents/"+t.terms_dir+"/"+t.term.replace(/ /g,"-").toLowerCase()+".md",{headers:n}).then(e=>{if(403===e.status&&"0"===e.headers.get("X-RateLimit-Remaining")){const t=new Date(1e3*e.headers.get("X-RateLimit-Reset"));return console.error(`❌ Github API rate limit exceeded. Try again after ${t}. See https://blockchainbird.github.io/spec-up-t-website/docs/getting-started/github-token for more info.`),o(),!0}return console.log(`ℹ️ Github API rate limit: ${e.headers.get("X-RateLimit-Remaining")} requests remaining. See https://blockchainbird.github.io/spec-up-t-website/docs/getting-started/github-token for more info.`),e.json()}).then(e=>{const n=atob(e.content),o=Diff.diffChars(t.content,n),r=document.createDocumentFragment();o.forEach(e=>{const t=e.added?"green":e.removed?"red":"grey",n=e.added||e.removed?"#ddd":"white";span=document.createElement("span"),span.style.color=t,span.style.backgroundColor=n,span.appendChild(document.createTextNode(e.value)),r.appendChild(span)});const i=document.createElement("div");i.innerHTML="<h1>Diff xref (local snapshot) and latest version</h1>",i.appendChild(r),i.innerHTML=i.innerHTML.replace(/\n/g,"<br>"),showModal(i.innerHTML)}).catch(e=>{console.error("Error fetching content:",e)})}(t,s)}));const l=document.createElement("button");l.classList.add("show-diff-modal","xref-info-links","btn"),l.innerHTML="Xref",l.title="Show the stored version of the term-file",d.parentNode.insertBefore(l,r.nextSibling);const h=/\[\[def: ([^\]]+)\]\]/g;s.content=s.content.replace(h,"");const m=n.render(s.content);l.addEventListener("click",(function(e){e.preventDefault(),showModal(`\n <h1>Term definition (local snapshot)</h1>\n <table>\n <tr>\n <th>Commit hash</th>\n <td>${s.commitHash}</td>\n </tr>\n <tr>\n <th>Content</th>\n <td>${m}</td>\n </tr>\n </table>\n `)}));const f=document.createElement("div");f.classList.add("local-snapshot-xref-term"),f.classList.add("transcluded-xref-term"),f.innerHTML=`<p class='transclusion-heading'>Snapshot</p><p>Commit Hash: ${s.commitHash}</p> ${m}`,r.parentNode.insertBefore(f,r.nextSibling),e(s,r)}})})}document.addEventListener("DOMContentLoaded",(function(){fetchCommitHashes()}));
129
129
  function addAnchorsToTerms(){document.querySelectorAll('dt:has(> span[id^="term:"])').forEach(e=>{const t=function(e){let t=e;for(;t.querySelector('span[id^="term:"]');)t=t.querySelector('span[id^="term:"]');return t}(e),r=t.getAttribute("id"),n=document.createElement("a");n.setAttribute("href","#"+r),n.setAttribute("class","toc-anchor"),n.innerHTML="# ",t.parentNode.insertBefore(n,t)})}document.addEventListener("DOMContentLoaded",(function(){addAnchorsToTerms()}));
130
130
  function copyAnchorToCliboard(){document.addEventListener("click",(function(o){if(o.target.classList.contains("toc-anchor")){const c=o.target.href;navigator.clipboard.writeText(c).then(()=>{console.log("Anchor copied to clipboard"),notyf.success("Anchor copied to clipboard: "+c)}).catch(o=>{console.error("Failed to copy anchor to clipboard",o)})}}))}document.addEventListener("DOMContentLoaded",(function(){copyAnchorToCliboard()}));
131
131
  var Notyf=function(){"use strict";var t,i=function(){return(i=Object.assign||function(t){for(var i,e=1,n=arguments.length;e<n;e++)for(var o in i=arguments[e])Object.prototype.hasOwnProperty.call(i,o)&&(t[o]=i[o]);return t}).apply(this,arguments)},e=(n.prototype.on=function(t,i){var e=this.listeners[t]||[];this.listeners[t]=e.concat([i])},n.prototype.triggerEvent=function(t,i){var e=this;(this.listeners[t]||[]).forEach((function(t){return t({target:e,event:i})}))},n);function n(t){this.options=t,this.listeners={}}(s=t=t||{})[s.Add=0]="Add",s[s.Remove=1]="Remove";var o,s,a=(r.prototype.push=function(i){this.notifications.push(i),this.updateFn(i,t.Add,this.notifications)},r.prototype.splice=function(i,e){return e=this.notifications.splice(i,e)[0],this.updateFn(e,t.Remove,this.notifications),e},r.prototype.indexOf=function(t){return this.notifications.indexOf(t)},r.prototype.onUpdate=function(t){this.updateFn=t},r);function r(){this.notifications=[]}(s=o=o||{}).Dismiss="dismiss";var c={types:[{type:"success",className:"notyf__toast--success",backgroundColor:"#3dc763",icon:{className:"notyf__icon--success",tagName:"i"}},{type:"error",className:"notyf__toast--error",backgroundColor:"#ed3d3d",icon:{className:"notyf__icon--error",tagName:"i"}}],duration:2e3,ripple:!0,position:{x:"right",y:"bottom"},dismissible:!(s.Click="click")},p=(d.prototype.on=function(t,e){var n;this.events=i(i({},this.events),((n={})[t]=e,n))},d.prototype.update=function(i,e){e===t.Add?this.addNotification(i):e===t.Remove&&this.removeNotification(i)},d.prototype.removeNotification=function(t){var i,e,n=this;(t=this._popRenderedNotification(t))&&((e=t.node).classList.add("notyf__toast--disappear"),e.addEventListener(this.animationEndEventName,i=function(t){t.target===e&&(e.removeEventListener(n.animationEndEventName,i),n.container.removeChild(e))}))},d.prototype.addNotification=function(t){var i=this._renderNotification(t);this.notifications.push({notification:t,node:i}),this._announce(t.options.message||"Notification")},d.prototype._renderNotification=function(t){var i=this._buildNotificationCard(t),e=t.options.className;return e&&(t=i.classList).add.apply(t,e.split(" ")),this.container.appendChild(i),i},d.prototype._popRenderedNotification=function(t){for(var i=-1,e=0;e<this.notifications.length&&i<0;e++)this.notifications[e].notification===t&&(i=e);if(-1!==i)return this.notifications.splice(i,1)[0]},d.prototype.getXPosition=function(t){return(null===(t=null==t?void 0:t.position)||void 0===t?void 0:t.x)||"right"},d.prototype.getYPosition=function(t){return(null===(t=null==t?void 0:t.position)||void 0===t?void 0:t.y)||"bottom"},d.prototype.adjustContainerAlignment=function(t){var i=this.X_POSITION_FLEX_MAP[this.getXPosition(t)],e=this.Y_POSITION_FLEX_MAP[this.getYPosition(t)];(t=this.container.style).setProperty("justify-content",e),t.setProperty("align-items",i)},d.prototype._buildNotificationCard=function(t){var i=this,e=t.options,n=e.icon;this.adjustContainerAlignment(e);var s=this._createHTMLElement({tagName:"div",className:"notyf__toast"}),a=this._createHTMLElement({tagName:"div",className:"notyf__ripple"}),r=this._createHTMLElement({tagName:"div",className:"notyf__wrapper"}),c=this._createHTMLElement({tagName:"div",className:"notyf__message"});c.innerHTML=e.message||"";var p,d,l,u,f=e.background||e.backgroundColor;return n&&(p=this._createHTMLElement({tagName:"div",className:"notyf__icon"}),("string"==typeof n||n instanceof String)&&(p.innerHTML=new String(n).valueOf()),"object"==typeof n&&(d=n.tagName,l=n.className,u=n.text,n=void 0===(n=n.color)?f:n,u=this._createHTMLElement({tagName:void 0===d?"i":d,className:l,text:u}),n&&(u.style.color=n),p.appendChild(u)),r.appendChild(p)),r.appendChild(c),s.appendChild(r),f&&(e.ripple?(a.style.background=f,s.appendChild(a)):s.style.background=f),e.dismissible&&(a=this._createHTMLElement({tagName:"div",className:"notyf__dismiss"}),f=this._createHTMLElement({tagName:"button",className:"notyf__dismiss-btn"}),a.appendChild(f),r.appendChild(a),s.classList.add("notyf__toast--dismissible"),f.addEventListener("click",(function(e){var n,s;null!==(s=(n=i.events)[o.Dismiss])&&void 0!==s&&s.call(n,{target:t,event:e}),e.stopPropagation()}))),s.addEventListener("click",(function(e){var n,s;return null===(s=(n=i.events)[o.Click])||void 0===s?void 0:s.call(n,{target:t,event:e})})),e="top"===this.getYPosition(e)?"upper":"lower",s.classList.add("notyf__toast--"+e),s},d.prototype._createHTMLElement=function(t){var i=t.tagName,e=t.className;t=t.text,i=document.createElement(i);return e&&(i.className=e),i.textContent=t||null,i},d.prototype._createA11yContainer=function(){var t=this._createHTMLElement({tagName:"div",className:"notyf-announcer"});t.setAttribute("aria-atomic","true"),t.setAttribute("aria-live","polite"),t.style.border="0",t.style.clip="rect(0 0 0 0)",t.style.height="1px",t.style.margin="-1px",t.style.overflow="hidden",t.style.padding="0",t.style.position="absolute",t.style.width="1px",t.style.outline="0",document.body.appendChild(t),this.a11yContainer=t},d.prototype._announce=function(t){var i=this;this.a11yContainer.textContent="",setTimeout((function(){i.a11yContainer.textContent=t}),100)},d.prototype._getAnimationEndEventName=function(){var t,i=document.createElement("_fake"),e={MozTransition:"animationend",OTransition:"oAnimationEnd",WebkitTransition:"webkitAnimationEnd",transition:"animationend"};for(t in e)if(void 0!==i.style[t])return e[t];return"animationend"},d);function d(){this.notifications=[],this.events={},this.X_POSITION_FLEX_MAP={left:"flex-start",center:"center",right:"flex-end"},this.Y_POSITION_FLEX_MAP={top:"flex-start",center:"center",bottom:"flex-end"};var t=document.createDocumentFragment(),i=this._createHTMLElement({tagName:"div",className:"notyf"});t.appendChild(i),document.body.appendChild(t),this.container=i,this.animationEndEventName=this._getAnimationEndEventName(),this._createA11yContainer()}function l(t){var e=this;this.dismiss=this._removeNotification,this.notifications=new a,this.view=new p;var n=this.registerTypes(t);this.options=i(i({},c),t),this.options.types=n,this.notifications.onUpdate((function(t,i){return e.view.update(t,i)})),this.view.on(o.Dismiss,(function(t){var i=t.target;t=t.event;e._removeNotification(i),i.triggerEvent(o.Dismiss,t)})),this.view.on(o.Click,(function(t){var i=t.target;t=t.event;return i.triggerEvent(o.Click,t)}))}return l.prototype.error=function(t){return t=this.normalizeOptions("error",t),this.open(t)},l.prototype.success=function(t){return t=this.normalizeOptions("success",t),this.open(t)},l.prototype.open=function(t){var n=this.options.types.find((function(i){return i.type===t.type}))||{};n=i(i({},n),t);return this.assignProps(["ripple","position","dismissible"],n),n=new e(n),this._pushNotification(n),n},l.prototype.dismissAll=function(){for(;this.notifications.splice(0,1););},l.prototype.assignProps=function(t,i){var e=this;t.forEach((function(t){i[t]=(null==i[t]?e.options:i)[t]}))},l.prototype._pushNotification=function(t){var i=this;this.notifications.push(t);var e=(void 0!==t.options.duration?t:this).options.duration;e&&setTimeout((function(){return i._removeNotification(t)}),e)},l.prototype._removeNotification=function(t){-1!==(t=this.notifications.indexOf(t))&&this.notifications.splice(t,1)},l.prototype.normalizeOptions=function(t,e){return t={type:t},"string"==typeof e?t.message=e:"object"==typeof e&&(t=i(i({},t),e)),t},l.prototype.registerTypes=function(t){var e=(t&&t.types||[]).slice();return c.types.map((function(t){var n=-1;e.forEach((function(i,e){i.type===t.type&&(n=e)}));var o=-1!==n?e.splice(n,1)[0]:{};return i(i({},t),o)})).concat(e)},l}(),notyf=new Notyf({types:[{type:"success",background:"#1D6DAE",duration:3e3},{type:"error",background:"orange",duration:1e7,dismissible:!0}]});
132
- function showModal(e){const n=document.createElement("div");n.className="modal-overlay";const o=document.createElement("div");o.className="modal";const c=document.createElement("button");function t(){document.body.removeChild(n)}c.className="modal-close",c.innerHTML="&times;",c.onclick=t,o.innerHTML=e,o.appendChild(c),n.appendChild(o),document.body.appendChild(n),n.onclick=function(e){e.target===n&&t()},document.addEventListener("keydown",(function(e){"Escape"===e.key&&t()}),{once:!0})}
132
+ function showModal(e){const n=document.createElement("div");n.className="spec-up-t-modal-overlay";const c=document.createElement("div");c.className="spec-up-t-modal";const t=document.createElement("button");function o(){document.body.removeChild(n)}t.className="spec-up-t-modal-close",t.innerHTML="&times;",t.onclick=o,c.innerHTML=e,c.appendChild(t),n.appendChild(c),document.body.appendChild(n),n.onclick=function(e){e.target===n&&o()},document.addEventListener("keydown",(function(e){"Escape"===e.key&&o()}),{once:!0})}
133
133
  function tokenInput(){let t=document.createElement("button");t.classList.add("button-token-input"),t.classList.add("btn","btn-sm","btn-outline-secondary","me-1"),t.innerHTML="&#128273;",document.querySelector("#repo_issues").insertAdjacentElement("afterend",t),t.addEventListener("click",()=>{const t=prompt("Please enter your GitHub token:");t?(localStorage.setItem("githubToken",t),console.log("GitHub token is set.")):alert("GitHub token is not set.")})}document.addEventListener("DOMContentLoaded",(function(){tokenInput()}));
134
134
  function pdfDownload(){fetch("index.pdf",{method:"HEAD"}).then(e=>{if(e.ok){let e=document.createElement("a");e.classList.add("button-pdf-download"),e.classList.add("btn"),e.target="_blank",e.rel="noopener noreferrer",e.href="index.pdf",e.title="Download this page as a PDF",e.innerHTML="PDF",document.querySelector("#container-search-h7vc6omi2hr2880").appendChild(e)}else console.log("PDF file does not exist. No PDF download button will be added.")}).catch(e=>{console.error("Error checking PDF file:",e)})}document.addEventListener("DOMContentLoaded",(function(){pdfDownload()}));
135
- function helpButtons(){const t=document.createElement("a");t.textContent="?",t.classList.add("help-button","btn"),t.title="Click to see the explanation of the buttons at the documentation website, in a new tab.",t.target="_blank",t.rel="noopener noreferrer",t.href="https://trustoverip.github.io/spec-up-t-website/docs/user-interface-overview/specification#explanation-of-the-buttons-in-the-specification",function(t){document.querySelectorAll("#content dl dt").forEach(e=>{e.appendChild(t.cloneNode(!0))})}(t)}document.addEventListener("DOMContentLoaded",helpButtons);
135
+ function helpButtons(){const t=document.createElement("a");t.textContent="?",t.classList.add("help-button","btn"),t.title="Click to see the explanation of the buttons at the documentation website, in a new tab.",t.target="_blank",t.rel="noopener noreferrer",t.href="https://blockchainbird.github.io/spec-up-t-website/docs/user-interface-overview/specification#explanation-of-the-buttons-in-the-specification",function(t){document.querySelectorAll("#content dl dt").forEach(e=>{e.appendChild(t.cloneNode(!0))})}(t)}document.addEventListener("DOMContentLoaded",helpButtons);
136
136
  function collapseDefinitions(){const t=document.querySelectorAll("#content dl.terms-and-definitions-list > dd"),e=document.querySelectorAll("#content dl.terms-and-definitions-list > dt"),n=document.querySelectorAll(".collapse-all-defs-button");e.forEach(t=>{const e=document.createElement("button");e.classList.add("collapse-all-defs-button","btn"),e.innerHTML="▲",e.setAttribute("id","toggleButton"),t.appendChild(e)}),document.addEventListener("click",e=>{e.target.classList.contains("collapse-all-defs-button")&&(!function(){const e=t[0].classList.contains("hidden");t.forEach(t=>{t.classList.toggle("hidden",!e),t.classList.toggle("visible",e)}),n.forEach(t=>{t.innerHTML=e?"▲":"▼",t.title=e?"Collapse all definitions":"Expand all definitions"})}(),e.target.scrollIntoView({behavior:"smooth",block:"start",inline:"nearest"}),setTimeout(()=>{window.scrollBy({top:-100,behavior:"smooth"})},500))})}document.addEventListener("DOMContentLoaded",(function(){collapseDefinitions()}));
137
- function createToggleButton(t){const e=document.createElement("button");e.classList.add("meta-info-toggle-button","btn"),e.textContent="🔍",e.title="Meta info",e.addEventListener("click",(function(){t.classList.toggle("collapsed"),t.classList.contains("collapsed"),this.textContent="🔍"}));let n=t.previousElementSibling;for(;n&&"DT"!==n.tagName;)n=n.previousElementSibling;n?n.appendChild(e):t.insertBefore(e,t.firstChild)}document.addEventListener("DOMContentLoaded",(function(){document.querySelectorAll(".contains-table").forEach((function(t){const e=document.createElement("div");for(e.classList.add("meta-info-content-wrapper");t.firstChild&&t.firstChild!==t.querySelector(".meta-info-toggle-button");)e.appendChild(t.firstChild);t.querySelector(".meta-info-toggle-button")||createToggleButton(t),t.appendChild(e),t.classList.add("collapsed")}))}));
137
+ function createToggleButton(t){const e=document.createElement("button");e.classList.add("meta-info-toggle-button","btn"),e.textContent="ℹ️",e.title="Meta info",e.addEventListener("click",(function(){t.classList.toggle("collapsed"),t.classList.contains("collapsed"),this.textContent="ℹ️"}));let n=t.previousElementSibling;for(;n&&"DT"!==n.tagName;)n=n.previousElementSibling;n?n.appendChild(e):t.insertBefore(e,t.firstChild)}document.addEventListener("DOMContentLoaded",(function(){document.querySelectorAll("dl > dd:has(table)").forEach((function(t){const e=document.createElement("div");for(e.classList.add("meta-info-content-wrapper");t.firstChild&&t.firstChild!==t.querySelector(".meta-info-toggle-button");)e.appendChild(t.firstChild);t.querySelector(".meta-info-toggle-button")||createToggleButton(t),t.appendChild(e),t.classList.add("collapsed")}))}));
138
138
  /**
139
139
  * @file This file adds an href attribute to the snapshot link on the page via client side JS DOM manipulation.
140
140
  * @author Kor Dwarshuis
@@ -142,7 +142,7 @@ function createToggleButton(t){const e=document.createElement("button");e.classL
142
142
  * @license MIT
143
143
  * @since 2024-09-25
144
144
  */
145
- function addHrefToSnapshotLink(){const e=document.querySelector(".snapshots a"),t=window.location.href,n=t.match(/^(https?:\/\/[^\/]+(?:\/[^\/]+)*)\/versions\/(?:[^\/]+\/)?/);let o;if(n)o=n[1]+"/versions/";else{o=t.split("#")[0].replace(/\/index\.html$/,"").replace(/\/$/,"")+"/versions/"}e&&e.setAttribute("href",o)}document.addEventListener("DOMContentLoaded",(function(){addHrefToSnapshotLink()}));
145
+ function addHrefToSnapshotLink(){const e=document.querySelector("#snapshotLink"),t=window.location.href,n=t.match(/^(https?:\/\/[^\/]+(?:\/[^\/]+)*)\/versions\/(?:[^\/]+\/)?/);let o;if(n)o=n[1]+"/versions/";else{o=t.split("#")[0].replace(/\/index\.html$/,"").replace(/\/$/,"")+"/versions/"}e&&e.setAttribute("href",o)}document.addEventListener("DOMContentLoaded",(function(){addHrefToSnapshotLink()}));
146
146
  function adjustFontSize(){const e=document.body,t=parseFloat(window.getComputedStyle(e).fontSize);function n(t){let n=parseFloat(window.getComputedStyle(e).fontSize)+t;n>=10&&n<=50&&(e.style.fontSize=n+"px")}document.getElementById("decreaseBtn").addEventListener("click",()=>n(-2)),document.getElementById("increaseBtn").addEventListener("click",()=>n(2)),document.getElementById("resetBtn").addEventListener("click",(function(){document.body.style.fontSize=t+"px"}))}document.addEventListener("DOMContentLoaded",(function(){adjustFontSize()}));
147
147
  function closeOffCanvasMenu(){document.querySelectorAll("#sidebarMenu a").forEach(e=>{e.addEventListener("click",(function(){const e=document.querySelector("#sidebarMenu");bootstrap.Offcanvas.getOrCreateInstance(e).hide()}))})}document.addEventListener("DOMContentLoaded",(function(){closeOffCanvasMenu()}));
148
148
  !function(){var e=window.markdownit();let t=specConfig.source;t&&"github"===t.host&&fetch(`https://api.github.com/repos/${t.account+"/"+t.repo}/issues`).then(e=>e.json()).then(t=>{let n=t.length;document.querySelectorAll("[issue-count]").forEach(e=>{e.setAttribute("issue-count",n)}),repo_issue_list.innerHTML=t.map(t=>`<li class="repo-issue">\n <detail-box>\n <section>${e.render(t.body||"")}</section>\n <header class="repo-issue-title">\n <span class="repo-issue-number">${t.number}</span>\n <span class="repo-issue-link">\n <a href="${t.html_url}" target="_blank">${t.title}</a>\n </span>\n <span detail-box-toggle></span>\n </header>\n </detail-box>\n </li>`).join(""),Prism.highlightAllUnder(repo_issue_list)}),mermaid.initialize({startOnLoad:!0,theme:"neutral"}),document.querySelectorAll(".chartjs").forEach(e=>{new Chart(e,JSON.parse(e.textContent))});let n=new WeakMap;delegateEvent("pointerover",".term-reference, .spec-reference",(e,t)=>{const r=t.getAttribute("data-local-href")||t.getAttribute("href")||"";let s=document.getElementById(r.replace("#",""));if(!s||n.has(t))return;let i=s.closest("dt, td:first-child");if(!i)return;let l={allowHTML:!0,inlinePositioning:!0};switch(i.tagName){case"DT":l.content=i.nextElementSibling.textContent;break;case"TD":let e=i.closest("table"),t=Array.from(i.closest("tr").children);if(t.shift(),e){let n=Array.from(e.querySelectorAll("thead th"));n.shift(),n.length&&(l.content=`\n <header>${i.textContent}</header>\n <table>\n ${n.map((e,n)=>`<tr><td>${e.textContent}:</td><td>${t[n]?t[n].textContent:""}</td></tr>`).join("")}\n </table>`)}}l.content&&n.set(t,tippy(t,l))},{passive:!0})}();
@@ -8,8 +8,8 @@ code[class*=language-],pre[class*=language-]{color:#ccc;background:0 0;font-fami
8
8
  #back-to-top-a1zncgtqfpzsig8{position:fixed;bottom:20px;text-decoration:none;left:calc(100% - 1.8em);width:1.5em;height:1.5em;margin:0;padding:0;background-color:#1e6eae;color:#222;border-radius:50px;text-align:center;font-size:30px;color:#fff;box-shadow:0 0 1.3px rgba(0,0,0,.07),0 0 3.6px rgba(0,0,0,.1),0 0 8.7px rgba(0,0,0,.13),0 0 29px rgba(0,0,0,.2);cursor:pointer;border:none;display:none;align-items:center;justify-content:center}
9
9
  @-webkit-keyframes notyf-fadeinup{0%{opacity:0;transform:translateY(25%)}to{opacity:1;transform:translateY(0)}}@keyframes notyf-fadeinup{0%{opacity:0;transform:translateY(25%)}to{opacity:1;transform:translateY(0)}}@-webkit-keyframes notyf-fadeinleft{0%{opacity:0;transform:translateX(25%)}to{opacity:1;transform:translateX(0)}}@keyframes notyf-fadeinleft{0%{opacity:0;transform:translateX(25%)}to{opacity:1;transform:translateX(0)}}@-webkit-keyframes notyf-fadeoutright{0%{opacity:1;transform:translateX(0)}to{opacity:0;transform:translateX(25%)}}@keyframes notyf-fadeoutright{0%{opacity:1;transform:translateX(0)}to{opacity:0;transform:translateX(25%)}}@-webkit-keyframes notyf-fadeoutdown{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(25%)}}@keyframes notyf-fadeoutdown{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(25%)}}@-webkit-keyframes ripple{0%{transform:scale(0) translateY(-45%) translateX(13%)}to{transform:scale(1) translateY(-45%) translateX(13%)}}@keyframes ripple{0%{transform:scale(0) translateY(-45%) translateX(13%)}to{transform:scale(1) translateY(-45%) translateX(13%)}}.notyf{position:fixed;top:0;left:0;height:100%;width:100%;color:#fff;z-index:9999;display:flex;flex-direction:column;align-items:flex-end;justify-content:flex-end;pointer-events:none;box-sizing:border-box;padding:20px}.notyf__icon--error,.notyf__icon--success{height:21px;width:21px;background:#fff;border-radius:50%;display:block;margin:0 auto;position:relative}.notyf__icon--error:after,.notyf__icon--error:before{content:"";background:currentColor;display:block;position:absolute;width:3px;border-radius:3px;left:9px;height:12px;top:5px}.notyf__icon--error:after{transform:rotate(-45deg)}.notyf__icon--error:before{transform:rotate(45deg)}.notyf__icon--success:after,.notyf__icon--success:before{content:"";background:currentColor;display:block;position:absolute;width:3px;border-radius:3px}.notyf__icon--success:after{height:6px;transform:rotate(-45deg);top:9px;left:6px}.notyf__icon--success:before{height:11px;transform:rotate(45deg);top:5px;left:10px}.notyf__toast{display:block;overflow:hidden;pointer-events:auto;-webkit-animation:notyf-fadeinup .3s ease-in forwards;animation:notyf-fadeinup .3s ease-in forwards;box-shadow:0 3px 7px 0 rgba(0,0,0,.25);position:relative;padding:0 15px;border-radius:2px;max-width:300px;transform:translateY(25%);box-sizing:border-box;flex-shrink:0}.notyf__toast--disappear{transform:translateY(0);-webkit-animation:notyf-fadeoutdown .3s forwards;animation:notyf-fadeoutdown .3s forwards;-webkit-animation-delay:.25s;animation-delay:.25s}.notyf__toast--disappear .notyf__icon,.notyf__toast--disappear .notyf__message{-webkit-animation:notyf-fadeoutdown .3s forwards;animation:notyf-fadeoutdown .3s forwards;opacity:1;transform:translateY(0)}.notyf__toast--disappear .notyf__dismiss{-webkit-animation:notyf-fadeoutright .3s forwards;animation:notyf-fadeoutright .3s forwards;opacity:1;transform:translateX(0)}.notyf__toast--disappear .notyf__message{-webkit-animation-delay:.05s;animation-delay:.05s}.notyf__toast--upper{margin-bottom:20px}.notyf__toast--lower{margin-top:20px}.notyf__toast--dismissible .notyf__wrapper{padding-right:30px}.notyf__ripple{height:400px;width:400px;position:absolute;transform-origin:bottom right;right:0;top:0;border-radius:50%;transform:scale(0) translateY(-51%) translateX(13%);z-index:5;-webkit-animation:ripple .4s ease-out forwards;animation:ripple .4s ease-out forwards}.notyf__wrapper{display:flex;align-items:center;padding-top:17px;padding-bottom:17px;padding-right:15px;border-radius:3px;position:relative;z-index:10}.notyf__icon{width:22px;text-align:center;font-size:1.3em;opacity:0;-webkit-animation:notyf-fadeinup .3s forwards;animation:notyf-fadeinup .3s forwards;-webkit-animation-delay:.3s;animation-delay:.3s;margin-right:13px}.notyf__dismiss{position:absolute;top:0;right:0;height:100%;width:26px;margin-right:-15px;-webkit-animation:notyf-fadeinleft .3s forwards;animation:notyf-fadeinleft .3s forwards;-webkit-animation-delay:.35s;animation-delay:.35s;opacity:0}.notyf__dismiss-btn{background-color:rgba(0,0,0,.25);border:none;cursor:pointer;transition:opacity .2s ease,background-color .2s ease;outline:0;opacity:.35;height:100%;width:100%}.notyf__dismiss-btn:after,.notyf__dismiss-btn:before{content:"";background:#fff;height:12px;width:2px;border-radius:3px;position:absolute;left:calc(50% - 1px);top:calc(50% - 5px)}.notyf__dismiss-btn:after{transform:rotate(-45deg)}.notyf__dismiss-btn:before{transform:rotate(45deg)}.notyf__dismiss-btn:hover{opacity:.7;background-color:rgba(0,0,0,.15)}.notyf__dismiss-btn:active{opacity:.8}.notyf__message{vertical-align:middle;position:relative;opacity:0;-webkit-animation:notyf-fadeinup .3s forwards;animation:notyf-fadeinup .3s forwards;-webkit-animation-delay:.25s;animation-delay:.25s;line-height:1.5em}@media only screen and (max-width:480px){.notyf{padding:0}.notyf__ripple{height:600px;width:600px;-webkit-animation-duration:.5s;animation-duration:.5s}.notyf__toast{max-width:none;border-radius:0;box-shadow:0 -2px 7px 0 rgba(0,0,0,.13);width:100%}.notyf__dismiss{width:56px}}
10
10
  #content dl dd.hidden{display:none}#content dl dd.visible{display:block}.collapse-all-defs-button{float:right}
11
- .contains-table>.meta-info-content-wrapper{max-height:100px;transition:max-height .3s ease-out}.contains-table.collapsed>.meta-info-content-wrapper{padding-top:0;padding-bottom:0;overflow:hidden;transition:max-height .3s ease-out;max-height:0}
12
- .modal-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background-color:rgba(0,0,0,.5);display:flex;justify-content:center;align-items:center;z-index:1000}.modal{background-color:#fff;padding:2rem 20px 20px;border-radius:8px;max-width:80%;max-height:80%;overflow-y:auto;position:relative;box-shadow:0 2px 10px rgba(0,0,0,.1)}.modal-close{position:absolute;top:0;right:5px;background-color:transparent;border:none;font-size:2rem;line-height:1;cursor:pointer}
11
+ dl>dd:has(table)>.meta-info-content-wrapper{max-height:100px;transition:max-height .3s ease-out}dl>dd:has(table).collapsed>.meta-info-content-wrapper{padding-top:0;padding-bottom:0;overflow:hidden;transition:max-height .3s ease-out;max-height:0}
12
+ .spec-up-t-modal-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background-color:rgba(0,0,0,.5);display:flex;justify-content:center;align-items:center;z-index:1000}.spec-up-t-modal{background-color:#fff;padding:2rem 20px 20px;border-radius:8px;max-width:80%;max-height:80%;overflow-y:auto;position:relative;box-shadow:0 2px 10px rgba(0,0,0,.1)}.spec-up-t-modal-close{position:absolute;top:0;right:5px;background-color:transparent;border:none;font-size:2rem;line-height:1;cursor:pointer}
13
13
  .alphabet-index-container{margin-bottom:1em}.alphabet-index-container,.number-of-terms{font-size:.8em;text-align:center;width:100%}.alphabet-index-container a{background-color:#f5f5f5;border:1px solid #e0e0e0;border-radius:50%;color:#333;display:inline-block;font-size:.9rem;height:20px;line-height:20px;margin:2px;text-align:center;text-decoration:none;width:20px}
14
14
  .button-pdf-download{padding-left:.1em;padding-right:.1em;border:none;background:red;color:#fff;box-shadow:2.8px 2.8px 2.2px rgba(0,0,0,.02),6.7px 6.7px 5.3px rgba(0,0,0,.028),12.5px 12.5px 10px rgba(0,0,0,.035),22.3px 22.3px 17.9px rgba(0,0,0,.042),41.8px 41.8px 33.4px rgba(0,0,0,.05),100px 100px 80px rgba(0,0,0,.07)}
15
15
  h2,h3,h4,h5,h6{margin-top:1.5em!important}.toc-anchor{font-size:.875em;color:inherit;text-decoration:none;opacity:.35;order:-1;transition:opacity .3s ease}.toc-anchor:hover{opacity:1}#terminology-section-utility-container{background:var(--card-bg);display:flex;flex-wrap:wrap;justify-content:center;margin:1em auto;padding:0;width:100%}@media (min-width:576px){#terminology-section-utility-container{position:sticky;top:3.5em}}.transcluded-xref-term{background:#a9dde03b!important;padding:.5em;margin:1em 0}.transclusion-heading{font-size:1.3em;font-weight:700;margin:1em 0 .5em}.btn,.no-xref-found-message{font-variant:small-caps;text-transform:uppercase}.no-xref-found-message{background:#f8c481!important;color:#03365f!important;margin:0 .5em;padding:0 .8em;border-radius:.25rem;font-size:.8rem}dl.terms-and-definitions-list{margin:0;padding:0}dl.terms-and-definitions-list>dt{font-weight:700;margin:0;background-color:var(--card-bg-dt);border:1px solid var(--card-border);padding:.1rem 1.25rem;border-radius:.375rem .375rem 0 0;box-shadow:0 .125rem .25rem var(--card-shadow);color:var(--card-text)}dl.terms-and-definitions-list>dd{margin:0;background-color:var(--card-bg);border:1px solid var(--card-border);border-top:none;padding:1rem 1.25rem;box-shadow:0 .125rem .25rem var(--card-shadow);color:var(--card-text);overflow:scroll}dl.terms-and-definitions-list dd p{margin:0;color:var(--card-text)}dl.terms-and-definitions-list dt+dd{border-bottom:none}dl.terms-and-definitions-list dd+dd{border-top:none;border-bottom:none}dl.terms-and-definitions-list dd+dt{margin-top:1.5rem}dl.terms-and-definitions-list dd.last-dd{border-radius:0 0 .375rem .375rem;border-bottom:1px solid var(--card-border)}dl.terms-and-definitions-list>dt:hover{background-color:var(--card-hover-bg);transition:background-color .2s ease-in-out}
@@ -4,13 +4,13 @@
4
4
  Description: Make the meta-info tables collapsible
5
5
  */
6
6
 
7
- .contains-table>.meta-info-content-wrapper {
7
+ dl>dd:has(table)>.meta-info-content-wrapper {
8
8
  max-height: 100px;
9
9
  transition: max-height 0.3s ease-out;
10
10
  /* This should be higher than the tallest content */
11
11
  }
12
12
 
13
- .contains-table.collapsed>.meta-info-content-wrapper {
13
+ dl>dd:has(table).collapsed>.meta-info-content-wrapper {
14
14
  padding-top: 0;
15
15
  padding-bottom: 0;
16
16
 
@@ -1,5 +1,5 @@
1
1
  /* Basic styles for the modal */
2
- .modal-overlay {
2
+ .spec-up-t-modal-overlay {
3
3
  position: fixed;
4
4
  top: 0;
5
5
  left: 0;
@@ -12,7 +12,7 @@
12
12
  z-index: 1000;
13
13
  }
14
14
 
15
- .modal {
15
+ .spec-up-t-modal {
16
16
  background-color: white;
17
17
  padding: 2rem 20px 20px;
18
18
  border-radius: 8px;
@@ -23,7 +23,7 @@
23
23
  box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
24
24
  }
25
25
 
26
- .modal-close {
26
+ .spec-up-t-modal-close {
27
27
  position: absolute;
28
28
  top: 0;
29
29
  right: 5px;
@@ -7,7 +7,7 @@
7
7
  */
8
8
 
9
9
  function addHrefToSnapshotLink() {
10
- const snapshotLink = document.querySelector('.snapshots a');
10
+ const snapshotLink = document.querySelector('#snapshotLink');
11
11
 
12
12
  // Get the current URL of the page
13
13
  const currentUrl = window.location.href;
@@ -9,16 +9,16 @@
9
9
  function createToggleButton(element) {
10
10
  const toggleButton = document.createElement('button');
11
11
  toggleButton.classList.add('meta-info-toggle-button', 'btn');
12
- toggleButton.textContent = '🔍';
12
+ toggleButton.textContent = 'ℹ️';
13
13
  toggleButton.title = 'Meta info';
14
14
 
15
15
  // Add event listener to the button
16
16
  toggleButton.addEventListener('click', function () {
17
17
  element.classList.toggle('collapsed');
18
18
  if (element.classList.contains('collapsed')) {
19
- this.textContent = '🔍';
19
+ this.textContent = 'ℹ️';
20
20
  } else {
21
- this.textContent = '🔍';
21
+ this.textContent = 'ℹ️';
22
22
  }
23
23
  });
24
24
 
@@ -37,7 +37,7 @@ function createToggleButton(element) {
37
37
 
38
38
  // Find all elements with class 'collapsible' and make them collapsible
39
39
  document.addEventListener('DOMContentLoaded', function () {
40
- const collapsibles = document.querySelectorAll('.contains-table');
40
+ const collapsibles = document.querySelectorAll('dl > dd:has(table)');
41
41
 
42
42
  collapsibles.forEach(function (element) {
43
43
  // Wrap content (excluding button) in a div for easy toggling
@@ -21,7 +21,7 @@ function helpButtons() {
21
21
  newElement.title = 'Click to see the explanation of the buttons at the documentation website, in a new tab.';
22
22
  newElement.target = '_blank';
23
23
  newElement.rel = 'noopener noreferrer';
24
- newElement.href = 'https://trustoverip.github.io/spec-up-t-website/docs/user-interface-overview/specification#explanation-of-the-buttons-in-the-specification';
24
+ newElement.href = 'https://blockchainbird.github.io/spec-up-t-website/docs/user-interface-overview/specification#explanation-of-the-buttons-in-the-specification';
25
25
 
26
26
  function addElementAfterLastChild(newElement) {
27
27
  const elements = document.querySelectorAll('#content dl dt');
@@ -6,15 +6,15 @@
6
6
  function showModal(content) {
7
7
  // Create the modal overlay
8
8
  const overlay = document.createElement('div');
9
- overlay.className = 'modal-overlay';
9
+ overlay.className = 'spec-up-t-modal-overlay';
10
10
 
11
11
  // Create the modal container
12
12
  const modal = document.createElement('div');
13
- modal.className = 'modal';
13
+ modal.className = 'spec-up-t-modal';
14
14
 
15
15
  // Create the close button
16
16
  const closeButton = document.createElement('button');
17
- closeButton.className = 'modal-close';
17
+ closeButton.className = 'spec-up-t-modal-close';
18
18
  closeButton.innerHTML = '&times;';
19
19
  closeButton.onclick = closeModal;
20
20
 
@@ -85,7 +85,7 @@ function fetchCommitHashes() {
85
85
 
86
86
  // B: Debounced “GitHub API rate limit exceeded” error message
87
87
  const debouncedError = debounce(() => {
88
- notyf.error('GitHub API rate limit exceeded. See <a target="_blank" rel="noopener" href="https://trustoverip.github.io/spec-up-t-website/docs/getting-started/github-token">documentation</a> for more info.');
88
+ notyf.error('GitHub API rate limit exceeded. See <a target="_blank" rel="noopener" href="https://blockchainbird.github.io/spec-up-t-website/docs/getting-started/github-token">documentation</a> for more info.');
89
89
  }, 3000); // Delay in milliseconds
90
90
 
91
91
  // Fetch the content of a term-file from GitHub
@@ -100,13 +100,13 @@ function fetchCommitHashes() {
100
100
  .then(response => {
101
101
  if (response.status === 403 && response.headers.get('X-RateLimit-Remaining') === '0') {
102
102
  const resetTime = new Date(response.headers.get('X-RateLimit-Reset') * 1000);
103
- console.error(`❌ Github API rate limit exceeded. Try again after ${resetTime}. See https://trustoverip.github.io/spec-up-t-website/docs/getting-started/github-token for more info.`);
103
+ console.error(`❌ Github API rate limit exceeded. Try again after ${resetTime}. See https://blockchainbird.github.io/spec-up-t-website/docs/getting-started/github-token for more info.`);
104
104
 
105
105
  // Call the debounced error function
106
106
  debouncedError();
107
107
  return true;
108
108
  } else {
109
- console.log(`ℹ️ Github API rate limit: ${response.headers.get('X-RateLimit-Remaining')} requests remaining. See https://trustoverip.github.io/spec-up-t-website/docs/getting-started/github-token for more info.`);
109
+ console.log(`ℹ️ Github API rate limit: ${response.headers.get('X-RateLimit-Remaining')} requests remaining. See https://blockchainbird.github.io/spec-up-t-website/docs/getting-started/github-token for more info.`);
110
110
  }
111
111
 
112
112
  return response.json();
@@ -174,12 +174,12 @@ function fetchCommitHashes() {
174
174
 
175
175
  if (response.status === 403 && response.headers.get('X-RateLimit-Remaining') === '0') {
176
176
  const resetTime = new Date(response.headers.get('X-RateLimit-Reset') * 1000);
177
- console.error(`❌ Github API rate limit exceeded. Try again after ${resetTime}. See https://trustoverip.github.io/spec-up-t-website/docs/getting-started/github-token for more info.`);
177
+ console.error(`❌ Github API rate limit exceeded. Try again after ${resetTime}. See https://blockchainbird.github.io/spec-up-t-website/docs/getting-started/github-token for more info.`);
178
178
 
179
179
  debouncedError();
180
180
  return true;
181
181
  } else {
182
- console.log(`ℹ️ Github API rate limit: ${response.headers.get('X-RateLimit-Remaining')} requests remaining. See https://trustoverip.github.io/spec-up-t-website/docs/getting-started/github-token for more info.`);
182
+ console.log(`ℹ️ Github API rate limit: ${response.headers.get('X-RateLimit-Remaining')} requests remaining. See https://blockchainbird.github.io/spec-up-t-website/docs/getting-started/github-token for more info.`);
183
183
  }
184
184
 
185
185
  const data = await response.json();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "spec-up-t",
3
- "version": "1.1.32",
3
+ "version": "1.1.34",
4
4
  "description": "Technical specification drafting tool that generates rich specification documents from markdown. Forked from https://github.com/decentralized-identity/spec-up by Daniel Buchner (https://github.com/csuwildcat)",
5
5
  "main": "./index",
6
6
  "repository": {
package/readme.md CHANGED
@@ -7,4 +7,4 @@
7
7
  <h2 style="display: block; margin: 0 auto; text-align: center;">Markdown » Spec-Up</h2>
8
8
  </div>
9
9
 
10
- There is a [special website that documents everything regarding Spec-Up-T](https://trustoverip.github.io/spec-up-t-website/).
10
+ There is a [special website that documents everything regarding Spec-Up-T](https://blockchainbird.github.io/spec-up-t-website/).
@@ -26,7 +26,7 @@ function collectExternalReferences(options = {}) {
26
26
 
27
27
  There is no point in continuing without a PAT, so we stop here.
28
28
 
29
- Find instructions on how to get a PAT at https://trustoverip.github.io/spec-up-t-website/docs/getting-started/github-token
29
+ Find instructions on how to get a PAT at https://blockchainbird.github.io/spec-up-t-website/docs/getting-started/github-token
30
30
 
31
31
  `;
32
32
 
@@ -5,10 +5,10 @@ function checkRateLimit(response) {
5
5
 
6
6
  if (response.status === 403 && remaining === '0') {
7
7
  const resetTime = new Date(reset * 1000);
8
- console.error(`❌ Github API rate limit exceeded. Try again after ${resetTime}. See https://trustoverip.github.io/spec-up-t-website/docs/getting-started/github-token for more info.`);
8
+ console.error(`❌ Github API rate limit exceeded. Try again after ${resetTime}. See https://blockchainbird.github.io/spec-up-t-website/docs/getting-started/github-token for more info.`);
9
9
  return true;
10
10
  } else if (remaining !== null) {
11
- console.log(`ℹ️ Github API rate limit: ${remaining} requests remaining. See https://trustoverip.github.io/spec-up-t-website/docs/getting-started/github-token for more info.`);
11
+ console.log(`ℹ️ Github API rate limit: ${remaining} requests remaining. See https://blockchainbird.github.io/spec-up-t-website/docs/getting-started/github-token for more info.`);
12
12
  } else {
13
13
  console.warn(`ℹ️ Unable to determine rate limit status. Check your GitHub API token and network connection.`);
14
14
  }
@@ -53,9 +53,15 @@ function fixMarkdownFiles(directory) {
53
53
  }
54
54
  }
55
55
 
56
- // Prepend `~ ` to lines that do not start with `[[def:` and are not blank, and do not already start with `~ `
56
+ // Prepend `~ ` to lines that do not start with `[[def:`, `[[tref:`, are not blank, do not already start with `~ `, and are not HTML comments
57
57
  for (let i = 0; i < newLines.length; i++) {
58
- if (!newLines[i].startsWith('[[def:') && !newLines[i].startsWith('[[tref:') && newLines[i].trim() !== '' && !newLines[i].startsWith('~ ')) {
58
+ if (
59
+ !newLines[i].startsWith('[[def:') &&
60
+ !newLines[i].startsWith('[[tref:') &&
61
+ newLines[i].trim() !== '' &&
62
+ !newLines[i].startsWith('~ ') &&
63
+ !newLines[i].trim().startsWith('<!--')
64
+ ) {
59
65
  newLines[i] = `~ ${newLines[i]}`;
60
66
  modified = true;
61
67
  }
@@ -1,5 +1,5 @@
1
1
  # Documentation
2
2
 
3
- Read more about Spec-Up-T in the [documentation](https://trustoverip.github.io/spec-up-t-website/).
3
+ Read more about Spec-Up-T in the [documentation](https://blockchainbird.github.io/spec-up-t-website/).
4
4
 
5
5
  Written: 2025-02-27T15:38
@@ -2,6 +2,6 @@
2
2
 
3
3
  ## Intro
4
4
 
5
- This is a default Spec-Up-T installation. Find information on the [Spec-Up-T documentation website](https://trustoverip.github.io/spec-up-t-website/).
5
+ This is a default Spec-Up-T installation. Find information on the [Spec-Up-T documentation website](https://blockchainbird.github.io/spec-up-t-website/).
6
6
 
7
7
  Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
@@ -1,6 +1,6 @@
1
1
  ===
2
2
 
3
- For help go to: https://trustoverip.github.io/spec-up-t-website
3
+ For help go to: https://blockchainbird.github.io/spec-up-t-website
4
4
 
5
5
  ===
6
6
 
@@ -67,7 +67,7 @@ function prompt_input() {
67
67
 
68
68
  function do_add_content() {
69
69
  clear
70
- echo -e "\n\n\n ********************\n\n\n You can start adding your content to the markdown files in the "spec" directory.\n\n You can do this by editing local files in an editor or by going to your repository on GitHub.\n\n More info: https://trustoverip.github.io/spec-up-t-website/docs/various-roles/content-authors-guide/introduction\n\n\n ********************"
70
+ echo -e "\n\n\n ********************\n\n\n You can start adding your content to the markdown files in the "spec" directory.\n\n You can do this by editing local files in an editor or by going to your repository on GitHub.\n\n More info: https://blockchainbird.github.io/spec-up-t-website/docs/various-roles/content-authors-guide/introduction\n\n\n ********************"
71
71
  }
72
72
 
73
73
  function do_render() { clear; npm run render; }
@@ -80,14 +80,14 @@ function do_freeze() { clear; npm run freeze; }
80
80
 
81
81
  function do_help() {
82
82
  clear
83
- echo -e "\n\n\n You will be redirected to the documentation website\n\n (https://trustoverip.github.io/spec-up-t-website/)."
83
+ echo -e "\n\n\n You will be redirected to the documentation website\n\n (https://blockchainbird.github.io/spec-up-t-website/)."
84
84
  sleep 2
85
85
  if [[ "$OSTYPE" == "darwin"* ]]; then
86
- open "https://trustoverip.github.io/spec-up-t-website/"
86
+ open "https://blockchainbird.github.io/spec-up-t-website/"
87
87
  elif [[ "$OSTYPE" == "linux-gnu"* ]]; then
88
- xdg-open "https://trustoverip.github.io/spec-up-t-website/"
88
+ xdg-open "https://blockchainbird.github.io/spec-up-t-website/"
89
89
  elif [[ "$OSTYPE" == "cygwin" || "$OSTYPE" == "msys" || "$OSTYPE" == "win32" ]]; then
90
- start "https://trustoverip.github.io/spec-up-t-website/"
90
+ start "https://blockchainbird.github.io/spec-up-t-website/"
91
91
  else
92
92
  echo "Unsupported OS."
93
93
  fi
@@ -1,11 +1,22 @@
1
1
  /**
2
2
  * @file prepare-tref.js
3
- * @description This script contains functions to process and prepare term references (trefs) from markdown files.
4
- * It includes functionality to read local xtref content from a JSON file and process markdown files in a directory recursively. This script inserts the content of the local xtref (in JSON) into the markdown files. It also inserts a note that this content is temporary and can be removed.
3
+ * @description This module provides functionality to process markdown files in a directory recursively,
4
+ * searching for specific `[[tref:]]` references, and replacing them with detailed information
5
+ * fetched from a local JSON file (`xtrefs-data.json`). The information includes metadata such as
6
+ * owner, repository, commit hash, and content. If no matching reference is found, a placeholder
7
+ * message is written to the file.
8
+ *
9
+ * The module includes:
10
+ * - A helper function `getLocalXTrefContent` to retrieve reference data from the JSON file.
11
+ * - A main function `prepareTref` to process directories and markdown files, replacing tref references.
12
+ *
13
+ * This is useful for dynamically enriching markdown documentation with external reference details.
14
+ *
15
+ * @requires fs - Node.js file system module for reading and writing files.
16
+ * @requires path - Node.js path module for handling file paths.
17
+ * @requires dedent - A utility for removing indentation from multi-line strings.
5
18
  *
6
19
  * @module prepareTref
7
- * @requires fs
8
- * @requires path
9
20
  */
10
21
 
11
22
  const fs = require('fs');
@@ -54,8 +65,7 @@ function prepareTref(directory) {
54
65
 
55
66
  // Split the content into lines
56
67
  let lines = data.split('\n');
57
- let localXTrefContent = '';
58
- // Handle specific functionality for `[[tref:` lines
68
+
59
69
  for (let i = 0; i < lines.length; i++) {
60
70
  if (lines[i].startsWith('[[tref:')) {
61
71
 
@@ -74,34 +84,19 @@ function prepareTref(directory) {
74
84
  const match = lines[i].match(tref);
75
85
  if (match) {
76
86
  const result = match[1].split(',').map(term => term.trim());
77
- localXTrefContent = getLocalXTrefContent(result[0], result[1]);
78
- /*
79
-
80
- Remove the `[[def: ...]]:` lines from the content.
81
-
82
- \[\[def: matches the literal [[def:
83
-
84
- .*? lazily matches any character(including commas) until the next part of the regex.
85
-
86
- \]\]: matches the literal ]]:.
87
-
88
- The g flag ensures that all occurrences in the string are replaced.
89
- */
90
- // const defPart = /\[\[def: .*?\]\]:/g;
91
- const defPart = /\[\[def: ([^,]+),.*?\]\]/g;
87
+ const localXTrefContent = getLocalXTrefContent(result[0], result[1]);
92
88
 
89
+ const defPart = /\[\[def: ([^,]+),.*?\]\]/g;
93
90
  localXTrefContent.content = localXTrefContent.content.replace(defPart, '');
94
91
 
95
92
  const readyForWrite = dedent`
96
93
  ${match[0]}
97
- <!-- This is a copy of the saved remote text. Remove it if you like. It is automatically (re)generated -->
98
- <dd>
99
94
  | Property | Value |
100
95
  | -------- | ----- |
101
96
  | Owner | ![avatar](${localXTrefContent.avatarUrl}) ${localXTrefContent.owner} |
102
97
  | Repo | [${localXTrefContent.repo}](${localXTrefContent.repoUrl}) |
103
98
  | Commit hash | ${localXTrefContent.commitHash} |
104
- </dd>
99
+
105
100
  ${localXTrefContent.content}
106
101
  `;
107
102
 
@@ -110,8 +105,7 @@ ${localXTrefContent.content}
110
105
  }
111
106
  }
112
107
  } catch (err) {
113
- fs.writeFileSync(itemPath, match[0] + '\n\n' + '<!-- This is a copy of the saved remote text. Remove it if you like. It is automatically (re)generated -->\n\nNothing found, so nothing to show.', 'utf8');
114
- // console.error(`❌ Error reading or writing file ${item.name}: ${err}`);
108
+ fs.writeFileSync(itemPath, match[0] + '\n\n' + '\n\nNothing found, so nothing to show.', 'utf8');
115
109
  }
116
110
  }
117
111
  });
@@ -120,10 +114,9 @@ ${localXTrefContent.content}
120
114
  }
121
115
  }
122
116
 
123
- // Start processing from the given directory
124
117
  processDirectory(directory);
125
118
  }
126
119
 
127
120
  module.exports = {
128
121
  prepareTref
129
- };
122
+ };
@@ -200,7 +200,7 @@
200
200
  <div id="toc" class="offcanvas-body d-md-flex flex-column p-0 pt-lg-3 overflow-y-auto">
201
201
  ${toc}
202
202
  <!-- href added via JS -->
203
- <a class="btn btn-outline-secondary mt-5" href="#">Snapshots</a>
203
+ <a id="snapshotLink" class="btn btn-outline-secondary mt-5" href="#">Snapshots</a>
204
204
  <a class="powered-by mx-auto p-2" href="https://github.com/trustoverip/spec-up-t"
205
205
  target="_blank" rel="noopener">Powered By Spec-Up-T</a>
206
206
  </div>