datalog-theme 0.9.0 → 0.9.1

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.
Files changed (77) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +21 -0
  3. data/CITATION.cff +2 -2
  4. data/_data/i18n/en.yml +24 -0
  5. data/_data/i18n/es.yml +24 -0
  6. data/_data/i18n/pt.yml +24 -0
  7. data/_includes/components/academic-dashboard.html +4 -4
  8. data/_includes/components/author-list.html +1 -1
  9. data/_includes/components/breadcrumbs.html +6 -4
  10. data/_includes/components/citation-tools.html +5 -53
  11. data/_includes/components/comments-thread.html +1 -1
  12. data/_includes/components/contact-form.html +1 -1
  13. data/_includes/components/correction-report.html +1 -1
  14. data/_includes/components/hero.html +1 -1
  15. data/_includes/components/moderation-inbox.html +1 -1
  16. data/_includes/components/post-hero.html +2 -2
  17. data/_includes/components/reactions.html +1 -1
  18. data/_includes/components/reading-list.html +3 -0
  19. data/_includes/components/reading-mode-toggle.html +2 -0
  20. data/_includes/components/reading-state-panel.html +0 -9
  21. data/_includes/components/reading-state-resume.html +17 -0
  22. data/_includes/components/subscribe-form.html +1 -1
  23. data/_includes/components/subscription-manage.html +2 -1
  24. data/_includes/components/visualization-card.html +1 -1
  25. data/_includes/components/webmentions.html +1 -1
  26. data/_includes/footer/nav-column.html +1 -1
  27. data/_includes/footer.html +2 -2
  28. data/_includes/head.html +13 -12
  29. data/_includes/header/navigation.html +2 -2
  30. data/_includes/header.html +1 -1
  31. data/_includes/layouts/default/article.html +2 -2
  32. data/_includes/meta/math-config.html +3 -0
  33. data/_includes/meta/person-json.html +7 -7
  34. data/_includes/meta/publisher.html +1 -1
  35. data/_includes/meta/schema.html +32 -30
  36. data/_includes/meta/scholarly.html +4 -3
  37. data/_includes/post/related-posts.html +1 -1
  38. data/_layouts/dataset.html +1 -1
  39. data/_layouts/home.html +2 -2
  40. data/_layouts/notebook.html +1 -1
  41. data/_layouts/package.html +5 -5
  42. data/_layouts/portfolio.html +1 -1
  43. data/_layouts/post.html +12 -7
  44. data/_layouts/project.html +3 -3
  45. data/_layouts/research.html +7 -67
  46. data/_plugins/authors.rb +22 -4
  47. data/_plugins/citation_exports.rb +93 -0
  48. data/_plugins/image_optimizer.rb +16 -14
  49. data/_plugins/licenses.rb +15 -3
  50. data/_plugins/math_preprocessor.rb +23 -1
  51. data/_plugins/references.rb +30 -8
  52. data/_plugins/reproducibility.rb +20 -3
  53. data/_plugins/responsive_content.rb +40 -0
  54. data/_plugins/revisions.rb +1 -0
  55. data/_plugins/scholarly.rb +5 -0
  56. data/_plugins/statements.rb +2 -2
  57. data/_sass/_base.scss +5 -0
  58. data/_sass/_layout.scss +18 -1
  59. data/_sass/_mathematical.scss +11 -1
  60. data/_sass/_print.scss +16 -8
  61. data/_sass/_syntax-highlighting.scss +1 -1
  62. data/assets/js/dist/chunks/chunk-VZ5WKQVA.js +1 -0
  63. data/assets/js/dist/chunks/chunk-WIRUK3OZ.js +1 -0
  64. data/assets/js/dist/comments.js +2 -2
  65. data/assets/js/dist/contact.js +1 -1
  66. data/assets/js/dist/corrections.js +1 -1
  67. data/assets/js/dist/moderation.js +1 -1
  68. data/assets/js/dist/reactions.js +1 -1
  69. data/assets/js/dist/reading-state.js +1 -1
  70. data/assets/js/dist/sources.json +16 -16
  71. data/assets/js/dist/subscriptions.js +1 -1
  72. data/assets/js/dist/visualizations.js +2 -2
  73. data/assets/js/dist/webmentions.js +1 -1
  74. data/lib/datalog/theme/version.rb +1 -1
  75. metadata +7 -4
  76. data/assets/js/dist/chunks/chunk-2DYDWUFX.js +0 -1
  77. data/assets/js/dist/chunks/chunk-V7734B2G.js +0 -1
data/_sass/_layout.scss CHANGED
@@ -62,7 +62,8 @@ body.dark-mode .page-meta {
62
62
  }
63
63
  }
64
64
 
65
- aside {
65
+ .package-docs__sidebar,
66
+ .notebook-article__sidebar {
66
67
  position: sticky;
67
68
  top: 6.5rem;
68
69
  }
@@ -1154,6 +1155,22 @@ body.dark-mode .post-category {
1154
1155
  }
1155
1156
  }
1156
1157
 
1158
+ .post-content,
1159
+ .page-content {
1160
+ min-width: 0;
1161
+
1162
+ p, li, a {
1163
+ overflow-wrap: anywhere;
1164
+ }
1165
+
1166
+ }
1167
+
1168
+ .content-table {
1169
+ max-width: 100%;
1170
+ min-width: 0;
1171
+ overflow-x: auto;
1172
+ }
1173
+
1157
1174
  body.dark-mode .post-content {
1158
1175
  blockquote {
1159
1176
  border-left-color: $dark-accent-primary;
@@ -12,6 +12,9 @@
12
12
  background: rgba($color-neutral-100, 0.9);
13
13
  box-shadow: 0 12px 30px rgba($color-neutral-900, 0.08);
14
14
  display: grid;
15
+ min-width: 0;
16
+ max-width: 100%;
17
+ overflow-x: auto;
15
18
  gap: map.get($spacing, 3);
16
19
  transition: border-color $transition-snappy, box-shadow $transition-snappy, background $transition-snappy;
17
20
 
@@ -22,7 +25,14 @@
22
25
  }
23
26
 
24
27
  mjx-container[display='true'] {
25
- justify-self: center;
28
+ justify-self: start;
29
+ min-width: max-content;
30
+ margin-inline: auto;
31
+ }
32
+
33
+ .katex-display {
34
+ min-width: max-content;
35
+ margin-inline: auto;
26
36
  }
27
37
  }
28
38
 
data/_sass/_print.scss CHANGED
@@ -83,9 +83,7 @@ body.reading-mode {
83
83
  .open-science-badges,
84
84
  .author-bio,
85
85
  .post-related,
86
- .post-pagination,
87
- .back-to-top,
88
- [data-back-to-top] {
86
+ .post-pagination {
89
87
  display: none !important;
90
88
  }
91
89
 
@@ -140,12 +138,18 @@ body.reading-mode {
140
138
  .post-pagination,
141
139
  .post-tools,
142
140
  .reading-mode-bar,
143
- .back-to-top,
144
- [data-back-to-top],
145
141
  .code-copy,
146
142
  .citation-tools__exports,
147
143
  .viz-table-toggle,
148
- [aria-live] {
144
+ .visually-hidden[aria-live],
145
+ .service-form__status,
146
+ .comments-thread__status,
147
+ .reading-data__status,
148
+ .moderation__status,
149
+ .reactions__status,
150
+ .subscription-manage__status,
151
+ .webmentions__status,
152
+ .enhanced-code-block__feedback {
149
153
  display: none !important;
150
154
  }
151
155
 
@@ -262,6 +266,10 @@ body.reading-mode {
262
266
  overflow: visible !important;
263
267
  }
264
268
 
269
+ .rouge-gutter {
270
+ display: none !important;
271
+ }
272
+
265
273
  body.dark-mode .highlight span {
266
274
  color: #000 !important;
267
275
  background: none !important;
@@ -271,8 +279,8 @@ body.reading-mode {
271
279
  iframe,
272
280
  canvas,
273
281
  video,
274
- [data-viz-type] > *,
275
- .interactive-embed > * {
282
+ [data-viz-type] > *:not(.viz-table-container),
283
+ .interactive-embed > *:not(.viz-table-container) {
276
284
  display: none !important;
277
285
  }
278
286
 
@@ -158,7 +158,7 @@ pre.highlight {
158
158
  overflow: visible;
159
159
  }
160
160
 
161
- .highlight .rouge-gutter {
161
+ .highlight .rouge-table td.rouge-gutter {
162
162
  padding-right: map.get($spacing, 4);
163
163
  color: $color-ink-500;
164
164
  text-align: right;
@@ -0,0 +1 @@
1
+ import{a as k,b as D}from"./chunk-PATLC23F.js";var B="/capabilities",G="/health",K={401:"unauthorized",403:"forbidden",404:"not_found",409:"conflict",422:"invalid",429:"rate_limited"},J=new Set(["timeout","network","rate_limited","server"]),j=new Set(["GET","HEAD","OPTIONS"]),I={disabled:"This feature is not set up on this site.",unsupported:"The service behind this site does not offer this feature.",version:"This site and its service expect different API versions.",timeout:"The service took too long to answer. Try again in a moment.",network:"The service could not be reached. Check your connection and try again.",malformed:"The service answered in a way this site could not read.",unauthorized:"You need to sign in for this.",forbidden:"You are not allowed to do this.",not_found:"The service has nothing at that address.",conflict:"This was already done, or something changed in the meantime.",invalid:"Some of what you entered needs a correction.",rate_limited:"Too many requests for now. Please wait a little and try again.",server:"The service ran into a problem. Try again later.",http:"The service refused the request.",aborted:"The request was cancelled.",reference:"Reference: {{id}}",retry_after:"Try again in {{seconds}} seconds."},a=class extends Error{constructor(r,i,n={}){var u,c,y,p,w,b,g,_;super(i),this.name="ServiceError",this.kind=r,this.status=(u=n.status)!=null?u:null,this.code=(c=n.code)!=null?c:null,this.requestId=(y=n.requestId)!=null?y:null,this.retryAfter=(p=n.retryAfter)!=null?p:null,this.errors=(w=n.errors)!=null?w:null,this.expected=(b=n.expected)!=null?b:null,this.actual=(g=n.actual)!=null?g:null,this.retryable=(_=n.retryable)!=null?_:J.has(r)}};function X(e=globalThis){let r=e.DatalogDynamicServices;return r&&typeof r=="object"?r:{}}function z(e){let r=String(e!=null?e:"1").trim()||"1";return/^v/i.test(r)?`v${r.slice(1)}`:`v${r}`}function W(e,r=Date.now()){if(!e)return null;let i=Number(e);if(Number.isFinite(i))return Math.max(0,i);let n=Date.parse(e);return Number.isNaN(n)?null:Math.max(0,Math.round((n-r)/1e3))}function Q(e,r){if(!e||typeof e.cookie!="string")return null;let i=e.cookie.split(";").map(n=>n.trim()).find(n=>n.startsWith(`${r}=`));return i?decodeURIComponent(i.slice(r.length+1)):null}function V(e,r,i){let n=e.status,u=K[n]||(n>=500?"server":"http"),c=r&&typeof r=="object"?r.error||r:{},y=c&&(c.message||c.title)||`The service answered ${n}`;return new a(u,y,{status:n,code:c&&c.code||null,requestId:i,retryAfter:W(e.headers.get("Retry-After")),errors:c&&c.errors||null})}function ee(e,r={}){let i=e&&e.kind?e.kind:"http",n=r[i]||I[i]||r.http||I.http;if((e==null?void 0:e.retryAfter)!=null&&Number.isFinite(e.retryAfter)){let u=r.retry_after||I.retry_after;n+=` ${u.split("{{seconds}}").join(String(Math.ceil(e.retryAfter)))}`}if(e&&e.requestId){let u=r.reference||I.reference;return`${n} ${u.split("{{id}}").join(e.requestId)}`}return n}function Z(e=X(),r={}){let i=r.fetch||((...t)=>globalThis.fetch(...t)),n=r.delay||(t=>new Promise(s=>setTimeout(s,t))),u=r.document===void 0?globalThis.document:r.document,c=String(e.base_url||"").trim(),y=c.replace(/\/+$/,""),p=z(e.api_version),w=Number(e.timeout_ms)>0?Number(e.timeout_ms):8e3,b=["omit","same-origin","include"].includes(e.credentials)?e.credentials:"omit",g=e.features&&typeof e.features=="object"?e.features:{},_=e.paths&&typeof e.paths=="object"?e.paths:{},$=c!=="",E=null;function C(t){return/^https?:\/\//i.test(t)?t:`${y}/${p}${t.startsWith("/")?t:`/${t}`}`}function U(t){let s=_[t];return typeof s=="string"&&s!==""?s:`/${t}`}async function H(t,s,o){var P,F,M,O;if((P=o.signal)!=null&&P.aborted)throw new a("aborted","The request was cancelled",{retryable:!1});let d=new AbortController,N=setTimeout(()=>d.abort(),w),T=!1,A=()=>{T=!0,d.abort()};(F=o.signal)==null||F.addEventListener("abort",A,{once:!0});let l=k({Accept:"application/json"},o.headers||{}),x={method:t,headers:l,credentials:b,signal:d.signal};if(o.body!==void 0&&(l["Content-Type"]="application/json",x.body=JSON.stringify(o.body)),o.idempotencyKey&&(l["Idempotency-Key"]=o.idempotencyKey),!j.has(t)&&e.csrf_header&&e.csrf_cookie){let S=Q(u,e.csrf_cookie);S&&(l[e.csrf_header]=S)}let f,q;try{f=await i(C(s),x),q=await f.text()}catch(S){throw T?new a("aborted","The request was cancelled",{retryable:!1}):d.signal.aborted?new a("timeout",`No answer within ${w} ms`):new a("network","The service could not be reached")}finally{clearTimeout(N),(M=o.signal)==null||M.removeEventListener("abort",A)}let v=f.headers.get("X-Request-Id")||null,h=null;if(q)try{h=JSON.parse(q)}catch(S){if(f.ok)throw new a("malformed","The service did not answer with JSON",{status:f.status,requestId:v,retryable:!1})}if(v=v||(h==null?void 0:h.request_id)||((O=h==null?void 0:h.error)==null?void 0:O.request_id)||null,!f.ok)throw V(f,h,v);return{data:h,status:f.status,requestId:v,headers:f.headers}}async function m(t,s,o={}){var A;if(!$)throw new a("disabled","Dynamic services are not configured for this site",{retryable:!1});let d=String(t).toUpperCase(),N=(A=o.retries)!=null?A:j.has(d)?2:0,T=0;for(;;)try{return await H(d,s,o)}catch(l){let x=l.retryAfter!==null&&l.retryAfter>10;if(!(l instanceof a)||!l.retryable||T>=N||x)throw l;T+=1,await n(l.retryAfter!==null?l.retryAfter*1e3:300*T)}}function L(){return E||(E=m("GET",B).then(({data:t})=>{var d;let s=String((d=t&&t.api_version)!=null?d:"").replace(/^v/i,""),o=p.slice(1);if(s!==o)throw new a("version",`The service speaks API version ${s||"unknown"}; this site expects ${o}`,{expected:o,actual:s,retryable:!1});return t}).catch(t=>{throw E=null,t})),E}async function Y(t){if(!$)throw new a("disabled","Dynamic services are not configured for this site",{retryable:!1});if(g[t]===!1)throw new a("disabled",`${t} is off in this site's settings`,{retryable:!1});let s=await L();if(!s||!s.features||!s.features[t])throw new a("unsupported",`The service does not offer ${t}`,{retryable:!1});return!0}return{enabled:$,base:y,version:p,timeout:w,credentials:b,urlFor:C,pathFor:U,request:m,get:(t,s)=>m("GET",t,s),post:(t,s,o={})=>m("POST",t,D(k({},o),{body:s})),patch:(t,s,o={})=>m("PATCH",t,D(k({},o),{body:s})),delete:(t,s)=>m("DELETE",t,s),capabilities:L,feature:Y,health:()=>m("GET",G).then(({data:t})=>t)}}var R=null;function te(){return R||(R=Z()),R}export{ee as a,Z as b,te as c};
@@ -0,0 +1 @@
1
+ import{a as c}from"./chunk-VZ5WKQVA.js";var b=["idle","pending","success","invalid","error","disabled"];function g(r=null){let t=new Map,i=()=>t.clear();return r&&["input","change","reset"].forEach(e=>r.addEventListener(e,i)),{key(e,n=""){var a,o,d;let s=JSON.stringify(e);if(((a=t.get(n))==null?void 0:a.fingerprint)!==s){let u=((d=(o=globalThis.crypto)==null?void 0:o.randomUUID)==null?void 0:d.call(o))||`${Date.now().toString(36)}-${Math.random().toString(36).slice(2)}`;t.set(n,{fingerprint:s,key:u})}return t.get(n).key},clear(e=""){t.delete(e)},reset:i}}function S(r,t,i,e={}){let n=null;return()=>(n||(n=r.feature(t).then(s=>(i.dataset.state==="error"&&l(i,"idle"),s)).catch(s=>{throw n=null,["disabled","unsupported","version"].includes(s.kind)?l(i,"disabled",c(s,e)):h(i,s,e),s})),n)}function f(r,t){let i=r.elements.namedItem(t);return i?typeof i.setAttribute=="function"?[i]:Array.from(i):[]}function y(r){r.querySelectorAll("[aria-invalid]").forEach(t=>{t.removeAttribute("aria-invalid");let i=(t.getAttribute("aria-describedby")||"").split(/\s+/).filter(e=>e&&!e.endsWith("-error")).join(" ");i?t.setAttribute("aria-describedby",i):t.removeAttribute("aria-describedby")}),r.querySelectorAll("[data-error-for]").forEach(t=>{t.textContent="",t.hidden=!0})}function p(r,t){let i=0,e=null;return Object.keys(t||{}).forEach(n=>{let s=Array.isArray(t[n])?t[n].join(" "):String(t[n]),a=r.querySelector(`[data-error-for="${n}"]`);a&&(a.textContent=s,a.hidden=!1,a.id||(a.id=`${r.id||"form"}-${n}-error`)),f(r,n).forEach(o=>{if(o.setAttribute("aria-invalid","true"),a){let d=(o.getAttribute("aria-describedby")||"").split(/\s+/).filter(Boolean);d.includes(a.id)||d.push(a.id),o.setAttribute("aria-describedby",d.join(" "))}e=e||o,i+=1})}),e&&typeof e.focus=="function"&&e.focus(),i}function l(r,t,i="",e=null){r.dataset.state=b.includes(t)?t:"idle";let n=t==="pending";r.setAttribute("aria-busy",n?"true":"false"),r.querySelectorAll("button[type=submit], [data-form-submit]").forEach(a=>{a.disabled=n||t==="disabled"}),r.querySelectorAll("fieldset").forEach(a=>{a.disabled=t==="disabled"});let s=r.querySelector("[data-form-status]");s&&(s.setAttribute("role",t==="error"||t==="invalid"?"alert":"status"),s.textContent=i,s.hidden=i===""),y(r),t==="invalid"&&e&&p(r,e)}function v(r){let t={};return new FormData(r).forEach((i,e)=>{let n=typeof i=="string"?i.trim():i;e in t?t[e]=[].concat(t[e],n):t[e]=n}),t}function h(r,t,i={}){let e=c(t,i);t&&t.kind==="invalid"?l(r,"invalid",e,t.errors||null):l(r,"error",e)}export{g as a,S as b,l as c,v as d,h as e};
@@ -1,2 +1,2 @@
1
- import{a as v,b as K,c as B}from"./chunks/chunk-V7734B2G.js";import{a as I,b as U,c as M}from"./chunks/chunk-2DYDWUFX.js";import{a as T,b as q}from"./chunks/chunk-PATLC23F.js";var O="comments",Q=3,J=/^https?:\/\//i,W=new Set(["disabled","unsupported","version"]);function X(e,t){let n=e.querySelector(t);if(!n)return{};try{return JSON.parse(n.textContent)||{}}catch(a){return{}}}function Z(){let e=globalThis.crypto;return e&&typeof e.randomUUID=="function"?e.randomUUID():`${Date.now().toString(36)}-${Math.random().toString(36).slice(2,10)}`}function ee(e,t){return Object.keys(t).reduce((n,a)=>n.split(`{{${a}}}`).join(t[a]),e)}function te(e,t){let n=new Date(e);if(Number.isNaN(n.getTime()))return String(e||"");try{return n.toLocaleString(t||void 0,{dateStyle:"medium",timeStyle:"short"})}catch(a){return n.toISOString()}}function ne(e,t=!0){let n=Array.isArray(e)?e.filter(i=>i&&typeof i=="object"):[],a=new Map;n.forEach(i=>a.set(String(i.id),{comment:i,replies:[]}));let f=[];a.forEach(i=>{let o=i.comment.parent_id,u=t&&o!==null&&o!==void 0?a.get(String(o)):null;u&&u!==i?u.replies.push(i):f.push(i)});let p=(i,o)=>String(i.comment.created_at||"").localeCompare(String(o.comment.created_at||"")),y=i=>(i.sort(p),i.forEach(o=>y(o.replies)),i);return y(f)}function P(e,t,n={}){let{labels:a={},lang:f,replies:p=!1,onReply:y}=n,i=t.status==="pending",o=e.createElement("li");o.className=i?"comment comment--pending":"comment",t.id!==null&&t.id!==void 0&&(o.id=`comment-${t.id}`);let u=e.createElement("article");u.className="comment__card";let S=e.createElement("header");S.className="comment__meta";let h=t.author&&typeof t.author=="object"?t.author:{},g=String(h.name||"").trim()||a.anonymous||"Anonymous",s;if(J.test(String(h.url||""))?(s=e.createElement("a"),s.href=h.url,s.rel="nofollow noopener ugc"):s=e.createElement("span"),s.className="comment__author",s.textContent=g,S.appendChild(s),t.created_at){let l=e.createElement("time");l.className="comment__time",l.dateTime=String(t.created_at),l.textContent=te(t.created_at,f),S.appendChild(l)}if(i){let l=e.createElement("span");l.className="comment__pending",l.textContent=a.pending||"Awaiting moderation",S.appendChild(l)}u.appendChild(S);let b=e.createElement("div");if(b.className="comment__body",String(t.body||"").split(/\n{2,}/).forEach(l=>{let _=e.createElement("p");l.split(`
2
- `).forEach((C,w)=>{w>0&&_.appendChild(e.createElement("br")),_.appendChild(e.createTextNode(C))}),b.appendChild(_)}),u.appendChild(b),p&&y&&!i&&t.id!==null&&t.id!==void 0){let l=e.createElement("button");l.type="button",l.className="comment__reply post-tool",l.textContent=a.reply||"Reply",l.addEventListener("click",()=>y(t)),u.appendChild(l)}return o.appendChild(u),o}function V(e,t){let n=t.querySelector(":scope > .comments-thread__replies");return n||(n=e.createElement("ol"),n.className="comments-thread__replies",t.appendChild(n)),n}function Y(e,t,n,a){n.forEach(f=>{let p=P(e,f.comment,a);f.replies.length>0&&Y(e,V(e,p),f.replies,a),t.appendChild(p)})}function re(e,t){let n={name:e.name||""};return e.email&&(n.email=e.email),e.url&&(n.url=e.url),{path:t,parent_id:e.parent_id||null,author:n,body:e.body||""}}function ae(e,t,n={}){let a={};return e.author.name||(a.name=n.name_required||"Say who you are."),e.author.email&&!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(e.author.email)&&(a.email=n.email_invalid||"That does not look like an email address."),e.author.url&&!J.test(e.author.url)&&(a.url=n.url_invalid||"A website address starts with http:// or https://."),e.body.trim().length<Q&&(a.body=n.body_short||"Say a little more."),t.website&&(a.website="spam"),Object.keys(a).length>0?a:null}function oe(e,t={}){let n=e.ownerDocument,a=t.window||n.defaultView,f=e.dataset.commentsEndpoint||"",p=t.client||(f?U(q(T({},a&&a.DatalogDynamicServices||{}),{base_url:f})):M()),y=e.dataset.commentsPath||"/",i=e.dataset.commentsReplies!=="false",o=X(e,"[data-comments-labels]"),u=o.errors||{},S=n.documentElement.lang||void 0,h=e.querySelector("[data-comments-status]"),g=e.querySelector("[data-comments-list]"),s=e.querySelector("form"),b=s?s.elements.namedItem("parent_id"):null,l=e.querySelector("[data-comments-replying]"),_=e.querySelector("[data-comments-replying-to]"),C=null,w=!1,F=!1,x=(r,c="",d={})=>{if(e.dataset.state=r,!!h&&(h.textContent=c,h.hidden=c==="",h.setAttribute("role",d.alert?"alert":"status"),d.retry)){let m=n.createElement("button");m.type="button",m.className="post-tool",m.setAttribute("data-comments-retry",""),m.textContent=o.retry||"Try again",m.addEventListener("click",()=>N.load()),h.appendChild(n.createTextNode(" ")),h.appendChild(m)}},L=()=>(C||(C=p.feature(O).catch(r=>{throw C=null,r})),C),R=r=>{if(!b)return;if(b.value=String(r.id),_){let d=r.author&&r.author.name?r.author.name:o.anonymous||"Anonymous";_.textContent=ee(o.replying_to||"Replying to {{name}}",{name:d})}l&&(l.hidden=!1);let c=s.elements.namedItem("body");c&&typeof c.focus=="function"&&c.focus()},D=()=>{b&&(b.value=""),l&&(l.hidden=!0)},j={labels:o,lang:S,replies:i,onReply:R},H=(r,c)=>{let d=i&&c!==null&&c!==void 0?g.querySelector(`#comment-${CSS.escape(String(c))}`):null;(d?V(n,d):g).appendChild(r),g.hidden=!1,e.dataset.state==="empty"&&x("loaded")},N={root:e,form:s,reply:R,cancelReply:D,async load(){if(w)return null;w=!0,x("loading",o.loading||"");try{await L();let r=await p.get(`${p.pathFor(O)}?path=${encodeURIComponent(y)}`),c=r&&r.data&&Array.isArray(r.data.comments)?r.data.comments:[];g.textContent="";let d=ne(c,i);return Y(n,g,d,j),g.hidden=d.length===0,x(d.length>0?"loaded":"empty",d.length>0?"":o.empty||""),F=!0,c}catch(r){return r&&W.has(r.kind)?(x("disabled",I(r,u)),s&&(s.hidden=!0)):x("error",I(r,u),{alert:!0,retry:!0}),null}finally{w=!1}},async submit(){let r=K(s),c=re(r,y),d=ae(c,r,o);if(d)return d.website?(v(s,"success",o.posted_pending||""),null):(v(s,"invalid",u.invalid||"",d),null);v(s,"pending",o.sending||"");try{await L();let m=await p.post(p.pathFor(O),c,{idempotencyKey:Z()}),A=m&&m.data&&typeof m.data=="object"?m.data:{},E=A.comment&&typeof A.comment=="object"?A.comment:null,k=A.status==="pending"||E!==null&&E.status==="pending";return E&&H(P(n,k?q(T({},E),{status:"pending"}):E,j),E.parent_id),s.reset(),D(),v(s,"success",k?o.posted_pending||"":o.posted||""),m}catch(m){return B(s,m,u),null}}};s&&(s.addEventListener("submit",r=>{r.preventDefault(),N.submit()}),e.querySelectorAll("[data-comments-cancel-reply]").forEach(r=>{r.addEventListener("click",D)}));let $=()=>{F||N.load()};if(t.immediate||!a||typeof a.IntersectionObserver!="function")$();else{let r=new a.IntersectionObserver(c=>{c.some(d=>d.isIntersecting)&&(r.disconnect(),$())},{rootMargin:"400px 0px"});r.observe(e)}return N}function z(e=document){return Array.from(e.querySelectorAll("[data-comments-thread]")).map(t=>oe(t))}function G(){z(document)}document.readyState==="loading"?document.addEventListener("DOMContentLoaded",G,{once:!0}):G();
1
+ import{a as J,c as x,d as K,e as P}from"./chunks/chunk-WIRUK3OZ.js";import{a as F,b as U,c as B}from"./chunks/chunk-VZ5WKQVA.js";import{a as O,b as T}from"./chunks/chunk-PATLC23F.js";var L="comments",X=3,V=/^https?:\/\//i,Z=new Set(["disabled","unsupported","version"]);function ee(e,t){let n=e.querySelector(t);if(!n)return{};try{return JSON.parse(n.textContent)||{}}catch(a){return{}}}function te(e,t){return Object.keys(t).reduce((n,a)=>n.split(`{{${a}}}`).join(t[a]),e)}function ne(e,t){let n=new Date(e);if(Number.isNaN(n.getTime()))return String(e||"");try{return n.toLocaleString(t||void 0,{dateStyle:"medium",timeStyle:"short"})}catch(a){return n.toISOString()}}function re(e,t=!0){let n=Array.isArray(e)?e.filter(o=>o&&typeof o=="object"):[],a=new Map;n.forEach(o=>a.set(String(o.id),{comment:o,replies:[]}));let f=[];a.forEach(o=>{let s=o.comment.parent_id,u=t&&s!==null&&s!==void 0?a.get(String(s)):null;u&&u!==o?u.replies.push(o):f.push(o)});let p=(o,s)=>(Date.parse(o.comment.created_at)||0)-(Date.parse(s.comment.created_at)||0),y=o=>(o.sort(p),o.forEach(s=>y(s.replies)),o);return y(f)}function Y(e,t,n={}){let{labels:a={},lang:f,replies:p=!1,onReply:y}=n,o=t.status==="pending",s=e.createElement("li");s.className=o?"comment comment--pending":"comment",t.id!==null&&t.id!==void 0&&(s.id=`comment-${t.id}`);let u=e.createElement("article");u.className="comment__card";let _=e.createElement("header");_.className="comment__meta";let h=t.author&&typeof t.author=="object"?t.author:{},g=String(h.name||"").trim()||a.anonymous||"Anonymous",i;if(V.test(String(h.url||""))?(i=e.createElement("a"),i.href=h.url,i.rel="nofollow noopener ugc"):i=e.createElement("span"),i.className="comment__author",i.textContent=g,_.appendChild(i),t.created_at){let l=e.createElement("time");l.className="comment__time",l.dateTime=String(t.created_at),l.textContent=ne(t.created_at,f),_.appendChild(l)}if(o){let l=e.createElement("span");l.className="comment__pending",l.textContent=a.pending||"Awaiting moderation",_.appendChild(l)}u.appendChild(_);let S=e.createElement("div");if(S.className="comment__body",String(t.body||"").split(/\n{2,}/).forEach(l=>{let b=e.createElement("p");l.split(`
2
+ `).forEach((v,C)=>{C>0&&b.appendChild(e.createElement("br")),b.appendChild(e.createTextNode(v))}),S.appendChild(b)}),u.appendChild(S),p&&y&&!o&&t.id!==null&&t.id!==void 0){let l=e.createElement("button");l.type="button",l.className="comment__reply post-tool",l.textContent=a.reply||"Reply",l.addEventListener("click",()=>y(t)),u.appendChild(l)}return s.appendChild(u),s}function z(e,t){let n=t.querySelector(":scope > .comments-thread__replies");return n||(n=e.createElement("ol"),n.className="comments-thread__replies",t.appendChild(n)),n}function G(e,t,n,a){n.forEach(f=>{let p=Y(e,f.comment,a);f.replies.length>0&&G(e,z(e,p),f.replies,a),t.appendChild(p)})}function ae(e,t){let n={name:e.name||""};return e.email&&(n.email=e.email),e.url&&(n.url=e.url),{path:t,parent_id:e.parent_id||null,author:n,body:e.body||""}}function se(e,t,n={}){let a={};return e.author.name||(a.name=n.name_required||"Say who you are."),e.author.email&&!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(e.author.email)&&(a.email=n.email_invalid||"That does not look like an email address."),e.author.url&&!V.test(e.author.url)&&(a.url=n.url_invalid||"A website address starts with http:// or https://."),e.body.trim().length<X&&(a.body=n.body_short||"Say a little more."),t.website&&(a.website="spam"),Object.keys(a).length>0?a:null}function oe(e,t={}){let n=e.ownerDocument,a=t.window||n.defaultView,f=e.dataset.commentsEndpoint||"",p=t.client||(f?U(T(O({},a&&a.DatalogDynamicServices||{}),{base_url:f})):B()),y=e.dataset.commentsPath||"/",o=e.dataset.commentsReplies!=="false",s=ee(e,"[data-comments-labels]"),u=s.errors||{},_=n.documentElement.lang||void 0,h=e.querySelector("[data-comments-status]"),g=e.querySelector("[data-comments-list]"),i=e.querySelector("form"),S=J(i),l=i?i.elements.namedItem("parent_id"):null,b=e.querySelector("[data-comments-replying]"),v=e.querySelector("[data-comments-replying-to]"),C=null,q=!1,I=!1,w=(r,c="",d={})=>{if(e.dataset.state=r,!!h&&(h.textContent=c,h.hidden=c==="",h.setAttribute("role",d.alert?"alert":"status"),d.retry)){let m=n.createElement("button");m.type="button",m.className="post-tool",m.setAttribute("data-comments-retry",""),m.textContent=s.retry||"Try again",m.addEventListener("click",()=>N.load()),h.appendChild(n.createTextNode(" ")),h.appendChild(m)}},R=()=>(C||(C=p.feature(L).catch(r=>{throw C=null,r})),C),j=r=>{if(!l)return;if(l.value=String(r.id),v){let d=r.author&&r.author.name?r.author.name:s.anonymous||"Anonymous";v.textContent=te(s.replying_to||"Replying to {{name}}",{name:d})}b&&(b.hidden=!1);let c=i.elements.namedItem("body");c&&typeof c.focus=="function"&&c.focus()},D=()=>{l&&(l.value=""),b&&(b.hidden=!0)},k={labels:s,lang:_,replies:o,onReply:j},W=(r,c)=>{let d=o&&c!==null&&c!==void 0?g.querySelector(`#comment-${CSS.escape(String(c))}`):null;(d?z(n,d):g).appendChild(r),g.hidden=!1,e.dataset.state==="empty"&&w("loaded")},N={root:e,form:i,reply:j,cancelReply:D,async load(){if(q)return null;q=!0,w("loading",s.loading||"");try{await R();let r=await p.get(`${p.pathFor(L)}?path=${encodeURIComponent(y)}`),c=r&&r.data&&Array.isArray(r.data.comments)?r.data.comments:[];g.textContent="";let d=re(c,o);return G(n,g,d,k),g.hidden=d.length===0,w(d.length>0?"loaded":"empty",d.length>0?"":s.empty||""),I=!0,c}catch(r){return r&&Z.has(r.kind)?(w("disabled",F(r,u)),i&&(i.hidden=!0)):w("error",F(r,u),{alert:!0,retry:!0}),null}finally{q=!1}},async submit(){let r=K(i),c=ae(r,y),d=se(c,r,s);if(d)return d.website?(x(i,"success",s.posted_pending||""),null):(x(i,"invalid",u.invalid||"",d),null);x(i,"pending",s.sending||"");try{await R();let m=await p.post(p.pathFor(L),c,{idempotencyKey:S.key(c)}),A=m&&m.data&&typeof m.data=="object"?m.data:{},E=A.comment&&typeof A.comment=="object"?A.comment:null,M=A.status==="pending"||E!==null&&E.status==="pending";return E&&W(Y(n,M?T(O({},E),{status:"pending"}):E,k),E.parent_id),S.clear(),i.reset(),D(),x(i,"success",M?s.posted_pending||"":s.posted||""),m}catch(m){return P(i,m,u),null}}};i&&(i.addEventListener("submit",r=>{r.preventDefault(),N.submit()}),e.querySelectorAll("[data-comments-cancel-reply]").forEach(r=>{r.addEventListener("click",D)}));let $=()=>{I||N.load()};if(t.immediate||!a||typeof a.IntersectionObserver!="function")$();else{let r=new a.IntersectionObserver(c=>{c.some(d=>d.isIntersecting)&&(r.disconnect(),$())},{rootMargin:"400px 0px"});r.observe(e)}return N}function H(e=document){return Array.from(e.querySelectorAll("[data-comments-thread]")).map(t=>oe(t))}function Q(){H(document)}document.readyState==="loading"?document.addEventListener("DOMContentLoaded",Q,{once:!0}):Q();
@@ -1 +1 @@
1
- import{a as o,b as v,c as y}from"./chunks/chunk-V7734B2G.js";import{c as g}from"./chunks/chunk-2DYDWUFX.js";import"./chunks/chunk-PATLC23F.js";var S="contact",w=20;function j(t,r){let n=t.querySelector(r);if(!n)return{};try{return JSON.parse(n.textContent)||{}}catch(e){return{}}}function U(){let t=globalThis.crypto;return t&&typeof t.randomUUID=="function"?t.randomUUID():`${Date.now().toString(36)}-${Math.random().toString(36).slice(2,10)}`}function A(t,r){let n={category:t.category||"other",name:t.name||"",email:t.email||"",subject:t.subject||"",message:t.message||"",source_url:r};return t.affiliation&&(n.affiliation=t.affiliation),n}function L(t,r,n={}){let e={};return t.name||(e.name=n.name_required||"Say who you are."),/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(t.email)||(e.email=n.email_invalid||"That does not look like an email address."),t.subject||(e.subject=n.subject_required||"Give the message a subject."),t.message.length<w&&(e.message=(n.message_short||"Say a little more: at least {{min}} characters.").split("{{min}}").join(String(w))),r.website&&(e.website="spam"),Object.keys(e).length>0?e:null}function _(t,r={}){let n=r.client||g(),e=t.querySelector("form"),s=j(t,"[data-contact-labels]"),C=j(t,"[data-contact-prompts]"),c=s.errors||{},F=t.dataset.sourceUrl||"",i=e.elements.namedItem("category"),l=t.querySelector("[data-contact-hint]"),q=l?l.textContent:"",u=null,f=()=>{l&&(l.textContent=i&&C[i.value]||q)};if(i&&(i.addEventListener("change",f),f()),!n.enabled)return o(e,"disabled",c.disabled||""),{form:e,available:!1,submit:async()=>null};let b=()=>(u||(u=n.feature(S).catch(a=>{throw u=null,y(e,a,c),e.dataset.state="disabled",e.querySelectorAll("button[type=submit]").forEach(m=>{m.disabled=!0}),a})),u);e.addEventListener("focusin",()=>b().catch(()=>{}),{once:!0});let h={form:e,available:!0,async submit(){let a=v(e),m=A(a,F),p=L(m,a,s);if(p)return p.website?(o(e,"success",s.success||""),null):(o(e,"invalid",c.invalid||"",p),null);o(e,"pending",s.pending||"");try{await b()}catch(d){return null}try{let d=await n.post(n.pathFor(S),m,{idempotencyKey:U()});return e.reset(),f(),o(e,"success",s.success||""),d}catch(d){return y(e,d,c),null}}};return e.addEventListener("submit",a=>{a.preventDefault(),h.submit()}),h}function x(t=document){return Array.from(t.querySelectorAll("[data-contact-form]")).map(r=>_(r))}function E(){x(document)}document.readyState==="loading"?document.addEventListener("DOMContentLoaded",E,{once:!0}):E();
1
+ import{a as g,b as v,c as a,d as S,e as j}from"./chunks/chunk-WIRUK3OZ.js";import{c as h}from"./chunks/chunk-VZ5WKQVA.js";import"./chunks/chunk-PATLC23F.js";var w="contact",x=20;function C(t,r){let n=t.querySelector(r);if(!n)return{};try{return JSON.parse(n.textContent)||{}}catch(e){return{}}}function _(t,r){let n={category:t.category||"other",name:t.name||"",email:t.email||"",subject:t.subject||"",message:t.message||"",source_url:r};return t.affiliation&&(n.affiliation=t.affiliation),n}function k(t,r,n={}){let e={};return t.name||(e.name=n.name_required||"Say who you are."),/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(t.email)||(e.email=n.email_invalid||"That does not look like an email address."),t.subject||(e.subject=n.subject_required||"Give the message a subject."),t.message.length<x&&(e.message=(n.message_short||"Say a little more: at least {{min}} characters.").split("{{min}}").join(String(x))),r.website&&(e.website="spam"),Object.keys(e).length>0?e:null}function M(t,r={}){let n=r.client||h(),e=t.querySelector("form"),o=C(t,"[data-contact-labels]"),q=C(t,"[data-contact-prompts]"),s=o.errors||{},A=t.dataset.sourceUrl||"",c=e.elements.namedItem("category"),i=t.querySelector("[data-contact-hint]"),L=i?i.textContent:"",b=g(e),m=()=>{i&&(i.textContent=c&&q[c.value]||L)};if(c&&(c.addEventListener("change",m),m()),!n.enabled)return a(e,"disabled",s.disabled||""),{form:e,available:!1,submit:async()=>null};let p=v(n,w,e,s);e.addEventListener("focusin",()=>p().catch(()=>{}),{once:!0});let y={form:e,available:!0,async submit(){let u=S(e),d=_(u,A),f=k(d,u,o);if(f)return f.website?(a(e,"success",o.success||""),null):(a(e,"invalid",s.invalid||"",f),null);a(e,"pending",o.pending||"");try{await p()}catch(l){return null}try{let l=await n.post(n.pathFor(w),d,{idempotencyKey:b.key(d)});return b.clear(),e.reset(),m(),a(e,"success",o.success||""),l}catch(l){return j(e,l,s),null}}};return e.addEventListener("submit",u=>{u.preventDefault(),y.submit()}),y}function E(t=document){return Array.from(t.querySelectorAll("[data-contact-form]")).map(r=>M(r))}function F(){E(document)}document.readyState==="loading"?document.addEventListener("DOMContentLoaded",F,{once:!0}):F();
@@ -1 +1 @@
1
- import{a,b as x,c as b}from"./chunks/chunk-V7734B2G.js";import{c as v}from"./chunks/chunk-2DYDWUFX.js";import"./chunks/chunk-PATLC23F.js";var C="corrections",E=20,_=500;function D(t){let e=t.querySelector("[data-correction-labels]");if(!e)return{};try{return JSON.parse(e.textContent)||{}}catch(n){return{}}}function U(){let t=globalThis.crypto;return t&&typeof t.randomUUID=="function"?t.randomUUID():`${Date.now().toString(36)}-${Math.random().toString(36).slice(2,10)}`}function F(t,e){!t||!e||e.querySelectorAll("h2[id], h3[id]").forEach(n=>{let o=t.ownerDocument.createElement("option");o.value=n.id,o.textContent=n.textContent.trim(),t.appendChild(o)})}function I(t,e){let n=t.getSelection&&t.getSelection();if(!n||n.isCollapsed||n.rangeCount===0||!e)return"";let o=n.getRangeAt(0);return e.contains(o.commonAncestorContainer)?n.toString().trim().slice(0,_):""}function L(t,e){let n={category:t.category||"other",message:t.message||"",article:{url:e.url,title:e.title}};return t.section&&(n.section=t.section),t.contact_email&&(n.contact_email=t.contact_email),t.quote&&(n.quote=t.quote),n}function R(t,e,n={}){let o={};return t.message.length<E&&(o.message=(n.message_short||"Say a little more: at least {{min}} characters.").split("{{min}}").join(String(E))),t.contact_email&&!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(t.contact_email)&&(o.contact_email=n.email_invalid||"That does not look like an email address."),e.website&&(o.website="spam"),Object.keys(o).length>0?o:null}function T(t,e={}){let n=t.ownerDocument,o=e.window||n.defaultView,l=e.client||v(),S=e.content===void 0?n.querySelector(".post-content"):e.content,r=t.querySelector("form"),c=D(t),u=c.errors||{},A={url:t.dataset.articleUrl||"",title:t.dataset.articleTitle||""},p=r.elements.namedItem("quote"),s=t.querySelector("[data-correction-quote]"),d=null;if(F(r.elements.namedItem("section"),S),!l.enabled)return a(r,"disabled",u.disabled||""),{form:r,available:!1,submit:async()=>null};let w=()=>(d||(d=l.feature(C).catch(i=>{throw d=null,b(r,i,u),r.dataset.state="disabled",r.querySelectorAll("button[type=submit]").forEach(m=>{m.disabled=!0}),i})),d),y=t.tagName==="DETAILS"?t:t.querySelector("details");y&&y.addEventListener("toggle",()=>{if(!y.open)return;let i=I(o,S);p&&i&&!p.value&&(p.value=i,s&&(s.textContent=i,s.hidden=!1)),w().catch(()=>{})});let q={form:r,available:!0,async submit(){let i=x(r),m=L(i,A),g=R(m,i,c);if(g)return g.website?(a(r,"success",c.success||""),null):(a(r,"invalid",u.invalid||"",g),null);a(r,"pending",c.pending||"");try{await w()}catch(f){return null}try{let f=await l.post(l.pathFor(C),m,{idempotencyKey:U()});return r.reset(),s&&(s.hidden=!0),a(r,"success",c.success||""),f}catch(f){return b(r,f,u),null}}};return r.addEventListener("submit",i=>{i.preventDefault(),q.submit()}),q}function h(t=document){return Array.from(t.querySelectorAll("[data-correction-report]")).map(e=>T(e))}document.readyState==="loading"?document.addEventListener("DOMContentLoaded",()=>h()):h();export{h as initCorrectionReports};
1
+ import{a as C,b as w,c as s,d as E,e as A}from"./chunks/chunk-WIRUK3OZ.js";import{c as q}from"./chunks/chunk-VZ5WKQVA.js";import"./chunks/chunk-PATLC23F.js";var _="corrections",L=20,k=500;function D(e){let t=e.querySelector("[data-correction-labels]");if(!t)return{};try{return JSON.parse(t.textContent)||{}}catch(n){return{}}}function O(e,t){!e||!t||t.querySelectorAll("h2[id], h3[id]").forEach(n=>{let o=e.ownerDocument.createElement("option");o.value=n.id,o.textContent=n.textContent.trim(),e.appendChild(o)})}function F(e,t){let n=e.getSelection&&e.getSelection();if(!n||n.isCollapsed||n.rangeCount===0||!t)return"";let o=n.getRangeAt(0);return t.contains(o.commonAncestorContainer)?n.toString().trim().slice(0,k):""}function T(e,t){let n={category:e.category||"other",message:e.message||"",article:{url:t.url,title:t.title}};return e.section&&(n.section=e.section),e.contact_email&&(n.contact_email=e.contact_email),e.quote&&(n.quote=e.quote),n}function I(e,t,n={}){let o={};return e.message.length<L&&(o.message=(n.message_short||"Say a little more: at least {{min}} characters.").split("{{min}}").join(String(L))),e.contact_email&&!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(e.contact_email)&&(o.contact_email=n.email_invalid||"That does not look like an email address."),t.website&&(o.website="spam"),Object.keys(o).length>0?o:null}function M(e,t={}){var x;let n=e.ownerDocument,o=t.window||n.defaultView,u=t.client||q(),y=t.content===void 0?n.querySelector(".post-content"):t.content,r=e.querySelector("form"),l=D(e),m=l.errors||{},R={url:e.dataset.articleUrl||"",title:e.dataset.articleTitle||""},d=r.elements.namedItem("quote"),a=e.querySelector("[data-correction-quote]"),b=C(r);if(O(r.elements.namedItem("section"),y),!u.enabled)return s(r,"disabled",m.disabled||""),{form:r,available:!1,submit:async()=>null};let h=w(u,_,r,m),f=e.tagName==="DETAILS"?e:e.querySelector("details");if(f){let i="";(x=f.querySelector("summary"))==null||x.addEventListener("pointerdown",()=>{i=F(o,y)}),f.addEventListener("toggle",()=>{if(!f.open)return;let c=F(o,y)||i;i="",d&&c&&(d.value=c,a&&(a.textContent=c,a.hidden=!1)),h().catch(()=>{})})}let v={form:r,available:!0,async submit(){let i=E(r),c=T(i,R),g=I(c,i,l);if(g)return g.website?(s(r,"success",l.success||""),null):(s(r,"invalid",m.invalid||"",g),null);s(r,"pending",l.pending||"");try{await h()}catch(p){return null}try{let p=await u.post(u.pathFor(_),c,{idempotencyKey:b.key(c)});return b.clear(),r.reset(),d&&(d.value=""),a&&(a.textContent="",a.hidden=!0),s(r,"success",l.success||""),p}catch(p){return A(r,p,m),null}}};return r.addEventListener("submit",i=>{i.preventDefault(),v.submit()}),v}function S(e=document){return Array.from(e.querySelectorAll("[data-correction-report]")).map(t=>M(t))}document.readyState==="loading"?document.addEventListener("DOMContentLoaded",()=>S()):S();export{S as initCorrectionReports};
@@ -1 +1 @@
1
- import{a as U,b as O}from"./chunks/chunk-2DYDWUFX.js";import{a as T,b as N}from"./chunks/chunk-PATLC23F.js";var z="moderation",V=["comment","correction","abuse"],Y={approve:"approved",spam:"spam",hide:"hidden",delete:"deleted",reviewed:"reviewed",accept:"accepted",reject:"rejected",resolve:"resolved",dismiss:"dismissed"},G={comment:{pending:["approve","spam","delete"],approved:["hide","spam","delete"],spam:["approve","delete"],hidden:["approve","delete"]},correction:{new:["reviewed","accept","reject"],reviewed:["accept","reject"],accepted:["resolve","reject"]},abuse:{open:["dismiss","hide","delete"]}},X={comment:["pending"],correction:["new","reviewed","accepted"],abuse:["open"]},Q=/^https?:\/\//i,Z=new Set(["unauthorized","forbidden"]),tt=new Set(["disabled","unsupported","version"]);function et(t,e){let s=t.querySelector(e);if(!s)return{};try{return JSON.parse(s.textContent)||{}}catch(d){return{}}}function nt(){let t=globalThis.crypto;return t&&typeof t.randomUUID=="function"?t.randomUUID():`${Date.now().toString(36)}-${Math.random().toString(36).slice(2,10)}`}function i(t){return typeof t=="string"?t:""}function W(t){return(G[t.type]||{})[t.status]||[]}function B(t){if(!t||typeof t!="object"||Array.isArray(t))return null;let e=i(t.type).toLowerCase();if(t.id===null||t.id===void 0||!V.includes(e))return null;let s=t.author&&typeof t.author=="object"?t.author:{},d=t.context&&typeof t.context=="object"?t.context:{},m=d.parent&&typeof d.parent=="object"?d.parent:null,f=t.resolution&&typeof t.resolution=="object"?t.resolution:{},_=Array.isArray(t.history)?t.history:[];return{id:String(t.id),type:e,status:i(t.status).toLowerCase(),created_at:i(t.created_at),path:i(t.path),title:i(t.title),author:{name:i(s.name),email:i(s.email)},body:i(t.body)||i(t.message),category:i(t.category),section:i(t.section),quote:i(t.quote),reason:i(t.reason),parent:m?{author:i(m.author&&m.author.name),body:i(m.body)}:null,link:Q.test(i(f.url))?f.url:"",history:_.filter(l=>l&&typeof l=="object").map(l=>({action:i(l.action),at:i(l.at),moderator:i(l.moderator),note:i(l.note)}))}}function ot(t={},e=""){let s=new URLSearchParams;["type","status","path","category","since","q"].forEach(m=>{let f=i(t[m]).trim();f&&f!=="all"&&s.set(m,f)}),e&&s.set("cursor",e);let d=s.toString();return d?`?${d}`:""}function P(t,e){let s=new Date(t);if(Number.isNaN(s.getTime()))return t;try{return s.toLocaleString(e||void 0,{dateStyle:"medium",timeStyle:"short"})}catch(d){return s.toISOString()}}function o(t,e,s,d,m){let f=t.createElement(s);return d&&(f.className=d),m!==void 0&&(f.textContent=m),e.appendChild(f),f}function K(t,e,s={}){let{labels:d={},lang:m,siteUrl:f="",onAction:_}=s,l=d.types||{},q=d.statuses||{},C=d.actions||{},k=t.createElement("li");k.className=`moderation-item moderation-item--${e.type}`,k.dataset.itemId=e.id,k.dataset.itemStatus=e.status;let p=o(t,k,"article","moderation-item__card"),y=o(t,p,"header","moderation-item__meta");if(o(t,y,"span","moderation-item__type",l[e.type]||e.type),o(t,y,"span","moderation-item__status",q[e.status]||e.status),e.category&&o(t,y,"span","moderation-item__category",(d.categories||{})[e.category]||e.category),e.created_at){let r=o(t,y,"time","moderation-item__time",P(e.created_at,m));r.dateTime=e.created_at}if(e.path){let r=o(t,p,"p","moderation-item__where"),c=o(t,r,"a","",e.title||e.path);e.path.startsWith("/")&&!e.path.startsWith("//")&&(c.href=`${f.replace(/\/+$/,"")}${e.path}${e.section?`#${encodeURIComponent(e.section)}`:""}`)}if((e.author.name||e.author.email)&&o(t,p,"p","moderation-item__author",[e.author.name,e.author.email].filter(Boolean).join(" \xB7 ")),e.parent){let r=o(t,p,"blockquote","moderation-item__context");o(t,r,"p","",`${d.in_reply_to||"In reply to"} ${e.parent.author||""}`.trim()),o(t,r,"p","",e.parent.body)}e.quote&&o(t,p,"blockquote","moderation-item__quote",e.quote),e.reason&&o(t,p,"p","moderation-item__reason",e.reason);let A=o(t,p,"div","moderation-item__body");if(e.body.split(/\n{2,}/).forEach(r=>o(t,A,"p","",r)),e.link){let r=o(t,p,"p","moderation-item__link"),c=o(t,r,"a","",e.link);c.href=e.link,c.rel="noopener"}if(e.history.length>0){let r=o(t,p,"ol","moderation-item__history");e.history.forEach(c=>{let g=[C[c.action]||c.action,c.moderator,c.at?P(c.at,m):"",c.note].filter(Boolean).join(" \xB7 ");o(t,r,"li","",g)})}let S=W(e);if(S.length>0&&_){let r=o(t,p,"div","moderation-item__actions"),c=`moderation-note-${e.id}`,g=o(t,r,"label","moderation-item__note-label",d.note||"Note");g.htmlFor=c;let E=o(t,r,"input","moderation-item__note");E.type="text",E.id=c,E.name="note";let w=null;if(S.includes("resolve")){let x=`moderation-link-${e.id}`,h=o(t,r,"label","moderation-item__note-label",d.link||"Issue, pull request or revision");h.htmlFor=x,w=o(t,r,"input","moderation-item__note"),w.type="url",w.id=x,w.name="link"}let $=o(t,r,"div","moderation-item__buttons");S.forEach(x=>{let h=o(t,$,"button","post-tool",C[x]||x);h.type="button",h.dataset.moderationAction=x,h.addEventListener("click",()=>_(e,x,{note:E.value.trim(),link:w?w.value.trim():""}))})}let I=o(t,p,"p","moderation-item__message");return I.setAttribute("data-item-message",""),I.setAttribute("role","status"),I.hidden=!0,k}function at(t,e={}){let s=t.ownerDocument,d=s.defaultView,m=d&&d.DatalogDynamicServices||{},f=t.dataset.moderationEndpoint||"",_=e.client||O(N(T({},m),{base_url:f||m.base_url||"",credentials:t.dataset.moderationCredentials||"include"})),l=et(t,"[data-moderation-labels]"),q=l.errors||{},C=s.documentElement.lang||void 0,k=t.dataset.moderationSite||"",p=t.querySelector("[data-moderation-status]"),y=t.querySelector("[data-moderation-list]"),A=t.querySelector("[data-moderation-filters]"),S=t.querySelector("[data-moderation-more]"),I=t.querySelector("[data-moderation-sign-in]"),r="",c=!1,g=(n,a="",b=!1)=>{t.dataset.state=n,t.setAttribute("aria-busy",n==="loading"?"true":"false"),p&&(p.textContent=a,p.hidden=a==="",p.setAttribute("role",b?"alert":"status")),I&&(I.hidden=n!=="unauthorized")},E=()=>{let n={};return A&&new FormData(A).forEach((a,b)=>{n[b]=String(a)}),n},w=n=>{y.textContent="",S&&(S.hidden=!0),n&&n.kind==="unauthorized"?g("unauthorized",l.unauthorized||"",!0):n&&n.kind==="forbidden"?g("forbidden",l.forbidden||"",!0):n&&tt.has(n.kind)?g("disabled",U(n,q)):g("error",U(n,q),!0)},$=(n,a,b=!1)=>{let u=n.querySelector("[data-item-message]");u&&(u.textContent=a,u.hidden=a==="",u.setAttribute("role",b?"alert":"status"))},x=n=>{let a=i(E().status).trim();return a?a===n.status:(X[n.type]||[]).includes(n.status)},h={root:t,client:_,async load(n=!1){if(c)return null;c=!0,n||(r=""),g("loading",l.loading||"");try{await _.feature(z);let a=await _.get(`${_.pathFor(z)}/items${ot(E(),n?r:"")}`),b=a&&a.data&&typeof a.data=="object"?a.data:{},u=(Array.isArray(b.items)?b.items:[]).map(B).filter(Boolean);n||(y.textContent=""),u.forEach(L=>y.appendChild(K(s,L,{labels:l,lang:C,siteUrl:k,onAction:h.act}))),r=i(b.next_cursor),S&&(S.hidden=r==="");let j=y.children.length;return g(j>0?"loaded":"empty",j>0?"":l.empty||""),u}catch(a){return w(a),null}finally{c=!1}},async act(n,a,b={}){let u=Array.from(y.children).find(v=>v.dataset.itemId===n.id);if(!u||!W(n).includes(a))return null;if(a==="resolve"&&!Q.test(b.link||""))return $(u,l.link_required||"",!0),null;let j=Array.from(u.querySelectorAll("button"));j.forEach(v=>{v.disabled=!0}),u.setAttribute("aria-busy","true"),$(u,l.working||"");let L={action:a};b.note&&(L.note=b.note),a==="resolve"&&(L.link=b.link);try{let v=await _.post(`${_.pathFor(z)}/items/${encodeURIComponent(n.id)}/actions`,L,{idempotencyKey:nt()}),F=B(v&&v.data&&v.data.item)||N(T({},n),{status:Y[a]||n.status}),D=(l.done||"{{action}}").split("{{action}}").join((l.actions||{})[a]||a);if(x(F)){let R=K(s,F,{labels:l,lang:C,siteUrl:k,onAction:h.act});y.replaceChild(R,u),$(R,D)}else u.remove(),g(y.children.length>0?"loaded":"empty",y.children.length>0?D:`${D} ${l.empty||""}`.trim());return F}catch(v){return v&&Z.has(v.kind)?w(v):(u.setAttribute("aria-busy","false"),j.forEach(M=>{M.disabled=!1}),$(u,U(v,q),!0)),null}}};return A&&(A.addEventListener("submit",n=>{n.preventDefault(),h.load()}),A.addEventListener("reset",()=>{Promise.resolve().then(()=>h.load())})),S&&S.addEventListener("click",()=>h.load(!0)),_.enabled?(h.load(),h):(g("disabled",q.disabled||""),h)}function H(t=document){return Array.from(t.querySelectorAll("[data-moderation-inbox]")).map(e=>at(e))}function J(){H(document)}document.readyState==="loading"?document.addEventListener("DOMContentLoaded",J,{once:!0}):J();
1
+ import{a as Q}from"./chunks/chunk-WIRUK3OZ.js";import{a as T,b as P}from"./chunks/chunk-VZ5WKQVA.js";import{a as R,b as M}from"./chunks/chunk-PATLC23F.js";var O="moderation",Z=["comment","correction","abuse"],tt={approve:"approved",spam:"spam",hide:"hidden",delete:"deleted",reviewed:"reviewed",accept:"accepted",reject:"rejected",resolve:"resolved",dismiss:"dismissed"},et={comment:{pending:["approve","spam","delete"],approved:["hide","spam","delete"],spam:["approve","delete"],hidden:["approve","delete"]},correction:{new:["reviewed","accept","reject"],reviewed:["accept","reject"],accepted:["resolve","reject"]},abuse:{open:["dismiss","hide","delete"]}},nt={comment:["pending"],correction:["new","reviewed","accepted"],abuse:["open"]},K=/^https?:\/\//i,ot=new Set(["unauthorized","forbidden"]),rt=new Set(["disabled","unsupported","version"]);function at(t,e){let a=t.querySelector(e);if(!a)return{};try{return JSON.parse(a.textContent)||{}}catch(i){return{}}}function r(t){return typeof t=="string"?t:""}function V(t){return(et[t.type]||{})[t.status]||[]}function W(t){if(!t||typeof t!="object"||Array.isArray(t))return null;let e=r(t.type).toLowerCase();if(t.id===null||t.id===void 0||!Z.includes(e))return null;let a=t.author&&typeof t.author=="object"?t.author:{},i=t.context&&typeof t.context=="object"?t.context:{},u=i.parent&&typeof i.parent=="object"?i.parent:null,m=t.resolution&&typeof t.resolution=="object"?t.resolution:{},y=Array.isArray(t.history)?t.history:[];return{id:String(t.id),type:e,status:r(t.status).toLowerCase(),created_at:r(t.created_at),path:r(t.path),title:r(t.title),author:{name:r(a.name),email:r(a.email)},body:r(t.body)||r(t.message),category:r(t.category),section:r(t.section),quote:r(t.quote),reason:r(t.reason),parent:u?{author:r(u.author&&u.author.name),body:r(u.body)}:null,link:K.test(r(m.url))?m.url:"",history:y.filter(_=>_&&typeof _=="object").map(_=>({action:r(_.action),at:r(_.at),moderator:r(_.moderator),note:r(_.note)}))}}function it(t={},e=""){let a=new URLSearchParams;["type","status","path","category","since","q"].forEach(u=>{let m=r(t[u]).trim();m&&m!=="all"&&a.set(u,m)}),e&&a.set("cursor",e);let i=a.toString();return i?`?${i}`:""}function H(t,e){let a=new Date(t);if(Number.isNaN(a.getTime()))return t;try{return a.toLocaleString(e||void 0,{dateStyle:"medium",timeStyle:"short"})}catch(i){return a.toISOString()}}function o(t,e,a,i,u){let m=t.createElement(a);return i&&(m.className=i),u!==void 0&&(m.textContent=u),e.appendChild(m),m}function J(t,e,a={}){let{labels:i={},lang:u,siteUrl:m="",onAction:y}=a,_=i.types||{},p=i.statuses||{},$=i.actions||{},q=t.createElement("li");q.className=`moderation-item moderation-item--${e.type}`,q.dataset.itemId=e.id,q.dataset.itemStatus=e.status;let h=o(t,q,"article","moderation-item__card"),w=o(t,h,"header","moderation-item__meta");if(o(t,w,"span","moderation-item__type",_[e.type]||e.type),o(t,w,"span","moderation-item__status",p[e.status]||e.status),e.category&&o(t,w,"span","moderation-item__category",(i.categories||{})[e.category]||e.category),e.created_at){let d=o(t,w,"time","moderation-item__time",H(e.created_at,u));d.dateTime=e.created_at}if(e.path){let d=o(t,h,"p","moderation-item__where"),c=o(t,d,"a","",e.title||e.path);e.path.startsWith("/")&&!e.path.startsWith("//")&&(c.href=`${m.replace(/\/+$/,"")}${e.path}${e.section?`#${encodeURIComponent(e.section)}`:""}`)}if((e.author.name||e.author.email)&&o(t,h,"p","moderation-item__author",[e.author.name,e.author.email].filter(Boolean).join(" \xB7 ")),e.parent){let d=o(t,h,"blockquote","moderation-item__context");o(t,d,"p","",`${i.in_reply_to||"In reply to"} ${e.parent.author||""}`.trim()),o(t,d,"p","",e.parent.body)}e.quote&&o(t,h,"blockquote","moderation-item__quote",e.quote),e.reason&&o(t,h,"p","moderation-item__reason",e.reason);let g=o(t,h,"div","moderation-item__body");if(e.body.split(/\n{2,}/).forEach(d=>o(t,g,"p","",d)),e.link){let d=o(t,h,"p","moderation-item__link"),c=o(t,d,"a","",e.link);c.href=e.link,c.rel="noopener"}if(e.history.length>0){let d=o(t,h,"ol","moderation-item__history");e.history.forEach(c=>{let j=[$[c.action]||c.action,c.moderator,c.at?H(c.at,u):"",c.note].filter(Boolean).join(" \xB7 ");o(t,d,"li","",j)})}let x=V(e);if(x.length>0&&y){let d=o(t,h,"div","moderation-item__actions"),c=`moderation-note-${e.id}`,j=o(t,d,"label","moderation-item__note-label",i.note||"Note");j.htmlFor=c;let A=o(t,d,"input","moderation-item__note");A.type="text",A.id=c,A.name="note";let S=null;if(x.includes("resolve")){let E=`moderation-link-${e.id}`,C=o(t,d,"label","moderation-item__note-label",i.link||"Issue, pull request or revision");C.htmlFor=E,S=o(t,d,"input","moderation-item__note"),S.type="url",S.id=E,S.name="link"}let k=o(t,d,"div","moderation-item__buttons");x.forEach(E=>{let C=o(t,k,"button","post-tool",$[E]||E);C.type="button",C.dataset.moderationAction=E,C.addEventListener("click",()=>y(e,E,{note:A.value.trim(),link:S?S.value.trim():""}))})}let v=o(t,h,"p","moderation-item__message");return v.setAttribute("data-item-message",""),v.setAttribute("role","status"),v.hidden=!0,q}function st(t,e={}){let a=t.ownerDocument,i=a.defaultView,u=i&&i.DatalogDynamicServices||{},m=t.dataset.moderationEndpoint||"",y=e.client||P(M(R({},u),{features:m?{}:u.features,base_url:m||u.base_url||"",credentials:t.dataset.moderationCredentials||"include"})),_=Q(),p=at(t,"[data-moderation-labels]"),$=p.errors||{},q=a.documentElement.lang||void 0,h=t.dataset.moderationSite||"",w=t.querySelector("[data-moderation-status]"),g=t.querySelector("[data-moderation-list]"),x=t.querySelector("[data-moderation-filters]"),v=t.querySelector("[data-moderation-more]"),d=t.querySelector("[data-moderation-sign-in]"),c="",j=!1,A=0,S={},k=(n,s="",b=!1)=>{t.dataset.state=n,t.setAttribute("aria-busy",n==="loading"?"true":"false"),w&&(w.textContent=s,w.hidden=s==="",w.setAttribute("role",b?"alert":"status")),d&&(d.hidden=n!=="unauthorized")},E=()=>{let n={};return x&&new FormData(x).forEach((s,b)=>{n[b]=String(s)}),n},C=n=>{g.textContent="",v&&(v.hidden=!0),n&&n.kind==="unauthorized"?k("unauthorized",p.unauthorized||"",!0):n&&n.kind==="forbidden"?k("forbidden",p.forbidden||"",!0):n&&rt.has(n.kind)?k("disabled",T(n,$)):k("error",T(n,$),!0)},U=(n,s,b=!1)=>{let l=n.querySelector("[data-item-message]");l&&(l.textContent=s,l.hidden=s==="",l.setAttribute("role",b?"alert":"status"))},X=n=>{let s=r(S.status).trim();return s?s===n.status:(nt[n.type]||[]).includes(n.status)},I={root:t,client:y,async load(n=!1){if(j&&n)return null;let s=++A,b=n?S:E();j=!0,n||(c=""),k("loading",p.loading||"");try{await y.feature(O);let l=await y.get(`${y.pathFor(O)}/items${it(b,n?c:"")}`);if(s!==A)return null;S=b;let F=l&&l.data&&typeof l.data=="object"?l.data:{},L=(Array.isArray(F.items)?F.items:[]).map(W).filter(Boolean);n||(g.textContent=""),L.forEach(D=>g.appendChild(J(a,D,{labels:p,lang:q,siteUrl:h,onAction:I.act}))),c=r(F.next_cursor),v&&(v.hidden=c==="");let f=g.children.length;return k(f>0?"loaded":"empty",f>0?"":p.empty||""),L}catch(l){return s!==A||C(l),null}finally{s===A&&(j=!1)}},async act(n,s,b={}){let l=Array.from(g.children).find(f=>f.dataset.itemId===n.id);if(!l||!V(n).includes(s))return null;if(s==="resolve"&&!K.test(b.link||""))return U(l,p.link_required||"",!0),null;let F=Array.from(l.querySelectorAll("button"));F.forEach(f=>{f.disabled=!0}),l.setAttribute("aria-busy","true"),U(l,p.working||"");let L={action:s};b.note&&(L.note=b.note),s==="resolve"&&(L.link=b.link);try{let f=await y.post(`${y.pathFor(O)}/items/${encodeURIComponent(n.id)}/actions`,L,{idempotencyKey:_.key(L,n.id)});_.clear(n.id);let N=W(f&&f.data&&f.data.item)||M(R({},n),{status:tt[s]||n.status});if(!g.contains(l))return N;let z=(p.done||"{{action}}").split("{{action}}").join((p.actions||{})[s]||s);if(X(N)){let B=J(a,N,{labels:p,lang:q,siteUrl:h,onAction:I.act});g.replaceChild(B,l),U(B,z)}else l.remove(),k(g.children.length>0?"loaded":"empty",g.children.length>0?z:`${z} ${p.empty||""}`.trim());return N}catch(f){return f&&ot.has(f.kind)?C(f):(l.setAttribute("aria-busy","false"),F.forEach(D=>{D.disabled=!1}),U(l,T(f,$),!0)),null}}};return x&&(x.addEventListener("submit",n=>{n.preventDefault(),I.load()}),x.addEventListener("reset",()=>{Promise.resolve().then(()=>I.load())})),v&&v.addEventListener("click",()=>I.load(!0)),y.enabled?(I.load(),I):(k("disabled",$.disabled||""),I)}function Y(t=document){return Array.from(t.querySelectorAll("[data-moderation-inbox]")).map(e=>st(e))}function G(){Y(document)}document.readyState==="loading"?document.addEventListener("DOMContentLoaded",G,{once:!0}):G();
@@ -1 +1 @@
1
- import{a as v,c as U}from"./chunks/chunk-2DYDWUFX.js";import"./chunks/chunk-PATLC23F.js";var x="reactions",j="datalog-reaction:",k=new Set(["disabled","unsupported","version"]);function N(e,r){let a=e.querySelector(r);if(!a)return{};try{return JSON.parse(a.textContent)||{}}catch(s){return{}}}function T(){let e=globalThis.crypto;return e&&typeof e.randomUUID=="function"?e.randomUUID():`${Date.now().toString(36)}-${Math.random().toString(36).slice(2,10)}`}function K(e,r){try{return e?e.getItem(j+r):null}catch(a){return null}}function q(e,r,a){try{e&&e.setItem(j+r,a)}catch(s){}}function D(e){let r=e&&typeof e=="object"?e.counts:null;if(!r||typeof r!="object"||Array.isArray(r))return null;let a={};return Object.keys(r).forEach(s=>{let c=r[s];Number.isInteger(c)&&c>=0&&(a[s]=c)}),a}function P(e,r={}){let a=e.ownerDocument,s=r.window||a.defaultView,c=r.client||U(),m=r.storage===void 0?B(s):r.storage,d=e.dataset.reactionsPath||"/",M=e.dataset.reactionsCounts!=="false",f=N(e,"[data-reactions-labels]"),E=f.errors||{},y=e.querySelector("[data-reactions-status]"),i=Array.from(e.querySelectorAll("[data-reaction]")),p=null,g=!1,S=!1,h=K(m,d),u=(t,n=!1)=>{y&&(y.textContent=t,y.hidden=t==="",y.setAttribute("role",n?"alert":"status"))},l=t=>{e.dataset.state=t},w=()=>{i.forEach(t=>{t.setAttribute("aria-pressed",t.dataset.reaction===h?"true":"false")})},b=t=>{i.forEach(n=>{let o=n.querySelector("[data-reaction-count]");if(!o)return;let F=M&&t?t[n.dataset.reaction]:void 0;Number.isInteger(F)?(o.textContent=String(F),o.hidden=!1):(o.textContent="",o.hidden=!0)})},I=t=>{e.setAttribute("aria-busy",t?"true":"false"),i.forEach(n=>{n.disabled=t})},C=t=>{l("disabled"),b(null),i.forEach(n=>{n.disabled=!0}),u(v(t,E))},O=()=>(p||(p=c.feature(x).catch(t=>{throw p=null,t})),p),A={root:e,get selected(){return h},async load(){l("loading");try{await O();let t=await c.get(`${c.pathFor(x)}?path=${encodeURIComponent(d)}`),n=D(t&&t.data);return b(n),l("loaded"),g=!0,n}catch(t){return t&&k.has(t.kind)?C(t):(b(null),l("unavailable")),null}},async react(t){if(S||!i.some(n=>n.dataset.reaction===t))return null;if(t===h)return u(f.already||""),null;S=!0,I(!0),l("pending"),u(f.sending||"");try{await O();let n=await c.post(c.pathFor(x),{path:d,reaction:t},{idempotencyKey:T()});h=t,q(m,d,t),w();let o=D(n&&n.data);return o&&b(o),l("selected"),u(f.thanks||""),n}catch(n){return n&&k.has(n.kind)?C(n):n&&n.kind==="conflict"?(h=t,q(m,d,t),w(),l("selected"),u(f.already||"")):(l(g?"loaded":"unavailable"),u(v(n,E),!0)),null}finally{S=!1,e.dataset.state!=="disabled"&&I(!1)}}};w(),i.forEach(t=>{t.addEventListener("click",()=>{A.react(t.dataset.reaction)})});let R=()=>{g||A.load()};if(r.immediate||!s||typeof s.IntersectionObserver!="function")R();else{let t=new s.IntersectionObserver(n=>{n.some(o=>o.isIntersecting)&&(t.disconnect(),R())},{rootMargin:"400px 0px"});t.observe(e)}return A}function B(e){try{return e&&e.localStorage?e.localStorage:null}catch(r){return null}}function L(e=document){return Array.from(e.querySelectorAll("[data-reactions]")).map(r=>P(r))}function $(){L(document)}document.readyState==="loading"?document.addEventListener("DOMContentLoaded",$,{once:!0}):$();
1
+ import{a as L}from"./chunks/chunk-WIRUK3OZ.js";import{a as A,c as j}from"./chunks/chunk-VZ5WKQVA.js";import"./chunks/chunk-PATLC23F.js";var x="reactions",M="datalog-reaction:",N=new Set(["disabled","unsupported","version"]);function $(n,r){let s=n.querySelector(r);if(!s)return{};try{return JSON.parse(s.textContent)||{}}catch(o){return{}}}function B(n,r){try{return n?n.getItem(M+r):null}catch(s){return null}}function G(n,r,s){try{n&&n.setItem(M+r,s)}catch(o){}}function D(n){let r=n&&typeof n=="object"?n.counts:null;if(!r||typeof r!="object"||Array.isArray(r))return null;let s={};return Object.keys(r).forEach(o=>{let c=r[o];Number.isInteger(c)&&c>=0&&(s[o]=c)}),s}function J(n,r={}){let s=n.ownerDocument,o=r.window||s.defaultView,c=r.client||j(),E=r.storage===void 0?K(o):r.storage,d=n.dataset.reactionsPath||"/",U=n.dataset.reactionsCounts!=="false",C=L(),f=$(n,"[data-reactions-labels]"),I=f.errors||{},b=n.querySelector("[data-reactions-status]"),i=Array.from(n.querySelectorAll("[data-reaction]")),m=null,p=!1,h=!1,y=B(E,d),g=0,u=(e,t=!1)=>{b&&(b.textContent=e,b.hidden=e==="",b.setAttribute("role",t?"alert":"status"))},l=e=>{n.dataset.state=e},w=()=>{i.forEach(e=>{e.setAttribute("aria-pressed",e.dataset.reaction===y?"true":"false")})},S=e=>{i.forEach(t=>{let a=t.querySelector("[data-reaction-count]");if(!a)return;let F=U&&e?e[t.dataset.reaction]:void 0;Number.isInteger(F)?(a.textContent=String(F),a.hidden=!1):(a.textContent="",a.hidden=!0)})},O=e=>{n.setAttribute("aria-busy",e?"true":"false"),i.forEach(t=>{t.disabled=e})},q=e=>{l("disabled"),S(null),i.forEach(t=>{t.disabled=!0}),u(A(e,I))},R=()=>(m||(m=c.feature(x).catch(e=>{throw m=null,e})),m),v={root:n,get selected(){return y},async load(){let e=++g;l("loading");try{await R();let t=await c.get(`${c.pathFor(x)}?path=${encodeURIComponent(d)}`);if(e!==g||h)return null;let a=D(t&&t.data);return S(a),l("loaded"),p=!0,a}catch(t){return e!==g||h||(t&&N.has(t.kind)?q(t):(S(null),l("unavailable"))),null}},async react(e){if(h||!i.some(t=>t.dataset.reaction===e))return null;if(e===y)return u(f.already||""),null;h=!0,g+=1,O(!0),l("pending"),u(f.sending||"");try{await R();let t=await c.post(c.pathFor(x),{path:d,reaction:e},{idempotencyKey:C.key({path:d,reaction:e})});C.clear(),y=e,G(E,d,e),w();let a=D(t&&t.data);return a&&S(a),l("selected"),u(f.thanks||""),t}catch(t){return t&&N.has(t.kind)?q(t):t&&t.kind==="conflict"?(w(),l(y?"selected":p?"loaded":"unavailable"),u(f.already||"")):(l(p?"loaded":"unavailable"),u(A(t,I),!0)),null}finally{h=!1,n.dataset.state!=="disabled"&&O(!1)}}};w(),i.forEach(e=>{e.addEventListener("click",()=>{v.react(e.dataset.reaction)})});let k=()=>{p||v.load()};if(r.immediate||!o||typeof o.IntersectionObserver!="function")k();else{let e=new o.IntersectionObserver(t=>{t.some(a=>a.isIntersecting)&&(e.disconnect(),k())},{rootMargin:"400px 0px"});e.observe(n)}return v}function K(n){try{return n&&n.localStorage?n.localStorage:null}catch(r){return null}}function P(n=document){return Array.from(n.querySelectorAll("[data-reactions]")).map(r=>J(r))}function T(){P(document)}document.readyState==="loading"?document.addEventListener("DOMContentLoaded",T,{once:!0}):T();
@@ -1 +1 @@
1
- import{a as v,b as k}from"./chunks/chunk-PATLC23F.js";var lt=new Set(["SCRIPT","STYLE","TEMPLATE","NOSCRIPT"]),z=3;function F(t){let e=t.ownerDocument,n=[],r="",a=e.createTreeWalker(t,4,{acceptNode(o){return lt.has(o.parentNode&&o.parentNode.nodeName)?2:1}});for(let o=a.nextNode();o;o=a.nextNode())n.push({node:o,start:r.length,end:r.length+o.data.length}),r+=o.data;return{text:r,nodes:n}}function M(t,e){return!!(t.compareDocumentPosition(e)&4)}function J(t,e,n){if(e.nodeType===z){let o=t.nodes.find(i=>i.node===e);return o?o.start+n:0}let r=e.childNodes[n];if(!r){let o=t.nodes.find(i=>!e.contains(i.node)&&M(e,i.node));return o?o.start:t.text.length}let a=t.nodes.find(o=>o.node===r||r.contains(o.node)||M(r,o.node));return a?a.start:t.text.length}function ct(t,e){let n=e.nodeType===z?e.parentNode:e,r=null;return t.querySelectorAll("h2[id], h3[id], h4[id]").forEach(a=>{(a===n||a.contains(n)||M(a,n))&&(r=a.id)}),r}function G(t,e){let n=F(e),r=J(n,t.startContainer,t.startOffset),a=J(n,t.endContainer,t.endOffset);return a<=r?null:{quote:n.text.slice(r,a),prefix:n.text.slice(Math.max(0,r-32),r),suffix:n.text.slice(a,a+32),section:ct(e,t.startContainer)}}function Y(t,e){let n=[],r=t.indexOf(e);for(;r!==-1;)n.push(r),r=t.indexOf(e,r+1);return n}function K(t){let e="",n=[],r=!1;for(let a=0;a<t.length;a+=1){let o=t[a];/\s/.test(o)?r||(e+=" ",n.push(a),r=!0):(e+=o,n.push(a),r=!1)}return{out:e,map:n}}function dt(t,e){let n=0;for(;n<t.length&&n<e.length&&t[t.length-1-n]===e[e.length-1-n];)n+=1;return n}function ut(t,e){let n=0;for(;n<t.length&&n<e.length&&t[n]===e[n];)n+=1;return n}function ft(t,e,n){let r=t.nodes.find(i=>e>=i.start&&e<i.end)||t.nodes.find(i=>e===i.end),a=t.nodes.find(i=>n>i.start&&n<=i.end);if(!r||!a)return null;let o=r.node.ownerDocument.createRange();return o.setStart(r.node,e-r.start),o.setEnd(a.node,n-a.start),o}function I(t,e){if(!e||typeof e.quote!="string"||e.quote==="")return null;let n=F(t),r=Y(n.text,e.quote).map(o=>({start:o,end:o+e.quote.length}));if(r.length===0){let o=K(n.text),i=K(e.quote).out.trim();i&&(r=Y(o.out,i).map(s=>({start:o.map[s],end:o.map[s+i.length-1]+1})))}if(r.length===0)return null;let a=r.map(o=>k(v({},o),{score:dt(n.text.slice(Math.max(0,o.start-32),o.start),e.prefix||"")+ut(n.text.slice(o.end,o.end+32),e.suffix||"")}));return a.sort((o,i)=>i.score-o.score),ft(n,a[0].start,a[0].end)}var pt="datalog-annotation",W="reading-highlight";function ht(t=window){return!!(t&&t.CSS&&"highlights"in t.CSS&&typeof t.Highlight=="function")}function gt(t){t.querySelectorAll(`mark.${W}`).forEach(e=>{let n=e.parentNode;for(;e.firstChild;)n.insertBefore(e.firstChild,e);n.removeChild(e),n.normalize()})}function mt(t,e){let n=t.startContainer.ownerDocument,r=t.commonAncestorContainer,a=[];if(r.nodeType===3)a.push(r);else{let o=n.createTreeWalker(r,4);for(let i=o.nextNode();i;i=o.nextNode())t.intersectsNode(i)&&a.push(i)}a.forEach(o=>{let i=n.createRange();if(i.setStart(o,o===t.startContainer?t.startOffset:0),i.setEnd(o,o===t.endContainer?t.endOffset:o.data.length),i.collapsed)return;let s=n.createElement("mark");s.className=W,s.dataset.annotationId=e,i.surroundContents(s)})}function Q(t,e,n={}){let r=t.ownerDocument.defaultView,a=n.api===void 0?ht(r):n.api,o=[],i=[];gt(t);let s=[];return e.forEach(c=>{let h=I(t,c);h?(o.push(c.id),s.push([c.id,h])):i.push(c.id)}),a?r.CSS.highlights.set(pt,new r.Highlight(...s.map(([,c])=>c))):s.reverse().forEach(([c,h])=>mt(h,c)),{found:o,lost:i}}var O="datalog-reading:";function yt(t=window){try{let e=t.localStorage,n=`${O}probe`;return e.setItem(n,"1"),e.removeItem(n),e}catch(e){return null}}function w(t,e=""){return{article:t,title:e,bookmarked:!1,annotations:[]}}function St(t){return!!(t&&typeof t.id=="string"&&typeof t.quote=="string"&&t.quote.length>0)}function $(t){try{let e=JSON.parse(t);return e&&typeof e=="object"?e:null}catch(e){return null}}function N(t){if(!t||typeof t.article!="string"||t.article==="")return null;let e=w(t.article,typeof t.title=="string"?t.title:"");return e.bookmarked=t.bookmarked===!0,e.annotations=Array.isArray(t.annotations)?t.annotations.filter(St):[],t.progress&&typeof t.progress.ratio=="number"&&(e.progress=t.progress),typeof t.saved_at=="string"&&(e.saved_at=t.saved_at),typeof t.updated_at=="string"&&(e.updated_at=t.updated_at),e}function Z(t=yt()){let e=!!t,n=l=>`${O}${l}`;function r(){let l=[];for(let d=0;d<t.length;d+=1){let p=t.key(d);p&&p.startsWith(O)&&p!==`${O}probe`&&l.push(p)}return l}function a(l){if(!e)return null;try{return N($(t.getItem(n(l))))}catch(d){return null}}function o(l,d){if(!e)return!1;try{let p=N(k(v({},d),{article:l}));return p?(p.updated_at=new Date().toISOString(),t.setItem(n(l),JSON.stringify(p)),!0):!1}catch(p){return!1}}function i(l){if(!e)return!1;try{return t.removeItem(n(l)),!0}catch(d){return!1}}function s(){if(!e)return[];try{return r().map(l=>N($(t.getItem(l)))).filter(Boolean)}catch(l){return[]}}function c(){if(!e)return!1;try{return r().forEach(l=>t.removeItem(l)),!0}catch(l){return!1}}function h(){return JSON.stringify({format:1,exported_at:new Date().toISOString(),articles:s()},null,2)}function m(l){let d=$(l),p=Array.isArray(d)?d:d&&Array.isArray(d.articles)?d.articles:null;if(!p)throw new Error("Not a reading data export");return p.reduce((x,T)=>{let b=N(T);return b&&o(b.article,b)?x+1:x},0)}return{available:e,read:a,write:o,remove:i,all:s,clear:c,exportJSON:h,importJSON:m}}var xt=.4;function Et({scrollY:t,innerHeight:e,contentTop:n,contentHeight:r,headings:a}){let o=t+e*xt,i=r>0?Math.min(1,Math.max(0,(o-n)/r)):0,s=null;return a.forEach(c=>{c.top<=o&&(s=c.id)}),{ratio:Math.round(i*1e3)/1e3,anchor:s}}function tt(t,e,n){return!!(t&&typeof t.ratio=="number"&&t.ratio>=.05&&t.ratio<=.92&&e>n*1.5)}function et({content:t,store:e,article:n,title:r,win:a=window,interval:o=1e3}){let i=null,s=null,c=()=>{let l=t.getBoundingClientRect(),d=Array.from(t.querySelectorAll("h2[id], h3[id], h4[id]")).map(p=>({id:p.id,top:p.getBoundingClientRect().top+a.scrollY}));return Et({scrollY:a.scrollY,innerHeight:a.innerHeight,contentTop:l.top+a.scrollY,contentHeight:l.height,headings:d})},h=()=>{let l=c();if(s&&Math.abs(s.ratio-l.ratio)<.01)return;s=l;let d=e.read(n)||w(n,r);d.title=d.title||r,d.progress=k(v({},l),{updated_at:new Date().toISOString()}),e.write(n,d)},m=()=>{i||(i=a.setTimeout(()=>{i=null,h()},o))};return a.addEventListener("scroll",m,{passive:!0}),{stop(){a.removeEventListener("scroll",m),i&&a.clearTimeout(i)},save:h,snapshot:c}}var vt=new Set(["INPUT","TEXTAREA","SELECT"]);function B(t,e){return Object.keys(e).reduce((n,r)=>n.split(`{{${r}}}`).join(String(e[r])),t||"")}function kt(){let t=globalThis.crypto;return t&&typeof t.randomUUID=="function"?t.randomUUID():`${Date.now().toString(36)}-${Math.random().toString(36).slice(2,10)}`}function bt(t){let e=t.activeElement;return!!(e&&(vt.has(e.tagName)||e.isContentEditable))}function nt(t,e){if(!e)return"";let n=t.ownerDocument.getElementById(e);return n&&t.contains(n)?n.textContent.trim():e}function Ct(t,e){let n=t.startContainer.nodeType===3?t.startContainer.parentElement:t.startContainer;n&&typeof n.scrollIntoView=="function"&&n.scrollIntoView({block:"center"});let r=e.getSelection&&e.getSelection();r&&(r.removeAllRanges(),r.addRange(t))}function ot(t,e){let n=t.dataset.article,r=t.dataset.title||"",a=t.querySelector("[data-bookmark-label]")||t,o=()=>{let i=e.read(n),s=!!(i&&i.bookmarked);t.setAttribute("aria-pressed",s?"true":"false"),a.textContent=s?t.dataset.labelSaved:t.dataset.labelSave};return e.available?(t.addEventListener("click",()=>{let i=e.read(n)||w(n,r);i.title=i.title||r,i.bookmarked=!i.bookmarked,i.saved_at=i.bookmarked?new Date().toISOString():void 0,e.write(n,i),o()}),o(),{refresh:o}):(t.disabled=!0,t.title=t.dataset.unavailable||"",{refresh:o})}function rt(t,e,n,r){let a=t.ownerDocument,o=a.defaultView,i=t.querySelector("[data-reading-status]"),s=d=>{i&&(i.textContent=d)},c=t.querySelector("[data-reading-export]");c&&c.addEventListener("click",()=>{let d=new o.Blob([e.exportJSON()],{type:"application/json"}),p=o.URL.createObjectURL(d),x=a.createElement("a");x.href=p,x.download="datalog-reading-data.json",a.body.appendChild(x),x.click(),x.remove(),o.URL.revokeObjectURL(p),s(c.dataset.done||"")});let h=t.querySelector("[data-reading-import]");h&&h.addEventListener("change",()=>{let d=h.files&&h.files[0];d&&(d.text().then(p=>{let x=e.importJSON(p);s(B(h.dataset.done,{count:x})),n()}).catch(()=>s(h.dataset.failed||"")),h.value="")});let m=t.querySelector("[data-reading-erase-article]");m&&r&&m.addEventListener("click",()=>{e.remove(r),s(m.dataset.done||""),n()});let l=t.querySelector("[data-reading-erase-all]");l&&l.addEventListener("click",()=>{l.dataset.confirm&&!o.confirm(l.dataset.confirm)||(e.clear(),s(l.dataset.done||""),n())})}function qt(t,e,n={}){let r=t.ownerDocument,a=r.defaultView,o=t.dataset.article,i=t.dataset.title||"",s=n.content||r.querySelector(".post-content"),c=t.dataset.progress!=="false",h=t.dataset.highlights!=="false",m=t.querySelector("[data-reading-resume]"),l=t.querySelector("[data-reading-toolbar]"),d=t.querySelector("[data-reading-list-items]"),p=t.querySelector("[data-reading-empty]"),x=t.querySelector("[data-reading-item-template]"),T=t.querySelector("[data-reading-unavailable]"),b=n.bookmark?ot(n.bookmark,e):null,A=null,P=[],E=()=>e.read(o)||w(o,i),D=u=>{u.title=u.title||i,e.write(o,u)};if(!e.available)return T&&(T.hidden=!1),t.querySelectorAll("button, input").forEach(u=>{u.disabled=!0}),{available:!1,record:E,addAnnotation:()=>null,removeAnnotation:()=>!1,repaint:()=>null};let U=()=>{if(!s||!h)return{found:[],lost:[]};let u=Q(s,E().annotations);return P=u.lost,u},at=()=>{if(!d||!x)return;let u=E().annotations;d.textContent="",p&&(p.hidden=u.length>0),u.forEach(f=>{let g=x.content.firstElementChild.cloneNode(!0);g.dataset.annotation=f.id;let y=g.querySelector("[data-annotation-quote]");y.textContent=f.quote.length>160?`${f.quote.slice(0,157)}\u2026`:f.quote;let S=g.querySelector("[data-annotation-section]");S.textContent=nt(s,f.section);let q=g.querySelector("[data-annotation-lost]");q.hidden=!P.includes(f.id);let _=g.querySelector("[data-annotation-note]");_.value=f.note||"",_.addEventListener("change",()=>{let R=E(),V=R.annotations.find(st=>st.id===f.id);V&&(V.note=_.value,D(R))}),g.querySelector("[data-annotation-go]").addEventListener("click",()=>{let R=s&&I(s,f);R&&Ct(R,a)}),g.querySelector("[data-annotation-remove]").addEventListener("click",()=>{C.removeAnnotation(f.id)}),d.appendChild(g)})},L=()=>{U(),at(),b&&b.refresh()},X=()=>{l&&(l.hidden=!0)},it=u=>{if(l&&(A=u,l.hidden=!1,typeof u.getBoundingClientRect=="function")){let f=u.getBoundingClientRect();l.style.top=`${Math.max(0,f.top+a.scrollY-l.offsetHeight-8)}px`,l.style.left=`${Math.max(0,f.left+a.scrollX)}px`}},j=()=>{let u=a.getSelection&&a.getSelection();if(!u||u.rangeCount===0||u.isCollapsed||!s)return null;let f=u.getRangeAt(0);return s.contains(f.commonAncestorContainer)?f:null},C={available:!0,record:E,repaint:U,addAnnotation(u,f=""){if(!s)return null;let g=G(u,s);if(!g||g.quote.trim()==="")return null;let y=k(v({id:kt()},g),{note:f,created_at:new Date().toISOString()}),S=E();return S.annotations.push(y),D(S),L(),y},removeAnnotation(u){let f=E(),g=f.annotations.length;return f.annotations=f.annotations.filter(y=>y.id!==u),f.annotations.length===g?!1:(D(f),L(),!0)},highlightSelection(u=!1){let f=A||j();if(!f)return null;let g=C.addAnnotation(f);A=null,X();let y=a.getSelection&&a.getSelection();if(y&&y.removeAllRanges(),g&&u&&d){let S=d.querySelector(`[data-annotation="${g.id}"] [data-annotation-note]`);S&&S.focus()}return g}};if(h&&l&&s){let u=null;r.addEventListener("selectionchange",()=>{u&&a.clearTimeout(u),u=a.setTimeout(()=>{let y=j();y?it(y.cloneRange()):l.contains(r.activeElement)||(A=null,X())},150)});let f=l.querySelector("[data-reading-highlight]"),g=l.querySelector("[data-reading-note]");f&&f.addEventListener("click",()=>C.highlightSelection(!1)),g&&g.addEventListener("click",()=>C.highlightSelection(!0)),r.addEventListener("keydown",y=>{if(!y.altKey||!y.shiftKey||bt(r))return;let S=y.key.toLowerCase();(S==="h"||S==="n")&&(y.preventDefault(),C.highlightSelection(S==="n"))})}if(c&&s){let u=E().progress;if(m&&!a.location.hash&&tt(u,s.getBoundingClientRect().height,a.innerHeight)){let f=m.querySelector("[data-reading-resume-detail]");if(f){let S=nt(s,u.anchor),q=Math.round(u.ratio*100);f.textContent=`${S?`${S} \xB7 `:""}${B(m.dataset.progressLabel,{percent:q})}`}m.hidden=!1;let g=m.querySelector("[data-reading-resume-go]");g&&g.addEventListener("click",()=>{let S=u.anchor&&r.getElementById(u.anchor);if(S&&typeof S.scrollIntoView=="function")S.scrollIntoView({block:"start"});else{let q=s.getBoundingClientRect();a.scrollTo(0,q.top+a.scrollY+q.height*u.ratio-a.innerHeight*.4)}m.hidden=!0});let y=m.querySelector("[data-reading-resume-dismiss]");y&&y.addEventListener("click",()=>{m.hidden=!0})}et({content:s,store:e,article:o,title:i,win:a})}return rt(t,e,L,o),L(),C}function wt(t,e){let n=t.ownerDocument,r=t.querySelector("[data-reading-list-items]"),a=t.querySelector("[data-reading-list-empty]"),o=t.querySelector("[data-reading-unavailable]"),i=()=>{if(!r)return;let s=e.all().filter(c=>c.bookmarked||c.progress||c.annotations.length>0).sort((c,h)=>String(h.updated_at||"").localeCompare(String(c.updated_at||"")));r.textContent="",a&&(a.hidden=s.length>0),s.forEach(c=>{let h=n.createElement("li");h.className="reading-list__item";let m=n.createElement("a");m.href=c.article,m.textContent=c.title||c.article,h.appendChild(m);let l=n.createElement("span");l.className="reading-list__meta";let d=[];c.bookmarked&&d.push(t.dataset.savedLabel||""),c.progress&&d.push(B(t.dataset.progressLabel,{percent:Math.round(c.progress.ratio*100)})),c.annotations.length>0&&d.push(B(t.dataset.highlightsLabel,{count:c.annotations.length})),l.textContent=d.filter(Boolean).join(" \xB7 "),h.appendChild(l);let p=n.createElement("button");p.type="button",p.className="post-tool",p.textContent=t.dataset.removeLabel||"",p.addEventListener("click",()=>{e.remove(c.article),i()}),h.appendChild(p),r.appendChild(h)})};return e.available?(rt(t,e,i),i(),{render:i}):(o&&(o.hidden=!1),t.querySelectorAll("button, input").forEach(s=>{s.disabled=!0}),{render:i})}function H(t=document,e=Z()){let n=t.querySelector("[data-reading-state]"),r=t.querySelector("[data-reading-list]"),a=t.querySelector("[data-bookmark-toggle]"),o={article:null,list:null};return n?o.article=qt(n,e,{bookmark:a}):a&&ot(a,e),r&&(o.list=wt(r,e)),o}document.readyState==="loading"?document.addEventListener("DOMContentLoaded",()=>H()):H();export{H as initReadingState};
1
+ import{a as C,b as q}from"./chunks/chunk-PATLC23F.js";var fe=new Set(["SCRIPT","STYLE","TEMPLATE","NOSCRIPT"]),W=3;function Q(e){let t=e.ownerDocument,n=[],a="",r=t.createTreeWalker(e,4,{acceptNode(o){return fe.has(o.parentNode&&o.parentNode.nodeName)?2:1}});for(let o=r.nextNode();o;o=r.nextNode())n.push({node:o,start:a.length,end:a.length+o.data.length}),a+=o.data;return{text:a,nodes:n}}function P(e,t){return!!(e.compareDocumentPosition(t)&4)}function F(e,t,n){if(t.nodeType===W){let o=e.nodes.find(i=>i.node===t);return o?o.start+n:0}let a=t.childNodes[n];if(!a){let o=e.nodes.find(i=>!t.contains(i.node)&&P(t,i.node));return o?o.start:e.text.length}let r=e.nodes.find(o=>o.node===a||a.contains(o.node)||P(a,o.node));return r?r.start:e.text.length}function Z(e,t){let n=t.nodeType===W?t.parentNode:t,a=null;return e.querySelectorAll("h2[id], h3[id], h4[id]").forEach(r=>{(r===n||r.contains(n)||P(r,n))&&(a=r.id)}),a}function ee(e,t){let n=Q(t),a=F(n,e.startContainer,e.startOffset),r=F(n,e.endContainer,e.endOffset);return r<=a?null:{quote:n.text.slice(a,r),prefix:n.text.slice(Math.max(0,a-32),a),suffix:n.text.slice(r,r+32),section:Z(t,e.startContainer)}}function K(e,t){let n=[],a=e.indexOf(t);for(;a!==-1;)n.push(a),a=e.indexOf(t,a+1);return n}function z(e){let t="",n=[],a=!1;for(let r=0;r<e.length;r+=1){let o=e[r];/\s/.test(o)?a||(t+=" ",n.push(r),a=!0):(t+=o,n.push(r),a=!1)}return{out:t,map:n}}function pe(e,t){let n=0;for(;n<e.length&&n<t.length&&e[e.length-1-n]===t[t.length-1-n];)n+=1;return n}function ge(e,t){let n=0;for(;n<e.length&&n<t.length&&e[n]===t[n];)n+=1;return n}function G(e,t,n){let a=e.nodes.find(i=>t>=i.start&&t<i.end)||e.nodes.find(i=>t===i.end),r=e.nodes.find(i=>n>i.start&&n<=i.end);if(!a||!r)return null;let o=a.node.ownerDocument.createRange();return o.setStart(a.node,t-a.start),o.setEnd(r.node,n-r.start),o}function D(e,t){if(!t||typeof t.quote!="string"||t.quote==="")return null;let n=Q(e),a=K(n.text,t.quote).map(o=>({start:o,end:o+t.quote.length}));if(a.length===0){let o=z(n.text),i=z(t.quote).out.trim();i&&(a=K(o.out,i).map(s=>({start:o.map[s],end:o.map[s+i.length-1]+1})))}if(a.length===0)return null;let r=a.map(o=>q(C({},o),{section:Z(e,G(n,o.start,o.end).startContainer),score:pe(n.text.slice(Math.max(0,o.start-32),o.start),t.prefix||"")+ge(n.text.slice(o.end,o.end+32),t.suffix||"")}));if(t.section){let o=r.filter(i=>i.section===t.section);if(o.length)r=o;else return null}return r.sort((o,i)=>i.score-o.score),r.length>1&&(r[0].score===0||r[0].score===r[1].score)||!t.section&&(t.prefix||t.suffix)&&r[0].score===0?null:G(n,r[0].start,r[0].end)}var he="datalog-annotation",te="reading-highlight";function me(e=window){return!!(e&&e.CSS&&"highlights"in e.CSS&&typeof e.Highlight=="function")}function ye(e){e.querySelectorAll(`mark.${te}`).forEach(t=>{let n=t.parentNode;for(;t.firstChild;)n.insertBefore(t.firstChild,t);n.removeChild(t),n.normalize()})}function Se(e,t){let n=e.startContainer.ownerDocument,a=e.commonAncestorContainer,r=[];if(a.nodeType===3)r.push(a);else{let o=n.createTreeWalker(a,4);for(let i=o.nextNode();i;i=o.nextNode())e.intersectsNode(i)&&r.push(i)}r.forEach(o=>{var l;if(!o.data.trim()||((l=o.parentElement)==null?void 0:l.namespaceURI)!=="http://www.w3.org/1999/xhtml")return;let i=n.createRange();if(i.setStart(o,o===e.startContainer?e.startOffset:0),i.setEnd(o,o===e.endContainer?e.endOffset:o.data.length),i.collapsed)return;let s=n.createElement("mark");s.className=te,s.dataset.annotationId=t,i.surroundContents(s)})}function ne(e,t,n={}){let a=e.ownerDocument.defaultView,r=n.api===void 0?me(a):n.api,o=[],i=[];ye(e);let s=[];return t.forEach(l=>{let g=D(e,l);g?(o.push(l.id),s.push([l.id,g])):i.push(l.id)}),r?a.CSS.highlights.set(he,new a.Highlight(...s.map(([,l])=>l))):s.reverse().forEach(([l,g])=>Se(g,l)),{found:o,lost:i}}var _="datalog-reading:";function ve(e=window){try{let t=e.localStorage,n=`${_}probe`;return t.setItem(n,"1"),t.removeItem(n),t}catch(t){if(t.name==="QuotaExceededError"||t.code===22)try{return e.localStorage.getItem(`${_}probe`),e.localStorage}catch(n){return null}return null}}function A(e,t=""){return{article:e,title:t,bookmarked:!1,annotations:[]}}function xe(e){return!!(e&&typeof e.id=="string"&&typeof e.quote=="string"&&e.quote.length>0)}function U(e){try{let t=JSON.parse(e);return t&&typeof t=="object"?t:null}catch(t){return null}}function B(e){if(!e||typeof e.article!="string"||e.article==="")return null;let t=A(e.article,typeof e.title=="string"?e.title:"");t.bookmarked=e.bookmarked===!0;let n=new Map;return(Array.isArray(e.annotations)?e.annotations:[]).filter(xe).forEach(a=>{let r={id:a.id,quote:a.quote};["prefix","suffix","section","note","created_at"].forEach(o=>{typeof a[o]=="string"&&(r[o]=a[o])}),n.set(r.id,r)}),t.annotations=[...n.values()],e.progress&&Number.isFinite(e.progress.ratio)&&(t.progress={ratio:Math.min(1,Math.max(0,e.progress.ratio)),anchor:typeof e.progress.anchor=="string"?e.progress.anchor:null},typeof e.progress.updated_at=="string"&&(t.progress.updated_at=e.progress.updated_at)),typeof e.saved_at=="string"&&(t.saved_at=e.saved_at),typeof e.updated_at=="string"&&(t.updated_at=e.updated_at),t}function re(e=ve()){let t=!!e,n=c=>`${_}${c}`;function a(){let c=[];for(let f=0;f<e.length;f+=1){let p=e.key(f);p&&p.startsWith(_)&&p!==`${_}probe`&&c.push(p)}return c}function r(c){if(!t)return null;try{return B(U(e.getItem(n(c))))}catch(f){return null}}function o(c,f){if(!t)return!1;try{let p=B(q(C({},f),{article:c}));return p?(p.updated_at=new Date().toISOString(),e.setItem(n(c),JSON.stringify(p)),!0):!1}catch(p){return!1}}function i(c){if(!t)return!1;try{return e.removeItem(n(c)),!0}catch(f){return!1}}function s(){if(!t)return[];try{return a().map(c=>B(U(e.getItem(c)))).filter(Boolean)}catch(c){return[]}}function l(){if(!t)return!1;try{return a().forEach(c=>e.removeItem(c)),!0}catch(c){return!1}}function g(){return JSON.stringify({format:1,exported_at:new Date().toISOString(),articles:s()},null,2)}function h(c){let f=U(c),p=Array.isArray(f)?f:f&&Array.isArray(f.articles)?f.articles:null;if(!p)throw new Error("Not a reading data export");return p.reduce((x,k)=>{var N;let m=B(k);if(!m)return x;let E=r(m.article);if(E&&(m.annotations=[...new Map([...E.annotations,...m.annotations].map(w=>[w.id,w])).values()],m.bookmarked=m.bookmarked||E.bookmarked,m.title=m.title||E.title,m.saved_at=m.saved_at||E.saved_at,(!m.progress||(Date.parse((N=E.progress)==null?void 0:N.updated_at)||0)>(Date.parse(m.progress.updated_at)||0))&&(m.progress=E.progress)),!o(m.article,m))throw new Error("Reading data could not be saved");return x+1},0)}return{available:t,read:r,write:o,remove:i,all:s,clear:l,exportJSON:g,importJSON:h}}var Ee=.4;function ke({scrollY:e,innerHeight:t,contentTop:n,contentHeight:a,headings:r}){let o=e+t*Ee,i=a>0?Math.min(1,Math.max(0,(o-n)/a)):0,s=null;return r.forEach(l=>{l.top<=o&&(s=l.id)}),{ratio:Math.round(i*1e3)/1e3,anchor:s}}function oe(e,t,n){return!!(e&&typeof e.ratio=="number"&&e.ratio>=.05&&e.ratio<=.92&&t>n*1.5)}function ae({content:e,store:t,article:n,title:a,win:r=window,interval:o=1e3,shouldSave:i=()=>!0,onError:s=()=>{}}){let l=null,g=null,h=()=>{let k=e.getBoundingClientRect(),m=Array.from(e.querySelectorAll("h2[id], h3[id], h4[id]")).map(E=>({id:E.id,top:E.getBoundingClientRect().top+r.scrollY}));return ke({scrollY:r.scrollY,innerHeight:r.innerHeight,contentTop:k.top+r.scrollY,contentHeight:k.height,headings:m})},c=()=>{let k=h();if(!i(k)||g&&Math.abs(g.ratio-k.ratio)<.01)return;let m=t.read(n)||A(n,a);m.title=m.title||a,m.progress=q(C({},k),{updated_at:new Date().toISOString()}),t.write(n,m)?g=k:s()},f=()=>{l||(l=r.setTimeout(()=>{l=null,c()},o))},p=()=>{l!==null&&(r.clearTimeout(l),l=null,c())},x=()=>{r.document.visibilityState==="hidden"&&p()};return r.addEventListener("scroll",f,{passive:!0}),r.addEventListener("pagehide",p),r.document.addEventListener("visibilitychange",x),{stop(){r.removeEventListener("scroll",f),r.removeEventListener("pagehide",p),r.document.removeEventListener("visibilitychange",x),l&&r.clearTimeout(l),l=null},save:c,snapshot:h}}var be=new Set(["INPUT","TEXTAREA","SELECT"]);function M(e,t){return Object.keys(t).reduce((n,a)=>n.split(`{{${a}}}`).join(String(t[a])),e||"")}function Ce(){let e=globalThis.crypto;return e&&typeof e.randomUUID=="function"?e.randomUUID():`${Date.now().toString(36)}-${Math.random().toString(36).slice(2,10)}`}function qe(e){let t=e.activeElement;return!!(t&&(be.has(t.tagName)||t.isContentEditable))}function I(e){var a,r;let t=e.querySelector("[data-reading-status]"),n=((a=e.dataset)==null?void 0:a.saveFailed)||((r=e.querySelector("[data-reading-unavailable]"))==null?void 0:r.textContent)||"Reading data could not be saved.";t&&(t.textContent=n)}function ie(e,t){if(!t)return"";let n=e.ownerDocument.getElementById(t);return n&&e.contains(n)?n.textContent.trim():t}function we(e,t){let n=e.startContainer.nodeType===3?e.startContainer.parentElement:e.startContainer;n&&typeof n.scrollIntoView=="function"&&n.scrollIntoView({block:"center"});let a=t.getSelection&&t.getSelection();a&&(a.removeAllRanges(),a.addRange(e))}function se(e,t){let n=e.dataset.article,a=e.dataset.title||"",r=e.querySelector("[data-bookmark-label]")||e,o=()=>{let i=t.read(n),s=!!(i&&i.bookmarked);e.setAttribute("aria-pressed",s?"true":"false"),r.textContent=s?e.dataset.labelSaved:e.dataset.labelSave};return t.available?(e.addEventListener("click",()=>{let i=t.read(n)||A(n,a);i.title=i.title||a,i.bookmarked=!i.bookmarked,i.saved_at=i.bookmarked?new Date().toISOString():void 0,t.write(n,i)||I(e.ownerDocument),o()}),o(),{refresh:o}):(e.disabled=!0,e.title=e.dataset.unavailable||"",{refresh:o})}function le(e,t,n,a){let r=e.ownerDocument,o=r.defaultView,i=e.querySelector("[data-reading-status]"),s=f=>{i&&(i.textContent=f)},l=e.querySelector("[data-reading-export]");l&&l.addEventListener("click",()=>{let f=new o.Blob([t.exportJSON()],{type:"application/json"}),p=o.URL.createObjectURL(f),x=r.createElement("a");x.href=p,x.download="datalog-reading-data.json",r.body.appendChild(x),x.click(),x.remove(),o.URL.revokeObjectURL(p),s(l.dataset.done||"")});let g=e.querySelector("[data-reading-import]");g&&g.addEventListener("change",()=>{let f=g.files&&g.files[0];f&&(f.text().then(p=>{let x=t.importJSON(p);s(M(g.dataset.done,{count:x})),n()}).catch(()=>s(g.dataset.failed||"")),g.value="")});let h=e.querySelector("[data-reading-erase-article]");h&&a&&h.addEventListener("click",()=>{if(!t.remove(a))return I(e);s(h.dataset.done||""),n("erase")});let c=e.querySelector("[data-reading-erase-all]");c&&c.addEventListener("click",()=>{if(!(c.dataset.confirm&&!o.confirm(c.dataset.confirm))){if(!t.clear())return I(e);s(c.dataset.done||""),n("erase")}})}function Le(e,t,n={}){let a=e.ownerDocument,r=a.defaultView,o=e.dataset.article,i=e.dataset.title||"",s=n.content||a.querySelector(".post-content"),l=e.dataset.progress!=="false",g=e.dataset.highlights!=="false",h=a.querySelector("[data-reading-resume]"),c=e.querySelector("[data-reading-toolbar]"),f=e.querySelector("[data-reading-list-items]"),p=e.querySelector("[data-reading-empty]"),x=e.querySelector("[data-reading-item-template]"),k=e.querySelector("[data-reading-unavailable]"),m=n.bookmark?se(n.bookmark,t):null,E=null,N=[],w=null,b=()=>t.read(o)||A(o,i),$=d=>{d.title=d.title||i;let u=t.write(o,d);return u||I(e),u};if(!t.available)return k&&(k.hidden=!1),e.querySelectorAll("button, input").forEach(d=>{d.disabled=!0}),{available:!1,record:b,addAnnotation:()=>null,removeAnnotation:()=>!1,repaint:()=>null};let X=()=>{if(!s||!g)return{found:[],lost:[]};let d=ne(s,b().annotations);return N=d.lost,d},ce=()=>{if(!f||!x)return;let d=b().annotations;f.textContent="",p&&(p.hidden=d.length>0),d.forEach(u=>{let y=x.content.firstElementChild.cloneNode(!0);y.dataset.annotation=u.id;let S=y.querySelector("[data-annotation-quote]");S.textContent=u.quote.length>160?`${u.quote.slice(0,157)}\u2026`:u.quote;let v=y.querySelector("[data-annotation-section]");v.textContent=ie(s,u.section);let T=y.querySelector("[data-annotation-lost]");T.hidden=!N.includes(u.id);let H=y.querySelector("[data-annotation-note]");H.value=u.note||"",H.addEventListener("change",()=>{let O=b(),Y=O.annotations.find(ue=>ue.id===u.id);Y&&(Y.note=H.value,$(O))}),y.querySelector("[data-annotation-go]").addEventListener("click",()=>{let O=s&&D(s,u);O&&we(O,r)}),y.querySelector("[data-annotation-remove]").addEventListener("click",()=>{R.removeAnnotation(u.id)}),f.appendChild(y)})},L=()=>{X(),ce(),m&&m.refresh()},j=()=>{c&&(c.hidden=!0)},de=d=>{if(c&&(E=d,c.hidden=!1,typeof d.getBoundingClientRect=="function")){let u=d.getBoundingClientRect();c.style.top=`${Math.max(0,u.top+r.scrollY-c.offsetHeight-8)}px`,c.style.left=`${Math.max(0,u.left+r.scrollX)}px`}},J=()=>{let d=r.getSelection&&r.getSelection();if(!d||d.rangeCount===0||d.isCollapsed||!s)return null;let u=d.getRangeAt(0);return s.contains(u.commonAncestorContainer)?u:null},R={available:!0,record:b,repaint:X,addAnnotation(d,u=""){if(!s)return null;let y=ee(d,s);if(!y||y.quote.trim()==="")return null;let S=q(C({id:Ce()},y),{note:u,created_at:new Date().toISOString()}),v=b();return v.annotations.push(S),$(v)?(L(),S):null},removeAnnotation(d){let u=b(),y=u.annotations.length;return u.annotations=u.annotations.filter(S=>S.id!==d),u.annotations.length===y||!$(u)?!1:(L(),!0)},highlightSelection(d=!1){let u=E||J();if(!u)return null;let y=R.addAnnotation(u);if(!y)return null;E=null,j();let S=r.getSelection&&r.getSelection();if(S&&S.removeAllRanges(),y&&d&&f){let v=f.querySelector(`[data-annotation="${y.id}"] [data-annotation-note]`);v&&v.focus()}return y}};if(g&&c&&s){let d=null;a.addEventListener("selectionchange",()=>{d&&r.clearTimeout(d),d=r.setTimeout(()=>{let S=J();S?de(S.cloneRange()):c.contains(a.activeElement)||(E=null,j())},150)});let u=c.querySelector("[data-reading-highlight]"),y=c.querySelector("[data-reading-note]");u&&u.addEventListener("click",()=>R.highlightSelection(!1)),y&&y.addEventListener("click",()=>R.highlightSelection(!0)),a.addEventListener("keydown",S=>{if(!e.isConnected||S.defaultPrevented||S.isComposing||!S.altKey||!S.shiftKey||qe(a))return;let v=S.code?S.code.replace(/^Key/,"").toLowerCase():S.key.toLowerCase();(v==="h"||v==="n")&&(S.preventDefault(),R.highlightSelection(v==="n"))})}if(l&&s){let d=b().progress;if(h&&!r.location.hash&&oe(d,s.getBoundingClientRect().height,r.innerHeight)){let u=h.querySelector("[data-reading-resume-detail]");if(u){let v=ie(s,d.anchor),T=Math.round(d.ratio*100);u.textContent=`${v?`${v} \xB7 `:""}${M(h.dataset.progressLabel,{percent:T})}`}h.hidden=!1;let y=h.querySelector("[data-reading-resume-go]");y&&y.addEventListener("click",()=>{let v=d.anchor&&a.getElementById(d.anchor);if(v&&typeof v.scrollIntoView=="function")v.scrollIntoView({block:"start"});else{let T=s.getBoundingClientRect();r.scrollTo(0,T.top+r.scrollY+T.height*d.ratio-r.innerHeight*.4)}h.hidden=!0});let S=h.querySelector("[data-reading-resume-dismiss]");S&&S.addEventListener("click",()=>{h.hidden=!0})}w=ae({content:s,store:t,article:o,title:i,win:r,shouldSave:u=>!h||h.hidden?!0:u.ratio<d.ratio?!1:(h.hidden=!0,!0),onError:()=>I(e)})}return le(e,t,d=>{d==="erase"&&(w==null||w.stop(),h&&(h.hidden=!0)),L()},o),a.addEventListener("datalog:math-ready",L),a.addEventListener("datalog:viz-rendered",L),L(),R}function Re(e,t){let n=e.ownerDocument,a=e.querySelector("[data-reading-list-items]"),r=e.querySelector("[data-reading-list-empty]"),o=e.querySelector("[data-reading-unavailable]"),i=()=>{if(!a)return;let s=t.all().filter(l=>l.bookmarked||l.progress||l.annotations.length>0).sort((l,g)=>String(g.updated_at||"").localeCompare(String(l.updated_at||"")));a.textContent="",r&&(r.hidden=s.length>0),s.forEach(l=>{let g=n.createElement("li");g.className="reading-list__item";let h=n.createElement("a");h.href=l.article,h.textContent=l.title||l.article,g.appendChild(h);let c=n.createElement("span");c.className="reading-list__meta";let f=[];l.bookmarked&&f.push(e.dataset.savedLabel||""),l.progress&&f.push(M(e.dataset.progressLabel,{percent:Math.round(l.progress.ratio*100)})),l.annotations.length>0&&f.push(M(e.dataset.highlightsLabel,{count:l.annotations.length})),c.textContent=f.filter(Boolean).join(" \xB7 "),g.appendChild(c);let p=n.createElement("button");p.type="button",p.className="post-tool",p.textContent=e.dataset.removeLabel||"",p.addEventListener("click",()=>{if(!t.remove(l.article))return I(e);i()}),g.appendChild(p),a.appendChild(g)})};return t.available?(le(e,t,i),i(),{render:i}):(o&&(o.hidden=!1),e.querySelectorAll("button, input").forEach(s=>{s.disabled=!0}),{render:i})}function V(e=document,t=re()){let n=e.querySelector("[data-reading-state]"),a=e.querySelector("[data-reading-list]"),r=e.querySelector("[data-bookmark-toggle]"),o={article:null,list:null};return n?o.article=Le(n,t,{bookmark:r}):r&&se(r,t),a&&(o.list=Re(a,t)),o}document.readyState==="loading"?document.addEventListener("DOMContentLoaded",()=>V()):V();export{V as initReadingState};
@@ -3,9 +3,9 @@
3
3
  "assets/js/academic.js": "c4a510fe7457b70273361e0dec773299604d17c2fbd43eab62a78dd9ff2175da",
4
4
  "assets/js/analytics-dashboard.js": "98458c96b2f93c4842a3c4c4197cbcc6e1ebc84f74b322e1935408d3d0d8a3ae",
5
5
  "assets/js/comments.js": "5710a30b20bdffa02b256ec9f9e6b07f0871fa5903eb5b60880aba6e915956f5",
6
- "assets/js/comments/thread.js": "440b5adb0e6595df75fa79f34c240461e16ede29e54dd8a32ef985cc9dabfd59",
6
+ "assets/js/comments/thread.js": "33e15eaba2eb8d18cf407eb1c1bfacc7b211d29317536e71c2c2e6ad115cea31",
7
7
  "assets/js/contact.js": "7b93f9f5d8f3c0852303ea22c970845072935de50fd6f765087825e60b845c69",
8
- "assets/js/contact/form.js": "e1645a734beee64a7ed025896a8e3dcbee3a1cbfa7d35df6043994b9f52844ce",
8
+ "assets/js/contact/form.js": "502c755ee72b7f6d050cd3965c25c4979586c1e5c444dd944a77767925c8c5ae",
9
9
  "assets/js/core/copy-buttons.js": "339e890158e3c9e5b06f85c56f8658b352a15df8c955e1208dbfa8a75443a55e",
10
10
  "assets/js/core/dark-mode.js": "1d4a699f6b810c829138823e346d96fa95bb89a3247937f5ff001a476d1856f3",
11
11
  "assets/js/core/github-cards.js": "7eb0c4f489fd838f4c62ed0e5ba59ad4c51e01c8a7ccf04c2ef26c1b47fa284e",
@@ -15,23 +15,23 @@
15
15
  "assets/js/core/search-hotkeys.js": "19881663e3db178e92ab58a382c5369aab5a3045b58410d906eb117924125186",
16
16
  "assets/js/core/skip-links.js": "138265a3aa853bf07a798efd03d56b14a5733f6e6c1810ccf87e4cfb86d52c30",
17
17
  "assets/js/corrections.js": "16010732e7d653490d7b08d8dea88616008f9ae15efbc0f42848c52a7c8a6209",
18
- "assets/js/corrections/form.js": "965df11af774ab219a45ea993b17418e93acbf7cb44b83f402c33235369a3810",
19
- "assets/js/dynamic-services/client.js": "a495de0733d4cbac24787f2d5b8583e09643862b2c8f93b5513701c30927f2b1",
20
- "assets/js/dynamic-services/form-state.js": "0711cb2280a1c38cbb8f9ea1f075a6fb3d91ce4ab32647e54351e51ab1e3ebf1",
18
+ "assets/js/corrections/form.js": "525c281ca7c964b0415c5571360b87c7827299d870c673d87f2b1b398b240e8b",
19
+ "assets/js/dynamic-services/client.js": "32e9cf9ad040553b2b96c3d92733c9b7626846f6dfb0aa6072ceab9f498b90b0",
20
+ "assets/js/dynamic-services/form-state.js": "96bfe09e7ea789d57d50f9f36cce8f53823d650dab6e5b4cc10f17c3fbec504e",
21
21
  "assets/js/loader.js": "4544818b74f4c34a634c58008ca3348ad0bede869ccf81af27ba4dad1cbb9283",
22
22
  "assets/js/main.js": "3f613ee824f48b83f9065f087bc8e1a75f0368e37a23dacf3196c2b9ffcd38ad",
23
23
  "assets/js/math.js": "267693a35a1b9cbf3a9c5475fdaadf3eac5b715bd60af0761b4c0adf0eaf521a",
24
24
  "assets/js/moderation.js": "2e9bcb00f0dcf4dd436458d99764989c9728794716dd33c59310d65206323c46",
25
- "assets/js/moderation/inbox.js": "853e517447d9123a938858e206080e0cc5b27b44603d2f936f6d709774fd1d63",
25
+ "assets/js/moderation/inbox.js": "80d3cdf358faf1f0440a4b99f2609cc8a958700c0a4768f00ae10dd6a3c5b624",
26
26
  "assets/js/notebook.js": "361f716a76b398aeb564ef05ba026018b1bc083de28d75c9b8df5776a6ccb21a",
27
27
  "assets/js/reactions.js": "8386cffaacba9a1f976274f8145b95e9c1c2409da977dfc94ca195477971848b",
28
- "assets/js/reactions/widget.js": "9dc58e5f3f8a95937ed3ffb640eab0aa4a79d5aabda36ea7791937e7320b3778",
28
+ "assets/js/reactions/widget.js": "8407a55582e017fc9652cf2968db084c06e63e116150abf11c4eac9b7ef90596",
29
29
  "assets/js/reading-state.js": "d2543904e203ccad34e0950bdeb2c526ad0908ee147d8f031e421b6bd0115fd6",
30
- "assets/js/reading-state/anchors.js": "f63336769fad19836c7be98c0f80d52147341ece776fcb25b47cbf42a54c1f2f",
31
- "assets/js/reading-state/highlights.js": "65f58cebcbd622ec99373d8ba9083c10b37d45b34d926e7c8cfa23e08fa93e38",
32
- "assets/js/reading-state/progress.js": "bcbb2ac2783e50ec71ca4d5b243d4083212fa9e23822438a77911c4f1b427f33",
33
- "assets/js/reading-state/storage.js": "961c50c9028187c68a29b30617a05bcfb25e475e63edd4f45ed7b08c40d91d06",
34
- "assets/js/reading-state/ui.js": "e0583dc9ef2025012b2918b636d5ad18e4ee30b89d86c0a40bd0223b16e5e7e8",
30
+ "assets/js/reading-state/anchors.js": "d9051f08c4aff812b841fc1e8ca2eee5859bdb856f17015399fae41fb7a27ab2",
31
+ "assets/js/reading-state/highlights.js": "c806bb70dcc40affac4367a3ca0c7cdbd1e64b8e59571346185f1257168c8ad8",
32
+ "assets/js/reading-state/progress.js": "96d9c1a4692b958e4d3a43b0701cd4c7254f4b20404394deb2cd8e5984d5e33b",
33
+ "assets/js/reading-state/storage.js": "9e0eac8d71be811e5f0d27f75f85af1b638e81332572e33b2213bddef6991d9a",
34
+ "assets/js/reading-state/ui.js": "56e443887597ed71c776a8fad99de48d5798ae5be64c0a37cca16f1475388380",
35
35
  "assets/js/search.js": "602c89a4a2608ba6662140975a381b8d7d8847c0a10ba11b72247b27c2104f8d",
36
36
  "assets/js/search/analytics.js": "e0473ca5b34073e3246b5b1baec9d4d670a067102e98369208fdc10ff8e4cc1e",
37
37
  "assets/js/search/app.js": "66d93d600d184132c7f6de57764860b5d890b0e777a68e1ec3535399158eec20",
@@ -41,11 +41,11 @@
41
41
  "assets/js/search/render.js": "75eaec880b1fe09a27bf11515a813628fc2a299cacaf340ebd1fd6cc4f5ea678",
42
42
  "assets/js/search/utils.js": "a805c21d30ce0d02007609d510c43e99cbb53681ed37b77dd0755af4ccb39e08",
43
43
  "assets/js/subscriptions.js": "053b8387521deb5d4f940ef9effc816bc7e754e351460bda098cccd112d0b0c3",
44
- "assets/js/subscriptions/form.js": "ff2bbe7a41367e15b964f0b996bf3e04cd3d8c99eca06182e74ffdb7e3980c3c",
45
- "assets/js/subscriptions/manage.js": "5d7661edb6930cb9b582b36323ce7af08c5340bbf20c8ca19fefb343608b9a77",
46
- "assets/js/visualizations.js": "114cf5d7b5ed286e1e8d17174fa126787311b8585c2b03f7e73bc960b3c08051",
44
+ "assets/js/subscriptions/form.js": "8eee3b658940140bdada2648daae37f11261e38a5a896e863771b12586030898",
45
+ "assets/js/subscriptions/manage.js": "0600cb83cf580e2430c87b9128fba62d42aa1741a12d8ce49ddefb940881f4f3",
46
+ "assets/js/visualizations.js": "a0414ea4ec2fd0829d049642420d753529c331966958c298901bff46d8cc26d4",
47
47
  "assets/js/webmentions.js": "f36402477bf0e6bd835e3ccf3a0fb67eb3af590ef6da179613eab10409e79803",
48
- "assets/js/webmentions/list.js": "008a18cb6a9d631fe8711125bf16430e4af0867f73c5d24912f14dbc5b22bb66",
48
+ "assets/js/webmentions/list.js": "64dfbad25539d4ae2571bcd61c24a869520c1ec3c1a191b22d4984f1e88c21cf",
49
49
  "package-lock.json": "47c57dbc04bc096bd3d1c0153bf214e1b9127167cd3625947bc518cb0c5888d1",
50
50
  "scripts/build_js.mjs": "b976e20ead1e5b69973b5f7413480f0b004db4dfac5a843c220059794eb57af3"
51
51
  }
@@ -1 +1 @@
1
- import{a as q,b as U,c as L}from"./chunks/chunk-V7734B2G.js";import{a as F,c as k}from"./chunks/chunk-2DYDWUFX.js";import"./chunks/chunk-PATLC23F.js";var p="subscriptions",C=/^[^\s@]+@[^\s@]+\.[^\s@]+$/;function O(e,r){let a=e.querySelector(r);if(!a)return{};try{return JSON.parse(a.textContent)||{}}catch(t){return{}}}function T(){let e=globalThis.crypto;return e&&typeof e.randomUUID=="function"?e.randomUUID():`${Date.now().toString(36)}-${Math.random().toString(36).slice(2,10)}`}function $(e,r={}){let a={email:e.email||""};return r.hasTopics&&(a.topics=[].concat(e.topics||[]).filter(Boolean)),r.sourceUrl&&(a.source_url=r.sourceUrl),r.locale&&(a.locale=r.locale),a}function M(e,r,a={}){let t={};return C.test(e.email)||(t.email=a.email_invalid||"That does not look like an email address."),Array.isArray(e.topics)&&e.topics.length===0&&(t.topics=a.topics_required||"Pick at least one."),r.website&&(t.website="spam"),Object.keys(t).length>0?t:null}function _(e,r={}){let a=r.client||k(),t=e.querySelector("form"),o=O(e,"[data-subscribe-labels]"),y=o.errors||{},S=e.ownerDocument,u=S.querySelector('link[rel="canonical"]'),A={sourceUrl:e.dataset.subscribeSource||u&&u.href||"",locale:e.dataset.subscribeLocale||S.documentElement.lang||"",hasTopics:t.querySelector('[name="topics"]')!==null},w=e.dataset.subscribeDoubleOptIn!=="false",h=null,v=c=>{t.dataset.result=c,q(t,"success",o[c]||"")};if(!a.enabled)return q(t,"disabled",y.disabled||""),{form:t,available:!1,submit:async()=>null};let f=()=>(h||(h=a.feature(p).catch(c=>{throw h=null,L(t,c,y),t.dataset.state="disabled",t.querySelectorAll("button[type=submit]").forEach(i=>{i.disabled=!0}),c})),h);t.addEventListener("focusin",()=>f().catch(()=>{}),{once:!0});let b={form:t,available:!0,async submit(){let c=U(t),i=$(c,A),d=M(i,c,o);if(delete t.dataset.result,d)return d.website?(v("pending"),null):(q(t,"invalid",y.invalid||"",d),null);q(t,"pending",o.sending||"");try{await f()}catch(l){return null}try{let l=await a.post(a.pathFor(p),i,{idempotencyKey:T()}),m=l&&l.data&&typeof l.data.status=="string"?l.data.status:"";return t.reset(),v(m==="confirmed"||m==="subscribed"||m===""&&!w?"confirmed":"pending"),l}catch(l){return l&&l.kind==="conflict"?v("duplicate"):L(t,l,y),null}}};return t.addEventListener("submit",c=>{c.preventDefault(),b.submit()}),b}function D(e=document){return Array.from(e.querySelectorAll("[data-subscribe]")).map(r=>_(r))}var N=["confirm","unsubscribe","manage"],R=/^[A-Za-z0-9._~-]{8,512}$/;function j(e,r){let a=e.querySelector(r);if(!a)return{};try{return JSON.parse(a.textContent)||{}}catch(t){return{}}}function K(e){let r=new URLSearchParams(e||""),a=N.find(o=>r.has(o));if(!a)return null;let t=(r.get(a)||"").trim();return R.test(t)?{action:a,token:t}:null}function P(e,r={}){let t=e.ownerDocument.defaultView,o=r.client||k(),y=r.location||t&&t.location||{search:"",pathname:"/"},S=r.history===void 0?t&&t.history:r.history,u=j(e,"[data-manage-labels]"),A=u.errors||{},w=e.querySelector("[data-manage-status]"),h=e.querySelector("[data-manage-idle]"),v=e.querySelector("[data-manage-unsubscribe-panel]"),f=e.querySelector("[data-manage-preferences]"),b=K(y.search),c=b?`${o.pathFor(p)}/${encodeURIComponent(b.token)}`:"",i=(n,s="",E=!1)=>{e.dataset.state=n,w&&(w.textContent=s,w.hidden=s==="",w.setAttribute("role",E?"alert":"status"))},d=n=>{[h,v,f].forEach(s=>{s&&(s.hidden=s!==n)})},l=n=>{let s=n&&(n.kind==="not_found"||n.status===410);d(null),i("error",s?u.invalid_link||"":F(n,A),!0)},m=n=>{e.setAttribute("aria-busy",n?"true":"false"),e.querySelectorAll("button").forEach(s=>{s.disabled=n})},g={root:e,request:b,async confirm(){d(null),i("pending",u.confirming||"");try{await o.feature(p);let n=await o.post(`${o.pathFor(p)}/confirm`,{token:b.token});return i("confirmed",u.confirmed||""),n}catch(n){return l(n),null}},async unsubscribe(){m(!0),i("pending",u.unsubscribing||"");try{await o.feature(p);let n=await o.delete(c);return d(null),i("unsubscribed",u.unsubscribed||""),n}catch(n){return l(n),null}finally{m(!1)}},async load(){d(null),i("loading",u.loading||"");try{await o.feature(p);let n=await o.get(c),s=n&&n.data&&Array.isArray(n.data.topics)?n.data.topics.map(String):[];return f&&f.querySelectorAll('[name="topics"]').forEach(E=>{E.checked=s.includes(E.value)}),d(f),i("loaded"),s}catch(n){return l(n),null}},async save(){let n=Array.from(f.querySelectorAll('[name="topics"]:checked')).map(s=>s.value);m(!0),i("pending",u.saving||"");try{let s=await o.patch(c,{topics:n});return i("saved",u.saved||""),s}catch(s){return i("error",F(s,A),!0),null}finally{m(!1)}}};return e.querySelectorAll("[data-manage-unsubscribe]").forEach(n=>{n.addEventListener("click",()=>g.unsubscribe())}),f&&f.addEventListener("submit",n=>{n.preventDefault(),g.save()}),o.enabled?b?(S&&typeof S.replaceState=="function"&&S.replaceState(null,"",y.pathname),b.action==="confirm"?g.confirm():b.action==="manage"?g.load():(d(v),i("idle")),g):(d(h),i("idle"),g):(d(null),i("disabled",A.disabled||""),g)}function I(e=document){return Array.from(e.querySelectorAll("[data-subscription-manage]")).map(r=>P(r))}function x(){D(document),I(document)}document.readyState==="loading"?document.addEventListener("DOMContentLoaded",x,{once:!0}):x();
1
+ import{a as O,b as R,c as q,d as T,e as I}from"./chunks/chunk-WIRUK3OZ.js";import{a as x,c as C}from"./chunks/chunk-VZ5WKQVA.js";import"./chunks/chunk-PATLC23F.js";var h="subscriptions",M=/^[^\s@]+@[^\s@]+\.[^\s@]+$/;function N(e,a){let s=e.querySelector(a);if(!s)return{};try{return JSON.parse(s.textContent)||{}}catch(t){return{}}}function $(e,a={}){let s={email:e.email||""};return a.hasTopics&&(s.topics=[].concat(e.topics||[]).filter(Boolean)),a.sourceUrl&&(s.source_url=a.sourceUrl),a.locale&&(s.locale=a.locale),s}function j(e,a,s={}){let t={};return M.test(e.email)||(t.email=s.email_invalid||"That does not look like an email address."),Array.isArray(e.topics)&&e.topics.length===0&&(t.topics=s.topics_required||"Pick at least one."),a.website&&(t.website="spam"),Object.keys(t).length>0?t:null}function P(e,a={}){let s=a.client||C(),t=e.querySelector("form"),c=N(e,"[data-subscribe-labels]"),g=c.errors||{},S=e.ownerDocument,o=S.querySelector('link[rel="canonical"]'),k={sourceUrl:e.dataset.subscribeSource||o&&o.href||"",locale:e.dataset.subscribeLocale||S.documentElement.lang||"",hasTopics:t.querySelector('[name="topics"]')!==null},v=e.dataset.subscribeDoubleOptIn!=="false",E=O(t),w=d=>{t.dataset.result=d,q(t,"success",c[d]||"")};if(!s.enabled)return q(t,"disabled",g.disabled||""),{form:t,available:!1,submit:async()=>null};let f=R(s,h,t,g);t.addEventListener("focusin",()=>f().catch(()=>{}),{once:!0});let b={form:t,available:!0,async submit(){let d=T(t),p=$(d,k),l=j(p,d,c);if(delete t.dataset.result,l)return l.website?(w("pending"),null):(q(t,"invalid",g.invalid||"",l),null);q(t,"pending",c.sending||"");try{await f()}catch(i){return null}try{let i=await s.post(s.pathFor(h),p,{idempotencyKey:E.key(p)}),u=i&&i.data&&typeof i.data.status=="string"?i.data.status:"";return E.clear(),t.reset(),w(u==="confirmed"||u==="subscribed"||u===""&&!v?"confirmed":"pending"),i}catch(i){return i&&i.kind==="conflict"?w("duplicate"):I(t,i,g),null}}};return t.addEventListener("submit",d=>{d.preventDefault(),b.submit()}),b}function U(e=document){return Array.from(e.querySelectorAll("[data-subscribe]")).map(a=>P(a))}var J=["confirm","unsubscribe","manage"],K=/^[A-Za-z0-9._~-]{8,512}$/;function z(e,a){let s=e.querySelector(a);if(!s)return{};try{return JSON.parse(s.textContent)||{}}catch(t){return{}}}function B(e){let a=new URLSearchParams(e||""),s=J.find(c=>a.has(c));if(!s)return null;let t=(a.get(s)||"").trim();return K.test(t)?{action:s,token:t}:null}function V(e,a={}){let s=e.ownerDocument,t=s.defaultView,c=a.client||C(),g=a.location||t&&t.location||{search:"",pathname:"/"},S=a.history===void 0?t&&t.history:a.history,o=z(e,"[data-manage-labels]"),k=o.errors||{},v=e.querySelector("[data-manage-status]"),E=e.querySelector("[data-manage-idle]"),w=e.querySelector("[data-manage-unsubscribe-panel]"),f=e.querySelector("[data-manage-preferences]"),b=B(g.search),d=b?`${c.pathFor(h)}/${encodeURIComponent(b.token)}`:"",p=null,l=s.createElement("button");l.type="button",l.className="post-tool",l.dataset.manageRetry="",l.textContent=o.retry||"Try again",l.hidden=!0,l.addEventListener("click",()=>p==null?void 0:p()),e.appendChild(l);let i=(r,n="",A=!1)=>{e.dataset.state=r,l.hidden=r!=="error"||!p,v&&(v.textContent=n,v.hidden=n==="",v.setAttribute("role",A?"alert":"status"))},u=r=>{[E,w,f].forEach(n=>{n&&(n.hidden=n!==r)})},F=(r,n,A)=>{let L=n&&r&&(r.kind==="not_found"||r.status===410);p=r!=null&&r.retryable?A:null,u(null),i("error",L?o.invalid_link||"":x(r,k),!0)},y=r=>{e.setAttribute("aria-busy",r?"true":"false"),e.querySelectorAll("button").forEach(n=>{n.disabled=r})},m={root:e,request:b,async confirm(){let r=!1;y(!0),u(null),i("pending",o.confirming||"");try{await c.feature(h),r=!0;let n=await c.post(`${c.pathFor(h)}/confirm`,{token:b.token});return i("confirmed",o.confirmed||""),n}catch(n){return F(n,r,()=>m.confirm()),null}finally{y(!1)}},async unsubscribe(){let r=!1;y(!0),i("pending",o.unsubscribing||"");try{await c.feature(h),r=!0;let n=await c.delete(d);return u(null),i("unsubscribed",o.unsubscribed||""),n}catch(n){return F(n,r,()=>m.unsubscribe()),null}finally{y(!1)}},async load(){let r=!1;y(!0),u(null),i("loading",o.loading||"");try{await c.feature(h),r=!0;let n=await c.get(d),A=n&&n.data&&Array.isArray(n.data.topics)?n.data.topics.map(String):[];return f&&f.querySelectorAll('[name="topics"]').forEach(L=>{L.checked=A.includes(L.value)}),u(f),i("loaded"),A}catch(n){return F(n,r,()=>m.load()),null}finally{y(!1)}},async save(){let r=Array.from(f.querySelectorAll('[name="topics"]:checked')).map(n=>n.value);y(!0),i("pending",o.saving||"");try{let n=await c.patch(d,{topics:r});return i("saved",o.saved||""),n}catch(n){return i("error",x(n,k),!0),null}finally{y(!1)}}};return e.querySelectorAll("[data-manage-unsubscribe]").forEach(r=>{r.addEventListener("click",()=>m.unsubscribe())}),f&&f.addEventListener("submit",r=>{r.preventDefault(),m.save()}),c.enabled?b?(S&&typeof S.replaceState=="function"&&S.replaceState(null,"",g.pathname),b.action==="confirm"?m.confirm():b.action==="manage"?m.load():(u(w),i("idle")),m):(u(E),i("idle"),m):(u(null),i("disabled",k.disabled||""),m)}function D(e=document){return Array.from(e.querySelectorAll("[data-subscription-manage]")).map(a=>V(a))}function _(){U(document),D(document)}document.readyState==="loading"?document.addEventListener("DOMContentLoaded",_,{once:!0}):_();