@basementstudio/mitt-widget 0.0.0-stage → 0.2.0
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/LICENSE +15 -0
- package/dist/loader.js +1 -0
- package/dist/mitt-ui.js +1 -0
- package/dist/mitt.js +2 -0
- package/package.json +53 -4
- package/README.md +0 -3
package/LICENSE
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
Copyright (c) 2026 basement.studio. All rights reserved.
|
|
2
|
+
|
|
3
|
+
This software and its source code are proprietary and confidential to
|
|
4
|
+
basement.studio. No license, express or implied, is granted to use, copy,
|
|
5
|
+
modify, merge, publish, distribute, sublicense or sell this software, in
|
|
6
|
+
whole or in part, except under a separate written agreement with
|
|
7
|
+
basement.studio.
|
|
8
|
+
|
|
9
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
10
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
11
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
12
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
13
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
14
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
15
|
+
SOFTWARE.
|
package/dist/loader.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(function(){function e(e){typeof requestIdleCallback==`function`?requestIdleCallback(e):setTimeout(()=>{let t=performance.now()+8;e({timeRemaining:()=>t-performance.now()})})}function t(t){let n=()=>e(()=>t());document.readyState===`complete`?n():window.addEventListener(`load`,n,{once:!0})}var n=`mitt:review`;function r(e,t){try{return e()}catch{return t}}function i(e,t){let i=new URLSearchParams(e).get(`mitt`);return i===`off`?(r(()=>t?.removeItem(n),void 0),!1):i===null?r(()=>t?.getItem(n)===`1`,!1):(r(()=>t?.setItem(n,`1`),void 0),!0)}var a=document.currentScript,o=a instanceof HTMLScriptElement?a.src:``,s=a instanceof HTMLScriptElement?a.dataset:void 0;o&&window.top===window.self&&t(()=>{if(!i(window.location.search,r(()=>window.localStorage,void 0)))return;let e=new URL(`mitt.js`,o).href;if(document.querySelector(`mitt-root`)||[...document.scripts].some(t=>t.src===e))return;let t=document.createElement(`script`);t.src=e,t.async=!0,Object.assign(t.dataset,s),document.head.append(t)})})();
|
package/dist/mitt-ui.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var e=()=>{throw Error(`[mitt] the UI rendered before connect()`)},t=e,n=e,r=e,i=e,a=e,o=e,s=e,c=e,l=e,u=e,d=e,f=e,p=e,m=``,h,g=class{constructor(e,t){h&&Reflect.apply(h,this,[e,t])}},_=()=>({current:null});function v(e){t=e.jsx,n=e.Fragment,h=e.Component,Object.setPrototypeOf(g.prototype,e.Component.prototype),{normalizeText:r,textOf:i,hashText:a,excerpt:o,Icon:s,Done:c,Avatar:l,Presence:u,call:d,identity:f,save:p,BUSY:m}=e.shared}var ee=[[`2xl`,1536],[`xl`,1280],[`lg`,1024],[`md`,768],[`sm`,640]],te=4,ne=32,y=120,re=100;function ie(e){for(let[t,n]of ee)if(e>=n)return t;return`base`}function ae(e){let t=[];for(let n=e;n&&t.length<te;n=n.parentElement){if(n.id&&n.id.length<=re){t.unshift(`#${CSS.escape(n.id)}`);break}let e=1;for(let t=n.previousElementSibling;t;t=t.previousElementSibling)t.localName===n.localName&&e++;t.unshift(`${n.localName}:nth-of-type(${e})`)}return t.join(` > `)}function b(e,t){return t<=0?50:Math.round(Math.min(100,Math.max(0,e/t*100))*100)/100}function oe(e,t,n){return{x:b(t-e.left,e.width),y:b(n-e.top,e.height)}}async function se(e,t,n,o){let s=r(i(e));return{fbId:e.getAttribute(`data-fb`)??``,commit:o,tag:e.localName.toLowerCase().slice(0,ne),selector:ae(e),position:oe(e.getBoundingClientRect(),t,n),breakpoint:ie(window.innerWidth),viewport:{width:Math.max(1,Math.round(window.innerWidth)),height:Math.max(1,Math.round(window.innerHeight))},textFingerprint:{hash:await a(s),snippet:s.slice(0,y)}}}var x=`Comments are off.`;function ce(e,t,n,r,i){e.setState({draft:{target:t,url:location.href,x:n,y:r,anchor:i},name:f().name})}async function le(e,t){let{config:n}=e.props,{draft:r,name:i}=e.state;if(!n||!r)return x;let a;try{a=await r.anchor}catch{return`Couldn't read the element under the pin.`}if(e.state.draft!==r)return`The target changed. Post again for the selected element.`;if(location.href!==r.url)return`The page changed. Pick an element on this page before posting.`;let o={url:r.url,body:t,anchor:a,author:{name:i}},s=e.latest,c=await d(n,`/comments`,`POST`,o);if(!c.ok)return c.message;let l=++e.clock,u=!1,f=!1;return e.setState(({comments:t,draft:n,mode:i,resolved:a})=>{let o=t.find(e=>e.id===c.value.id),d=e.edits.get(c.value.id)?.[1],p=d??o??c.value;return f=!o&&!d&&e.latest!==s,e.edits.set(p.id,[l,p]),e.created.add(p.id),u=n===r,{comments:o||!a&&p.status!==`open`?t:[...t,p],draft:u?null:n,mode:!u&&i}},()=>{u&&!e.state.draft&&e.focusInWidget(),f&&e.refresh()}),null}function S(e,t){p({...f(),name:t}),e.setState({name:t})}async function C(e,t){let{config:n}=e.props;if(!n)return x;let r=f().name;S(e,t);let i=await d(n,`/guest`,`PUT`,{name:t});return i.ok?(e.refresh(),null):(S(e,r),i.message)}async function w(e,{id:t},n){let{config:r}=e.props;if(!r)return x;let i=await d(r,`/comments/${encodeURIComponent(t)}`,`PATCH`,{status:n});return i.ok?(e.edits.set(t,[++e.clock,i.value]),!e.state.resolved&&n!==`open`?e.leave([t]):(e.setState(({comments:e})=>({comments:e.map(e=>e.id===t?i.value:e)})),e.state.openId===t&&e.closeThread()),null):i.message}function T(e,t,n){let r=++e.clock;e.setState(({comments:i})=>({comments:i.map(i=>{if(i.id!==t)return i;let a={...i,replies:n(i.replies)};return e.edits.set(t,[r,a]),a})}))}async function ue(e,t){let{config:n}=e.props;if(!n)return!1;let r=++e.clock,i=await d(n,`/comments/${encodeURIComponent(t)}`);if(!i.ok)return!1;let{edits:a}=e;if(e.latest>r||(a.get(t)?.[0]??0)>r)return!0;let o=i.value;a.set(t,[r,o]);let s=JSON.stringify(o);return e.setState(({comments:e})=>e.some(e=>e.id===t&&JSON.stringify(e)!==s)?{comments:e.map(e=>e.id===t?o:e)}:null),!0}var E=e=>`/comments/${encodeURIComponent(e.id)}/replies`;async function de(e,t,n){let{config:r}=e.props;if(!r)return x;let i={body:n,author:{name:f().name}},a=await d(r,E(t),`POST`,i);return a.ok?(T(e,t.id,e=>[...e.filter(e=>e.id!==a.value.id),a.value]),null):a.message}async function fe(e,t,{id:n},r){let{config:i}=e.props;if(!i)return x;let a=`${E(t)}/${encodeURIComponent(n)}`,o=await(r===void 0?d(i,a,`DELETE`):d(i,a,`PATCH`,{body:r}));return o.ok?(T(e,t.id,e=>r===void 0?e.filter(e=>e.id!==n):e.map(e=>e.id===n?o.value:e)),null):o.message}var D=class extends g{state={value:``};componentDidMount(){this.props.field.current?.focus()}render({id:e,copy:n,field:r,onDone:i,onCancel:a,labelled:o},{value:s}){let c=s.trim();return t(`form`,{"aria-labelledby":o?e:void 0,class:`flex flex-col gap-(--mitt-gap)`,onSubmit:e=>{e.preventDefault(),c&&i(c)},children:[t(`div`,{children:[t(`h2`,{id:e,class:`[font-weight:500]`,children:`What\u2019s your name?`}),t(`p`,{class:`text-muted text-xs`,children:n})]}),t(`input`,{ref:r,value:s,required:!0,maxLength:60,autocomplete:`name`,"aria-label":`Your name`,placeholder:`Your name`,onInput:e=>this.setState({value:e.currentTarget.value}),class:`mitt-field block h-(--mitt-btn-h)`}),t(`div`,{class:`flex items-center justify-end gap-1`,children:[t(`button`,{type:`button`,onClick:a,class:`mitt-quiet`,children:t(`span`,{class:`mitt-label`,children:`Cancel`})}),t(`button`,{type:`submit`,disabled:!c,class:`mitt-btn`,children:t(`span`,{class:`mitt-label`,children:`Continue`})})]})]})}},O=class extends g{state={editing:!1,error:null};live=!1;focus=e=>{e?.focus(),e?.select()};edit=()=>{this.live=!0,this.setState({editing:!0,error:null})};save=async e=>{if(!this.live)return;this.live=!1,this.setState({editing:!1});let t=e.trim();t&&t!==this.props.name&&this.setState({error:await this.props.onSave(t)})};field(e){let{name:n,onLeave:r}=this.props;return t(`input`,{ref:this.focus,defaultValue:n,maxLength:60,autocomplete:`name`,"aria-label":`Your name`,placeholder:`Your name`,"aria-describedby":this.state.error?`mitt-name-error`:void 0,onBlur:e=>void this.save(e.currentTarget.value),onKeyDown:e=>{if(e.key===`Escape`)e.stopPropagation(),e.currentTarget.value=n;else if(e.key!==`Enter`)return;e.preventDefault(),r()},class:`mitt-field text-fg ${e}`})}error(){let{error:e}=this.state;return e?t(`p`,{id:`mitt-name-error`,role:`alert`,class:`w-full text-danger text-xs`,children:e}):null}render({name:e},{editing:r}){return t(n,{children:[t(`div`,{class:`flex h-(--mitt-btn-h) items-center gap-1 text-muted`,children:r?this.field(`h-full`):t(n,{children:[t(`span`,{class:`min-w-0 truncate text-xs`,children:[`Posting as `,t(`span`,{class:`[font-weight:500] text-fg`,children:e})]}),t(`span`,{"aria-hidden":`true`,class:`text-xs`,children:`\u00B7`}),t(`button`,{type:`button`,"aria-label":`Change your name`,onClick:this.edit,class:`mitt-link`,children:`Change`})]})}),this.error()]})}},pe=`M8 2.75 14 13.25H2zM8 6.75v2.5M8 11.25h.01`,me=`M4.5 4.5l7 7M11.5 4.5l-7 7`,he=`M5 6.5 8 9.5l3-3`,ge=`M3.5 8.5 6.5 11.5 12.5 5`,_e=`M5.5 8.25 7.25 10l3.25-3.75M14.25 8a6.25 6.25 0 1 1-12.5 0 6.25 6.25 0 0 1 12.5 0`,ve=`M8 12.5v-9M4 7.5l4-4 4 4`,ye=[[`year`,31536e3],[`month`,2592e3],[`week`,604800],[`day`,86400],[`hour`,3600],[`minute`,60]],k=new Map;function be(e,t=Date.now(),n=`long`){let r=(Date.parse(e)-t)/1e3,i=k.get(n);i||(i=new Intl.RelativeTimeFormat(void 0,{numeric:`auto`,style:n}),k.set(n,i));for(let[e,t]of ye)if(Math.abs(r)>=t)return i.format(Math.round(r/t),e);return`just now`}var A=8,j=14;function M(e,t,n,r){let i=e+j+n+A<=innerWidth,a=t+j+r+A<=innerHeight,o=(e,t,n)=>Math.round(Math.max(A,Math.min(e,n-t-A)));return{transform:`translate(${o(i?e+j:e-j-n,n,innerWidth)}px, ${o(a?t+j:t-j-r,r,innerHeight)}px)`,origin:`${i?`left`:`right`} ${a?`top`:`bottom`}`}}function N({label:e,icon:n,onClick:r,buttonRef:i}){return t(`button`,{ref:i,type:`button`,"aria-label":e,onClick:r,class:`mitt-icon`,children:t(s,{d:n})})}var xe=/Mac|iP/.test(navigator.platform);function P({label:e,keys:n=[xe?`\u2318`:`Ctrl`,`\u21B5`]}){return t(`span`,{class:`mr-auto flex items-center gap-1 text-muted text-xs pointer-coarse:invisible`,children:[t(`kbd`,{class:`flex gap-0.5`,children:n.map(e=>t(`kbd`,{class:`mitt-key`,children:t(`span`,{class:`mitt-mono`,children:e})},e))}),e]})}var F=e=>e.key===`Enter`&&(e.metaKey||e.ctrlKey),Se={danger:`bg-danger`,warning:`bg-warning`,muted:`bg-muted`};function I({tone:e,children:n}){return t(`span`,{class:`mitt-chip`,children:[e?t(`span`,{class:`size-1.5 rounded-full ${Se[e]}`}):null,t(`span`,{class:`mitt-mono text-fg`,children:n})]})}function L(e){return t(`section`,{role:`dialog`,"aria-label":e.labelledby?void 0:e.label,"aria-labelledby":e.labelledby,class:`mitt-panel mitt-enter ${e.class??``}`,children:[t(`header`,{class:`flex h-(--mitt-icon-btn) items-center gap-1.5`,children:[e.header,t(`span`,{class:`ml-auto`}),e.actions,t(N,{label:`Close`,icon:me,onClick:e.onClose,buttonRef:e.closeRef})]}),e.children,e.footer?t(`footer`,{class:`flex items-center gap-1`,children:e.footer}):null]})}var R=class extends g{box=_();point={x:0,y:0};width=291;height=160;stop;componentDidMount(){this.stop=this.props.listen?.(this.position),this.measure()}componentDidUpdate(){this.measure()}componentWillUnmount(){this.stop?.()}measure(){let e=this.box.current;e&&(this.width=e.offsetWidth,this.height=e.offsetHeight,this.position())}position=()=>{let e=this.box.current;if(this.point=this.props.at()??this.point,!e)return;let{transform:t,origin:n}=M(this.point.x,this.point.y,this.width,this.height);e.style.transform=t;let r=e.firstElementChild;r instanceof HTMLElement&&(r.style.transformOrigin=n)};render({at:e,listen:n,...r}){return t(`div`,{ref:this.box,class:`fixed top-0 left-0`,children:t(L,{...r})})}};function z(e,t,n){for(let r of document.elementsFromPoint(e,t))if(r!==n)return r.closest(`[data-fb]`);return null}function B(e){let t=e?.getRootNode();return t instanceof ShadowRoot?t.host:null}var Ce=(e,t)=>e.x===t.x&&e.y===t.y&&e.width===t.width&&e.height===t.height,V=18,we=6.7,Te=12;function Ee(e,t){let n=t.length*we+Te,r=Math.max(4,Math.min(e.left,innerWidth-n-4)),i=e.top-V-4;return`translate(${r}px, ${i>=4?i:e.bottom+4+V<=innerHeight?e.bottom+4:Math.max(4,e.top+4)}px)`}function De(){return t(`p`,{role:`status`,class:`mitt-note mitt-enter fixed top-3 left-1/2 flex h-7 -translate-x-1/2 items-center gap-1.5 rounded-full px-2.5 text-muted text-xs select-none`,children:[t(`span`,{class:`text-fg`,children:`Click an element`}),` \u00B7`,` `,t(`kbd`,{class:`mitt-key`,children:t(`span`,{class:`mitt-mono`,children:`Esc`})}),` `,`to exit`]})}var Oe=class extends g{state={box:null,tag:``,picks:0};layer=_();pointer=null;frame=0;target=null;schedule=()=>{this.frame||=requestAnimationFrame(this.measure)};measure=()=>{this.frame=0;let e=B(this.layer.current),t=this.pointer,n=this.props.draft?.target??(t&&e?z(t.x,t.y,e):null),r=n?.isConnected?n.getBoundingClientRect():null,i=this.state.box;if(n===this.target&&(r&&i?Ce(r,i):r===i))return;let a=this.state.picks+(n===this.target?0:1);this.target=n,this.setState(r&&n?{box:r,tag:n.localName,picks:a}:{box:null,picks:a})};componentDidMount(){window.addEventListener(`scroll`,this.schedule,{passive:!0,capture:!0}),window.addEventListener(`resize`,this.schedule,{passive:!0})}componentDidUpdate(e){e.draft!==this.props.draft&&this.schedule()}componentWillUnmount(){cancelAnimationFrame(this.frame),window.removeEventListener(`scroll`,this.schedule,{capture:!0}),window.removeEventListener(`resize`,this.schedule)}render({draft:e,app:r},{box:i,tag:a,picks:o}){let s=i?`${a} \u00B7 ${Math.round(i.width)}\u00D7${Math.round(i.height)}`:``;return t(n,{children:[t(`div`,{ref:this.layer,class:`fixed inset-0 cursor-crosshair select-none`,onPointerMove:e=>{this.pointer={x:e.clientX,y:e.clientY},this.schedule()},onPointerLeave:()=>{this.pointer=null,this.schedule()},onClick:e=>{let t=B(e.currentTarget),{clientX:n,clientY:i}=e,a=t&&z(n,i,t);a&&ce(r,a,n,i,se(a,n,i,document.documentElement.getAttribute(`data-fb-commit`)??``))}}),i?t(`div`,{"aria-hidden":`true`,class:`mitt-pick pointer-events-none fixed top-0 left-0 mitt-outline rounded-sm bg-accent-soft`,style:{transform:`translate(${i.left}px, ${i.top}px)`,width:`${i.width}px`,height:`${i.height}px`}},o):null,i&&!e?t(`div`,{"aria-hidden":`true`,class:`mitt-pick pointer-events-none fixed top-0 left-0 flex h-4.5 items-center rounded-sm bg-accent px-1.5 whitespace-nowrap`,style:{transform:Ee(i,s)},children:t(`span`,{class:`mitt-mono text-on-accent`,children:s})},o):null]})}},H=`mitt-intro-title`,ke=class extends g{state={body:``,busy:!1,error:null};area=_();nameField=_();summary;introduced=!1;focusFirst(){(this.props.name?this.area:this.nameField).current?.focus()}componentDidMount(){this.focusFirst()}componentDidUpdate(e){(e.draft!==this.props.draft||e.name!==this.props.name)&&this.focusFirst()}submit=async()=>{let e=this.state.body.trim();if(this.state.busy||!e)return;this.setState({busy:!0,error:null});let t=await le(this.props.app,e);this.setState({busy:!1,error:t})};snippet(e){return this.summary?.[0]!==e&&(this.summary=[e,o(i(e),48)]),this.summary[1]}render({draft:{target:e,x:r,y:i},name:a,app:o},{body:s,busy:c,error:l}){let u=o.closeDraft,d=this.snippet(e);return t(R,{at:()=>({x:r,y:i}),label:`New comment`,labelledby:a?void 0:H,onClose:u,header:t(n,{children:[t(I,{children:e.localName}),t(`span`,{class:`min-w-0 truncate text-xs ${d?``:`text-muted`}`,children:d||`No text`})]}),children:a?t(`form`,{class:`flex flex-col gap-(--mitt-gap)${this.introduced?` mitt-step`:``}`,onSubmit:e=>{e.preventDefault(),this.submit()},children:[t(O,{name:a,onSave:e=>C(o,e),onLeave:()=>this.area.current?.focus()}),t(`textarea`,{ref:this.area,rows:3,value:s,"aria-label":`Comment`,placeholder:`What should change here?`,"aria-describedby":l?`mitt-composer-error`:void 0,onInput:e=>this.setState({body:e.currentTarget.value}),onKeyDown:e=>{F(e)&&(e.preventDefault(),this.submit())},class:`mitt-field block max-h-40 min-h-15 resize-none py-1.5 field-sizing-content`}),l?t(`p`,{id:`mitt-composer-error`,role:`alert`,class:`text-danger text-xs`,children:l}):null,t(`div`,{class:`flex items-center gap-1`,children:[t(P,{label:`to post`}),t(`button`,{type:`button`,onClick:u,class:`mitt-quiet`,children:t(`span`,{class:`mitt-label`,children:`Cancel`})}),t(`button`,{type:`submit`,disabled:c||!s.trim(),class:`mitt-btn`,children:t(`span`,{class:`mitt-label`,children:c?`Posting\u2026`:`Post`})})]})]},`comment`):t(D,{id:H,copy:`Shown with your comments.`,field:this.nameField,onDone:e=>{this.introduced=!0,S(o,e)},onCancel:u},`intro`)})}},U=class extends g{state={busy:!1,error:null};render({onResolve:e,quiet:r,reopen:i},{busy:a,error:o}){return t(n,{children:[o?t(`p`,{role:`alert`,class:`mr-auto text-danger text-xs`,children:o}):null,t(`button`,{type:`button`,disabled:a,"aria-busy":a||void 0,onClick:async()=>{this.setState({busy:!0,error:null}),this.setState({busy:!1,error:await e()})},class:`ml-auto ${r?`mitt-quiet -mr-(--mitt-btn-px)`:`mitt-btn`}${a?m:``}`,children:t(`span`,{class:`mitt-label`,children:i?`Reopen`:`Resolve`})})]})}},W=e=>e?.focus();function G({at:e,narrow:n}){return t(`time`,{dateTime:e,title:new Date(e).toLocaleString(),children:be(e,void 0,n?`narrow`:`long`)})}var Ae=e=>{e?.focus(),e?.setSelectionRange(e.value.length,e.value.length)};function K(e){let{value:n,busy:r}=e;return t(`form`,{class:`mitt-fill`,onSubmit:t=>{t.preventDefault(),e.onSend()},children:[t(`textarea`,{ref:e.field,rows:1,value:n,"aria-label":e.label,placeholder:e.placeholder,"aria-describedby":e.error,onInput:t=>e.onInput(t.currentTarget.value),onKeyDown:t=>{F(t)||t.key===`Enter`&&!t.shiftKey&&!t.isComposing?(t.preventDefault(),e.onSend()):t.key===`Escape`&&e.onCancel&&(t.stopPropagation(),e.onCancel())}}),t(`button`,{type:`submit`,"aria-label":e.action,title:e.action,disabled:!n.trim(),"aria-busy":r||void 0,class:r?m:``,children:t(s,{d:e.icon})})]})}var je=`mitt-reply-intro`,q=4e3,Me=15e3,Ne=class extends g{state={text:``,busy:!1,error:null,naming:!1,editing:null,deleting:null,draft:``,changing:!1,changeError:null};body=_();field=_();nameField=_();sent=!1;timer=0;asking=!1;closed=!1;componentDidMount(){document.addEventListener(`visibilitychange`,this.wake),this.wait(q)}componentWillUnmount(){this.closed=!0,clearTimeout(this.timer),document.removeEventListener(`visibilitychange`,this.wake)}wait(e){this.timer=window.setTimeout(this.ask,e)}ask=async()=>{if(this.timer=0,document.visibilityState!==`visible`)return;this.asking=!0;let e=await ue(this.props.app,this.props.pin.comment.id);this.asking=!1,this.closed||this.wait(e?q:Me)};wake=()=>{document.visibilityState===`visible`&&!this.timer&&!this.asking&&!this.closed&&this.wait(q)};getSnapshotBeforeUpdate(e){let t=this.body.current;return!!t&&e.pin.comment.replies.length<this.props.pin.comment.replies.length&&t.scrollHeight-t.scrollTop-t.clientHeight<2}componentDidUpdate(e,t,n){let r=this.body.current;(this.sent||n)&&r&&(this.sent=!1,r.scrollTop=r.scrollHeight)}send=async()=>{let e=this.state.text.trim();if(this.state.busy||!e)return;if(!f().name)return this.setState({naming:!0,error:null});this.setState({busy:!0,error:null});let t=await de(this.props.app,this.props.pin.comment,e);this.sent=!t,this.setState(t?{busy:!1,error:t}:{busy:!1,text:``}),this.field.current?.focus()};named=e=>{e&&S(this.props.app,e),this.setState({naming:!1},()=>e?void this.send():this.field.current?.focus())};settle(e,t=0){let n=this.body.current;this.setState({editing:null,deleting:null,changing:!1,changeError:null},()=>n?.querySelectorAll(`[data-reply-id="${CSS.escape(e)}"] p button`)[t]?.focus())}async change(e,t){if(this.state.changing||t===``)return;if(t===e.body)return this.settle(e.id);this.setState({changing:!0,changeError:null});let n=await fe(this.props.app,this.props.pin.comment,e,t);n?this.setState({changing:!1,changeError:n}):t===void 0?this.setState({deleting:null,changing:!1},()=>this.field.current?.focus()):this.settle(e.id)}item(e,r){let{editing:i,deleting:a,draft:o,changing:s,changeError:c}=this.state,u=r&&e.own,d=u&&i===e.id,f=u&&a===e.id,p=c&&(d||f)?c:null;return t(`li`,{"data-reply-id":e.id,class:`group`,children:[t(`p`,{class:`flex h-5 items-center gap-1.5`,children:[t(l,{seed:e.author.avatar,size:16}),t(`span`,{class:`min-w-0 truncate [font-weight:500] text-xs`,children:e.author.name}),t(`span`,{class:`mitt-mono shrink-0`,children:t(G,{at:e.createdAt,narrow:!0})}),e.editedAt?t(`span`,{class:`mitt-mono shrink-0`,title:`Edited ${new Date(e.editedAt).toLocaleString()}`,children:`edited`}):null,u&&!f?t(`span`,{class:`ml-auto flex gap-2${d?``:` opacity-0 transition-opacity group-focus-within:opacity-100 group-hover:opacity-100 motion-reduce:transition-none pointer-coarse:opacity-100`}`,children:d?t(`button`,{type:`button`,class:`mitt-act`,onClick:()=>this.settle(e.id),children:`Cancel`}):t(n,{children:[t(`button`,{type:`button`,class:`mitt-act`,onClick:()=>this.setState({editing:e.id,deleting:null,draft:e.body,changeError:null}),children:`Edit`}),t(`button`,{type:`button`,class:`mitt-act`,onClick:()=>this.setState({deleting:e.id,editing:null,changeError:null}),children:`Delete`})]})}):null,f?t(`span`,{role:`group`,"aria-label":`Delete this reply?`,class:`ml-auto flex items-center gap-2`,onKeyDown:t=>{t.key===`Escape`&&(t.stopPropagation(),this.settle(e.id,1))},children:[t(`span`,{class:`text-muted text-xs`,children:`Sure?`}),t(`button`,{type:`button`,"aria-busy":s||void 0,class:`mitt-act text-danger${s?m:``}`,onClick:()=>void this.change(e),children:`Confirm`}),t(`button`,{ref:W,type:`button`,class:`mitt-act`,onClick:()=>this.settle(e.id,1),children:`Cancel`})]}):null]}),d?t(K,{label:`Edit reply`,value:o,busy:s,action:`Save reply`,icon:ge,field:Ae,error:p?`mitt-change-error`:void 0,onInput:e=>this.setState({draft:e}),onSend:()=>void this.change(e,o.trim()),onCancel:()=>this.settle(e.id)}):t(`p`,{class:`whitespace-pre-wrap break-words text-pretty`,children:e.body}),p?t(`p`,{id:`mitt-change-error`,role:`alert`,class:`text-danger text-xs`,children:p}):null]},e.id)}reply(e){let{text:n,busy:r,naming:i}=e;return i?t(`div`,{class:`mitt-step`,children:t(D,{labelled:!0,id:je,copy:`Shown with your replies.`,field:this.nameField,onDone:this.named,onCancel:()=>this.named()})}):t(K,{label:`Reply`,placeholder:`Reply\u2026`,value:n,busy:r,action:`Send reply`,icon:ve,field:this.field,error:e.error?`mitt-reply-error`:void 0,onInput:e=>this.setState({text:e}),onSend:()=>void this.send()})}render({pin:e,app:r},i){let{comment:a,n:o}=e,{tracker:s}=r,{resolvedAt:c,replies:u}=a,d=a.status!==`open`;return t(R,{at:()=>{let e=s.states.get(a.id);return e?.kind===`placed`?e:void 0},listen:s.listen,label:`Comment ${o}${d?` (resolved)`:``}`,onClose:r.closeThread,closeRef:W,header:t(n,{children:[t(l,{seed:a.author.avatar,size:20}),t(`span`,{class:`min-w-0 truncate [font-weight:500] text-xs`,children:a.author.name}),t(`span`,{class:`mitt-mono shrink-0`,children:d?t(n,{children:[`Resolved `,c?t(G,{at:c,narrow:!0}):null]}):t(G,{at:a.createdAt})})]}),footer:i.naming&&!d?void 0:t(n,{children:[d?null:t(P,{label:`to reply`,keys:[`\u21B5`]}),t(U,{reopen:d,onResolve:()=>w(r,a,d?`open`:`resolved`)})]}),children:[t(`div`,{ref:this.body,class:`mitt-scroll-fade max-h-[45dvh] overflow-y-auto`,children:[t(`p`,{class:`whitespace-pre-wrap break-words text-pretty`,children:a.body}),u.length>0?t(`ol`,{"aria-label":`Replies`,class:`mt-2.5 flex flex-col gap-2.5`,children:u.map(e=>this.item(e,!d))}):null]}),d?null:this.reply(i),i.error&&!d?t(`p`,{id:`mitt-reply-error`,role:`alert`,class:`text-danger text-xs`,children:i.error}):null]})}};function Pe(e){return e.kind===`hidden`?[`Hidden`,`muted`,`Its element isn't visible at this size.`]:e.why===`missing`?[`Orphan`,`danger`,`Its element is no longer on this page.`]:e.why===`changed`?[`Orphan`,`danger`,`The text it was left on has changed.`]:e.why===`unmatched`?[`Orphan`,`danger`,`Its element was removed or its text changed.`]:[`Ambiguous`,`warning`,`Mitt never guesses, and several elements match.`]}var Fe=e=>e.filter(e=>!e.leaving).length;function Ie(e,{comment:t,state:n}){if(t.path!==location.pathname){try{sessionStorage.setItem(`mitt:goto`,t.id)}catch{}let{pathname:e,search:n}=new URL(t.url);location.assign(e+n)}else n&&n.kind!==`placed`?e.setState(({row:e})=>({row:e===t.id?null:t.id})):e.reveal(t.id)}function Le({item:e,expanded:n,app:r}){let{comment:i,n:a,state:s}=e,l=i.status!==`open`,u=s&&s.kind!==`placed`?s:void 0,[d,f,p]=u?Pe(u):[],{breakpoint:m,viewport:h,textFingerprint:g}=i.anchor,_=o(g.snippet,48),v=i.replies.length;return t(`li`,{"data-comment-id":i.id,"data-unplaced":u?.kind,inert:e.leaving,class:`rounded-(--mitt-row-radius) transition-[opacity,translate] hover:bg-row ${n?`bg-row`:``} ${e.leaving?`translate-x-1 opacity-0 ease-in motion-reduce:translate-x-0`:``}`,children:[t(`button`,{type:`button`,"aria-expanded":u?n:void 0,onClick:()=>Ie(r,e),class:`flex w-full flex-col gap-1 rounded-(--mitt-row-radius) p-2 text-left`,children:[t(`span`,{class:`flex h-(--mitt-pin-size) w-full items-center gap-1.5`,children:[t(`span`,{class:`mitt-dot${l?` mitt-done`:``}`,children:l?t(c,{}):t(`span`,{children:a})}),t(`span`,{class:`min-w-0 truncate text-muted text-xs`,children:i.author.name}),t(`span`,{class:`mitt-mono shrink-0`,children:[`\u00B7 `,t(G,{at:i.createdAt,narrow:!0}),v?` \u00B7 ${v} repl${v===1?`y`:`ies`}`:null]}),d?t(`span`,{class:`ml-auto flex`,children:t(I,{tone:f,children:d})}):null]}),t(`span`,{class:`line-clamp-2 break-words pl-[calc(var(--mitt-pin-size)+6px)] text-pretty`,children:i.body})]}),n&&u?t(`div`,{class:`flex flex-col gap-1 pr-2 pb-2 pl-[calc(var(--mitt-pin-size)+14px)]`,children:[t(`p`,{class:`text-muted text-xs`,children:[p,` `,_?`Left on \u201C${_}\u201D.`:`Left on an element without text.`]}),t(`div`,{class:`flex h-(--mitt-btn-h) items-center gap-1`,children:[t(`span`,{class:`mitt-mono`,children:[m,` (`,h.width,`\u00D7`,h.height,`)`]}),t(U,{quiet:!0,reopen:l,onResolve:()=>w(r,i,l?`open`:`resolved`)})]})]}):null]})}function J({items:e,app:n}){return t(`ol`,{class:`flex flex-col`,children:e.map(e=>t(Le,{item:e,expanded:n.state.row===e.comment.id,app:n},e.comment.id))})}function Re({path:e,items:n,app:r}){return t(`details`,{open:!0,children:[t(`summary`,{class:`flex h-6 items-center gap-1 rounded-(--mitt-row-radius) px-2 [font-weight:500] text-xs hover:bg-row`,children:[t(s,{d:he,class:`mitt-fold text-muted`}),t(`span`,{class:`min-w-0 truncate`,children:e}),t(`span`,{class:`mitt-mono ml-auto`,children:Fe(n)})]}),t(J,{items:n,app:r})]})}function Y(e){return t(`button`,{type:`button`,"aria-pressed":e.on,onClick:e.onClick,class:`rounded-sm [font-weight:500] ${e.on?`text-fg`:`text-muted hover:text-fg`}`,children:e.children})}var X=class extends g{state={all:!1};list=_();first=_();componentDidMount(){let{row:e}=this.props.app.state,t=this.list.current,n=e&&t?.querySelector(`li[data-comment-id="${CSS.escape(e)}"] > button`);t&&n instanceof HTMLElement?(t.scrollTop+=n.getBoundingClientRect().top-t.getBoundingClientRect().top-8,n.focus()):this.first.current?.focus()}render({items:e,app:r},{all:i}){let{resolved:a,syncError:o}=r.state,c=location.pathname,l=e.filter(e=>e.comment.status!==`open`===a),u=l.filter(e=>e.comment.path===c),d=l.filter(e=>e.comment.path!==c&&!e.leaving),f=new Set(d.map(e=>e.comment.path)).size,p=new Map([[c,[]]]);for(let e of[...l].reverse()){let t=p.get(e.comment.path);t?t.unshift(e):p.set(e.comment.path,[e])}let m=i?l:u;return t(L,{label:`Comments`,onClose:r.closePanel,class:`fixed right-5 bottom-16 max-h-[min(480px,calc(100dvh-80px))] w-80 origin-bottom-right`,header:t(`h2`,{class:`[font-weight:500] text-xs`,children:`Comments`}),actions:t(`button`,{ref:this.first,type:`button`,"aria-pressed":a,"aria-label":`Show resolved comments`,title:`Show resolved comments`,onClick:r.toggleResolved,class:`mitt-icon mr-0 ${a?`bg-row text-fg`:``}`,children:t(s,{d:_e})}),footer:t(n,{children:[t(`button`,{type:`button`,"aria-keyshortcuts":`c`,title:`Add comment (C)`,onClick:()=>{r.togglePill(),r.focusInWidget()},class:`mitt-btn`,children:t(`span`,{class:`mitt-label`,children:`Add comment`})}),t(`span`,{class:`flex items-center whitespace-nowrap text-muted text-xs pointer-coarse:invisible`,children:[`or press`,` `,t(`kbd`,{class:`mitt-key ml-1`,children:t(`span`,{class:`mitt-mono`,children:`C`})}),`, then click anything`]})]}),children:[t(`div`,{class:`flex h-6 items-center gap-1.5 text-xs`,children:[t(Y,{on:!i,onClick:()=>this.setState({all:!1}),children:`This page`}),t(`span`,{"aria-hidden":`true`,class:`text-muted`,children:`\u00B7`}),t(Y,{on:i,onClick:()=>this.setState({all:!0}),children:`All pages`})]}),o?t(`p`,{class:`mitt-row justify-start py-1.5 text-warning`,children:[t(s,{d:pe}),o]}):null,m.length>0?t(`div`,{ref:this.list,class:`mitt-scroll-fade -mr-(--mitt-panel-pad) -ml-2 min-h-0 overflow-y-auto pr-[calc(var(--mitt-panel-pad)-8px)]`,children:i?[...p].map(([e,n])=>n.length>0?t(Re,{path:e,items:n,app:r},e):null):t(J,{items:u,app:r})}):o?null:t(`p`,{class:`text-muted text-xs`,children:[`No `,a?`resolved `:``,`comments`,d.length>0&&!i?` on this page`:a?``:` yet`]}),!i&&f>0?t(`button`,{type:`button`,onClick:()=>this.setState({all:!0}),class:`mitt-link self-start`,children:[d.length,` more on `,f,` other page`,f===1?``:`s`]}):null]})}},ze=[`Auto`,`Light`,`Dark`],Z=`flex flex-wrap items-center justify-between gap-x-2 gap-y-1.5 border-t border-line py-1.5 first:border-t-0`,Q=`h-6 shrink-0 rounded-[6px] bg-row px-2 [font-weight:500] hover:bg-line`,Be=e=>e?.focus();function $({title:e,hint:n,children:r}){return t(`span`,{class:`flex min-h-6 min-w-0 flex-1 flex-col justify-center gap-0.5`,children:[t(`span`,{class:`[font-weight:500] text-fg leading-[15px] ${!n&&!r?`mitt-label`:``}`,children:e}),n?t(`span`,{class:`truncate text-[11px] text-muted leading-[13px]`,children:n}):null,r]})}var Ve=class extends O{render({name:e},{editing:n}){return t(`div`,{class:Z,children:[n?t($,{title:`Name`,children:this.field(`h-6`)}):t($,{title:`Name`,hint:e||`Not set`}),n?null:t(`button`,{type:`button`,"aria-label":`${e?`Change`:`Add`} your name`,onClick:this.edit,class:Q,children:e?`Change`:`Add`}),this.error()]})}},He=class extends g{state={confirm:!1};box=_();off=_();pins=_();componentDidMount(){this.box.current?.querySelector(`button`)?.focus()}cancel=()=>this.setState({confirm:!1},()=>this.off.current?.focus());render({app:e},{confirm:n}){let{theme:r,hidden:i}=e.state,{name:a}=f();return t(`div`,{ref:this.box,id:`mitt-menu`,role:`dialog`,"aria-label":`Mitt settings`,onKeyDown:e.menuKey,class:`mitt-panel mitt-enter fixed right-5 bottom-16 origin-bottom-right gap-0 py-[7px] text-xs`,children:[t(`div`,{class:Z,children:[t($,{title:`Theme`}),t(`div`,{role:`radiogroup`,"aria-label":`Theme`,class:`flex rounded-full bg-row p-0.5`,children:ze.map(n=>{let i=n.toLowerCase(),a=r===i;return t(`button`,{type:`button`,role:`radio`,"aria-checked":a,onClick:()=>e.setTheme(i),style:a?`box-shadow:0 1px 2px #00000040`:void 0,class:`h-5 rounded-full px-2 ${a?`bg-surface text-fg`:`text-muted hover:text-fg`}`,children:n},i)})})]}),t(Ve,{name:a,onLeave:()=>this.pins.current?.focus(),onSave:t=>a?C(e,t):(S(e,t),null)}),t(`div`,{class:Z,children:[t($,{title:`Show pins`}),t(`button`,{ref:this.pins,type:`button`,role:`switch`,"aria-checked":!i,"aria-label":`Show pins`,onClick:e.togglePins,class:`flex h-4 w-7 shrink-0 rounded-full p-0.5 ${i?`bg-muted`:`bg-accent`}`,children:t(`span`,{class:`size-3 rounded-full bg-surface transition-[translate] motion-reduce:transition-none ${i?``:`[translate:12px]`}`})})]}),t(`div`,{class:Z,children:[t($,{title:`Review mode`,hint:`On for this site`}),n?t(`div`,{role:`group`,"aria-labelledby":`mitt-off`,class:`flex w-full flex-col gap-1.5`,onKeyDown:e=>{e.key===`Escape`&&(e.stopPropagation(),this.cancel())},children:[t(`p`,{id:`mitt-off`,class:`text-pretty text-muted`,children:`Turn off Mitt on this site? Add ?mitt to the URL to turn it back on.`}),t(`span`,{class:`flex justify-end gap-1`,children:[t(`button`,{type:`button`,onClick:e.turnOff,class:`${Q} text-danger`,children:`Turn off`}),t(`button`,{ref:Be,type:`button`,onClick:this.cancel,class:Q,children:`Cancel`})]})]}):t(`button`,{ref:this.off,type:`button`,"aria-label":`Turn off review mode`,onClick:()=>this.setState({confirm:!0}),class:`${Q} text-danger`,children:`Turn off`})]})]})}},Ue=`@layer properties{:host,*,:before,:after,::backdrop{--tw-leading:initial}}@layer theme{:host,.mitt{--radius-sm:4px;--color-accent-hover:#f5b21b;--color-accent-soft:#ffc53d29;--color-danger:#fc9b9b;--color-panel:#19191be0;--mitt-font-meta:11px;--mitt-panel-width:291px;--mitt-panel-pad:12px;--mitt-row-radius:8px;--mitt-gap:6px;--mitt-btn-h:26px;--mitt-btn-px:10px;--mitt-btn-radius:8px;--mitt-btn-font:12px;--mitt-icon-btn:24px;--mitt-blur:16px}}@layer base{.mitt[data-theme=light]{--color-danger:#b01a1a;--color-panel:#ffffffe0}h2{font:inherit}input{font:inherit;color:inherit;background:0 0}summary{list-style:none}summary::-webkit-details-marker{display:none}}@layer components{.mitt-panel{width:var(--mitt-panel-width);gap:var(--mitt-gap);border-radius:var(--mitt-panel-radius);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-line);background-color:var(--color-panel);padding:var(--mitt-panel-pad);color:var(--color-fg);box-shadow:var(--mitt-shadow);-webkit-backdrop-filter:blur(var(--mitt-blur)) saturate(1.5);backdrop-filter:blur(var(--mitt-blur)) saturate(1.5);flex-direction:column;display:flex;overflow:hidden}@supports not ((-webkit-backdrop-filter:blur(1px)) or (backdrop-filter:blur(1px))){.mitt-panel{background-color:var(--color-surface)}}.mitt-pick{transition:opacity .12s var(--ease-out), scale .12s var(--ease-out)}@starting-style{.mitt-pick{opacity:0;scale:.98}}@media (prefers-reduced-motion:reduce){.mitt-pick{transition-property:opacity}}.mitt-outline{outline:1px solid var(--color-focus)}.mitt-row{min-height:calc(var(--spacing) * 7);justify-content:space-between;align-items:center;gap:calc(var(--spacing) * 2);border-radius:var(--mitt-row-radius);background-color:var(--color-row);padding-inline:calc(var(--spacing) * 2);font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));display:flex}.mitt-mono{font-family:var(--font-mono);font-size:var(--mitt-font-meta);color:var(--color-muted)}.mitt-mono:not(.truncate),.mitt-label{text-box:cap alphabetic}.mitt-chip{height:calc(var(--spacing) * 4.5);align-items:center;gap:var(--spacing);border-radius:var(--radius-sm);background-color:var(--color-row);padding-inline:calc(var(--spacing) * 1.5);flex-shrink:0;display:inline-flex}.mitt-field{border-radius:var(--mitt-row-radius);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-line);width:100%;padding-inline:7px}.mitt-field::placeholder{color:var(--color-muted)}.mitt-field:focus{border-color:var(--color-muted)}.mitt-field{outline:none}.mitt-fill{border-radius:var(--mitt-row-radius);background-color:var(--color-row);align-items:flex-end;display:flex}.mitt-fill:has(textarea:focus){box-shadow:inset 0 0 0 1px var(--color-muted)}.mitt-fill>textarea{field-sizing:content;resize:none;min-width:0;max-height:106px;padding-block:3px;padding-left:calc(var(--spacing) * 2);flex:1;line-height:20px;display:block}.mitt-fill>textarea::placeholder{color:var(--color-muted)}.mitt-fill>textarea{outline:none}.mitt-fill>button{width:calc(var(--spacing) * 5);height:calc(var(--spacing) * 5);border-radius:6px;flex-shrink:0;place-items:center;margin:3px;display:grid}@media (hover:hover){.mitt-fill>button:hover{background-color:var(--color-row)}}.mitt-fill>button:disabled{cursor:default;color:var(--color-muted);opacity:.5;background-color:#0000}.mitt-fill>button{outline-offset:1px}.mitt-act{height:calc(var(--spacing) * 5);border-radius:var(--radius-sm);font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));color:var(--color-muted)}@media (hover:hover){.mitt-act:hover{color:var(--color-fg)}}.mitt-key{height:calc(var(--spacing) * 4);min-width:calc(var(--spacing) * 4);border-radius:var(--radius-sm);background-color:var(--color-row);padding-inline:var(--spacing);justify-content:center;align-items:center;display:flex}.mitt-btn,.mitt-quiet{height:var(--mitt-btn-h);border-radius:var(--mitt-btn-radius);padding-inline:var(--mitt-btn-px);font-size:var(--mitt-btn-font);flex-shrink:0;align-items:center;display:inline-flex}:is(.mitt-btn,.mitt-quiet):disabled{cursor:default;opacity:.5}.mitt-btn{background-color:var(--color-accent);color:var(--color-on-accent)}@media (hover:hover){.mitt-btn:hover{background-color:var(--color-accent-hover)}}.mitt-btn{transition-property:translate,box-shadow,background-color;transition-duration:.15s;transition-timing-function:var(--ease-out);background-image:linear-gradient(#ffffff47,#0000 50%,#0000000f);font-weight:500;box-shadow:inset 0 1px 1px #ffffffbf,inset 0 -1px 1px #0000001f,0 1px 3px #00000038}.mitt:not([data-theme=light]) .mitt-btn{box-shadow:inset 0 1px 1px #ffffffbf,inset 0 -1px 1px #0000001f,0 -.5px #ffffff29,0 1px 2px #0009,0 3px 8px -2px #0000008c}.mitt-btn:active{transition-duration:60ms}.mitt-btn:active:not(:disabled){background-color:var(--color-accent-hover);background-image:linear-gradient(#00000008,#0000 50%,#ffffff24);translate:0 1px;box-shadow:inset 0 1px 1px #0000001a,inset 0 -1px 1px #ffffff3b,0 0 1.5px #00000026}@media (prefers-reduced-motion:reduce){.mitt-btn:active:not(:disabled){translate:none}}.mitt-quiet{color:var(--color-muted)}@media (hover:hover){.mitt-quiet:hover{background-color:var(--color-row);color:var(--color-fg)}}.mitt-link{height:var(--mitt-btn-h);border-radius:var(--radius-sm);font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));color:var(--color-muted);text-underline-offset:2px;flex-shrink:0;align-items:center;display:inline-flex}@media (hover:hover){.mitt-link:hover{color:var(--color-fg);text-decoration-line:underline}}.mitt-step{transition:opacity .16s var(--ease-out), translate .16s var(--ease-out)}@starting-style{.mitt-step{opacity:0;translate:0 4px}}@media (prefers-reduced-motion:reduce){.mitt-step{transition:none}}.mitt-fold{transition-property:rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));rotate:-90deg}@media (prefers-reduced-motion:reduce){.mitt-fold{transition-property:none}}[open]>summary>.mitt-fold{rotate:none}.mitt-icon{width:var(--mitt-icon-btn);height:var(--mitt-icon-btn);border-radius:var(--mitt-btn-radius);color:var(--color-muted);flex-shrink:0;place-items:center;display:grid}@media (hover:hover){.mitt-icon:hover{background-color:var(--color-row);color:var(--color-fg)}}.mitt-icon{margin-right:calc(8px - var(--mitt-icon-btn) / 2)}.mitt-scroll-fade{--fade:20px;-webkit-mask-image:linear-gradient(#000 0 0), linear-gradient(#000 0 0), linear-gradient(transparent, #000 var(--fade), #000 calc(100% - var(--fade)), transparent);-webkit-mask-image:linear-gradient(#000 0 0), linear-gradient(#000 0 0), linear-gradient(transparent, #000 var(--fade), #000 calc(100% - var(--fade)), transparent);-webkit-mask-image:linear-gradient(#000 0 0), linear-gradient(#000 0 0), linear-gradient(transparent, #000 var(--fade), #000 calc(100% - var(--fade)), transparent);mask-image:linear-gradient(#000 0 0), linear-gradient(#000 0 0), linear-gradient(transparent, #000 var(--fade), #000 calc(100% - var(--fade)), transparent);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:100% var(--fade), 100% var(--fade), 100% 100%;-webkit-mask-size:100% var(--fade), 100% var(--fade), 100% 100%;-webkit-mask-size:100% var(--fade), 100% var(--fade), 100% 100%;mask-size:100% var(--fade), 100% var(--fade), 100% 100%;animation:linear both mitt-fade-top,linear both mitt-fade-bottom;animation-timeline:scroll(self),scroll(self);animation-range:0 var(--fade), calc(100% - var(--fade)) 100%;-webkit-mask-position:0 0,0 100%,0 0;mask-position:0 0,0 100%,0 0}}@layer utilities{.pointer-events-none{pointer-events:none}.top-3{top:calc(var(--spacing) * 3)}.bottom-16{bottom:calc(var(--spacing) * 16)}.left-1\\/2{left:50%}.mt-2\\.5{margin-top:calc(var(--spacing) * 2.5)}.-mr-\\(--mitt-btn-px\\){margin-right:calc(var(--mitt-btn-px) * -1)}.-mr-\\(--mitt-panel-pad\\){margin-right:calc(var(--mitt-panel-pad) * -1)}.mr-0{margin-right:0}.mr-auto{margin-right:auto}.-ml-2{margin-left:calc(var(--spacing) * -2)}.ml-1{margin-left:var(--spacing)}.ml-auto{margin-left:auto}.line-clamp-2{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.field-sizing-content{field-sizing:content}.size-3{width:calc(var(--spacing) * 3);height:calc(var(--spacing) * 3)}.h-\\(--mitt-btn-h\\){height:var(--mitt-btn-h)}.h-\\(--mitt-icon-btn\\){height:var(--mitt-icon-btn)}.h-\\(--mitt-pin-size\\){height:var(--mitt-pin-size)}.h-4{height:calc(var(--spacing) * 4)}.h-4\\.5{height:calc(var(--spacing) * 4.5)}.h-5{height:calc(var(--spacing) * 5)}.h-6{height:calc(var(--spacing) * 6)}.h-7{height:calc(var(--spacing) * 7)}.h-full{height:100%}.max-h-40{max-height:calc(var(--spacing) * 40)}.max-h-\\[45dvh\\]{max-height:45dvh}.max-h-\\[min\\(480px\\,calc\\(100dvh-80px\\)\\)\\]{max-height:min(480px,100dvh - 80px)}.min-h-0{min-height:0}.min-h-6{min-height:calc(var(--spacing) * 6)}.min-h-15{min-height:calc(var(--spacing) * 15)}.w-7{width:calc(var(--spacing) * 7)}.w-80{width:calc(var(--spacing) * 80)}.w-full{width:100%}.min-w-0{min-width:0}.flex-1{flex:1}.-translate-x-1\\/2{--tw-translate-x:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-1{--tw-translate-x:var(--spacing);translate:var(--tw-translate-x) var(--tw-translate-y)}.\\[translate\\:12px\\]{translate:12px}.cursor-crosshair{cursor:crosshair}.resize-none{resize:none}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.justify-start{justify-content:flex-start}.gap-\\(--mitt-gap\\){gap:var(--mitt-gap)}.gap-0{gap:0}.gap-1{gap:var(--spacing)}.gap-1\\.5{gap:calc(var(--spacing) * 1.5)}.gap-2\\.5{gap:calc(var(--spacing) * 2.5)}.gap-x-2{column-gap:calc(var(--spacing) * 2)}.gap-y-1\\.5{row-gap:calc(var(--spacing) * 1.5)}.self-start{align-self:flex-start}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-y-auto{overflow-y:auto}.rounded-\\(--mitt-row-radius\\){border-radius:var(--mitt-row-radius)}.rounded-\\[6px\\]{border-radius:6px}.rounded-sm{border-radius:var(--radius-sm)}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-line{border-color:var(--color-line)}.bg-accent-soft{background-color:var(--color-accent-soft)}.bg-danger{background-color:var(--color-danger)}.bg-muted{background-color:var(--color-muted)}.bg-row{background-color:var(--color-row)}.bg-surface{background-color:var(--color-surface)}.p-0\\.5{padding:calc(var(--spacing) * .5)}.p-2{padding:calc(var(--spacing) * 2)}.px-1\\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2\\.5{padding-inline:calc(var(--spacing) * 2.5)}.py-1\\.5{padding-block:calc(var(--spacing) * 1.5)}.py-\\[7px\\]{padding-block:7px}.pr-2{padding-right:calc(var(--spacing) * 2)}.pr-\\[calc\\(var\\(--mitt-panel-pad\\)-8px\\)\\]{padding-right:calc(var(--mitt-panel-pad) - 8px)}.pb-2{padding-bottom:calc(var(--spacing) * 2)}.pl-\\[calc\\(var\\(--mitt-pin-size\\)\\+6px\\)\\]{padding-left:calc(var(--mitt-pin-size) + 6px)}.pl-\\[calc\\(var\\(--mitt-pin-size\\)\\+14px\\)\\]{padding-left:calc(var(--mitt-pin-size) + 14px)}.text-left{text-align:left}.text-\\[11px\\]{font-size:11px}.leading-\\[13px\\]{--tw-leading:13px;line-height:13px}.leading-\\[15px\\]{--tw-leading:15px;line-height:15px}.\\[font-weight\\:500\\]{font-weight:500}.text-pretty{text-wrap:pretty}.break-words{overflow-wrap:break-word}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.text-danger{color:var(--color-danger)}.text-fg{color:var(--color-fg)}.text-muted{color:var(--color-muted)}.transition-\\[opacity\\,translate\\]{transition-property:opacity,translate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\\[translate\\]{transition-property:translate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.group-focus-within\\:opacity-100:is(:where(.group):focus-within *){opacity:1}@media (hover:hover){.group-hover\\:opacity-100:is(:where(.group):hover *){opacity:1}}.first\\:border-t-0:first-child{border-top-style:var(--tw-border-style);border-top-width:0}@media (hover:hover){.hover\\:bg-line:hover{background-color:var(--color-line)}.hover\\:text-fg:hover{color:var(--color-fg)}}@media (prefers-reduced-motion:reduce){.motion-reduce\\:translate-x-0{--tw-translate-x:0px;translate:var(--tw-translate-x) var(--tw-translate-y)}.motion-reduce\\:transition-none{transition-property:none}}@media (pointer:coarse){.pointer-coarse\\:invisible{visibility:hidden}.pointer-coarse\\:opacity-100{opacity:1}}}@keyframes mitt-fade-top{to{-webkit-mask-size:100% 0, 100% var(--fade), 100% 100%;-webkit-mask-size:100% 0, 100% var(--fade), 100% 100%;-webkit-mask-size:100% 0, 100% var(--fade), 100% 100%;mask-size:100% 0, 100% var(--fade), 100% 100%}}@keyframes mitt-fade-bottom{0%{-webkit-mask-position:0 0, 0 calc(100% + var(--fade)), 0 0;-webkit-mask-position:0 0, 0 calc(100% + var(--fade)), 0 0;-webkit-mask-position:0 0, 0 calc(100% + var(--fade)), 0 0;mask-position:0 0, 0 calc(100% + var(--fade)), 0 0}}`;function We(e){return v(e),{Capture:Oe,Composer:ke,Hint:De,Thread:Ne,Comments:X,Menu:He,css:Ue}}export{We as connect};
|
package/dist/mitt.js
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
(function(){var e=Object.defineProperty,t=(t,n)=>{let r={};for(var i in t)e(r,i,{get:t[i],enumerable:!0});return n||e(r,Symbol.toStringTag,{value:`Module`}),r};function n(e){if(!(e instanceof HTMLElement))return null;let t=e.dataset.project?.trim(),n=e.dataset.api?.trim();if(!t||!n)return null;try{let e=new URL(n);return e.protocol!==`http:`&&e.protocol!==`https:`?null:{project:t,api:`${e.origin}${e.pathname}`.replace(/\/+$/,``)}}catch{return null}}var r,i,a,o,s,c,l,u,d,f,p={},m=[],h=/^m(i|n|o|s|text|space)$/,g=Array.isArray,_=m.slice,v=Object.assign;function y(e){e&&e.parentNode&&e.remove()}function b(e,t,n,a,o){var s={type:e,props:t,key:n,ref:a,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:o||++i,__i:-1,__u:0};return!o&&r.vnode&&r.vnode(s),s}function x(){return{current:null}}function S(e){return e.children}function C(e,t){this.props=e,this.context=t,this.__g=0}function w(e,t){if(t==null)return e.__?w(e.__,e.__i+1):null;for(var n;t<e.__k.length;t++)if((n=e.__k[t])&&n.__e)return n.__e;return typeof e.type!=`function`||e.props.__P?null:w(e)}function T(e){if((e=e.__)&&e.__c&&!e.props.__P)return e.__e=null,e.__k.some(function(t){return t&&(e.__e=t.__e)}),T(e)}function E(e){(8&e.__g||!(e.__g|=8)||!a.push(e)||s++)&&o==r.debounceRendering||((o=r.debounceRendering)||queueMicrotask)(D)}function D(){var e,t,n,i,o,l,u,d,f;try{for(t=1;a.length;)a.length>t&&a.sort(c),e=a.shift(),t=a.length,8&e.__g&&(i=void 0,o=void 0,l=(o=(n=e).__v).__e,u=[],d=[],(f=n.__P)&&((i=v({constructor:void 0},o)).__v=o.__v+1,r.vnode&&r.vnode(i),P(f,i,o,n.__n,f.namespaceURI,32&o.__u?[l]:null,u,l||w(o),32&o.__u,d),i.__v=o.__v,i.__.__k[i.__i]=i,F(u,i,d),o.__=o.__e=null,i.__e!=l&&T(i)))}finally{a.length=s=0}}function ee(e,t,n,r,i,a,o,s,c,l,u){var d,f,h,g,_,v,y=r.__k||m,b=t.length;for(c=O(n,t,y,c,b),d=0;d<b;d++)(h=n.__k[d])!=null&&(f=~h.__i&&y[h.__i]||p,h.__i=d,v=P(e,h,f,i,a,o,s,c,l,u),g=h.__e,(f.ref!=h.ref||8&f.__u)&&(f.ref&&I(f.ref,null,h,f),h.ref&&u.push(h.ref,h.__c||g,h)),_||=g,4&h.__u?(c=k(h,c,e,!f.__v),f.__e&&(f.__e=null)):typeof h.type==`function`&&v!==void 0?c=v:g&&(c=g.nextSibling),h.__u&=-7);return n.__e=_,c}function O(e,t,n,r,i){var a,o,s,c,l,u,d,f,p,m,h=n.length,_=h,v=0,y=!1,x=e.__k=Array(i);for(a=0;a<i;a++)(o=t[a])!=null&&typeof o!=`boolean`&&typeof o!=`function`?(typeof o!=`object`||o.constructor==String?o=x[a]=b(null,o):g(o)?o=x[a]=b(S,{children:o}):o.constructor===void 0&&o.__b?o=x[a]=b(o.type,o.props,o.key,o.ref,o.__v):x[a]=o,c=a+v,o.__=e,o.__b=e.__b+1,s=null,~(l=o.__i=A(o,n,c,_))&&(_--,(s=n[l])&&(s.__u|=2)),s&&s.__v?(o.__u|=2,l==c-1?v--:l==c+1?v++:l!=c&&(l>c?v--:v++,y=!0)):(~l||(i>h?v--:i<h&&v++),typeof o.type!=`function`&&(o.__u|=4))):x[a]=null;if(y){for(u=[],d=[],a=0;a<i;a++)if((o=x[a])&&2&o.__u){for(f=0,p=u.length;f<p;)u[m=f+p>>1]<o.__i?f=m+1:p=m;u[f]=o.__i,d[a]=f+1}for(v=u.length;a--;)d[a]&&(d[a]==v?v--:x[a].__u|=4)}if(_)for(a=0;a<h;a++)!(s=n[a])||2&s.__u||(s.__e==r&&(r=w(s)),L(s,s));return r}function k(e,t,n,r){var i,a,o;if(typeof e.type==`function`){if(e.props.__P)return t;if(i=e.__k)for(a=0;a<i.length;a++)i[a]&&(i[a].__=e,t=k(i[a],t,n,!1));return t}for(t&&!t.parentNode&&(t=w(e))&&!t.parentNode&&(t=null),o=t;o&&o.nodeType==8;)o=o.nextSibling;for(e.__e!=o&&(!r&&n.moveBefore&&e.__e.parentNode?n.moveBefore(e.__e,t):n.insertBefore(e.__e,t||null)),t=e.__e;(t&&=t.nextSibling)&&t.nodeType==8;);return t}function A(e,t,n,r){var i,a,o,s=e.key,c=e.type,l=t[n],u=l&&!(2&l.__u);if(l===null&&s==null||u&&s==l.key&&c==l.type)return n;if(r>+!!u){for(i=n-1,a=n+1;i>=0||a<t.length;)if((l=t[o=i>=0?i--:a++])&&!(2&l.__u)&&s==l.key&&c==l.type)return o}return-1}function j(e,t,n){n??=``,t[0]==`-`?e.setProperty(t,n):e[t]=n}function M(e,t,n,r,i){var a,o;n:if(t==`style`){if(typeof n==`string`)e.style.cssText=n;else{if(typeof r==`string`&&(e.style.cssText=r=``),r)for(t in r)n&&t in n||j(e.style,t,``);if(n)for(t in n)r&&n[t]==r[t]||j(e.style,t,n[t])}}else if(t[0]==`o`&&t[1]==`n`)(e.__e||={})[t]=n,n&&r||(o=f[t]||(f[t]=N(t)),(e.__a||={})[t]=d,a=t!=(t=t.replace(u,`$1`)),(t=t.slice(2))[0]<`a`&&(t=t.toLowerCase()),n?e.addEventListener(t,o,a):e.removeEventListener(t,o,a));else{if(i==`http://www.w3.org/2000/svg`)t=t.replace(/xlink(H|:h)/,`h`).replace(/sName$/,`s`);else if(t!=`width`&&t!=`height`&&t!=`href`&&t!=`list`&&t!=`form`&&t!=`tabIndex`&&t!=`download`&&t!=`rowSpan`&&t!=`colSpan`&&t!=`role`&&t!=`popover`&&t in e)try{e[t]=n??``;break n}catch{}typeof n==`function`||(n==null||!1===n&&t[4]!=`-`?e.removeAttribute(t):e.setAttribute(t,t==`popover`&&n==1?``:n))}}function N(e){return function(t){if(this.__e){var n=this.__e[e];if(t[l]==null)t[l]=d++;else if(t[l]<this.__a[e])return;return n(r.event?r.event(t):t)}}}function P(e,t,n,i,a,o,s,c,l,u){var d,f,p,h,_,b,x,T,E,D,O,k,A,j,M,N,P,F,I,R,z=t.type;if(t.constructor!==void 0)return null;if(128&n.__u&&(l=32&n.__u,d=n.__c.__z)){if(t.__u|=l,f=o=[],d.nodeType==8)for(p=1,h=d.nextSibling;h;h=h.nextSibling){if(h.nodeType==8){if(h.data.startsWith(`$s`))p++;else if(h.data.startsWith(`/$s`)&&!--p)break}o.push(h)}else o.push(d);c=o[0]}(d=r.__b)&&d(t);n:if(typeof z==`function`){_=s.length;try{if(D=t.props,O=(d=z.prototype)&&d.render,k=(d=z.contextType)&&i[d.__c],A=d?k?k.props.value:d.__:i,n.__c?2&(b=t.__c=n.__c).__g&&(b.__g|=1):(O?t.__c=b=new z(D,A):(t.__c=b=new C(D,A),b.constructor=z,b.render=re),k&&k.sub(b),b.state||(b.state={}),b.__n=i,b.__g|=8,b.__h=[],b.__k=[]),O&&(b.__s||(b.__s=b.state),z.getDerivedStateFromProps&&(b.__s==b.state&&(b.__s=v({},b.__s)),v(b.__s,z.getDerivedStateFromProps(D,b.__s)))),x=b.props,T=b.state,b.__v=t,n.__c){if(O&&!z.getDerivedStateFromProps&&D!==x&&b.componentWillReceiveProps&&b.componentWillReceiveProps(D,A),t.__v==n.__v&&!(8&b.__g)||!(4&b.__g)&&b.shouldComponentUpdate&&!1===b.shouldComponentUpdate(D,b.__s,A)){t.__v!=n.__v&&(b.props=D,b.state=b.__s,b.__g&=-9),t.__e=n.__e,t.__k=n.__k,t.__k.some(function(e){e&&(e.__=t)}),m.push.apply(b.__h,b.__k),b.__k=[],b.__h.length&&s.push(b),c=w(n);break n}b.componentWillUpdate&&b.componentWillUpdate(D,b.__s,A),O&&b.componentDidUpdate&&b.__h.push(function(){b.componentDidUpdate(x,T,E)})}else O&&!z.getDerivedStateFromProps&&b.componentWillMount&&b.componentWillMount(),O&&b.componentDidMount&&b.__h.push(b.componentDidMount);if(b.context=A,b.props=D,b.__P=e,b.__g&=-5,j=r.__r,M=0,O)b.state=b.__s,b.__g&=-9,j&&j(t),d=b.render(b.props,b.state,b.context),m.push.apply(b.__h,b.__k),b.__k=[];else do b.__g&=-9,j&&j(t),d=b.render(b.props,b.state,b.context),b.state=b.__s;while(8&b.__g&&++M<25);b.state=b.__s,b.getChildContext&&(i=v({},i,b.getChildContext())),O&&n.__c&&b.getSnapshotBeforeUpdate&&(E=b.getSnapshotBeforeUpdate(x,T)),N=d&&d.type===S&&d.key==null?d.props.children:d,D.__P&&(d=c,a=(e=D.__P).namespaceURI,l=o=null,n.props&&n.props.__P!=e&&(n.__k.some(function(e){e&&L(e,e)}),n.__k=null),c=n.__k?w(n,0):null),c=ee(e,g(N)?N:[N],t,n,i,a,o,s,c,l,u),D.__P&&(t.__e=null,c=d),t.__u&=-161,128&n.__u&&(b.__z=null),f&&f.some(y),b.__h.length&&s.push(b),1&b.__g&&(b.__g&=-4)}catch(e){if(s.length=_,t.__v=null,l||o){if(e.then){if(P=0,t.__u|=l?160:128,o){for(~(I=o.indexOf(c||void 0))||(I=o.length);(R=o[I-1])&&R.nodeType==8;)I--;for(;I<o.length;I++)if(R=o[I]){if(o[I]=null,R.nodeType==8){if(R.data.startsWith(`$s`))P++||(F=R);else if(P&&R.data.startsWith(`/$s`)&&!--P){c=R;break}}else if(!P)break}}if(!F){for(;c&&c.nodeType==8&&c.nextSibling;)c=c.nextSibling;F=c}t.__c.__z||(t.__c.__z=F),t.__e=c}else o&&o.some(y)}else t.__e=n.__e;t.__k||=n.__k||[],e.then||te(t),r.__e(e,t,n)}}else c=t.__e=ne(n.__e,t,n,i,a,o,s,l,u,e);return(d=r.diffed)&&d(t),128&t.__u?void 0:c}function te(e){e&&(e.__c&&(e.__c.__g|=4),e.__k&&e.__k.some(te))}function F(e,t,n){for(var i=0;i<n.length;)I(n[i++],n[i++],n[i++]);r.__c&&r.__c(t,e),e.some(function(t){try{e=t.__h,t.__h=[],e.some(function(e){e.call(t)})}catch(e){r.__e(e,t.__v)}})}function ne(e,t,n,i,a,o,s,c,l,u){var d,f,m,v,b,x,S,C,T,E=n.props||p,D=t.props,O=t.type;if(O==`svg`?a=`http://www.w3.org/2000/svg`:O==`math`?a=`http://www.w3.org/1998/Math/MathML`:a||=`http://www.w3.org/1999/xhtml`,o){for(d=0;d<o.length;d++)if((b=o[d])&&(O?b.localName==O:b.nodeType==3)){e=b,o[d]=null;break}}if(!e){if(C=u.ownerDocument||document,!O)return C.createTextNode(D);e=C.createElementNS(a,O,D.is&&D),c&&=(r.__m&&r.__m(t,o),!1),o=null}if(O){if(u=O==`template`?e.content:e,o=O==`textarea`&&D.defaultValue!=null?null:o&&_.call(u.childNodes),!c&&o)for(E={},d=0;d<e.attributes.length;d++)E[(b=e.attributes[d]).name]=b.value;for(d in E)b=E[d],d==`dangerouslySetInnerHTML`?m=b:d==`children`||d in D||d==`value`&&`defaultValue`in D||d==`checked`&&`defaultChecked`in D||M(e,d,null,b,a);for(d in T=1&n.__u,D)b=D[d],d==`children`?v=b:d==`dangerouslySetInnerHTML`?f=b:d==`value`?x=b:d==`checked`?S=b:c&&typeof b!=`function`||!(E[d]!==b||T&&b!=null)||M(e,d,b,E[d],a);f?(c||m&&(f.__html==m.__html||f.__html==e.innerHTML)||(e.innerHTML=f.__html),t.__k=[]):(m&&(e.textContent=``),(O==`foreignObject`||a==`http://www.w3.org/1998/Math/MathML`&&h.test(O))&&(a=`http://www.w3.org/1999/xhtml`),ee(u,g(v)?v:[v],t,n,i,a,o,s,o?o[0]:n.__k&&w(n,0),c,l),o&&o.some(y)),c&&O!=`textarea`||(d=`value`,O==`progress`&&x==null?e.removeAttribute(d):x==null||x===e[d]&&(O!=`progress`||x)||M(e,d,x,E[d],a),d=`checked`,S!=null&&S!=e[d]&&M(e,d,S,E[d],a))}else E===D||c&&e.data==D||(e.data=D);return e}function I(e,t,n,i){try{typeof e==`function`?t?t.__x=e(t)||1:(i&&=i.__c||i.__e)&&(t=i.__x)&&(i.__x=null,typeof t==`function`?t():e(null)):e.current=t}catch(e){r.__e(e,n)}}function L(e,t,n){var i,a;if(r.unmount&&r.unmount(e),!(i=e.ref)||i.current&&i.current!=e.__e||I(i,null,t,e),i=e.__c){if(i.componentWillUnmount)try{i.componentWillUnmount()}catch(e){r.__e(e,t)}i.__P=i.__n=null}if(i=e.__k)for(a=0;a<i.length;a++)i[a]&&L(i[a],t,typeof e.type!=`function`||n&&!e.props.__P);(i=e.__e)&&(n||y(i),i.__e&&(i.__e=null)),e.__e=e.__c=e.__=null}function re(e,t,n){return this.constructor(e,n)}function R(e,t){var n,i,a,o;r.__&&r.__(e,t),t.nodeType==9&&(t=t.documentElement),i=(n=e&&32&e.__u)?null:t.__k,t.__k=b(S,{children:[e]}),a=[],o=[],P(t,t.__k,i||p,p,t.namespaceURI,i?null:t.firstChild?_.call(t.childNodes):null,a,i?i.__e:t.firstChild,n,o),F(a,t.__k,o),t.__k.props.children=null}r={__e:function(e,t,n,r){for(var i,a,o;t=t.__;)if((i=t.__c)&&!(1&i.__g)){i.__g|=4;try{if((a=i.constructor)&&a.getDerivedStateFromError&&(i.setState(a.getDerivedStateFromError(e)),o=8&i.__g),i.componentDidCatch&&(i.componentDidCatch(e,r||{}),o=8&i.__g),o)return void(i.__g|=2)}catch(t){e=t,o=0}}throw s=0,e}},i=0,C.prototype.setState=function(e,t){var n=this.__s;n&&n!=this.state||(n=this.__s=v({},this.state)),typeof e==`function`&&(e=e(v({},n),this.props)),e&&(v(n,e),this.__v&&(t&&this.__k.push(t),E(this)))},C.prototype.forceUpdate=function(e){this.__v&&(this.__g|=4,e&&this.__h.push(e),E(this))},C.prototype.render=S,a=[],s=0,c=function(e,t){return e.__v.__b-t.__v.__b},l=Symbol(),u=/(PointerCapture)$|Capture$/i,d=0,f={};var z=0;Array.isArray;function B(e,t,n,i,a,o){t||={};var s,c,l=t;if(`ref`in l&&typeof e!=`function`)for(c in l={},t)c==`ref`?s=t[c]:l[c]=t[c];var u={type:e,props:l,key:n,ref:s,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:--z,__i:-1,__u:0};return(a||o)&&(u.__source=a,u.__self=o),r.vnode&&r.vnode(u),u}var ie=`M30 7q-5 1-8 6Q11 34 8 57q-1 24 5 38 14 25 31 25 18 2 28-4c26-16 37-29 47-50q2-8 0-12h-4q-2 0-6 4l2-1 1 5-6 1 3 6-5 2-1-4-9 9-3-3 8-9-4 1-1-5 6-1-2-5 4-2 2 5 6-16c1-6-5-10-8-5l-7 11 4-1 1 4-7 2 2 5-4 1-1-2-9 11-3-3 7-10-3 1-1-5 7-1-2-7 4-1 1 4 6-11c1-11-7-16-12-7l-3 10 3-1 1 4-6 2 2 5-4 2-1-2-8 11-4-3q5-5 8-11l-4 1-1-5 6-1-2-7 4-1 1 4 4-9-1-10q-3-6-8-2L58 44q-3 7-8 12t-11 4q-6-2-8-7-3-6-2-13 2-16 6-29-2-4-5-4m9 8-2 6a79 79 0 0 0 25 4l2-6q-14 0-25-4m6 13-1 6 4 1 1-6zm-11 8v6q9 4 17 4l3-4v-1zm7 13-2 7h1l4-1 1-5zm11 13a26 26 0 0 1 18 44l3 1-2 5q-18-12-46-8l-1-4 5-1q-2-5-2-11c0-14 11-26 25-26m0 5q-9 1-15 7a26 26 0 0 1 6 24q12 2 23 6l1-1q-6-7-6-16-1-9 4-16-6-3-13-4m16 7q-3 6-3 13 1 6 5 12a21 21 0 0 0-2-25m-34 3a21 21 0 0 0 0 21h4q2-5 1-10 0-5-5-11`,ae=`M8 1.75v3M8 11.25v3M1.75 8h3M11.25 8h3M12.5 8a4.5 4.5 0 1 1-9 0 4.5 4.5 0 0 1 9 0`,oe=`M8 2.75 14 13.25H2zM8 6.75v2.5M8 11.25h.01`,se=`M3.5 8.5 6.5 11.5 12.5 5`,ce=/^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/,le=`mitt:review`;function V(e,t){try{return e()}catch{return t}}var ue=`mitt:guest`,H;function de(){let{id:e,name:t}=JSON.parse(localStorage.getItem(ue)||`{}`);if(typeof e==`string`&&ce.test(e))return{id:e,name:typeof t==`string`?t:``}}function fe(e){return H=e,V(()=>localStorage.setItem(ue,JSON.stringify(e)),void 0),e}function pe(){let e=V(de,void 0);return e&&(H=e),H??fe({id:crypto.randomUUID(),name:``})}var me=`Can't reach Mitt right now.`;function he(e,t){let n=typeof e==`object`&&e&&`error`in e?e.error:void 0;if(typeof n!=`object`||!n)return`Mitt answered ${t}.`;let r=`message`in n&&typeof n.message==`string`?n.message:``,[i]=`issues`in n&&Array.isArray(n.issues)?n.issues:[],a=typeof i==`object`&&i&&`message`in i?String(i.message):``;return[r||`Mitt answered ${t}.`,a].filter(Boolean).join(` `)}async function ge(e,t,n=`GET`,r){let i;try{i=await fetch(`${e.api}/api/projects/${encodeURIComponent(e.project)}${t}`,{method:n,mode:`cors`,credentials:`omit`,headers:{"content-type":`application/json`,"x-mitt-guest":pe().id},body:r&&JSON.stringify(r)})}catch{return{ok:!1,offline:!0,message:me}}let a;try{a=await i.json()}catch{a=void 0}return i.ok&&a!==void 0?{ok:!0,value:a}:{ok:!1,offline:!1,message:he(a,i.status)}}async function _e(e,t){let n=await ge(e,t?`/comments`:`/comments?status=open`);if(!n.ok)return n;let{comments:r}=n.value;return Array.isArray(r)?{ok:!0,value:r}:{ok:!1,offline:!1,message:`Mitt sent an unexpected answer.`}}var ve=e=>[`oklch(.44 .13 ${e})`,`oklch(.72 .11 ${e})`,`oklch(.92 .05 ${e}/.45)`,`oklch(.5 .12 ${e}/.6)`],ye=[`#2e3036`,`#e5b65a`,`#ffe2a366`,`#9a7432aa`],be=[`oklch(.44 0 0)`,`oklch(.72 0 0)`,`oklch(.92 0 0/.45)`,`oklch(.5 0 0/.6)`];function xe(e){let t=2166136261;for(let n=0;n<e.length;n++)t=Math.imul(t^e.charCodeAt(n),16777619);return t=Math.imul(t^t>>>16,2246822507),t=Math.imul(t^t>>>13,3266489909),t^=t>>>16,()=>{t=t+1831565813|0;let e=Math.imul(t^t>>>15,t|1);return e^=e+Math.imul(e^e>>>7,e|61),((e^e>>>14)>>>0)/4294967296}}var U=e=>+e.toFixed(1);function Se(e,t){return Math.max(0,e*.5-t*.55+Math.sqrt(Math.max(0,1-e*e-t*t))*.67)}var Ce=new Map;function we(e,t){let n=t<32,r=`${+n}${e}`,i=Ce.get(r);if(i)return i;let a=xe(e.slice(1)),o=Number.parseInt(e[0]??``,16),s=25+30*(o<12?o:0),[c,l,u,d]=e===`cli`?ye:ve(s),f=(n?7:15)+(a()*3|0),p=64/f,m=(a()-.5)*2.4,h=Math.cos(m),g=Math.sin(m),_=``;for(let e=0;e<f;e++){let t=-32+p*(e+.5),n=Math.sqrt(1300-t*t),r=[],i=[];for(let e=0;e<=14;e++){let a=-n+2*n*e/14,o=Math.max(0,1-Se((a*h-t*g)/32,(a*g+t*h)/32)),s=p/2*(.05+o**1.5);r.push(`${U(a)} ${U(t-s)}`),i.unshift(`${U(a)} ${U(t+s)}`)}_+=`M${r.join(`L`)}L${i.join(`L`)}Z`}let v={ink:c,paper:l,rim:u,lightRim:d,angle:U(m*180/Math.PI),d:_};return Ce.set(r,v),v}function Te({seed:e,size:t,muted:n}){let r=we(e,t),{angle:i,d:a}=r,[o,s,c,l]=n?be:[r.ink,r.paper,r.rim,r.lightRim];return B(`svg`,{class:`mitt-avatar`,width:t,height:t,viewBox:`-32 -32 64 64`,"aria-hidden":`true`,style:`--i:${o};--p:${s};--r:${c};--rl:${l}`,children:[B(`circle`,{r:`32`}),B(`path`,{transform:`rotate(${i})`,d:a}),B(`circle`,{r:`32`,"vector-effect":`non-scaling-stroke`})]})}var Ee=t({Avatar:()=>Te,BUSY:()=>W,Done:()=>je,Icon:()=>K,Presence:()=>q,call:()=>ge,excerpt:()=>Ae,hashText:()=>ke,identity:()=>pe,normalizeText:()=>G,save:()=>fe,textOf:()=>Oe}),W=` animate-pulse cursor-progress motion-reduce:animate-none`,De=new Set([`script`,`style`,`template`,`noscript`]);function G(e){return e.replace(/\s+/g,` `).trim()}function Oe(e){let t=``,n=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT|NodeFilter.SHOW_TEXT,{acceptNode:e=>e.nodeType===Node.ELEMENT_NODE&&De.has(e.localName)?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT});for(let e=n.nextNode();e;e=n.nextNode())e.nodeType===Node.TEXT_NODE&&(t+=` ${e.data}`);return t}async function ke(e){let t=await crypto.subtle.digest(`SHA-256`,new TextEncoder().encode(e)),n=``;for(let e of new Uint8Array(t,0,8))n+=e.toString(16).padStart(2,`0`);return n}function Ae(e,t=80){let n=G(e);return n.length>t?`${n.slice(0,t-1)}\u2026`:n}function K({d:e,class:t=``}){return B(`svg`,{viewBox:`0 0 16 16`,"aria-hidden":`true`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.5`,"stroke-linecap":`round`,"stroke-linejoin":`round`,class:`size-4 shrink-0 ${t}`,children:B(`path`,{d:e})})}function je(){return B(`svg`,{viewBox:`0 0 16 16`,width:`12`,height:`12`,"aria-hidden":`true`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`,children:B(`path`,{d:se})})}var Me=180,q=class extends C{state={shown:null,leaving:!1};timer=0;static getDerivedStateFromProps({children:e},{shown:t}){return e?{shown:e,leaving:!1}:t?{leaving:!0}:null}componentDidUpdate(){this.state.leaving&&!this.timer?this.timer=window.setTimeout(()=>{this.timer=0,this.setState({shown:null,leaving:!1})},Me):!this.state.leaving&&this.timer&&(clearTimeout(this.timer),this.timer=0)}componentWillUnmount(){clearTimeout(this.timer)}render(e,{shown:t,leaving:n}){return t?n?B(`div`,{class:`mitt-exit`,inert:!0,"aria-hidden":`true`,children:t}):B(`div`,{children:t}):null}},Ne=`mitt-ui.js`;function Pe(e){return typeof e==`object`&&!!e&&`connect`in e&&typeof e.connect==`function`}function Fe(e){return!(e instanceof HTMLScriptElement)||!e.src?null:new URL(Ne,e.src).href}function Ie(e,t){return async()=>{if(!e)throw Error(`[mitt] no script URL for the UI module`);let n=await import(e);if(!Pe(n))throw Error(`[mitt] ${e} is not the Mitt UI module`);let r=n.connect({Component:C,Fragment:S,jsx:B,shared:Ee}),i=document.createElement(`style`);return i.textContent=r.css,t.querySelector(`style`)?.after(i),r}}var Le=6e4,Re=1e3;function ze(e,t=Le){let n,r=-1/0,i=()=>document.visibilityState===`visible`,a=()=>{clearTimeout(n),n=void 0},o=()=>{a(),i()&&(r=Date.now(),e(),n=setTimeout(o,t))},s=()=>{i()&&(Date.now()-r>=Re?o():n??=setTimeout(o,t))},c=()=>i()?s():a();return document.addEventListener(`visibilitychange`,c),window.addEventListener(`focus`,s),o(),()=>{a(),document.removeEventListener(`visibilitychange`,c),window.removeEventListener(`focus`,s)}}var Be=/-?[\d.]+(?:e-?\d+)?%?/g;function J(e,t){return e.endsWith(`%`)?Number.parseFloat(e)/100*t:Number(e)}function Ve(e){let t=Math.min(1,Math.max(0,e));return t<=.0031308?t*12.92:1.055*t**(1/2.4)-.055}function Y(e){return e<=.04045?e/12.92:((e+.055)/1.055)**2.4}function He(e){let[,t=``,n=``]=/^([a-z-]+)\((.*)\)$/.exec(e)??[],[r=`0`,i=`0`,a=`0`,o]=(t===`color`?n.replace(/^\S+/,``):n).match(Be)??[],s=o===void 0?1:J(o,1);if(t===`rgb`||t===`rgba`)return[J(r,255)/255,J(i,255)/255,J(a,255)/255,s];if(t===`color`)return[J(r,1),J(i,1),J(a,1),s];let c=r,l;if(t===`oklch`||t===`oklab`)l=J(c,1)**3;else if(t===`lab`||t===`lch`)l=((J(c,100)+16)/116)**3;else return null;let u=Ve(l);return[u,u,u,s]}function Ue([e,t,n]){return .2126*Y(e)+.7152*Y(t)+.0722*Y(n)}function We(e,t,n,r){let i=[0,0,0,0],a=new Set,o=[...document.elementsFromPoint(e,t),document.body,document.documentElement];for(let e of o)if(e!==n)for(let t=e;t&&!a.has(t);t=t.parentElement){a.add(t);let e=He(getComputedStyle(t).backgroundColor);if(!e||e[3]<=0)continue;let n=(1-i[3])*e[3];for(let t=0;t<3;t++)i[t]=(i[t]??0)+(e[t]??0)*n;if(i[3]+=n,i[3]>.99)return i}let s=1-i[3];for(let e=0;e<3;e++)i[e]=(i[e]??0)+(r[e]??0)*s;return i}function Ge(e){let t=matchMedia(`(prefers-color-scheme: dark)`).matches?[.07,.07,.07,1]:[1,1,1,1],n=innerWidth,r=innerHeight;return(Ue(We(n-40,r-40,e,t))+Ue(We(n/2,r/2,e,t)))/2>.5?`light`:`dark`}var Ke=`mitt:theme`,qe;function Je(){let e=qe??V(()=>localStorage.getItem(Ke),null);return e===`light`||e===`dark`?e:`auto`}function Ye(e,t){qe=t,V(()=>t===`auto`?localStorage.removeItem(Ke):localStorage.setItem(Ke,t),void 0),Xe(e)}function Xe(e){let t=e?.getRootNode();if(!e||!(t instanceof ShadowRoot))return;let n=Je(),r=n===`auto`?Ge(t.host):n;e.getAttribute(`data-theme`)!==r&&e.setAttribute(`data-theme`,r)}function Ze(e){let t=new Map,n=[...e].map(e=>`[data-fb="${CSS.escape(e)}"]`).join();if(!n)return t;for(let e of document.querySelectorAll(n)){let n=e.getAttribute(`data-fb`)??``,r=t.get(n);r?r.push(e):t.set(n,[e])}return t}var Qe=/^#(?:\\[\da-f]{1,6}[ \t\r\n\f]?|\\[^\r\n\f]|[^\\ \t\r\n\f>+~,])+$/i;function $e(e){try{return e()}catch{return!1}}function et(e,t){if(t.length===0)return{orphan:`missing`};let{selector:n,textFingerprint:r}=e,i=e=>e.filter(e=>$e(()=>e.element.matches(n)));if(n.startsWith(`#`)){let e=i(t);if(Qe.test(n)&&e.length===0)return{orphan:$e(()=>document.querySelector(n)!==null)?`unmatched`:`missing`};if(e.length===1&&e[0]?.hash!==r.hash)return{orphan:`changed`}}let a=t.filter(e=>e.hash===r.hash),[o]=a;if(!o)return{orphan:`unmatched`};if(a.length===1)return{element:o.element};let s=i(a),[c]=s;return c&&s.length===1?{element:c.element}:{orphan:`ambiguous`}}function tt(e){if(typeof e.checkVisibility==`function`&&!e.checkVisibility({visibilityProperty:!0}))return null;let t=e.getBoundingClientRect();return t.width>0&&t.height>0?t:null}function nt(e,t=tt){if(`orphan`in e)return{kind:`orphan`,why:e.orphan};let n=t(e.element);return n?{kind:`placed`,element:e.element,rect:n}:{kind:`hidden`}}var rt=8;function it(e){typeof requestIdleCallback==`function`?requestIdleCallback(e):setTimeout(()=>{let t=performance.now()+rt;e({timeRemaining:()=>t-performance.now()})})}function at(e){let t=()=>it(()=>e());document.readyState===`complete`?t():window.addEventListener(`load`,t,{once:!0})}var ot=[`data-fb`,`id`],st=e=>e instanceof Element&&(e.hasAttribute(`data-fb`)||e.querySelector(`[data-fb]`)!==null);function ct(e){let t=[],n=[],r=new Map,i=0,a=!1,o=0,s=!1,c=new Map,l=new Set,u=new Set,d=new WeakMap,f=new Set,p,m;function h(){i||=requestAnimationFrame(T)}function g(){a||(a=!0,it(e=>{a=!1,S(e)}))}function _(e){for(;e;e=e.parentNode)if(l.has(e))return!0;return!1}function v(e){h(),e.some(e=>e.type===`attributes`?ot.includes(e.attributeName??``):_(e.target)||[...e.addedNodes].some(st)||[...e.removedNodes].some(st))&&g()}function y(){s||(s=!0,p??=new MutationObserver(v),m??=new ResizeObserver(h),p.observe(document.body,{childList:!0,subtree:!0,characterData:!0,attributeFilter:[`class`,`style`,`hidden`,`open`,...ot]}),window.addEventListener(`scroll`,h,{passive:!0,capture:!0}),window.addEventListener(`resize`,h,{passive:!0}))}function b(){s&&(s=!1,p?.disconnect(),m?.disconnect(),u=new Set,window.removeEventListener(`scroll`,h,{capture:!0}),window.removeEventListener(`resize`,h),cancelAnimationFrame(i),i=0)}function x(e){let t=new Set([document.body,...e]);for(let e of u)t.has(e)||m?.unobserve(e);for(let e of t)u.has(e)||m?.observe(e);u=t}async function S(e){let r=++o,i=location.pathname,a=t.filter(e=>e.path===i),u=Ze(new Set(a.map(e=>e.anchor.fbId))),f=new Map;for(let t of u.values())for(let n of t){if(e.timeRemaining()<1&&(e=await new Promise(it),r!==o))return;f.set(n,G(Oe(n)))}let p=new Map,m=await Promise.all([...f].map(async([e,t])=>{let n=p.get(t)??c.get(t)??ke(t);return p.set(t,n),[e,await n]}));if(r!==o||!s)return;c=p;let g=new Map(m);n=a.map(e=>{let t=(u.get(e.anchor.fbId)??[]).map(e=>({element:e,hash:g.get(e)??``}));return{comment:e,candidates:t,choice:et(e.anchor,t)}}),l=new Set(f.keys()),d=new WeakMap,x(f.keys()),h()}function C(e){let t=d.get(e);if(!t){t=[];for(let n=e.parentElement;n&&n!==document.body&&n!==document.documentElement;n=n.parentElement){let e=getComputedStyle(n);(e.overflowX!==`visible`||e.overflowY!==`visible`)&&t.push(n)}d.set(e,t)}return t}function w(e,t,n){let r=e.getBoundingClientRect();return t>=r.left&&t<=r.right&&n>=r.top&&n<=r.bottom}function T(){i=0;let t=new Map;for(let e of n){let{id:n,anchor:r}=e.comment;e.candidates.some(({element:e})=>!e.isConnected)&&(e.candidates=e.candidates.filter(({element:e})=>e.isConnected),e.choice=et(r,e.candidates),g());let i=nt(e.choice);if(i.kind!==`placed`){t.set(n,i);continue}let{rect:a,element:o}=i,s=a.left+a.width*r.position.x/100,c=a.top+a.height*r.position.y/100,l=C(o).some(e=>!w(e,s,c));t.set(n,{kind:`placed`,x:s,y:c,clipped:l})}let a=dt(r,t);if(a!==lt){if(r=t,a===X)e(t);else for(let e of f)e()}}return{get states(){return r},listen(e){return f.add(e),()=>f.delete(e)},elementOf(e){let t=n.find(t=>t.comment.id===e)?.choice;return t&&`element`in t?t.element:void 0},update(i){t=i,i.length===0?(b(),o++,n=[],r.size>0&&(r=new Map,e(r))):(y(),g())},destroy(){b(),o++}}}var lt=0,ut=1,X=2;function dt(e,t){if(e.size!==t.size)return X;let n=lt;for(let[r,i]of t){let t=e.get(r);if(!t||t.kind!==i.kind||t.kind===`orphan`&&i.kind===`orphan`&&t.why!==i.why)return X;if(t.kind===`placed`&&i.kind===`placed`){if(t.clipped!==i.clipped)return X;(Math.abs(t.x-i.x)>.1||Math.abs(t.y-i.y)>.1)&&(n=ut)}}return n}var ft=``;function pt(){if(!ft){let e=[];for(let t=0;t<120;t++){let n=t*Math.PI/60,r=14+Math.sin(10*n);e.push(`${(16+r*Math.cos(n)).toFixed(2)} ${(16+r*Math.sin(n)).toFixed(2)}`)}ft=`M${e.join(` `)}Z`}return ft}var mt=class extends C{buttons=new Map;labels=new WeakMap;stop;componentDidMount(){this.stop=this.props.tracker.listen(this.place),this.place()}componentDidUpdate(){this.place()}componentWillUnmount(){this.stop?.()}place=()=>{let{states:e}=this.props.tracker;for(let[t,n]of this.buttons){let r=e.get(t);r?.kind===`placed`&&(n.style.transform=`translate(${r.x}px, ${r.y}px)`)}};label(e){let t=this.labels.get(e);return t===void 0&&(t=Ae(e.body),this.labels.set(e,t)),t}render({pins:e,openId:t,pendingId:n,onOpen:r}){return e.map(({comment:e,n:i,leaving:a})=>{let o=e.status!==`open`;return B(`button`,{ref:t=>{t?this.buttons.set(e.id,t):this.buttons.delete(e.id)},type:`button`,"data-comment-id":e.id,"aria-label":`Comment ${i}${o?` (resolved)`:``}: ${this.label(e)}`,"aria-expanded":t===e.id,"aria-busy":n===e.id||void 0,inert:a,onClick:()=>r(e.id),class:`group fixed top-0 left-0 grid size-8 -translate-1/2 place-items-center rounded-full hover:z-1 focus-visible:z-1 focus-visible:outline-none ${t===e.id?`z-2`:``}`,children:[B(`span`,{class:`mitt-pin mitt-enter ${o?`mitt-done `:``}${a?`opacity-0 ease-in ${o?``:`motion-safe:[scale:.6] motion-safe:delay-250`}`:`ease-spring group-hover:[scale:1.1]`} ${t===e.id?`[scale:1.1]`:``}${n===e.id?W:``}`,children:[B(Te,{seed:e.author.avatar,size:20,muted:o}),B(`span`,{class:`mitt-num`,children:o||a?B(je,{}):B(`span`,{children:i})})]}),B(`svg`,{viewBox:`0 0 32 32`,"aria-hidden":`true`,class:`mitt-ring`,"data-on":t===e.id||void 0,children:B(`path`,{d:pt()})})]},e.id)})}};function ht(e){let{mode:t,count:n,syncError:r,app:i}=e;return B(`div`,{class:`mitt-tb fixed bottom-5 flex h-(--mitt-toolbar-h) flex-row-reverse items-center gap-0.5 p-px select-none`,children:[B(`button`,{ref:e.toggleRef,type:`button`,"aria-haspopup":`dialog`,"aria-expanded":e.panel,"aria-busy":e.busy||void 0,"aria-label":t?`Exit comment mode`:`Mitt comments${n>0?`, ${n} open`:``}`,"aria-describedby":e.tip?`mitt-tip`:void 0,"aria-description":`Settings: right-click, or Shift+F10`,"aria-keyshortcuts":`Shift+F10`,title:t?`Exit comment mode (Esc)`:`Comments (right-click for settings)`,onPointerEnter:e.onIntent,onFocus:e.onIntent,onClick:e.onToggle,onContextMenu:i.onContextMenu,onKeyDown:i.onMenuKey,onPointerDown:i.onPress,onPointerUp:i.onRelease,onPointerLeave:i.onRelease,onPointerCancel:i.onRelease,class:`mitt-bar aspect-square ${t?`bg-accent text-on-accent`:`hover:bg-row`}${e.busy?W:``}`,children:[t?B(K,{d:ae}):B(`svg`,{viewBox:`0 0 128 128`,"aria-hidden":`true`,fill:`currentColor`,class:`mitt-mark`,children:B(`path`,{d:ie})}),n>0?B(`span`,{"aria-hidden":`true`,class:`mitt-badge`,children:B(`span`,{children:n>99?`99+`:n})}):null]}),r?B(`button`,{type:`button`,"aria-expanded":e.panel,"aria-label":`Mitt is offline: ${r}`,title:r,onClick:e.onToggle,class:`mitt-bar px-2 hover:bg-row`,children:[B(`span`,{class:`size-1.5 rounded-full bg-warning`}),`Offline`]}):null]})}var gt=430,_t=1e4,vt=`Mitt couldn't load its comment tools. Check the connection or the site's Content Security Policy, then try again.`,yt=`mitt:tip-seen`,bt=`mitt:show-resolved`,xt=`mitt:goto`,St=`mitt:hide-pins`,Ct=500,wt={ArrowDown:1,ArrowRight:1,ArrowUp:-1,ArrowLeft:-1},Tt=e=>e.map(e=>`${e.id}:${e.status}:${e.author.name}:${e.replies.map(e=>e.id+e.author.name+e.editedAt)}`).join();function Z(e){return e?document.documentElement.hasAttribute(`data-fb-commit`)?globalThis.crypto?.subtle?null:`Comments need a secure page (https or localhost).`:`This site isn't built with @basementstudio/mitt-next-plugin, so comments can't be anchored to its code.`:`Comments are off: the Mitt script tag needs data-project and data-api.`}function Et(e){if((e.key||``).toLowerCase()!==`c`||e.isComposing||e.ctrlKey||e.metaKey||e.altKey||e.shiftKey)return!1;let t=e.composedPath()[0];return!(t instanceof HTMLElement&&(t.isContentEditable||/^(INPUT|TEXTAREA|SELECT)$/.test(t.tagName)))}var Dt=class extends C{state={comments:[],states:new Map,mode:!1,draft:null,openId:null,panel:!1,row:null,syncError:null,ui:null,pending:null,uiFailed:!1,leaving:new Set,tip:!V(()=>localStorage.getItem(yt)===`1`,!0),name:``,resolved:V(()=>localStorage.getItem(bt)===`1`,!1),menu:!1,theme:Je(),hidden:V(()=>sessionStorage.getItem(St)===`1`,!1)};pill=x();tracker=ct(e=>this.setState({states:e}));stopSync;startTimer=0;clock=0;latest=0;asked=0;path=location.pathname;synced=!1;goto=V(()=>{let e=sessionStorage.getItem(xt);return sessionStorage.removeItem(xt),e},null);uiRequest;edits=new Map;created=new Set;leaveTimers=new Set;pressTimer=0;pressed=!1;menus=0;componentDidMount(){window.addEventListener(`keydown`,this.onShortcut,{capture:!0}),window.addEventListener(`keydown`,this.onKey,{passive:!0}),window.addEventListener(`pointerdown`,this.onPointer,{passive:!0,capture:!0}),this.props.config&&(this.startTimer=window.setTimeout(this.startSync,0))}componentDidUpdate(e,t){let{comments:n,states:r}=this.state;t.comments!==n&&this.tracker.update(n);let i=this.goto;i&&this.synced&&(n.find(e=>e.id===i)?.path===location.pathname?r.has(i)&&(this.goto=null,this.reveal(i)):this.goto=null)}componentWillUnmount(){clearTimeout(this.startTimer),clearTimeout(this.pressTimer);for(let e of this.leaveTimers)clearTimeout(e);window.removeEventListener(`keydown`,this.onShortcut,{capture:!0}),window.removeEventListener(`keydown`,this.onKey),window.removeEventListener(`pointerdown`,this.onPointer,{capture:!0}),this.stopSync?.(),this.tracker.destroy()}startSync=()=>{let e=ze(()=>void this.refresh()),t=window.navigation;t?.addEventListener(`currententrychange`,this.onNavigate),window.addEventListener(`popstate`,this.onNavigate),this.stopSync=()=>{e(),t?.removeEventListener(`currententrychange`,this.onNavigate),window.removeEventListener(`popstate`,this.onNavigate)}};onNavigate=()=>{location.pathname!==this.path&&(this.path=location.pathname,this.tracker.update(this.state.comments),this.forceUpdate(),this.refresh())};refresh=async()=>{let{config:e}=this.props;if(!e)return;let t=++this.clock;this.latest=t,this.asked=Date.now();let n=await _e(e,this.state.resolved);if(t!==this.latest)return;if(!n.ok){n.message!==this.state.syncError&&this.setState({syncError:n.message});return}this.synced=!0;let{edits:r,created:i}=this;for(let[e,[n]]of r)n<t&&(r.delete(e),i.delete(e));this.setState(({comments:e,leaving:t,syncError:a,resolved:o})=>{let s=new Set(n.value.map(e=>e.id)),c=[...[...[...n.value].reverse(),...e.filter(e=>i.has(e.id)&&!s.has(e.id))].map(e=>r.get(e.id)?.[1]??e).filter(e=>(o||e.status===`open`)&&!t.has(e.id)),...e.filter(e=>t.has(e.id))];return a===null&&Tt(c)===Tt(e)?null:{comments:c,syncError:null}})};fetchUi(){this.uiRequest??=this.props.loadUi().then(e=>this.setState(({pending:t})=>({ui:e,pending:null,...t})),()=>{this.uiRequest=void 0,this.setState(({pending:e})=>e?{pending:null,uiFailed:!0}:null)})}show(e){if(e.openId&&Date.now()-this.asked>_t&&this.refresh(),this.state.ui)return this.setState(e);this.setState({pending:e,uiFailed:!1}),this.fetchUi()}prefetch=()=>{!this.state.ui&&this.props.config&&this.fetchUi()};seen(){this.state.tip&&(V(()=>localStorage.setItem(yt,`1`),void 0),this.setState({tip:!1}))}togglePill=()=>{this.seen();let e={panel:!1,openId:null,draft:null,menu:!1};if(this.state.mode||this.state.pending?.mode)return this.setState({mode:!1,pending:null,...e});Xe(this.pill.current?.closest(`.mitt`)),Z(this.props.config)?this.setState({mode:!0,...e}):this.show({mode:!0,...e})};togglePanel=()=>{let{mode:e,pending:t,panel:n,menu:r}=this.state;if(this.pressed)this.pressed=!1;else{if(r||t?.menu)return this.closeMenu();if(!this.props.config||e||t?.mode)return this.togglePill();this.seen(),n||t?.panel?this.setState({panel:!1,pending:null}):this.show({panel:!0,row:null,openId:null,draft:null})}};toggleResolved=()=>{let e=!this.state.resolved;V(()=>localStorage.setItem(bt,e?`1`:`0`),void 0),this.setState({resolved:e,row:null},e?this.refresh:void 0),e||this.leave(this.state.comments.filter(e=>e.status!==`open`).map(e=>e.id))};reveal=e=>{let t=this.tracker.elementOf(e);if(t&&this.tracker.states.get(e)?.kind===`placed`){let n=matchMedia(`(prefers-reduced-motion: reduce)`).matches;t.scrollIntoView({block:`center`,behavior:n?`auto`:`smooth`}),this.setState({panel:!1}),requestAnimationFrame(()=>this.show({openId:e}))}else this.show({panel:!0,row:e,openId:null,mode:!1,draft:null})};keyboard(e){let t=this.pill.current?.getRootNode();t instanceof ShadowRoot&&t.host.toggleAttribute(`data-kbd`,e)}onPointer=e=>{this.keyboard(!1);let t=e.composedPath();this.state.menu&&!t.includes(this.pill.current)&&!t.some(e=>e instanceof Element&&e.id===`mitt-menu`)&&this.setState({menu:!1})};onShortcut=e=>{let{pending:t,mode:n}=this.state;Et(e)&&(n||t?.mode||!Z(this.props.config))&&(e.preventDefault(),e.stopImmediatePropagation(),e.repeat||this.togglePill())};onKey=e=>{e.key===`Tab`&&this.keyboard(!0);let{pending:t,draft:n,openId:r,mode:i,panel:a,uiFailed:o}=this.state;e.key===`Escape`&&(t?this.setState({pending:null}):this.state.menu?this.closeMenu():n?this.closeDraft():r?this.closeThread():i?this.setState({mode:!1}):a?this.closePanel():o&&this.setState({uiFailed:!1}))};focusInWidget(e){let t=this.pill.current,n=t?.getRootNode(),r=e&&n instanceof ShadowRoot?n.querySelector(e):null;(r instanceof HTMLElement?r:t)?.focus()}closeThread=()=>{let{openId:e,hidden:t}=this.state;this.setState({openId:null}),e&&this.focusInWidget(t?void 0:`button[data-comment-id="${CSS.escape(e)}"]`)};closeDraft=()=>{this.setState({draft:null}),this.focusInWidget()};closePanel=()=>{this.setState({panel:!1}),this.focusInWidget()};openMenu=e=>{this.onRelease(),e&&this.keyboard(!0),this.state.menu||this.menus++,this.show({menu:!0,panel:!1,mode:!1,draft:null})};closeMenu=()=>{this.setState({menu:!1,pending:null}),this.focusInWidget()};menuKey=e=>{let{target:t,key:n,currentTarget:r}=e;if(t instanceof HTMLInputElement||!(r instanceof Element))return;if(n===`Tab`)return e.preventDefault(),this.closeMenu();let i=[...r.querySelectorAll(`button`)],a=wt[n],o=a?i[(i.indexOf(t)+a+i.length)%i.length]:n===`Home`?i[0]:n===`End`?i.at(-1):void 0;o&&(e.preventDefault(),this.keyboard(!0),o.focus())};onMenuKey=e=>{(e.key===`ContextMenu`||e.shiftKey&&e.key===`F10`)&&(e.preventDefault(),this.openMenu(!0))};onContextMenu=e=>{e.preventDefault(),this.pressed||=this.pressTimer!==0,this.openMenu()};onPress=e=>{this.pressed=!1,e.pointerType!==`mouse`&&(this.pressTimer=window.setTimeout(()=>{this.pressed=!0,this.openMenu()},Ct))};onRelease=()=>{clearTimeout(this.pressTimer),this.pressTimer=0};setTheme=e=>{Ye(this.pill.current?.closest(`.mitt`),e),this.setState({theme:e})};togglePins=()=>{let e=!this.state.hidden;V(()=>e?sessionStorage.setItem(St,`1`):sessionStorage.removeItem(St),void 0),this.setState({hidden:e})};turnOff=()=>{V(()=>localStorage.removeItem(le),void 0),this.props.unmount?.()};openPin=e=>{e===this.state.openId?this.setState({openId:null}):this.show({openId:e})};leave(e){this.setState(({leaving:t,openId:n})=>({leaving:new Set([...t,...e]),openId:n&&e.includes(n)?null:n}));let t=window.setTimeout(()=>{this.leaveTimers.delete(t),this.setState(({comments:t,leaving:n})=>{let r=new Set(n);for(let t of e)r.delete(t);return{comments:t.filter(t=>!e.includes(t.id)),leaving:r}})},gt);this.leaveTimers.add(t)}render({config:e},t){let{comments:n,states:r,mode:i,draft:a,openId:o,panel:s,ui:c,pending:l,uiFailed:u,leaving:d,menu:f}=t,p=location.pathname,m=[],h=[],g=new Map,_=0;for(let e of n){let t=e.status!==`open`,n=`${t}${e.path}`,i=(g.get(n)??0)+1;g.set(n,i);let a=d.has(e.id);!t&&!a&&_++;let o=e.path===p?r.get(e.id):void 0;o?.kind===`placed`&&!o.clipped&&m.push({comment:e,n:i,leaving:a}),h.push({comment:e,n:i,leaving:a,state:o})}let v=m.find(e=>e.comment.id===o),y=i?Z(e):null,b=u?vt:y,x=t.tip&&!i&&!s&&!f&&!o&&!l&&!u&&!Z(e);return B(S,{children:[c&&i&&!y?B(c.Capture,{draft:a,app:this}):l?.mode?B(`div`,{class:`fixed inset-0 cursor-progress`}):null,B(mt,{pins:t.hidden?m.filter(({comment:{id:e}})=>e===o||e===l?.openId):m,tracker:this.tracker,openId:o,pendingId:l?.openId??null,onOpen:this.openPin}),B(q,{children:c&&i&&!y&&a?B(c.Composer,{draft:a,name:t.name,app:this}):null}),B(q,{children:c&&v?B(c.Thread,{pin:v,app:this},v.comment.id):null}),B(q,{children:c&&s?B(c.Comments,{items:h,app:this}):null}),B(q,{children:c&&f?B(c.Menu,{app:this},this.menus):null}),B(q,{children:c&&i&&!y&&!a?B(c.Hint,{}):null}),B(q,{children:b?B(`p`,{role:u?`alert`:`status`,class:`mitt-note mitt-enter fixed right-5 bottom-15 flex max-w-72 origin-bottom-right gap-2 rounded-(--mitt-panel-radius) p-2.5 text-xs`,children:[B(K,{d:oe,class:`text-warning`}),b]}):null}),B(q,{children:x?B(`p`,{id:`mitt-tip`,role:`tooltip`,class:`mitt-note mitt-tip mitt-enter fixed right-5 bottom-17 origin-bottom-right rounded-(--mitt-panel-radius) p-2.5 text-xs select-none`,children:`Click to see comments, or press C to add one`}):null}),B(ht,{toggleRef:this.pill,tip:x,mode:i,busy:!!(l?.mode||l?.panel||l?.menu),panel:s,count:_,syncError:t.syncError,onToggle:this.togglePanel,onIntent:this.prefetch,app:this})]})}},Q=`mitt-root`,Ot=`/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */
|
|
2
|
+
@layer properties{:host,*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-ease:initial;--tw-border-style:solid}}@layer theme{:host,.mitt{--font-sans:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;--spacing:4px;--text-xs:12px;--text-xs--line-height:calc(1 / .75);--ease-in:cubic-bezier(.4, 0, 1, 1);--ease-out:cubic-bezier(.2, .8, .2, 1);--animate-pulse:pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--default-transition-duration:.18s;--default-transition-timing-function:cubic-bezier(.2, .8, .2, 1);--color-surface:#19191b;--color-row:#ffffff0d;--color-line:#ffffff17;--color-fg:#ededee;--color-muted:#b5b5ba;--color-accent:#ffc53d;--color-on-accent:#1a1408;--color-warning:#ff9e6b;--color-pin-ring:#fbbf24;--color-focus:#ffc53d;--color-scrollbar:#fff3;--mitt-font:13px;--mitt-panel-radius:16px;--mitt-pin-size:20px;--mitt-pin-font:11px;--mitt-pin-ring-w:1.5px;--mitt-toolbar-h:40px;--mitt-mark-size:20px;--mitt-shadow:0 8px 24px -6px #00000038, 0 1px 3px #0000001a;--ease-spring:cubic-bezier(.3, 1.35, .5, 1)}}@layer base{.mitt{all:initial;font-family:var(--font-sans);font-size:var(--mitt-font);color:var(--color-fg);-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%;-webkit-font-smoothing:antialiased;direction:ltr;line-height:round(1.45em,1px);display:block}.mitt[data-theme=light]{--color-surface:#fff;--color-row:#0000000a;--color-line:#00000017;--color-fg:#18181b;--color-muted:#58585e;--color-warning:#9e350a;--color-focus:#a16207;--color-scrollbar:#0003;--color-pin-ring:#1a1408}*,:before,:after{box-sizing:border-box;scrollbar-width:thin;scrollbar-color:var(--color-scrollbar) transparent;border:0 solid;margin:0;padding:0}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-thumb{background:var(--color-scrollbar);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--color-muted)}button,textarea{font:inherit;color:inherit;background:0 0}button,summary{cursor:pointer;outline-offset:2px;transition:color var(--default-transition-duration), background-color var(--default-transition-duration);position:relative}@media (pointer:coarse){button:before,summary:before{content:"";position:absolute;inset:min(0px,50% - 22px)}}:focus-visible{outline:0}:host([data-kbd]) :focus-visible{outline:2px solid var(--color-focus)}:host([data-kbd]) :focus-visible>.mitt-pin{outline:2px solid var(--color-focus);outline-offset:1px}}@layer components{.mitt-enter{transition-property:opacity,translate,scale;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}@starting-style{.mitt-enter{opacity:0;--tw-translate-y:4px;scale:.97;translate:var(--tw-translate-x) var(--tw-translate-y)}}.mitt-exit .mitt-enter{opacity:0;--tw-translate-y:4px;scale:.97;translate:var(--tw-translate-x) var(--tw-translate-y)}@media (prefers-reduced-motion:reduce){.mitt-enter{transition-property:opacity}}.mitt-bar{justify-content:center;align-items:center;gap:var(--spacing);height:100%;font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));border-radius:2147483647px;display:flex}.mitt-note{border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-line);background-color:var(--color-surface);box-shadow:var(--mitt-shadow)}.mitt-tb{border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-line);background-color:var(--color-surface);filter:drop-shadow(0 8px 8px #0000001a)drop-shadow(0 1px 1.5px #0000001a);border-radius:2147483647px;left:calc(100% - 20px);translate:-100%}.mitt-badge{pointer-events:none;height:calc(var(--spacing) * 4);min-width:calc(var(--spacing) * 4);background-color:var(--color-accent);padding-inline:var(--spacing);font-family:var(--font-mono);color:var(--color-on-accent);box-shadow:0 0 0 2px var(--color-surface);border-radius:2147483647px;place-items:center;font-size:10px;font-weight:600;display:grid;position:absolute;top:-4px;right:-4px}.mitt-badge>span{text-box:cap alphabetic}.mitt-tip{pointer-events:none}.mitt-tip:after{content:"";right:calc(var(--mitt-toolbar-h) / 2 - 5px);border:solid var(--color-line);background:var(--color-surface);border-width:0 1px 1px 0;width:8px;height:8px;position:absolute;bottom:-5px;rotate:45deg}.mitt-mark{font-size:var(--mitt-mark-size);width:1em;height:1em;translate:round(.055em,1px) -.03em}.mitt-dot{width:var(--mitt-pin-size);height:var(--mitt-pin-size);font-size:var(--mitt-pin-font);color:var(--color-on-accent);background-image:radial-gradient(circle at 80% 23%, #ffffffb3, #0000 49%, #00000080), linear-gradient(var(--color-accent) 0 0), radial-gradient(circle at 80% 23%, #ffffff4d, #0000 60%), linear-gradient(var(--color-pin-ring) 0 0);background-origin:padding-box,padding-box,border-box,border-box;background-clip:padding-box,padding-box,border-box,border-box;border-radius:2147483647px;flex-shrink:0;place-items:center;font-weight:600;display:grid}.mitt-dot>*{text-box:cap alphabetic}.mitt-avatar{clip-path:circle(50%);--av-rim:var(--r);flex-shrink:0;display:block}.mitt-pin>.mitt-avatar{width:100%;height:100%}.mitt[data-theme=light] .mitt-avatar{--av-rim:var(--rl)}.mitt-avatar circle{fill:var(--p)}.mitt-avatar path{fill:var(--i)}.mitt-avatar path+circle{fill:none;stroke:var(--av-rim);stroke-width:2px}.mitt-pin{width:var(--mitt-pin-size);height:var(--mitt-pin-size);border-radius:2147483647px;position:relative;box-shadow:0 1px 3px #00000040}.mitt-num{top:calc(var(--spacing) * -1);right:calc(var(--spacing) * -1.25);height:calc(var(--spacing) * 3);min-width:calc(var(--spacing) * 3);background-color:var(--color-accent);color:var(--color-on-accent);box-shadow:0 0 0 var(--mitt-pin-ring-w) var(--color-on-accent);border-radius:2147483647px;place-items:center;font-size:8px;font-weight:700;display:grid;position:absolute}.mitt-num>span{text-box:cap alphabetic}.mitt-num>svg{width:8px;height:8px}.mitt-done>.mitt-num{color:inherit}@starting-style{.mitt-pin{scale:.5}}.mitt-ring{z-index:-1;fill:none;stroke:var(--color-accent);stroke-width:1.5px;pointer-events:none;opacity:0;position:absolute;inset:0;scale:.6}.mitt-done~.mitt-ring{stroke:var(--color-muted)}.mitt-ring[data-on]{opacity:1;scale:1}@media (prefers-reduced-motion:no-preference){.mitt-ring{transition:scale .5s var(--ease-out), opacity .4s var(--ease-out);animation:12s linear infinite paused mitt-spin}.mitt-ring[data-on]{transition:scale .32s var(--ease-spring), opacity .16s var(--ease-out);animation-play-state:running}}.mitt-done{--color-accent:var(--color-muted);--color-pin-ring:var(--color-muted);color:var(--color-surface);opacity:.75}}@layer utilities{.fixed{position:fixed}.inset-0{inset:0}.top-0{top:0}.right-5{right:calc(var(--spacing) * 5)}.bottom-5{bottom:calc(var(--spacing) * 5)}.bottom-15{bottom:calc(var(--spacing) * 15)}.bottom-17{bottom:calc(var(--spacing) * 17)}.left-0{left:0}.z-2{z-index:2}.block{display:block}.flex{display:flex}.grid{display:grid}.aspect-square{aspect-ratio:1}.size-1\\.5{width:calc(var(--spacing) * 1.5);height:calc(var(--spacing) * 1.5)}.size-4{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.size-8{width:calc(var(--spacing) * 8);height:calc(var(--spacing) * 8)}.h-\\(--mitt-toolbar-h\\){height:var(--mitt-toolbar-h)}.max-w-72{max-width:calc(var(--spacing) * 72)}.shrink-0{flex-shrink:0}.origin-bottom-right{transform-origin:100% 100%}.-translate-1\\/2{--tw-translate-x:calc(calc(1 / 2 * 100%) * -1);--tw-translate-y:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.\\[scale\\:1\\.1\\]{scale:1.1}.animate-pulse{animation:var(--animate-pulse)}.cursor-progress{cursor:progress}.flex-row-reverse{flex-direction:row-reverse}.place-items-center{place-items:center}.items-center{align-items:center}.gap-0\\.5{gap:calc(var(--spacing) * .5)}.gap-2{gap:calc(var(--spacing) * 2)}.rounded-\\(--mitt-panel-radius\\){border-radius:var(--mitt-panel-radius)}.rounded-full{border-radius:2147483647px}.bg-accent{background-color:var(--color-accent)}.bg-warning{background-color:var(--color-warning)}.p-2\\.5{padding:calc(var(--spacing) * 2.5)}.p-px{padding:1px}.px-2{padding-inline:calc(var(--spacing) * 2)}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-on-accent{color:var(--color-on-accent)}.text-warning{color:var(--color-warning)}.opacity-0{opacity:0}.ease-in{--tw-ease:var(--ease-in);transition-timing-function:var(--ease-in)}.ease-spring{--tw-ease:var(--ease-spring);transition-timing-function:var(--ease-spring)}.select-none{-webkit-user-select:none;user-select:none}@media (hover:hover){.group-hover\\:\\[scale\\:1\\.1\\]:is(:where(.group):hover *){scale:1.1}.hover\\:z-1:hover{z-index:1}.hover\\:bg-row:hover{background-color:var(--color-row)}}.focus-visible\\:z-1:focus-visible{z-index:1}.focus-visible\\:outline-none:focus-visible{--tw-outline-style:none;outline-style:none}@media (prefers-reduced-motion:no-preference){.motion-safe\\:\\[scale\\:\\.6\\]{scale:.6}.motion-safe\\:delay-250{transition-delay:.25s}}@media (prefers-reduced-motion:reduce){.motion-reduce\\:animate-none{animation:none}}}@keyframes mitt-spin{to{rotate:1turn}}@keyframes pulse{50%{opacity:.5}}`,kt=`all:initial!important;display:block!important;position:fixed!important;top:0!important;left:0!important;width:0!important;height:0!important;z-index:2147483647!important`,$,At;function jt(e=null,t=null){let n=document.querySelector(Q)?.shadowRoot;if(n)return n;let r=document.createElement(Q);r.setAttribute(`style`,kt);let i=typeof r.showPopover==`function`;i&&(r.setAttribute(`popover`,`manual`),$||($=new CSSStyleSheet,$.replaceSync(`${Q}::backdrop{display:none!important}`)),document.adoptedStyleSheets.push($));let a=r.attachShadow({mode:`open`}),o=document.createElement(`style`);o.textContent=Ot;let s=document.createElement(`div`);return s.className=`mitt`,a.append(o,s),R(B(Dt,{config:e,loadUi:Ie(t,a),unmount:Nt}),s),Xe(s),At=Mt(r),document.documentElement.append(r),i&&r.showPopover(),a}function Mt(e){let t=document.documentElement;if(typeof t.currentCSSZoom!=`number`)return()=>{};let n=1,r=0,i=()=>{r=0;let i=1/t.currentCSSZoom;i!==n&&(n=i,e.style.setProperty(`zoom`,String(i),`important`))},a=()=>{r||=requestAnimationFrame(i)};i();let o=new MutationObserver(a);return o.observe(t,{attributeFilter:[`class`,`style`]}),window.addEventListener(`resize`,a,{passive:!0}),()=>{cancelAnimationFrame(r),o.disconnect(),window.removeEventListener(`resize`,a)}}function Nt(){At?.(),At=void 0;let e=document.adoptedStyleSheets,t=$?e.indexOf($):-1;t!==-1&&e.splice(t,1);let n=document.querySelector(Q),r=n?.shadowRoot?.lastElementChild;r&&R(null,r),n?.remove()}function Pt(e=null,t=null){at(()=>jt(e,t))}var Ft=document.currentScript,It=n(Ft);It||console.warn(`[mitt] data-project and data-api are missing on the script tag; comments are off.`),Pt(It,Fe(Ft))})();
|
package/package.json
CHANGED
|
@@ -1,6 +1,55 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@basementstudio/mitt-widget",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"
|
|
5
|
-
"
|
|
6
|
-
|
|
3
|
+
"version": "0.2.0",
|
|
4
|
+
"description": "The Mitt widget: a reviewer-only loader, the Shadow DOM core and its lazy UI module, as static files to host or serve from a CDN.",
|
|
5
|
+
"license": "UNLICENSED",
|
|
6
|
+
"keywords": [
|
|
7
|
+
"mitt",
|
|
8
|
+
"feedback",
|
|
9
|
+
"widget",
|
|
10
|
+
"review"
|
|
11
|
+
],
|
|
12
|
+
"homepage": "https://github.com/basementstudio/mitt#readme",
|
|
13
|
+
"bugs": {
|
|
14
|
+
"url": "https://github.com/basementstudio/mitt/issues"
|
|
15
|
+
},
|
|
16
|
+
"repository": {
|
|
17
|
+
"type": "git",
|
|
18
|
+
"url": "git+https://github.com/basementstudio/mitt.git",
|
|
19
|
+
"directory": "packages/widget"
|
|
20
|
+
},
|
|
21
|
+
"type": "module",
|
|
22
|
+
"files": [
|
|
23
|
+
"dist",
|
|
24
|
+
"LICENSE"
|
|
25
|
+
],
|
|
26
|
+
"exports": {
|
|
27
|
+
"./loader.js": "./dist/loader.js",
|
|
28
|
+
"./mitt.js": "./dist/mitt.js",
|
|
29
|
+
"./mitt-ui.js": "./dist/mitt-ui.js",
|
|
30
|
+
"./package.json": "./package.json"
|
|
31
|
+
},
|
|
32
|
+
"scripts": {
|
|
33
|
+
"build": "vite build && vite build --mode ui && vite build --mode loader",
|
|
34
|
+
"lint": "biome check .",
|
|
35
|
+
"typecheck": "tsc --noEmit",
|
|
36
|
+
"test": "vitest run && playwright test && size-limit"
|
|
37
|
+
},
|
|
38
|
+
"devDependencies": {
|
|
39
|
+
"@basementstudio/mitt-shared": "0.2.0",
|
|
40
|
+
"@playwright/test": "^1.64.1",
|
|
41
|
+
"@size-limit/file": "^14.2.0",
|
|
42
|
+
"@tailwindcss/vite": "^4.3.3",
|
|
43
|
+
"happy-dom": "^21.0.3",
|
|
44
|
+
"lightningcss": "^1.33.0",
|
|
45
|
+
"preact": "^11.0.1",
|
|
46
|
+
"size-limit": "^14.2.0",
|
|
47
|
+
"tailwindcss": "^4.3.3",
|
|
48
|
+
"typescript": "7.0.2",
|
|
49
|
+
"vite": "^8.3.4",
|
|
50
|
+
"vitest": "^5.0.5"
|
|
51
|
+
},
|
|
52
|
+
"publishConfig": {
|
|
53
|
+
"access": "public"
|
|
54
|
+
}
|
|
55
|
+
}
|
package/README.md
DELETED