@tryghost/comments-ui 1.4.6 → 1.4.8

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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tryghost/comments-ui",
3
- "version": "1.4.6",
3
+ "version": "1.4.8",
4
4
  "license": "MIT",
5
5
  "repository": "https://github.com/TryGhost/Ghost",
6
6
  "author": "Ghost Foundation",
@@ -55,7 +55,7 @@
55
55
  "@tiptap/extension-text": "2.26.3",
56
56
  "@tiptap/pm": "2.26.3",
57
57
  "@tiptap/react": "2.26.3",
58
- "@tryghost/debug": "0.1.40",
58
+ "@tryghost/debug": "2.1.0",
59
59
  "react": "17.0.2",
60
60
  "react-dom": "17.0.2",
61
61
  "react-string-replace": "1.1.1"
@@ -85,5 +85,10 @@
85
85
  "vite-plugin-css-injected-by-js": "3.5.2",
86
86
  "vite-plugin-svgr": "3.3.0",
87
87
  "vitest": "1.6.1"
88
+ },
89
+ "nx": {
90
+ "tags": [
91
+ "i18n"
92
+ ]
88
93
  }
89
94
  }
@@ -168,5 +168,5 @@ In order to be iterable, non-array objects must have a [Symbol.iterator]() metho
168
168
  * @license MIT
169
169
  */function eS(t,e){if(t===e)return 0;for(var n=t.length,o=e.length,r=0,i=Math.min(n,o);r<i;++r)if(t[r]!==e[r]){n=t[r],o=e[r];break}return n<o?-1:o<n?1:0}function ps(t){return tt.Buffer&&typeof tt.Buffer.isBuffer=="function"?tt.Buffer.isBuffer(t):!!(t!=null&&t._isBuffer)}var Et=Xv,z2=Object.prototype.hasOwnProperty,tS=Array.prototype.slice,nS=function(){return(function(){}).name==="foo"}();function oS(t){return Object.prototype.toString.call(t)}function rS(t){return ps(t)||typeof tt.ArrayBuffer!="function"?!1:typeof ArrayBuffer.isView=="function"?ArrayBuffer.isView(t):t?!!(t instanceof DataView||t.buffer&&t.buffer instanceof ArrayBuffer):!1}var te=kv.exports=lS,F2=/\s*function\s+([^\(\s]*)\s*/;function iS(t){if(Et.isFunction(t)){if(nS)return t.name;var e=t.toString(),n=e.match(F2);return n&&n[1]}}te.AssertionError=function(e){this.name="AssertionError",this.actual=e.actual,this.expected=e.expected,this.operator=e.operator,e.message?(this.message=e.message,this.generatedMessage=!1):(this.message=B2(this),this.generatedMessage=!0);var n=e.stackStartFunction||et;if(Error.captureStackTrace)Error.captureStackTrace(this,n);else{var o=new Error;if(o.stack){var r=o.stack,i=iS(n),s=r.indexOf(`
170
170
  `+i);if(s>=0){var a=r.indexOf(`
171
- `,s+1);r=r.substring(a+1)}this.stack=r}}},Et.inherits(te.AssertionError,Error);function sS(t,e){return typeof t=="string"?t.length<e?t:t.slice(0,e):t}function aS(t){if(nS||!Et.isFunction(t))return Et.inspect(t);var e=iS(t),n=e?": "+e:"";return"[Function"+n+"]"}function B2(t){return sS(aS(t.actual),128)+" "+t.operator+" "+sS(aS(t.expected),128)}function et(t,e,n,o,r){throw new te.AssertionError({message:n,actual:t,expected:e,operator:o,stackStartFunction:r})}te.fail=et;function lS(t,e){t||et(t,!0,e,"==",te.ok)}te.ok=lS,te.equal=function(e,n,o){e!=n&&et(e,n,o,"==",te.equal)},te.notEqual=function(e,n,o){e==n&&et(e,n,o,"!=",te.notEqual)},te.deepEqual=function(e,n,o){Er(e,n,!1)||et(e,n,o,"deepEqual",te.deepEqual)},te.deepStrictEqual=function(e,n,o){Er(e,n,!0)||et(e,n,o,"deepStrictEqual",te.deepStrictEqual)};function Er(t,e,n,o){if(t===e)return!0;if(ps(t)&&ps(e))return eS(t,e)===0;if(Et.isDate(t)&&Et.isDate(e))return t.getTime()===e.getTime();if(Et.isRegExp(t)&&Et.isRegExp(e))return t.source===e.source&&t.global===e.global&&t.multiline===e.multiline&&t.lastIndex===e.lastIndex&&t.ignoreCase===e.ignoreCase;if((t===null||typeof t!="object")&&(e===null||typeof e!="object"))return n?t===e:t==e;if(rS(t)&&rS(e)&&oS(t)===oS(e)&&!(t instanceof Float32Array||t instanceof Float64Array))return eS(new Uint8Array(t.buffer),new Uint8Array(e.buffer))===0;if(ps(t)!==ps(e))return!1;o=o||{actual:[],expected:[]};var r=o.actual.indexOf(t);return r!==-1&&r===o.expected.indexOf(e)?!0:(o.actual.push(t),o.expected.push(e),H2(t,e,n,o))}function cS(t){return Object.prototype.toString.call(t)=="[object Arguments]"}function H2(t,e,n,o){if(t==null||e===null||e===void 0)return!1;if(Et.isPrimitive(t)||Et.isPrimitive(e))return t===e;if(n&&Object.getPrototypeOf(t)!==Object.getPrototypeOf(e))return!1;var r=cS(t),i=cS(e);if(r&&!i||!r&&i)return!1;if(r)return t=tS.call(t),e=tS.call(e),Er(t,e,n);var s=pS(t),a=pS(e),l,c;if(s.length!==a.length)return!1;for(s.sort(),a.sort(),c=s.length-1;c>=0;c--)if(s[c]!==a[c])return!1;for(c=s.length-1;c>=0;c--)if(l=s[c],!Er(t[l],e[l],n,o))return!1;return!0}te.notDeepEqual=function(e,n,o){Er(e,n,!1)&&et(e,n,o,"notDeepEqual",te.notDeepEqual)},te.notDeepStrictEqual=uS;function uS(t,e,n){Er(t,e,!0)&&et(t,e,n,"notDeepStrictEqual",uS)}te.strictEqual=function(e,n,o){e!==n&&et(e,n,o,"===",te.strictEqual)},te.notStrictEqual=function(e,n,o){e===n&&et(e,n,o,"!==",te.notStrictEqual)};function dS(t,e){if(!t||!e)return!1;if(Object.prototype.toString.call(e)=="[object RegExp]")return e.test(t);try{if(t instanceof e)return!0}catch{}return Error.isPrototypeOf(e)?!1:e.call({},t)===!0}function V2(t){var e;try{t()}catch(n){e=n}return e}function mS(t,e,n,o){var r;if(typeof e!="function")throw new TypeError('"block" argument must be a function');typeof n=="string"&&(o=n,n=null),r=V2(e),o=(n&&n.name?" ("+n.name+").":".")+(o?" "+o:"."),t&&!r&&et(r,n,"Missing expected exception"+o);var i=typeof o=="string",s=!t&&Et.isError(r),a=!t&&r&&!n;if((s&&i&&dS(r,n)||a)&&et(r,n,"Got unwanted exception"+o),t&&r&&n&&!dS(r,n)||!t&&r)throw r}te.throws=function(t,e,n){mS(!0,t,e,n)},te.doesNotThrow=function(t,e,n){mS(!1,t,e,n)},te.ifError=function(t){if(t)throw t};function fS(t,e){t||et(t,!0,e,"==",fS)}te.strict=L2(fS,te,{equal:te.strictEqual,deepEqual:te.deepStrictEqual,notEqual:te.notStrictEqual,notDeepEqual:te.notDeepStrictEqual}),te.strict.strict=te.strict;var pS=Object.keys||function(t){var e=[];for(var n in t)z2.call(t,n)&&e.push(n);return e},_2=kv.exports,U2=_2,Y2=function(t){var e,n,o,r,i;for(e=Error.prepareStackTrace,Error.prepareStackTrace=function(s,a){return Error.prepareStackTrace=e,a},n=new Error().stack,i=0;i<n.length&&n[i].getFileName()!==__filename;)i++;U2(i<n.length,"Unexpected: unable to find caller/index.js in the stack"),t=!t||isNaN(t)?1:t>n.length-2?n.length-2:t,n=n.slice(i+t+1);do r=n.shift(),o=r&&r.getFileName();while(n.length&&o==="module.js");return o};const J2=Sr,K2=Sr,hS=lT,W2=Y2;yf.getCallerRoot=function(){try{return hS(W2(2))}catch{return}},yf.getProcessRoot=function(){let e=process.cwd();const n=K2.join(e,"current");try{J2.statSync(n).isDirectory()&&(e=n)}catch{}try{return hS(e)}catch{return}};var q2=yf,Tf={exports:{}},Mf,gS;function G2(){if(gS)return Mf;gS=1;var t=1e3,e=t*60,n=e*60,o=n*24,r=o*7,i=o*365.25;Mf=function(u,d){d=d||{};var m=typeof u;if(m==="string"&&u.length>0)return s(u);if(m==="number"&&isFinite(u))return d.long?l(u):a(u);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(u))};function s(u){if(u=String(u),!(u.length>100)){var d=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(u);if(d){var m=parseFloat(d[1]),f=(d[2]||"ms").toLowerCase();switch(f){case"years":case"year":case"yrs":case"yr":case"y":return m*i;case"weeks":case"week":case"w":return m*r;case"days":case"day":case"d":return m*o;case"hours":case"hour":case"hrs":case"hr":case"h":return m*n;case"minutes":case"minute":case"mins":case"min":case"m":return m*e;case"seconds":case"second":case"secs":case"sec":case"s":return m*t;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return m;default:return}}}}function a(u){var d=Math.abs(u);return d>=o?Math.round(u/o)+"d":d>=n?Math.round(u/n)+"h":d>=e?Math.round(u/e)+"m":d>=t?Math.round(u/t)+"s":u+"ms"}function l(u){var d=Math.abs(u);return d>=o?c(u,d,o,"day"):d>=n?c(u,d,n,"hour"):d>=e?c(u,d,e,"minute"):d>=t?c(u,d,t,"second"):u+" ms"}function c(u,d,m,f){var p=d>=m*1.5;return Math.round(u/m)+" "+f+(p?"s":"")}return Mf}function Q2(t){n.debug=n,n.default=n,n.coerce=l,n.disable=s,n.enable=r,n.enabled=a,n.humanize=G2(),n.destroy=c,Object.keys(t).forEach(u=>{n[u]=t[u]}),n.names=[],n.skips=[],n.formatters={};function e(u){let d=0;for(let m=0;m<u.length;m++)d=(d<<5)-d+u.charCodeAt(m),d|=0;return n.colors[Math.abs(d)%n.colors.length]}n.selectColor=e;function n(u){let d,m=null,f,p;function g(...h){if(!g.enabled)return;const y=g,w=Number(new Date),v=w-(d||w);y.diff=v,y.prev=d,y.curr=w,d=w,h[0]=n.coerce(h[0]),typeof h[0]!="string"&&h.unshift("%O");let S=0;h[0]=h[0].replace(/%([a-zA-Z%])/g,($,k)=>{if($==="%%")return"%";S++;const N=n.formatters[k];if(typeof N=="function"){const O=h[S];$=N.call(y,O),h.splice(S,1),S--}return $}),n.formatArgs.call(y,h),(y.log||n.log).apply(y,h)}return g.namespace=u,g.useColors=n.useColors(),g.color=n.selectColor(u),g.extend=o,g.destroy=n.destroy,Object.defineProperty(g,"enabled",{enumerable:!0,configurable:!1,get:()=>m!==null?m:(f!==n.namespaces&&(f=n.namespaces,p=n.enabled(u)),p),set:h=>{m=h}}),typeof n.init=="function"&&n.init(g),g}function o(u,d){const m=n(this.namespace+(typeof d>"u"?":":d)+u);return m.log=this.log,m}function r(u){n.save(u),n.namespaces=u,n.names=[],n.skips=[];const d=(typeof u=="string"?u:"").trim().replace(/\s+/g,",").split(",").filter(Boolean);for(const m of d)m[0]==="-"?n.skips.push(m.slice(1)):n.names.push(m)}function i(u,d){let m=0,f=0,p=-1,g=0;for(;m<u.length;)if(f<d.length&&(d[f]===u[m]||d[f]==="*"))d[f]==="*"?(p=f,g=m,f++):(m++,f++);else if(p!==-1)f=p+1,g++,m=g;else return!1;for(;f<d.length&&d[f]==="*";)f++;return f===d.length}function s(){const u=[...n.names,...n.skips.map(d=>"-"+d)].join(",");return n.enable(""),u}function a(u){for(const d of n.skips)if(i(u,d))return!1;for(const d of n.names)if(i(u,d))return!0;return!1}function l(u){return u instanceof Error?u.stack||u.message:u}function c(){console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")}return n.enable(n.load()),n}var Z2=Q2;(function(t,e){e.formatArgs=o,e.save=r,e.load=i,e.useColors=n,e.storage=s(),e.destroy=(()=>{let l=!1;return()=>{l||(l=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})(),e.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"];function n(){if(typeof window<"u"&&window.process&&(window.process.type==="renderer"||window.process.__nwjs))return!0;if(typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))return!1;let l;return typeof document<"u"&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||typeof window<"u"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator<"u"&&navigator.userAgent&&(l=navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/))&&parseInt(l[1],10)>=31||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)}function o(l){if(l[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+l[0]+(this.useColors?"%c ":" ")+"+"+t.exports.humanize(this.diff),!this.useColors)return;const c="color: "+this.color;l.splice(1,0,c,"color: inherit");let u=0,d=0;l[0].replace(/%[a-zA-Z%]/g,m=>{m!=="%%"&&(u++,m==="%c"&&(d=u))}),l.splice(d,0,c)}e.log=console.debug||console.log||(()=>{});function r(l){try{l?e.storage.setItem("debug",l):e.storage.removeItem("debug")}catch{}}function i(){let l;try{l=e.storage.getItem("debug")||e.storage.getItem("DEBUG")}catch{}return!l&&typeof process<"u"&&"env"in process&&(l=process.env.DEBUG),l}function s(){try{return localStorage}catch{}}t.exports=Z2(e);const{formatters:a}=t.exports;a.j=function(l){try{return JSON.stringify(l)}catch(c){return"[UnexpectedJSONParseError]: "+c.message}}})(Tf,Tf.exports);var X2=Tf.exports;const eM=q2,yS=X2;gf.exports=function(e){const n=eM.getCallerRoot();let o;try{const r=$o("/node_modules/.pnpm/@tryghost+debug@0.1.40/node_modules/@tryghost/debug/lib")(n+"/package.json");r.alias?o=r.alias:o=r.name}catch{o="undefined"}return yS(o+":"+e)},gf.exports._base=yS;var tM=gf.exports,nM=tM;const oM=[{code:"af",label:"Afrikaans"},{code:"ar",label:"Arabic"},{code:"bg",label:"Bulgarian"},{code:"bn",label:"Bengali"},{code:"bs",label:"Bosnian"},{code:"ca",label:"Catalan"},{code:"cs",label:"Czech"},{code:"da",label:"Danish"},{code:"de",label:"German"},{code:"de-CH",label:"Swiss German"},{code:"el",label:"Greek"},{code:"en",label:"English"},{code:"eo",label:"Esperanto"},{code:"es",label:"Spanish"},{code:"et",label:"Estonian"},{code:"eu",label:"Basque"},{code:"fa",label:"Persian/Farsi"},{code:"fi",label:"Finnish"},{code:"fr",label:"French"},{code:"gd",label:"Gaelic (Scottish)"},{code:"he",label:"Hebrew"},{code:"hi",label:"Hindi"},{code:"hr",label:"Croatian"},{code:"hu",label:"Hungarian"},{code:"id",label:"Indonesian"},{code:"is",label:"Icelandic"},{code:"it",label:"Italian"},{code:"ja",label:"Japanese"},{code:"ko",label:"Korean"},{code:"kz",label:"Kazakh"},{code:"lt",label:"Lithuanian"},{code:"lv",label:"Latvian"},{code:"mk",label:"Macedonian"},{code:"mn",label:"Mongolian"},{code:"ms",label:"Malay"},{code:"nb",label:"Norwegian Bokmål"},{code:"ne",label:"Nepali"},{code:"nl",label:"Dutch"},{code:"nn",label:"Norwegian Nynorsk"},{code:"pa",label:"Punjabi"},{code:"pl",label:"Polish"},{code:"pt",label:"Portuguese"},{code:"pt-BR",label:"Portuguese (Brazil)"},{code:"ro",label:"Romanian"},{code:"ru",label:"Russian"},{code:"si",label:"Sinhala"},{code:"sk",label:"Slovak"},{code:"sl",label:"Slovenian"},{code:"sq",label:"Albanian"},{code:"sr",label:"Serbian"},{code:"sr-Cyrl",label:"Serbian (Cyrillic)"},{code:"sv",label:"Swedish"},{code:"sw",label:"Swahili"},{code:"ta",label:"Tamil"},{code:"th",label:"Thai"},{code:"tr",label:"Turkish"},{code:"uk",label:"Ukrainian"},{code:"ur",label:"Urdu"},{code:"uz",label:"Uzbek"},{code:"vi",label:"Vietnamese"},{code:"zh",label:"Chinese"},{code:"zh-Hant",label:"Traditional Chinese"}],rM=aT,bS=Sr,jf=Sr,Pf=nM("i18n"),wS=oM,vS=wS.map(t=>t.code);function SS(t,e){return t.reduce((n,o)=>{let r;try{r=$o("/ghost/i18n/lib")(`../locales/${o}/${e}.json`)}catch{r=$o("/ghost/i18n/lib")(`../locales/en/${e}.json`)}return n[o]={[e]:{...r,...r.default&&typeof r.default=="object"?r.default:{}}},n},{})}function iM(t,e){if(!e)return{[t]:{theme:{}}};let n=[];try{n=jf.readdirSync(e).filter(i=>i.endsWith(".json")).map(i=>i.replace(".json",""))}catch{n=[t,"en"]}return[...new Set([t,...n,"en"])].reduce((r,i)=>{let s,a=!1;const l=bS.join(e,`${i}.json`);if(jf.existsSync(l))try{delete require.cache[$o("/ghost/i18n/lib").resolve(l)],s=$o("/ghost/i18n/lib")(l)}catch{Pf(`Error loading theme locale file: ${i}`),a=!0}else a=!0;if(a)if(i!=="en")try{const c=bS.join(e,"en.json");jf.existsSync(c)?(delete require.cache[$o("/ghost/i18n/lib").resolve(c)],s=$o("/ghost/i18n/lib")(c)):s={}}catch{s={}}else Pf("Theme en.json file not found"),s={};return r[i]={theme:{...s,...s.default&&typeof s.default=="object"?s.default:{}}},r},{})}as.exports=(t="en",e="portal",n={})=>{const o=rM.createInstance(),r={prefix:"{",suffix:"}"};e==="theme"&&(r.escapeValue=!1);let i;return e!=="theme"?i=SS(vS,e):(Pf(`generateThemeResources: ${t}, ${n.themePath}`),i=iM(t,n.themePath)),o.init({lng:t,nsSeparator:!1,keySeparator:!1,returnEmptyString:!1,fallbackLng:{no:["nb","en"],default:["en"]},ns:e,defaultNS:e,interpolation:r,resources:i}),o},as.exports.SUPPORTED_LOCALES=vS,as.exports.LOCALE_DATA=wS,as.exports.generateResources=SS;var sM=as.exports;const hs=sM;br.exports=hs,br.exports.default=hs,br.exports.LOCALE_DATA=hs.LOCALE_DATA,br.exports.SUPPORTED_LOCALES=hs.SUPPORTED_LOCALES,br.exports.generateResources=hs.generateResources;var aM=br.exports;const lM=At(aM);function cM({siteUrl:t=window.location.origin,apiUrl:e,apiKey:n}){const o="members/api";function r({type:c,resource:u,params:d=""}){return`${t.replace(/\/$/,"")}/${o}/${u}/${d}`}function i({resource:c,params:u={}}){if(e&&n){const d=new URLSearchParams({...u,key:n});return`${e.replace(/\/$/,"")}/${c}/?${d.toString()}`}return""}function s({url:c,method:u="GET",headers:d={},credentials:m=void 0,body:f=void 0}){return fetch(c,{method:u,headers:d,credentials:m,body:f})}let a=null;const l={site:{settings(){const c=i({resource:"settings"});return s({url:c,method:"GET",headers:{"Content-Type":"application/json"}}).then(function(u){if(u.ok)return u.json();throw new Error("Failed to fetch site data")})}},member:{identity(){const c=r({type:"members",resource:"session"});return s({url:c,credentials:"same-origin"}).then(function(u){return!u.ok||u.status===204?null:u.text()})},sessionData(){const c=r({type:"members",resource:"member"});return s({url:c,credentials:"same-origin"}).then(function(u){return!u.ok||u.status===204?null:u.json()})},update({name:c,expertise:u}){const d=r({type:"members",resource:"member"});return s({url:d,method:"PUT",headers:{"Content-Type":"application/json"},credentials:"same-origin",body:JSON.stringify({name:c,expertise:u})}).then(function(f){return f.ok?f.json():null})}},comments:{async count({postId:c}){const u=c?`?ids=${c}`:"",d=r({type:"members",resource:"comments/counts",params:u}),f=await(await s({url:d,method:"GET",headers:{"Content-Type":"application/json"},credentials:"same-origin"})).json();return c?f[c]:f},browse({page:c,postId:u,order:d}){let m=null;a&&!d&&(m=`created_at:<=${a}`);const f=new URLSearchParams;f.set("limit","20"),m&&f.set("filter",m),f.set("page",c.toString()),d&&f.set("order",d);const p=r({type:"members",resource:`comments/post/${u}`,params:`?${f.toString()}`}),g=s({url:p,method:"GET",headers:{"Content-Type":"application/json"},credentials:"same-origin"}).then(function(h){if(h.ok)return h.json();throw new Error("Failed to fetch comments")});return a||g.then(h=>{const y=h.comments[0];y&&(a=y.created_at)}),g},async replies({commentId:c,afterReplyId:u,limit:d}){var g,h,y;if(d==="all"){const w=[];let v=u,S=!0;for(;S;){const C=await this.replies({commentId:c,afterReplyId:v,limit:100});w.push(...C.comments),S=!!((h=(g=C.meta)==null?void 0:g.pagination)!=null&&h.next)&&C.comments.length>0,C.comments.length>0&&(v=(y=C.comments[C.comments.length-1])==null?void 0:y.id)}return{comments:w,meta:{pagination:{next:!1}}}}const m=new URLSearchParams;m.set("limit",(d??5).toString()),u&&m.set("filter",`id:>'${u}'`);const f=r({type:"members",resource:`comments/${c}/replies`,params:`?${m.toString()}`}),p=await s({url:f,method:"GET",headers:{"Content-Type":"application/json"},credentials:"same-origin"});if(p.ok)return p.json();throw new Error("Failed to fetch replies")},add({comment:c}){const u={comments:[c]},d=r({type:"members",resource:"comments"});return s({url:d,method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(u)}).then(function(m){if(m.ok)return m.json();throw new Error("Failed to add comment")})},edit({comment:c}){const u={comments:[c]},d=r({type:"members",resource:`comments/${c.id}`});return s({url:d,method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(u)}).then(function(m){if(m.ok)return m.json();throw new Error("Failed to edit comment")})},read(c){const u=r({type:"members",resource:`comments/${c}`});return s({url:u,method:"GET",credentials:"same-origin"}).then(function(d){if(d.ok)return d.json();throw new Error("Failed to read comment")})},like({comment:c}){const u=r({type:"members",resource:`comments/${c.id}/like`});return s({url:u,method:"POST",headers:{"Content-Type":"application/json"}}).then(function(d){if(d.ok)return"Success";throw new Error("Failed to like comment")})},unlike({comment:c}){const u={comments:[c]},d=r({type:"members",resource:`comments/${c.id}/like`});return s({url:d,method:"DELETE",headers:{"Content-Type":"application/json"},body:JSON.stringify(u)}).then(function(m){if(m.ok)return"Success";throw new Error("Failed to unlike comment")})},report({comment:c}){const u=r({type:"members",resource:`comments/${c.id}/report`});return s({url:u,method:"POST",headers:{"Content-Type":"application/json"}}).then(function(d){if(d.ok)return"Success";throw new Error("Failed to report comment")})}},init:()=>{}};return l.init=async()=>{const[c]=await Promise.all([l.member.sessionData()]);let u={},d=null;try{const m=await l.site.settings();m.settings.labs&&Object.assign(u,m.settings.labs),d=m.settings.support_email_address||null}catch{u={}}return{member:c,labs:u,supportEmail:d}},l}async function uM({state:t,api:e,options:n,order:o}){var l;let r=1;t.pagination&&t.pagination.page&&(r=t.pagination.page+1);let i;return t.admin&&t.adminApi?i=await t.adminApi.browse({page:r,postId:n.postId,order:o||t.order,memberUuid:(l=t.member)==null?void 0:l.uuid}):i=await e.comments.browse({page:r,postId:n.postId,order:o||t.order}),{comments:[...t.comments,...i.comments].filter((c,u,d)=>d.findIndex(m=>m.id===c.id)===u),pagination:i.meta.pagination}}function dM({data:t}){return{commentsIsLoading:t}}async function mM({state:t,data:{order:e},options:n,api:o,dispatchAction:r}){var i;r("setCommentsIsLoading",!0);try{let s;return t.admin&&t.adminApi?s=await t.adminApi.browse({page:1,postId:n.postId,order:e,memberUuid:(i=t.member)==null?void 0:i.uuid}):s=await o.comments.browse({page:1,postId:n.postId,order:e}),{comments:[...s.comments],pagination:s.meta.pagination,order:e,commentsIsLoading:!1}}catch(s){throw console.error("Failed to set order:",s),t.commentsIsLoading=!1,s}}async function $S({state:t,api:e,data:{comment:n,limit:o},isReply:r}){var l,c,u,d;const i=async(m,f)=>{var p;return t.admin&&t.adminApi&&!r?await t.adminApi.replies({commentId:n.id,afterReplyId:m,limit:f,memberUuid:(p=t.member)==null?void 0:p.uuid}):await e.comments.replies({commentId:n.id,afterReplyId:m,limit:f})};let s=n.replies&&n.replies.length>0?(l=n.replies[n.replies.length-1])==null?void 0:l.id:void 0,a=[];if(o==="all"){let m=!0;for(;m;){const f=await i(s,100);a.push(...f.comments),m=!!((u=(c=f.meta)==null?void 0:c.pagination)!=null&&u.next),f.comments&&f.comments.length>0?s=(d=f.comments[f.comments.length-1])==null?void 0:d.id:m=!1}}else a=(await i(s,o||100)).comments;return{comments:t.comments.map(m=>m.id===n.id?{...n,replies:[...n.replies,...a]}:m)}}async function fM({state:t,api:e,data:n}){const r=(await e.comments.add({comment:n})).comments[0];return{comments:[r,...t.comments],commentCount:t.commentCount+1,commentIdToScrollTo:r.id}}async function pM({state:t,api:e,data:{reply:n,parent:o}}){const i=(await e.comments.add({comment:{...n,parent_id:o.id}})).comments[0],s=await e.comments.replies({commentId:o.id,limit:"all"});return{comments:t.comments.map(a=>a.id===o.id?{...a,replies:s.comments,count:{...a.count,replies:s.comments.length}}:a),commentCount:t.commentCount+1,commentIdToScrollTo:i.id}}async function hM({state:t,data:e}){return t.adminApi&&await t.adminApi.hideComment(e.id),{comments:t.comments.map(n=>{const o=n.replies.map(r=>r.id===e.id?{...r,status:"hidden"}:r);return n.id===e.id?{...n,status:"hidden",replies:o}:{...n,replies:o}}),commentCount:t.commentCount-1}}async function gM({state:t,api:e,data:n}){var i;t.adminApi&&await t.adminApi.showComment({id:n.id});let o;t.admin&&t.adminApi?o=await t.adminApi.read({commentId:n.id,memberUuid:(i=t.member)==null?void 0:i.uuid}):o=await e.comments.read(n.id);const r=o.comments[0];return{comments:t.comments.map(s=>{const a=s.replies.map(l=>l.id===n.id?r:l);return s.id===n.id?r:{...s,replies:a}}),commentCount:t.commentCount+1}}async function yM({state:t,data:e}){return{comments:t.comments.map(n=>{const o=n.replies.map(r=>r.id===e.id?{...r,liked:e.liked,count:{...r.count,likes:e.liked?r.count.likes+1:r.count.likes-1}}:r);return n.id===e.id?{...n,liked:e.liked,replies:o,count:{...n.count,likes:e.liked?n.count.likes+1:n.count.likes-1}}:{...n,replies:o}})}}async function bM({api:t,data:e,dispatchAction:n}){n("updateCommentLikeState",{id:e.id,liked:!0});try{return await t.comments.like({comment:e}),{}}catch{n("updateCommentLikeState",{id:e.id,liked:!1})}}async function wM({api:t,data:e,dispatchAction:n}){n("updateCommentLikeState",{id:e.id,liked:!1});try{return await t.comments.unlike({comment:e}),{}}catch{n("updateCommentLikeState",{id:e.id,liked:!0})}}async function vM({api:t,data:e}){return await t.comments.report({comment:e}),{}}async function SM({state:t,api:e,data:n,dispatchAction:o}){await e.comments.edit({comment:{id:n.id,status:"deleted"}});const r=t.comments.find(i=>i.id===n.id);return r&&(!r.replies||r.replies.length===0)?(o("setOrder",{order:t.order}),null):{comments:t.comments.map(i=>{var u;if(i.id===n.id)return i.replies.length>0?{...i,status:"deleted"}:null;const s=i.replies.length,a=i.replies.filter(d=>d.id!==n.id),l=s!==a.length,c={...i,replies:a};return l&&((u=i.count)!=null&&u.replies)&&(i.count.replies=i.count.replies-1),c}).filter(Boolean),commentCount:t.commentCount-1}}async function $M({state:t,api:e,data:{comment:n,parent:o}}){return n=(await e.comments.edit({comment:n})).comments[0],{comments:t.comments.map(i=>o&&o.id===i.id?{...i,replies:i.replies.map(s=>s.id===n.id?n:s)}:i.id===n.id?n:i)}}async function kM({data:t,state:e,api:n}){var l,c;const{name:o,expertise:r}=t,i={},s=(l=e==null?void 0:e.member)==null?void 0:l.name;o&&s!==o&&(i.name=o);const a=(c=e==null?void 0:e.member)==null?void 0:c.expertise;if(r!==void 0&&a!==r&&(i.expertise=r),Object.keys(i).length>0)try{const u=await n.member.update(i);if(!u)throw new Error("Failed to update member");return{member:u,success:!0}}catch(u){return{success:!1,error:u}}return null}function xM({data:t}){return{popup:t}}function CM(){return{popup:null}}async function EM({data:t,api:e,state:n}){let o={};const r=t.parent_id||t.id;if(t.type==="reply"&&!n.openCommentForms.some(a=>a.id===r||a.parent_id===r)){const a=n.comments.find(l=>l.id===r);if(a)try{const l=await $S({state:n,api:e,data:{comment:a,limit:"all"},isReply:!0});o={...o,...l}}catch(l){console.error("[Comments] Failed to load replies before opening form:",l)}}const i=n.openCommentForms.filter(a=>a.hasUnsavedChanges),s=i.findIndex(a=>a.id===t.id);return s>-1?(i[s]=t,{openCommentForms:i,...o}):{openCommentForms:[...i,t],...o}}function NM({data:t}){return{commentIdToHighlight:t}}function AM({data:{commentId:t},dispatchAction:e}){return setTimeout(()=>{e("setHighlightComment",null)},3e3),{commentIdToHighlight:t}}function OM({data:{id:t,hasUnsavedChanges:e},state:n}){return{openCommentForms:n.openCommentForms.map(r=>r.id===t?{...r,hasUnsavedChanges:e}:{...r})}}function RM({data:t,state:e}){return{openCommentForms:e.openCommentForms.filter(n=>n.id!==t)}}function DM({data:t}){return{commentIdToScrollTo:t}}const kS={openPopup:xM,closePopup:CM,closeCommentForm:RM,setCommentFormHasUnsavedChanges:OM,setScrollTarget:DM},TM={addComment:fM,editComment:$M,hideComment:hM,deleteComment:SM,showComment:gM,likeComment:bM,unlikeComment:wM,reportComment:vM,addReply:pM,loadMoreComments:uM,loadMoreReplies:$S,openCommentForm:EM,updateMember:kM,setOrder:mM,highlightComment:AM,setHighlightComment:NM,setCommentsIsLoading:dM,updateCommentLikeState:yM};function MM(t){return!!kS[t]}async function jM({action:t,data:e,state:n,api:o,adminApi:r,options:i,dispatchAction:s}){const a=TM[t];return a?await a({data:e,state:n,api:o,adminApi:r,options:i,dispatchAction:s})||{}:{}}function PM({action:t,data:e,state:n,api:o,adminApi:r,options:i}){const s=kS[t];return s?s({data:e,state:n,api:o,adminApi:r,options:i})||{}:{}}function IM({adminUrl:t}){const e=document.querySelector('iframe[data-frame="admin-auth"]');let n=1;const o={},r=new URL(t).origin;let i=null;window.addEventListener("message",function(l){if(l.origin!==r)return;let c=null;try{c=JSON.parse(l.data)}catch{return}const u=o[c.uid];u&&(delete o[c.uid],u(c.error,c.result))});function s(l,c){return new Promise((u,d)=>{function m(f,p){return f?d(f):u(p)}n+=1,o[n]=m,e.contentWindow.postMessage(JSON.stringify({uid:n,action:l,...c}),r)})}return{async getUser(){const l=await s("getUser");return!l||!l.users?null:l.users[0]},async hideComment(l){return await s("hideComment",{id:l})},async showComment({id:l}){return await s("showComment",{id:l})},async browse({page:l,postId:c,order:u,memberUuid:d}){let m=null;i&&!u&&(m=`created_at:<=${i}`);const f=new URLSearchParams;f.set("limit","20"),m&&f.set("filter",m),f.set("page",l.toString()),u&&f.set("order",u),d&&f.set("impersonate_member_uuid",d);const p=await s("browseComments",{postId:c,params:f.toString()});if(!i){const g=p.comments[0];g&&(i=g.created_at)}return p},async replies({commentId:l,afterReplyId:c,limit:u,memberUuid:d}){const m=new URLSearchParams;return u&&m.set("limit",u.toString()),c&&m.set("filter",`id:>'${c}'`),d&&m.set("impersonate_member_uuid",d),await s("getReplies",{commentId:l,params:m.toString()})},async read({commentId:l,memberUuid:c}){const u=new URLSearchParams;return c&&u.set("impersonate_member_uuid",c),await s("readComment",{commentId:l,...u.toString()&&{params:u.toString()}})}}}function LM(t){const e=_.useCallback(()=>{const i=t.dataset,s=i.ghostComments||window.location.origin,a=i.key,l=i.api,c=i.admin,u=i.postId||"",d=i.colorScheme,m=i.avatarSaturation?parseInt(i.avatarSaturation):void 0,f=i.accentColor??"#000000",p=i.commentsEnabled,g=i.title==="null"?null:i.title??"",h=i.count==="true",y=i.publication??"";return{locale:i.locale??"en",siteUrl:s,apiKey:a,apiUrl:l,postId:u,adminUrl:c,colorScheme:d,avatarSaturation:m,accentColor:f,commentsEnabled:p,title:g,showCount:h,publication:y}},[t]),n=x.useMemo(()=>e(),[]),[o,r]=_.useState(n);return _.useEffect(()=>{const i=new MutationObserver(s=>{s.some(a=>a.type==="attributes")&&r(e())});return i.observe(t,{attributes:!0}),()=>{i.disconnect()}},[t,e]),o}const zM=["Owner","Administrator","Super Editor"];function If(t,e){return t.some(n=>{var o;return n.id===e||((o=n.replies)==null?void 0:o.some(r=>r.id===e))})}const FM=({scriptTag:t,initialCommentId:e,pageUrl:n})=>{const o=LM(t),[r,i]=x.useState({initStatus:"running",member:null,admin:null,comments:[],pagination:null,commentCount:0,openCommentForms:[],popup:null,labs:{},order:"count__likes desc, created_at desc",adminApi:null,commentsIsLoading:!1,commentIdToHighlight:null,commentIdToScrollTo:e,showMissingCommentNotice:!1,pageUrl:n,supportEmail:null,isMember:!1,isAdmin:!1,isPaidOnly:!1,hasRequiredTier:!0,isCommentingDisabled:!1}),s=_.createRef(),a=_.useMemo(()=>cM({siteUrl:o.siteUrl,apiUrl:o.apiUrl,apiKey:o.apiKey}),[o]),l=x.useCallback(v=>{i(S=>(typeof v=="function"&&(v=v(S)),{...S,...v}))},[i]),c=x.useCallback(async(v,S)=>{if(MM(v)){l(C=>PM({action:v,data:S,state:C,api:a,adminApi:C.adminApi,options:o}));return}return new Promise(C=>{l($=>(jM({action:v,data:S,state:$,api:a,adminApi:$.adminApi,options:o,dispatchAction:c}).then(k=>{const N={...k};C(N),l(N)}).catch(console.error),{}))})},[a,o]),u=x.useMemo(()=>lM(o.locale,"comments"),[o.locale]),d={...o,...r,t:u.t,dispatchAction:c,openFormCount:x.useMemo(()=>r.openCommentForms.length,[r.openCommentForms])},m=async()=>{var v;if(!(r.adminApi||!o.adminUrl))try{const S=IM({adminUrl:o.adminUrl});let C=null;try{if(C=await S.getUser(),(!C||!C.roles.some($=>zM.includes($.name)))&&(C=null),C){const $=await S.browse({page:1,postId:o.postId,order:r.order,memberUuid:(v=r.member)==null?void 0:v.uuid});l(k=>k.pagination&&k.pagination.page>1||e?{adminApi:S,admin:C,isAdmin:!0}:{adminApi:S,admin:C,isAdmin:!0,comments:$.comments,pagination:$.meta.pagination})}}catch($){console.warn("[Comments] Failed to fetch admin endpoint:",$)}l({adminApi:S,admin:C,isAdmin:!!C})}catch(S){console.error("[Comments] Failed to initialize admin authentication:",S)}},f=async()=>{const v=a.comments.browse({page:1,postId:o.postId,order:r.order}),S=a.comments.count({postId:o.postId}),[C,$]=await Promise.all([v,S]);return{comments:C.comments,pagination:C.meta.pagination,count:$}},p=async v=>{var S;try{const $=(S=(await a.comments.read(v)).comments)==null?void 0:S[0];return $&&$.status==="published"?$:null}catch{return null}},g=async(v,S,C,$)=>{let k=C,N=$;for(;!If(k,v)&&N.page<N.pages&&!(S&&k.some(H=>H.id===S));){const O=await a.comments.browse({page:N.page+1,postId:o.postId,order:r.order});k=[...k,...O.comments],N=O.meta.pagination}return{comments:k,pagination:N}},h=async(v,S,C,$)=>{const k=S.parent_id,{comments:N,pagination:O}=await g(v,k,C,$);let H=N;if(k&&!If(H,v)){const{comments:ie}=await a.comments.replies({commentId:k,limit:"all"});H=H.map(ne=>ne.id===k?{...ne,replies:ie}:ne)}return{comments:H,pagination:O,found:If(H,v)}},y=async()=>{try{const{member:v,labs:S,supportEmail:C}=await a.init(),{count:$,comments:k,pagination:N}=await f();let O=k,H=N,ie=!1;if(e&&H){const E=await p(e);if(E){const A=await h(e,E,O,H);O=A.comments,H=A.pagination,ie=A.found}}const oe=!!v,ye=o.commentsEnabled==="paid",me=!!(v!=null&&v.paid)||!ye;l({member:v,initStatus:"success",comments:O,pagination:H,commentCount:$,order:"count__likes desc, created_at desc",labs:S,commentsIsLoading:!1,commentIdToHighlight:null,commentIdToScrollTo:ie?e:null,showMissingCommentNotice:!!e&&!ie,supportEmail:C,isMember:oe,isPaidOnly:ye,hasRequiredTier:me,isCommentingDisabled:(v==null?void 0:v.can_comment)===!1})}catch(v){console.error("[Comments] Failed to initialize:",v),l({initStatus:"failed"})}};x.useEffect(()=>{if(e){y();return}const v=new IntersectionObserver(S=>{S.forEach(C=>{C.isIntersecting&&(y(),s.current&&v.unobserve(s.current))})},{root:null,rootMargin:"0px",threshold:.1});return s.current&&v.observe(s.current),()=>{s.current&&v.unobserve(s.current)}},[s.current,e]);const w=r.initStatus==="success";return b.jsxs(hc.Provider,{value:d,children:[b.jsx(SR,{ref:s,children:b.jsx(gR,{done:w})}),r.comments.length>0?b.jsx(FS,{adminUrl:o.adminUrl,onLoad:m}):null,b.jsx(AR,{})]})};function BM(){let t=document.currentScript;if(!t)throw new Error("[Comments-UI] Cannot find current script tag");return t}function HM(t){if(t.previousElementSibling&&t.previousElementSibling.id===yr)return t.previousElementSibling;if(!t.parentElement)throw new Error("[Comments-UI] Script tag does not have a parent element");const e=document.createElement("div");return e.id=yr,t.parentElement.insertBefore(e,t),e}function VM(){const t=new URL(window.location.href);t.searchParams.get("token")&&(t.searchParams.delete("token"),window.history.replaceState({},document.title,t.href))}function _M(){const t=new URL(window.location.href);return t.hash="",t.toString()}function UM(){const t=BM(),e=HM(t),n=yp(window.location.hash),o=_M();try{VM(),ew.render(b.jsx(_.StrictMode,{children:b.jsx(FM,{initialCommentId:n,pageUrl:o,scriptTag:t})}),e)}catch(r){console.error(r)}}UM()});
171
+ `,s+1);r=r.substring(a+1)}this.stack=r}}},Et.inherits(te.AssertionError,Error);function sS(t,e){return typeof t=="string"?t.length<e?t:t.slice(0,e):t}function aS(t){if(nS||!Et.isFunction(t))return Et.inspect(t);var e=iS(t),n=e?": "+e:"";return"[Function"+n+"]"}function B2(t){return sS(aS(t.actual),128)+" "+t.operator+" "+sS(aS(t.expected),128)}function et(t,e,n,o,r){throw new te.AssertionError({message:n,actual:t,expected:e,operator:o,stackStartFunction:r})}te.fail=et;function lS(t,e){t||et(t,!0,e,"==",te.ok)}te.ok=lS,te.equal=function(e,n,o){e!=n&&et(e,n,o,"==",te.equal)},te.notEqual=function(e,n,o){e==n&&et(e,n,o,"!=",te.notEqual)},te.deepEqual=function(e,n,o){Er(e,n,!1)||et(e,n,o,"deepEqual",te.deepEqual)},te.deepStrictEqual=function(e,n,o){Er(e,n,!0)||et(e,n,o,"deepStrictEqual",te.deepStrictEqual)};function Er(t,e,n,o){if(t===e)return!0;if(ps(t)&&ps(e))return eS(t,e)===0;if(Et.isDate(t)&&Et.isDate(e))return t.getTime()===e.getTime();if(Et.isRegExp(t)&&Et.isRegExp(e))return t.source===e.source&&t.global===e.global&&t.multiline===e.multiline&&t.lastIndex===e.lastIndex&&t.ignoreCase===e.ignoreCase;if((t===null||typeof t!="object")&&(e===null||typeof e!="object"))return n?t===e:t==e;if(rS(t)&&rS(e)&&oS(t)===oS(e)&&!(t instanceof Float32Array||t instanceof Float64Array))return eS(new Uint8Array(t.buffer),new Uint8Array(e.buffer))===0;if(ps(t)!==ps(e))return!1;o=o||{actual:[],expected:[]};var r=o.actual.indexOf(t);return r!==-1&&r===o.expected.indexOf(e)?!0:(o.actual.push(t),o.expected.push(e),H2(t,e,n,o))}function cS(t){return Object.prototype.toString.call(t)=="[object Arguments]"}function H2(t,e,n,o){if(t==null||e===null||e===void 0)return!1;if(Et.isPrimitive(t)||Et.isPrimitive(e))return t===e;if(n&&Object.getPrototypeOf(t)!==Object.getPrototypeOf(e))return!1;var r=cS(t),i=cS(e);if(r&&!i||!r&&i)return!1;if(r)return t=tS.call(t),e=tS.call(e),Er(t,e,n);var s=pS(t),a=pS(e),l,c;if(s.length!==a.length)return!1;for(s.sort(),a.sort(),c=s.length-1;c>=0;c--)if(s[c]!==a[c])return!1;for(c=s.length-1;c>=0;c--)if(l=s[c],!Er(t[l],e[l],n,o))return!1;return!0}te.notDeepEqual=function(e,n,o){Er(e,n,!1)&&et(e,n,o,"notDeepEqual",te.notDeepEqual)},te.notDeepStrictEqual=uS;function uS(t,e,n){Er(t,e,!0)&&et(t,e,n,"notDeepStrictEqual",uS)}te.strictEqual=function(e,n,o){e!==n&&et(e,n,o,"===",te.strictEqual)},te.notStrictEqual=function(e,n,o){e===n&&et(e,n,o,"!==",te.notStrictEqual)};function dS(t,e){if(!t||!e)return!1;if(Object.prototype.toString.call(e)=="[object RegExp]")return e.test(t);try{if(t instanceof e)return!0}catch{}return Error.isPrototypeOf(e)?!1:e.call({},t)===!0}function V2(t){var e;try{t()}catch(n){e=n}return e}function mS(t,e,n,o){var r;if(typeof e!="function")throw new TypeError('"block" argument must be a function');typeof n=="string"&&(o=n,n=null),r=V2(e),o=(n&&n.name?" ("+n.name+").":".")+(o?" "+o:"."),t&&!r&&et(r,n,"Missing expected exception"+o);var i=typeof o=="string",s=!t&&Et.isError(r),a=!t&&r&&!n;if((s&&i&&dS(r,n)||a)&&et(r,n,"Got unwanted exception"+o),t&&r&&n&&!dS(r,n)||!t&&r)throw r}te.throws=function(t,e,n){mS(!0,t,e,n)},te.doesNotThrow=function(t,e,n){mS(!1,t,e,n)},te.ifError=function(t){if(t)throw t};function fS(t,e){t||et(t,!0,e,"==",fS)}te.strict=L2(fS,te,{equal:te.strictEqual,deepEqual:te.deepStrictEqual,notEqual:te.notStrictEqual,notDeepEqual:te.notDeepStrictEqual}),te.strict.strict=te.strict;var pS=Object.keys||function(t){var e=[];for(var n in t)z2.call(t,n)&&e.push(n);return e},_2=kv.exports,U2=_2,Y2=function(t){var e,n,o,r,i;for(e=Error.prepareStackTrace,Error.prepareStackTrace=function(s,a){return Error.prepareStackTrace=e,a},n=new Error().stack,i=0;i<n.length&&n[i].getFileName()!==__filename;)i++;U2(i<n.length,"Unexpected: unable to find caller/index.js in the stack"),t=!t||isNaN(t)?1:t>n.length-2?n.length-2:t,n=n.slice(i+t+1);do r=n.shift(),o=r&&r.getFileName();while(n.length&&o==="module.js");return o};const J2=Sr,K2=Sr,hS=lT,W2=Y2;yf.getCallerRoot=function(){try{return hS(W2(2))}catch{return}},yf.getProcessRoot=function(){let e=process.cwd();const n=K2.join(e,"current");try{J2.statSync(n).isDirectory()&&(e=n)}catch{}try{return hS(e)}catch{return}};var q2=yf,Tf={exports:{}},Mf,gS;function G2(){if(gS)return Mf;gS=1;var t=1e3,e=t*60,n=e*60,o=n*24,r=o*7,i=o*365.25;Mf=function(u,d){d=d||{};var m=typeof u;if(m==="string"&&u.length>0)return s(u);if(m==="number"&&isFinite(u))return d.long?l(u):a(u);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(u))};function s(u){if(u=String(u),!(u.length>100)){var d=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(u);if(d){var m=parseFloat(d[1]),f=(d[2]||"ms").toLowerCase();switch(f){case"years":case"year":case"yrs":case"yr":case"y":return m*i;case"weeks":case"week":case"w":return m*r;case"days":case"day":case"d":return m*o;case"hours":case"hour":case"hrs":case"hr":case"h":return m*n;case"minutes":case"minute":case"mins":case"min":case"m":return m*e;case"seconds":case"second":case"secs":case"sec":case"s":return m*t;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return m;default:return}}}}function a(u){var d=Math.abs(u);return d>=o?Math.round(u/o)+"d":d>=n?Math.round(u/n)+"h":d>=e?Math.round(u/e)+"m":d>=t?Math.round(u/t)+"s":u+"ms"}function l(u){var d=Math.abs(u);return d>=o?c(u,d,o,"day"):d>=n?c(u,d,n,"hour"):d>=e?c(u,d,e,"minute"):d>=t?c(u,d,t,"second"):u+" ms"}function c(u,d,m,f){var p=d>=m*1.5;return Math.round(u/m)+" "+f+(p?"s":"")}return Mf}function Q2(t){n.debug=n,n.default=n,n.coerce=l,n.disable=s,n.enable=r,n.enabled=a,n.humanize=G2(),n.destroy=c,Object.keys(t).forEach(u=>{n[u]=t[u]}),n.names=[],n.skips=[],n.formatters={};function e(u){let d=0;for(let m=0;m<u.length;m++)d=(d<<5)-d+u.charCodeAt(m),d|=0;return n.colors[Math.abs(d)%n.colors.length]}n.selectColor=e;function n(u){let d,m=null,f,p;function g(...h){if(!g.enabled)return;const y=g,w=Number(new Date),v=w-(d||w);y.diff=v,y.prev=d,y.curr=w,d=w,h[0]=n.coerce(h[0]),typeof h[0]!="string"&&h.unshift("%O");let S=0;h[0]=h[0].replace(/%([a-zA-Z%])/g,($,k)=>{if($==="%%")return"%";S++;const N=n.formatters[k];if(typeof N=="function"){const O=h[S];$=N.call(y,O),h.splice(S,1),S--}return $}),n.formatArgs.call(y,h),(y.log||n.log).apply(y,h)}return g.namespace=u,g.useColors=n.useColors(),g.color=n.selectColor(u),g.extend=o,g.destroy=n.destroy,Object.defineProperty(g,"enabled",{enumerable:!0,configurable:!1,get:()=>m!==null?m:(f!==n.namespaces&&(f=n.namespaces,p=n.enabled(u)),p),set:h=>{m=h}}),typeof n.init=="function"&&n.init(g),g}function o(u,d){const m=n(this.namespace+(typeof d>"u"?":":d)+u);return m.log=this.log,m}function r(u){n.save(u),n.namespaces=u,n.names=[],n.skips=[];const d=(typeof u=="string"?u:"").trim().replace(/\s+/g,",").split(",").filter(Boolean);for(const m of d)m[0]==="-"?n.skips.push(m.slice(1)):n.names.push(m)}function i(u,d){let m=0,f=0,p=-1,g=0;for(;m<u.length;)if(f<d.length&&(d[f]===u[m]||d[f]==="*"))d[f]==="*"?(p=f,g=m,f++):(m++,f++);else if(p!==-1)f=p+1,g++,m=g;else return!1;for(;f<d.length&&d[f]==="*";)f++;return f===d.length}function s(){const u=[...n.names,...n.skips.map(d=>"-"+d)].join(",");return n.enable(""),u}function a(u){for(const d of n.skips)if(i(u,d))return!1;for(const d of n.names)if(i(u,d))return!0;return!1}function l(u){return u instanceof Error?u.stack||u.message:u}function c(){console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")}return n.enable(n.load()),n}var Z2=Q2;(function(t,e){e.formatArgs=o,e.save=r,e.load=i,e.useColors=n,e.storage=s(),e.destroy=(()=>{let l=!1;return()=>{l||(l=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})(),e.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"];function n(){if(typeof window<"u"&&window.process&&(window.process.type==="renderer"||window.process.__nwjs))return!0;if(typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))return!1;let l;return typeof document<"u"&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||typeof window<"u"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator<"u"&&navigator.userAgent&&(l=navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/))&&parseInt(l[1],10)>=31||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)}function o(l){if(l[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+l[0]+(this.useColors?"%c ":" ")+"+"+t.exports.humanize(this.diff),!this.useColors)return;const c="color: "+this.color;l.splice(1,0,c,"color: inherit");let u=0,d=0;l[0].replace(/%[a-zA-Z%]/g,m=>{m!=="%%"&&(u++,m==="%c"&&(d=u))}),l.splice(d,0,c)}e.log=console.debug||console.log||(()=>{});function r(l){try{l?e.storage.setItem("debug",l):e.storage.removeItem("debug")}catch{}}function i(){let l;try{l=e.storage.getItem("debug")||e.storage.getItem("DEBUG")}catch{}return!l&&typeof process<"u"&&"env"in process&&(l=process.env.DEBUG),l}function s(){try{return localStorage}catch{}}t.exports=Z2(e);const{formatters:a}=t.exports;a.j=function(l){try{return JSON.stringify(l)}catch(c){return"[UnexpectedJSONParseError]: "+c.message}}})(Tf,Tf.exports);var X2=Tf.exports;const eM=q2,yS=X2;gf.exports=function(e){const n=eM.getCallerRoot();let o;try{const r=$o("/node_modules/.pnpm/@tryghost+debug@2.1.0/node_modules/@tryghost/debug/lib")(n+"/package.json");r.alias?o=r.alias:o=r.name}catch{o="undefined"}return yS(o+":"+e)},gf.exports._base=yS;var tM=gf.exports,nM=tM;const oM=[{code:"af",label:"Afrikaans"},{code:"ar",label:"Arabic"},{code:"bg",label:"Bulgarian"},{code:"bn",label:"Bengali"},{code:"bs",label:"Bosnian"},{code:"ca",label:"Catalan"},{code:"cs",label:"Czech"},{code:"da",label:"Danish"},{code:"de",label:"German"},{code:"de-CH",label:"Swiss German"},{code:"el",label:"Greek"},{code:"en",label:"English"},{code:"eo",label:"Esperanto"},{code:"es",label:"Spanish"},{code:"et",label:"Estonian"},{code:"eu",label:"Basque"},{code:"fa",label:"Persian/Farsi"},{code:"fi",label:"Finnish"},{code:"fr",label:"French"},{code:"gd",label:"Gaelic (Scottish)"},{code:"he",label:"Hebrew"},{code:"hi",label:"Hindi"},{code:"hr",label:"Croatian"},{code:"hu",label:"Hungarian"},{code:"id",label:"Indonesian"},{code:"is",label:"Icelandic"},{code:"it",label:"Italian"},{code:"ja",label:"Japanese"},{code:"ko",label:"Korean"},{code:"kz",label:"Kazakh"},{code:"lt",label:"Lithuanian"},{code:"lv",label:"Latvian"},{code:"mk",label:"Macedonian"},{code:"mn",label:"Mongolian"},{code:"ms",label:"Malay"},{code:"nb",label:"Norwegian Bokmål"},{code:"ne",label:"Nepali"},{code:"nl",label:"Dutch"},{code:"nn",label:"Norwegian Nynorsk"},{code:"pa",label:"Punjabi"},{code:"pl",label:"Polish"},{code:"pt",label:"Portuguese"},{code:"pt-BR",label:"Portuguese (Brazil)"},{code:"ro",label:"Romanian"},{code:"ru",label:"Russian"},{code:"si",label:"Sinhala"},{code:"sk",label:"Slovak"},{code:"sl",label:"Slovenian"},{code:"sq",label:"Albanian"},{code:"sr",label:"Serbian"},{code:"sr-Cyrl",label:"Serbian (Cyrillic)"},{code:"sv",label:"Swedish"},{code:"sw",label:"Swahili"},{code:"ta",label:"Tamil"},{code:"th",label:"Thai"},{code:"tr",label:"Turkish"},{code:"uk",label:"Ukrainian"},{code:"ur",label:"Urdu"},{code:"uz",label:"Uzbek"},{code:"vi",label:"Vietnamese"},{code:"zh",label:"Chinese"},{code:"zh-Hant",label:"Traditional Chinese"}],rM=aT,bS=Sr,jf=Sr,Pf=nM("i18n"),wS=oM,vS=wS.map(t=>t.code);function SS(t,e){return t.reduce((n,o)=>{let r;try{r=$o("/ghost/i18n/lib")(`../locales/${o}/${e}.json`)}catch{r=$o("/ghost/i18n/lib")(`../locales/en/${e}.json`)}return n[o]={[e]:{...r,...r.default&&typeof r.default=="object"?r.default:{}}},n},{})}function iM(t,e){if(!e)return{[t]:{theme:{}}};let n=[];try{n=jf.readdirSync(e).filter(i=>i.endsWith(".json")).map(i=>i.replace(".json",""))}catch{n=[t,"en"]}return[...new Set([t,...n,"en"])].reduce((r,i)=>{let s,a=!1;const l=bS.join(e,`${i}.json`);if(jf.existsSync(l))try{delete require.cache[$o("/ghost/i18n/lib").resolve(l)],s=$o("/ghost/i18n/lib")(l)}catch{Pf(`Error loading theme locale file: ${i}`),a=!0}else a=!0;if(a)if(i!=="en")try{const c=bS.join(e,"en.json");jf.existsSync(c)?(delete require.cache[$o("/ghost/i18n/lib").resolve(c)],s=$o("/ghost/i18n/lib")(c)):s={}}catch{s={}}else Pf("Theme en.json file not found"),s={};return r[i]={theme:{...s,...s.default&&typeof s.default=="object"?s.default:{}}},r},{})}as.exports=(t="en",e="portal",n={})=>{const o=rM.createInstance(),r={prefix:"{",suffix:"}"};e==="theme"&&(r.escapeValue=!1);let i;return e!=="theme"?i=SS(vS,e):(Pf(`generateThemeResources: ${t}, ${n.themePath}`),i=iM(t,n.themePath)),o.init({lng:t,nsSeparator:!1,keySeparator:!1,returnEmptyString:!1,fallbackLng:{no:["nb","en"],default:["en"]},ns:e,defaultNS:e,interpolation:r,resources:i}),o},as.exports.SUPPORTED_LOCALES=vS,as.exports.LOCALE_DATA=wS,as.exports.generateResources=SS;var sM=as.exports;const hs=sM;br.exports=hs,br.exports.default=hs,br.exports.LOCALE_DATA=hs.LOCALE_DATA,br.exports.SUPPORTED_LOCALES=hs.SUPPORTED_LOCALES,br.exports.generateResources=hs.generateResources;var aM=br.exports;const lM=At(aM);function cM({siteUrl:t=window.location.origin,apiUrl:e,apiKey:n}){const o="members/api";function r({type:c,resource:u,params:d=""}){return`${t.replace(/\/$/,"")}/${o}/${u}/${d}`}function i({resource:c,params:u={}}){if(e&&n){const d=new URLSearchParams({...u,key:n});return`${e.replace(/\/$/,"")}/${c}/?${d.toString()}`}return""}function s({url:c,method:u="GET",headers:d={},credentials:m=void 0,body:f=void 0}){return fetch(c,{method:u,headers:d,credentials:m,body:f})}let a=null;const l={site:{settings(){const c=i({resource:"settings"});return s({url:c,method:"GET",headers:{"Content-Type":"application/json"}}).then(function(u){if(u.ok)return u.json();throw new Error("Failed to fetch site data")})}},member:{identity(){const c=r({type:"members",resource:"session"});return s({url:c,credentials:"same-origin"}).then(function(u){return!u.ok||u.status===204?null:u.text()})},sessionData(){const c=r({type:"members",resource:"member"});return s({url:c,credentials:"same-origin"}).then(function(u){return!u.ok||u.status===204?null:u.json()})},update({name:c,expertise:u}){const d=r({type:"members",resource:"member"});return s({url:d,method:"PUT",headers:{"Content-Type":"application/json"},credentials:"same-origin",body:JSON.stringify({name:c,expertise:u})}).then(function(f){return f.ok?f.json():null})}},comments:{async count({postId:c}){const u=c?`?ids=${c}`:"",d=r({type:"members",resource:"comments/counts",params:u}),f=await(await s({url:d,method:"GET",headers:{"Content-Type":"application/json"},credentials:"same-origin"})).json();return c?f[c]:f},browse({page:c,postId:u,order:d}){let m=null;a&&!d&&(m=`created_at:<=${a}`);const f=new URLSearchParams;f.set("limit","20"),m&&f.set("filter",m),f.set("page",c.toString()),d&&f.set("order",d);const p=r({type:"members",resource:`comments/post/${u}`,params:`?${f.toString()}`}),g=s({url:p,method:"GET",headers:{"Content-Type":"application/json"},credentials:"same-origin"}).then(function(h){if(h.ok)return h.json();throw new Error("Failed to fetch comments")});return a||g.then(h=>{const y=h.comments[0];y&&(a=y.created_at)}),g},async replies({commentId:c,afterReplyId:u,limit:d}){var g,h,y;if(d==="all"){const w=[];let v=u,S=!0;for(;S;){const C=await this.replies({commentId:c,afterReplyId:v,limit:100});w.push(...C.comments),S=!!((h=(g=C.meta)==null?void 0:g.pagination)!=null&&h.next)&&C.comments.length>0,C.comments.length>0&&(v=(y=C.comments[C.comments.length-1])==null?void 0:y.id)}return{comments:w,meta:{pagination:{next:!1}}}}const m=new URLSearchParams;m.set("limit",(d??5).toString()),u&&m.set("filter",`id:>'${u}'`);const f=r({type:"members",resource:`comments/${c}/replies`,params:`?${m.toString()}`}),p=await s({url:f,method:"GET",headers:{"Content-Type":"application/json"},credentials:"same-origin"});if(p.ok)return p.json();throw new Error("Failed to fetch replies")},add({comment:c}){const u={comments:[c]},d=r({type:"members",resource:"comments"});return s({url:d,method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(u)}).then(function(m){if(m.ok)return m.json();throw new Error("Failed to add comment")})},edit({comment:c}){const u={comments:[c]},d=r({type:"members",resource:`comments/${c.id}`});return s({url:d,method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(u)}).then(function(m){if(m.ok)return m.json();throw new Error("Failed to edit comment")})},read(c){const u=r({type:"members",resource:`comments/${c}`});return s({url:u,method:"GET",credentials:"same-origin"}).then(function(d){if(d.ok)return d.json();throw new Error("Failed to read comment")})},like({comment:c}){const u=r({type:"members",resource:`comments/${c.id}/like`});return s({url:u,method:"POST",headers:{"Content-Type":"application/json"}}).then(function(d){if(d.ok)return"Success";throw new Error("Failed to like comment")})},unlike({comment:c}){const u={comments:[c]},d=r({type:"members",resource:`comments/${c.id}/like`});return s({url:d,method:"DELETE",headers:{"Content-Type":"application/json"},body:JSON.stringify(u)}).then(function(m){if(m.ok)return"Success";throw new Error("Failed to unlike comment")})},report({comment:c}){const u=r({type:"members",resource:`comments/${c.id}/report`});return s({url:u,method:"POST",headers:{"Content-Type":"application/json"}}).then(function(d){if(d.ok)return"Success";throw new Error("Failed to report comment")})}},init:()=>{}};return l.init=async()=>{const[c]=await Promise.all([l.member.sessionData()]);let u={},d=null;try{const m=await l.site.settings();m.settings.labs&&Object.assign(u,m.settings.labs),d=m.settings.support_email_address||null}catch{u={}}return{member:c,labs:u,supportEmail:d}},l}async function uM({state:t,api:e,options:n,order:o}){var l;let r=1;t.pagination&&t.pagination.page&&(r=t.pagination.page+1);let i;return t.admin&&t.adminApi?i=await t.adminApi.browse({page:r,postId:n.postId,order:o||t.order,memberUuid:(l=t.member)==null?void 0:l.uuid}):i=await e.comments.browse({page:r,postId:n.postId,order:o||t.order}),{comments:[...t.comments,...i.comments].filter((c,u,d)=>d.findIndex(m=>m.id===c.id)===u),pagination:i.meta.pagination}}function dM({data:t}){return{commentsIsLoading:t}}async function mM({state:t,data:{order:e},options:n,api:o,dispatchAction:r}){var i;r("setCommentsIsLoading",!0);try{let s;return t.admin&&t.adminApi?s=await t.adminApi.browse({page:1,postId:n.postId,order:e,memberUuid:(i=t.member)==null?void 0:i.uuid}):s=await o.comments.browse({page:1,postId:n.postId,order:e}),{comments:[...s.comments],pagination:s.meta.pagination,order:e,commentsIsLoading:!1}}catch(s){throw console.error("Failed to set order:",s),t.commentsIsLoading=!1,s}}async function $S({state:t,api:e,data:{comment:n,limit:o},isReply:r}){var l,c,u,d;const i=async(m,f)=>{var p;return t.admin&&t.adminApi&&!r?await t.adminApi.replies({commentId:n.id,afterReplyId:m,limit:f,memberUuid:(p=t.member)==null?void 0:p.uuid}):await e.comments.replies({commentId:n.id,afterReplyId:m,limit:f})};let s=n.replies&&n.replies.length>0?(l=n.replies[n.replies.length-1])==null?void 0:l.id:void 0,a=[];if(o==="all"){let m=!0;for(;m;){const f=await i(s,100);a.push(...f.comments),m=!!((u=(c=f.meta)==null?void 0:c.pagination)!=null&&u.next),f.comments&&f.comments.length>0?s=(d=f.comments[f.comments.length-1])==null?void 0:d.id:m=!1}}else a=(await i(s,o||100)).comments;return{comments:t.comments.map(m=>m.id===n.id?{...n,replies:[...n.replies,...a]}:m)}}async function fM({state:t,api:e,data:n}){const r=(await e.comments.add({comment:n})).comments[0];return{comments:[r,...t.comments],commentCount:t.commentCount+1,commentIdToScrollTo:r.id}}async function pM({state:t,api:e,data:{reply:n,parent:o}}){const i=(await e.comments.add({comment:{...n,parent_id:o.id}})).comments[0],s=await e.comments.replies({commentId:o.id,limit:"all"});return{comments:t.comments.map(a=>a.id===o.id?{...a,replies:s.comments,count:{...a.count,replies:s.comments.length}}:a),commentCount:t.commentCount+1,commentIdToScrollTo:i.id}}async function hM({state:t,data:e}){return t.adminApi&&await t.adminApi.hideComment(e.id),{comments:t.comments.map(n=>{const o=n.replies.map(r=>r.id===e.id?{...r,status:"hidden"}:r);return n.id===e.id?{...n,status:"hidden",replies:o}:{...n,replies:o}}),commentCount:t.commentCount-1}}async function gM({state:t,api:e,data:n}){var i;t.adminApi&&await t.adminApi.showComment({id:n.id});let o;t.admin&&t.adminApi?o=await t.adminApi.read({commentId:n.id,memberUuid:(i=t.member)==null?void 0:i.uuid}):o=await e.comments.read(n.id);const r=o.comments[0];return{comments:t.comments.map(s=>{const a=s.replies.map(l=>l.id===n.id?r:l);return s.id===n.id?r:{...s,replies:a}}),commentCount:t.commentCount+1}}async function yM({state:t,data:e}){return{comments:t.comments.map(n=>{const o=n.replies.map(r=>r.id===e.id?{...r,liked:e.liked,count:{...r.count,likes:e.liked?r.count.likes+1:r.count.likes-1}}:r);return n.id===e.id?{...n,liked:e.liked,replies:o,count:{...n.count,likes:e.liked?n.count.likes+1:n.count.likes-1}}:{...n,replies:o}})}}async function bM({api:t,data:e,dispatchAction:n}){n("updateCommentLikeState",{id:e.id,liked:!0});try{return await t.comments.like({comment:e}),{}}catch{n("updateCommentLikeState",{id:e.id,liked:!1})}}async function wM({api:t,data:e,dispatchAction:n}){n("updateCommentLikeState",{id:e.id,liked:!1});try{return await t.comments.unlike({comment:e}),{}}catch{n("updateCommentLikeState",{id:e.id,liked:!0})}}async function vM({api:t,data:e}){return await t.comments.report({comment:e}),{}}async function SM({state:t,api:e,data:n,dispatchAction:o}){await e.comments.edit({comment:{id:n.id,status:"deleted"}});const r=t.comments.find(i=>i.id===n.id);return r&&(!r.replies||r.replies.length===0)?(o("setOrder",{order:t.order}),null):{comments:t.comments.map(i=>{var u;if(i.id===n.id)return i.replies.length>0?{...i,status:"deleted"}:null;const s=i.replies.length,a=i.replies.filter(d=>d.id!==n.id),l=s!==a.length,c={...i,replies:a};return l&&((u=i.count)!=null&&u.replies)&&(i.count.replies=i.count.replies-1),c}).filter(Boolean),commentCount:t.commentCount-1}}async function $M({state:t,api:e,data:{comment:n,parent:o}}){return n=(await e.comments.edit({comment:n})).comments[0],{comments:t.comments.map(i=>o&&o.id===i.id?{...i,replies:i.replies.map(s=>s.id===n.id?n:s)}:i.id===n.id?n:i)}}async function kM({data:t,state:e,api:n}){var l,c;const{name:o,expertise:r}=t,i={},s=(l=e==null?void 0:e.member)==null?void 0:l.name;o&&s!==o&&(i.name=o);const a=(c=e==null?void 0:e.member)==null?void 0:c.expertise;if(r!==void 0&&a!==r&&(i.expertise=r),Object.keys(i).length>0)try{const u=await n.member.update(i);if(!u)throw new Error("Failed to update member");return{member:u,success:!0}}catch(u){return{success:!1,error:u}}return null}function xM({data:t}){return{popup:t}}function CM(){return{popup:null}}async function EM({data:t,api:e,state:n}){let o={};const r=t.parent_id||t.id;if(t.type==="reply"&&!n.openCommentForms.some(a=>a.id===r||a.parent_id===r)){const a=n.comments.find(l=>l.id===r);if(a)try{const l=await $S({state:n,api:e,data:{comment:a,limit:"all"},isReply:!0});o={...o,...l}}catch(l){console.error("[Comments] Failed to load replies before opening form:",l)}}const i=n.openCommentForms.filter(a=>a.hasUnsavedChanges),s=i.findIndex(a=>a.id===t.id);return s>-1?(i[s]=t,{openCommentForms:i,...o}):{openCommentForms:[...i,t],...o}}function NM({data:t}){return{commentIdToHighlight:t}}function AM({data:{commentId:t},dispatchAction:e}){return setTimeout(()=>{e("setHighlightComment",null)},3e3),{commentIdToHighlight:t}}function OM({data:{id:t,hasUnsavedChanges:e},state:n}){return{openCommentForms:n.openCommentForms.map(r=>r.id===t?{...r,hasUnsavedChanges:e}:{...r})}}function RM({data:t,state:e}){return{openCommentForms:e.openCommentForms.filter(n=>n.id!==t)}}function DM({data:t}){return{commentIdToScrollTo:t}}const kS={openPopup:xM,closePopup:CM,closeCommentForm:RM,setCommentFormHasUnsavedChanges:OM,setScrollTarget:DM},TM={addComment:fM,editComment:$M,hideComment:hM,deleteComment:SM,showComment:gM,likeComment:bM,unlikeComment:wM,reportComment:vM,addReply:pM,loadMoreComments:uM,loadMoreReplies:$S,openCommentForm:EM,updateMember:kM,setOrder:mM,highlightComment:AM,setHighlightComment:NM,setCommentsIsLoading:dM,updateCommentLikeState:yM};function MM(t){return!!kS[t]}async function jM({action:t,data:e,state:n,api:o,adminApi:r,options:i,dispatchAction:s}){const a=TM[t];return a?await a({data:e,state:n,api:o,adminApi:r,options:i,dispatchAction:s})||{}:{}}function PM({action:t,data:e,state:n,api:o,adminApi:r,options:i}){const s=kS[t];return s?s({data:e,state:n,api:o,adminApi:r,options:i})||{}:{}}function IM({adminUrl:t}){const e=document.querySelector('iframe[data-frame="admin-auth"]');let n=1;const o={},r=new URL(t).origin;let i=null;window.addEventListener("message",function(l){if(l.origin!==r)return;let c=null;try{c=JSON.parse(l.data)}catch{return}const u=o[c.uid];u&&(delete o[c.uid],u(c.error,c.result))});function s(l,c){return new Promise((u,d)=>{function m(f,p){return f?d(f):u(p)}n+=1,o[n]=m,e.contentWindow.postMessage(JSON.stringify({uid:n,action:l,...c}),r)})}return{async getUser(){const l=await s("getUser");return!l||!l.users?null:l.users[0]},async hideComment(l){return await s("hideComment",{id:l})},async showComment({id:l}){return await s("showComment",{id:l})},async browse({page:l,postId:c,order:u,memberUuid:d}){let m=null;i&&!u&&(m=`created_at:<=${i}`);const f=new URLSearchParams;f.set("limit","20"),m&&f.set("filter",m),f.set("page",l.toString()),u&&f.set("order",u),d&&f.set("impersonate_member_uuid",d);const p=await s("browseComments",{postId:c,params:f.toString()});if(!i){const g=p.comments[0];g&&(i=g.created_at)}return p},async replies({commentId:l,afterReplyId:c,limit:u,memberUuid:d}){const m=new URLSearchParams;return u&&m.set("limit",u.toString()),c&&m.set("filter",`id:>'${c}'`),d&&m.set("impersonate_member_uuid",d),await s("getReplies",{commentId:l,params:m.toString()})},async read({commentId:l,memberUuid:c}){const u=new URLSearchParams;return c&&u.set("impersonate_member_uuid",c),await s("readComment",{commentId:l,...u.toString()&&{params:u.toString()}})}}}function LM(t){const e=_.useCallback(()=>{const i=t.dataset,s=i.ghostComments||window.location.origin,a=i.key,l=i.api,c=i.admin,u=i.postId||"",d=i.colorScheme,m=i.avatarSaturation?parseInt(i.avatarSaturation):void 0,f=i.accentColor??"#000000",p=i.commentsEnabled,g=i.title==="null"?null:i.title??"",h=i.count==="true",y=i.publication??"";return{locale:i.locale??"en",siteUrl:s,apiKey:a,apiUrl:l,postId:u,adminUrl:c,colorScheme:d,avatarSaturation:m,accentColor:f,commentsEnabled:p,title:g,showCount:h,publication:y}},[t]),n=x.useMemo(()=>e(),[]),[o,r]=_.useState(n);return _.useEffect(()=>{const i=new MutationObserver(s=>{s.some(a=>a.type==="attributes")&&r(e())});return i.observe(t,{attributes:!0}),()=>{i.disconnect()}},[t,e]),o}const zM=["Owner","Administrator","Super Editor"];function If(t,e){return t.some(n=>{var o;return n.id===e||((o=n.replies)==null?void 0:o.some(r=>r.id===e))})}const FM=({scriptTag:t,initialCommentId:e,pageUrl:n})=>{const o=LM(t),[r,i]=x.useState({initStatus:"running",member:null,admin:null,comments:[],pagination:null,commentCount:0,openCommentForms:[],popup:null,labs:{},order:"count__likes desc, created_at desc",adminApi:null,commentsIsLoading:!1,commentIdToHighlight:null,commentIdToScrollTo:e,showMissingCommentNotice:!1,pageUrl:n,supportEmail:null,isMember:!1,isAdmin:!1,isPaidOnly:!1,hasRequiredTier:!0,isCommentingDisabled:!1}),s=_.createRef(),a=_.useMemo(()=>cM({siteUrl:o.siteUrl,apiUrl:o.apiUrl,apiKey:o.apiKey}),[o]),l=x.useCallback(v=>{i(S=>(typeof v=="function"&&(v=v(S)),{...S,...v}))},[i]),c=x.useCallback(async(v,S)=>{if(MM(v)){l(C=>PM({action:v,data:S,state:C,api:a,adminApi:C.adminApi,options:o}));return}return new Promise(C=>{l($=>(jM({action:v,data:S,state:$,api:a,adminApi:$.adminApi,options:o,dispatchAction:c}).then(k=>{const N={...k};C(N),l(N)}).catch(console.error),{}))})},[a,o]),u=x.useMemo(()=>lM(o.locale,"comments"),[o.locale]),d={...o,...r,t:u.t,dispatchAction:c,openFormCount:x.useMemo(()=>r.openCommentForms.length,[r.openCommentForms])},m=async()=>{var v;if(!(r.adminApi||!o.adminUrl))try{const S=IM({adminUrl:o.adminUrl});let C=null;try{if(C=await S.getUser(),(!C||!C.roles.some($=>zM.includes($.name)))&&(C=null),C){const $=await S.browse({page:1,postId:o.postId,order:r.order,memberUuid:(v=r.member)==null?void 0:v.uuid});l(k=>k.pagination&&k.pagination.page>1||e?{adminApi:S,admin:C,isAdmin:!0}:{adminApi:S,admin:C,isAdmin:!0,comments:$.comments,pagination:$.meta.pagination})}}catch($){console.warn("[Comments] Failed to fetch admin endpoint:",$)}l({adminApi:S,admin:C,isAdmin:!!C})}catch(S){console.error("[Comments] Failed to initialize admin authentication:",S)}},f=async()=>{const v=a.comments.browse({page:1,postId:o.postId,order:r.order}),S=a.comments.count({postId:o.postId}),[C,$]=await Promise.all([v,S]);return{comments:C.comments,pagination:C.meta.pagination,count:$}},p=async v=>{var S;try{const $=(S=(await a.comments.read(v)).comments)==null?void 0:S[0];return $&&$.status==="published"?$:null}catch{return null}},g=async(v,S,C,$)=>{let k=C,N=$;for(;!If(k,v)&&N.page<N.pages&&!(S&&k.some(H=>H.id===S));){const O=await a.comments.browse({page:N.page+1,postId:o.postId,order:r.order});k=[...k,...O.comments],N=O.meta.pagination}return{comments:k,pagination:N}},h=async(v,S,C,$)=>{const k=S.parent_id,{comments:N,pagination:O}=await g(v,k,C,$);let H=N;if(k&&!If(H,v)){const{comments:ie}=await a.comments.replies({commentId:k,limit:"all"});H=H.map(ne=>ne.id===k?{...ne,replies:ie}:ne)}return{comments:H,pagination:O,found:If(H,v)}},y=async()=>{try{const{member:v,labs:S,supportEmail:C}=await a.init(),{count:$,comments:k,pagination:N}=await f();let O=k,H=N,ie=!1;if(e&&H){const E=await p(e);if(E){const A=await h(e,E,O,H);O=A.comments,H=A.pagination,ie=A.found}}const oe=!!v,ye=o.commentsEnabled==="paid",me=!!(v!=null&&v.paid)||!ye;l({member:v,initStatus:"success",comments:O,pagination:H,commentCount:$,order:"count__likes desc, created_at desc",labs:S,commentsIsLoading:!1,commentIdToHighlight:null,commentIdToScrollTo:ie?e:null,showMissingCommentNotice:!!e&&!ie,supportEmail:C,isMember:oe,isPaidOnly:ye,hasRequiredTier:me,isCommentingDisabled:(v==null?void 0:v.can_comment)===!1})}catch(v){console.error("[Comments] Failed to initialize:",v),l({initStatus:"failed"})}};x.useEffect(()=>{if(e){y();return}const v=new IntersectionObserver(S=>{S.forEach(C=>{C.isIntersecting&&(y(),s.current&&v.unobserve(s.current))})},{root:null,rootMargin:"0px",threshold:.1});return s.current&&v.observe(s.current),()=>{s.current&&v.unobserve(s.current)}},[s.current,e]);const w=r.initStatus==="success";return b.jsxs(hc.Provider,{value:d,children:[b.jsx(SR,{ref:s,children:b.jsx(gR,{done:w})}),r.comments.length>0?b.jsx(FS,{adminUrl:o.adminUrl,onLoad:m}):null,b.jsx(AR,{})]})};function BM(){let t=document.currentScript;if(!t)throw new Error("[Comments-UI] Cannot find current script tag");return t}function HM(t){if(t.previousElementSibling&&t.previousElementSibling.id===yr)return t.previousElementSibling;if(!t.parentElement)throw new Error("[Comments-UI] Script tag does not have a parent element");const e=document.createElement("div");return e.id=yr,t.parentElement.insertBefore(e,t),e}function VM(){const t=new URL(window.location.href);t.searchParams.get("token")&&(t.searchParams.delete("token"),window.history.replaceState({},document.title,t.href))}function _M(){const t=new URL(window.location.href);return t.hash="",t.toString()}function UM(){const t=BM(),e=HM(t),n=yp(window.location.hash),o=_M();try{VM(),ew.render(b.jsx(_.StrictMode,{children:b.jsx(FM,{initialCommentId:n,pageUrl:o,scriptTag:t})}),e)}catch(r){console.error(r)}}UM()});
172
172
  //# sourceMappingURL=comments-ui.min.js.map