turbo_boost-elements 0.0.15 → 0.0.17

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 45b4fbf824f13dc9ef61cfbea667a31b153fc0b7863ded28b22ed93c85cbc1a2
4
- data.tar.gz: c6dd7c0b01256b0ab3277fa2de1a5736a3fb26d824793c71394019f54877f186
3
+ metadata.gz: 4f8ac3dacb38451c6da9d96c0f86980a949392c981982319a358297607f081ee
4
+ data.tar.gz: 97fd8cb91d843b33bba9838d14fb48c237eaf29bcba1cf36fb775026cbcb44a3
5
5
  SHA512:
6
- metadata.gz: 7b9edaab3b5980e25c8aa52eb04081728ceb0e5f5c3c28fda05ba7deca4403133b03d406bce6348a7202da99fe5fa088e69ad71a30ca4272e96664ddf815b914
7
- data.tar.gz: cc090114c9c8e8e8b11e91c9e271d1f7bfcf5ebfb2f0bad5b352c3ab9c12da7ddaf75ab37d1e9196c9debbb6150e2762669c6697c267ab4c0f7ca15c5adc5679
6
+ metadata.gz: 8a7ada648f5aaed6a6fb753a05366b47b59adcc4b8438a814c343d0b7758ef1a94f0f1b1eedb25137a7cd3c5ecb7f3017f8b73672976d7b0d5580aec98dae46c
7
+ data.tar.gz: d33d811f419a4abaed29017bff59b559ca34b93a09e3a5af8547673cff1f96e70413dc8c66dba5f7a2068de2b7b224544bbf8366312e1813815bbef714faba47
data/README.md CHANGED
@@ -197,8 +197,8 @@ TurboBoost.devtools.start()
197
197
 
198
198
  1. Run `yarn` and `bundle` to pick up the latest
199
199
  1. Bump version number at `lib/turbo_boost/elements/version.rb`. Pre-release versions use `.preN`
200
- 1. Run `rake build` and `yarn build`
201
200
  1. Run `bin/standardize`
201
+ 1. Run `rake build` and `yarn build`
202
202
  1. Commit and push changes to GitHub
203
203
  1. Run `rake release`
204
204
  1. Run `yarn publish --no-git-tag-version --access public`
@@ -1,4 +1,4 @@
1
- var Be=Object.defineProperty,De=Object.defineProperties,He=Object.getOwnPropertyDescriptors,se=Object.getOwnPropertySymbols,Re=Object.prototype.hasOwnProperty,je=Object.prototype.propertyIsEnumerable,ie=(e,t,o)=>t in e?Be(e,t,{enumerable:!0,configurable:!0,writable:!0,value:o}):e[t]=o,l=(e,t)=>{for(var o in t||(t={}))Re.call(t,o)&&ie(e,o,t[o]);if(se)for(var o of se(t))je.call(t,o)&&ie(e,o,t[o]);return e},b=(e,t)=>De(e,He(t)),Me=class{get element(){return document.querySelector('meta[name="turbo-boost"]')}get token(){return this.element.getAttribute("content")}get busy(){return this.element.dataset.busy==="true"}set busy(e){return this.element.dataset.busy=!!e}},d=new Me,c={start:"turbo-boost:command:start",success:"turbo-boost:command:success",finish:"turbo-boost:command:finish",abort:"turbo-boost:command:abort",clientError:"turbo-boost:command:client-error",serverError:"turbo-boost:command:server-error"},f={stateLoad:"turbo-boost:state:load",stateChange:"turbo-boost:state:change"},h=l(l({},c),f);function m(e,t,o={}){return new Promise(r=>{o=o||{},o.detail=o.detail||{},t=t||document;let n=new CustomEvent(e,b(l({},o),{bubbles:!0}));t.dispatchEvent(n),r(n)})}var P;function R(e,t=null){if(!e||typeof e!="object")return e;let o=new Proxy(e,{deleteProperty(r,n){return delete r[n],m(f.stateChange,d.element,{detail:{state:P}}),!0},set(r,n,s,i){return r[n]=R(s,this),m(f.stateChange,d.element,{detail:{state:P}}),!0}});if(Array.isArray(e))e.forEach((r,n)=>e[n]=R(r,o));else if(typeof e=="object")for(let[r,n]of Object.entries(e))e[r]=R(n,o);return t||(P=o),o}var qe=R,W,E,C,le;function ue(){if(!d.element)return w();let e=atob(d.element.dataset.state);C={},E=qe(JSON.parse(e)),W=l({},E),delete d.element.dataset.clientStateChange,setTimeout(()=>m(f.stateLoad,d.element,{detail:{state:E}}))}function w(){clearTimeout(le),le=setTimeout(ue,10)}W||ue();addEventListener("DOMContentLoaded",w);addEventListener("load",w);addEventListener("turbo:load",w);addEventListener("turbo:frame-load",w);addEventListener(c.success,w);addEventListener(f.stateChange,e=>{C={};for(let[t,o]of Object.entries(E))W[t]!==o&&(C[t]=o);d.element.dataset.clientStateChange=!0,d.element.dataset.state=btoa(JSON.stringify(E))});var j={events:f,get current(){return E},get delta(){return C},get payloadChunks(){return btoa(JSON.stringify(C)).match(/.{1,2000}/g)}};function Ne(e){let t="<html",o="</html",r=e.indexOf(t),n=e.lastIndexOf(o);if(r>=0&&n>=0){let s=e.slice(e.indexOf(">",r)+1,n);document.documentElement.innerHTML=s}}function Pe(e){document.body.insertAdjacentHTML("beforeend",e)}var A={append:Pe,replaceDocument:Ne},M={};function Ie(e){M[e.id]=e}function ze(e){delete M[e]}var me={add:Ie,remove:ze,get commands(){return[...Object.values(M)]},get length(){return Object.keys(M).length}};function he(e){e.detail.endedAt=Date.now(),e.detail.milliseconds=e.detail.endedAt-e.detail.startedAt,setTimeout(()=>m(c.finish,e.target,{detail:e.detail}),25)}addEventListener(c.serverError,he);addEventListener(c.success,he);addEventListener(c.finish,e=>me.remove(e.detail.id),!0);var X={events:c},z={};addEventListener("turbo:before-fetch-request",e=>{let t=e.target.closest("turbo-frame"),{fetchOptions:o}=e.detail;if(d.busy){let r=["text/vnd.turbo-boost.html",o.headers.Accept];r=r.filter(n=>n&&n.trim().length>0).join(", "),o.headers.Accept=r,o.headers["TurboBoost-Token"]=d.token}j.payloadChunks.forEach((r,n)=>{o.headers[`TurboBoost-State-${n.toString().padStart(4,"0")}`]=r})});addEventListener("turbo:before-fetch-response",e=>{let t=e.target.closest("turbo-frame"),{fetchResponse:o}=e.detail;if(t&&(z[t.id]=t.src),o.header("TurboBoost")){if(o.statusCode<200||o.statusCode>399){let r=`Server returned a ${o.statusCode} status code! TurboBoost Commands require 2XX-3XX status codes.`;m(X.events.clientError,document,{detail:b(l({},e.detail),{error:r})},!0)}o.header("TurboBoost")==="Append"&&(e.preventDefault(),o.responseText.then(r=>A.append(r)))}});addEventListener("turbo:frame-load",e=>{let t=e.target.closest("turbo-frame");t.dataset.turboBoostSrc=z[t.id]||t.src||t.dataset.turboBoostSrc,delete z[t.id]});var _e={frameAttribute:"data-turbo-frame",methodAttribute:"data-turbo-method",commandAttribute:"data-turbo-command",confirmAttribute:"data-turbo-confirm"},u=l({},_e),ge={method:e=>Promise.resolve(confirm(e))},Fe=e=>e.detail.driver==="method",We=e=>{if(e.detail.driver!=="form")return!1;let t=e.target,o=t.closest("turbo-frame"),r=t.closest(`[${u.frameAttribute}]`);return!!(o||r)},Xe=e=>Fe(e)||We(e);document.addEventListener(c.start,async e=>{let t=e.target.getAttribute(u.confirmAttribute);!t||(e.detail.confirmation=!0,Xe(e))||await ge.method(t)||e.preventDefault()});var Je=ge,g=[],_;function Ge(e,t){let o=g.find(r=>r.name===e);return o&&g.splice(g.indexOf(o),1),g=[{name:e,selectors:t},...g],document.removeEventListener(e,_,!0),document.addEventListener(e,_,!0),l({},g.find(r=>r.name===e))}function Ve(e){return g.find(t=>t.selectors.find(o=>Array.from(document.querySelectorAll(o)).find(r=>r===e)))}function Ue(e,t){let o=Ve(t);return o&&o.name===e}var p={register:Ge,isRegisteredForElement:Ue,get events(){return[...g]},set handler(e){_=e}};function Ke(e){return e.closest(`[${u.commandAttribute}]`)}function Qe(e){return e.closest("turbo-frame[src]")||e.closest("turbo-frame[data-turbo-frame-src]")||e.closest("turbo-frame")}function Ye(e,t={}){if(e.tagName.toLowerCase()!=="select")return t.value=e.value||null;if(!e.multiple)return t.value=e.options[e.selectedIndex].value;t.values=Array.from(e.options).reduce((o,r)=>(r.selected&&o.push(r.value),o),[])}function Ze(e){let t=Array.from(e.attributes).reduce((o,r)=>{let n=r.value;return o[r.name]=n,o},{});return t.tag=e.tagName,t.checked=!!e.checked,t.disabled=!!e.disabled,Ye(e,t),delete t.class,delete t.action,delete t.href,delete t[u.commandAttribute],delete t[u.frameAttribute],t}var J={buildAttributePayload:Ze,findClosestCommand:Ke,findClosestFrameWithSource:Qe};function et(e,t={}){t.token=d.token;let o=document.createElement("input");o.type="hidden",o.name="turbo_boost_command",o.value=JSON.stringify(t),e.appendChild(o)}var tt={invokeCommand:et};function ot(e,t={}){let o=document.createElement("a");o.href=e;let r=new URL(o);return r.searchParams.set("turbo_boost_command",JSON.stringify(t)),r}var G={build:ot};function rt(e,t){let o=t.src;t=l({},t),delete t.src,e.src=G.build(o,t)}var ae={invokeCommand:rt};function nt(e,t={}){let o=t.src;t=l({},t),delete t.src,delete t.href,e.setAttribute("href",G.build(o,t))}var st={invokeCommand:nt};function it(e){let t=e.target;m(X.events.abort,document,{detail:b(l({},e.detail),{xhr:t})})}function F(e){let t=e.target;t.getResponseHeader("TurboBoost")==="Append"||t.getResponseHeader("Content-Type").startsWith("text/vnd.turbo-boost.html")?A.append(t.responseText):A.replaceDocument(t.responseText);let o=`Server returned a ${t.status} status code! TurboBoost Commands require 2XX-3XX status codes.`;m(X.events.clientError,document,{detail:b(l({},e.detail),{error:o,xhr:t})},!0)}function lt(e){let t=e.target;if(t.status<200||t.status>399)return F(e);let o=t.responseText;t.getResponseHeader("TurboBoost")==="Append"||t.getResponseHeader("Content-Type").startsWith("text/vnd.turbo-boost.html")?A.append(t.responseText):A.replaceDocument(t.responseText)}function at(e){let t=e.src;e=l({},e),delete e.src;try{let o=new XMLHttpRequest;o.open("GET",G.build(t,e),!0),o.setRequestHeader("Accept","text/vnd.turbo-boost.html, text/html, application/xhtml+xml"),o.setRequestHeader("TurboBoost-Token",d.token),j.payloadChunks.forEach((r,n)=>o.setRequestHeader(`TurboBoost-State-${n.toString().padStart(4,"0")}`,r)),o.addEventListener("abort",it),o.addEventListener("error",F),o.addEventListener("load",lt),o.send()}catch(o){let r=`Unexpected error sending HTTP request! ${o.message}`;F(o,{detail:{message:r}})}}var dt={invokeCommand:at};function I(e,t){return t=t||{dataset:{}},e.href||t.src||t.dataset.turboBoostSrc||location.href}function ct(e){let t=J.findClosestFrameWithSource(e),{turboFrame:o,turboMethod:r}=e.dataset;return e.tagName.toLowerCase()==="form"?{name:"form",reason:"Element is a form.",frame:t,src:e.action,invokeCommand:tt.invokeCommand}:r&&r.length>0?{name:"method",reason:"Element defines data-turbo-method.",frame:t,src:e.href,invokeCommand:st.invokeCommand}:o&&o!=="_self"?(t=document.getElementById(o),{name:"frame",reason:"element targets a frame that is not _self",frame:t,src:I(e,t),invokeCommand:ae.invokeCommand}):(!o||o==="_self")&&t?{name:"frame",reason:"element does NOT target a frame or targets _self and is contained by a frame",frame:t,src:I(e,t),invokeCommand:ae.invokeCommand}:{name:"window",reason:"element matches one or more of the following conditions (targets _top, does NOT target a frame, is NOT contained by a frame)",frame:null,src:I(e),invokeCommand:dt.invokeCommand}}var de={find:ct},q="unknown",be={debug:Object.values(h),info:Object.values(h),warn:[h.abort,h.clientError,h.serverError],error:[h.clientError,h.serverError],unknown:[]};Object.values(h).forEach(e=>{addEventListener(e,t=>{if(be[q].includes(t.type)){let{target:o,detail:r}=t;console[q](t.type,{target:o,detail:r})}})});var ut={get level(){return q},set level(e){return Object.keys(be).includes(e)||(e="unknown"),q=e}};function mt(){return([1e7]+-1e3+-4e3+-8e3+-1e11).replace(/[018]/g,e=>(e^crypto.getRandomValues(new Uint8Array(1))[0]&15>>e/4).toString(16))}var ht={v4:mt};function ce(e,t){return{id:e,name:t.getAttribute(u.commandAttribute),elementId:t.id.length>0?t.id:null,elementAttributes:J.buildAttributePayload(t),startedAt:Date.now()}}async function gt(e){let t,o={};try{if(t=J.findClosestCommand(e.target),!t||!p.isRegisteredForElement(e.type,t))return;let r=`turbo-command-${ht.v4()}`,n=de.find(t),s=b(l({},ce(r,t)),{driver:n.name,frameId:n.frame?n.frame.id:null,src:n.src}),i=await m(c.start,t,{cancelable:!0,detail:s});if(i.defaultPrevented||i.detail.confirmation&&e.defaultPrevented)return m(c.abort,t,{detail:{message:`An event handler for '${c.start}' prevented default behavior and blocked command invocation!`,source:i}});switch(n=de.find(t),s=b(l({},ce(r,t)),{driver:n.name,frameId:n.frame?n.frame.id:null,src:n.src}),me.add(s),["frame","window"].includes(n.name)&&e.preventDefault(),d.busy=!0,setTimeout(()=>d.busy=!1,10),n.name){case"method":return n.invokeCommand(t,s);case"form":return n.invokeCommand(t,s);case"frame":return n.invokeCommand(n.frame,s);case"window":return n.invokeCommand(s)}}catch(r){m(c.clientError,t,{detail:b(l({},o),{error:r})})}}self.TurboBoost=self.TurboBoost||{};self.TurboBoost=b(l({},self.TurboBoost),{stateEvents:f,get state(){return j.current},get stateDelta(){return j.delta}});self.TurboBoost.Commands||(p.handler=gt,p.register("click",[`[${u.commandAttribute}]`]),p.register("submit",[`form[${u.commandAttribute}]`]),p.register("change",[`input[${u.commandAttribute}]`,`select[${u.commandAttribute}]`,`textarea[${u.commandAttribute}]`]),self.TurboBoost.Commands={confirmation:Je,logger:ut,schema:u,events:c,registerEventDelegate:p.register,get eventDelegates(){return p.events}});var Nt=self.TurboBoost.Commands;var bt=Object.defineProperty,pt=Object.defineProperties,ft=Object.getOwnPropertyDescriptors,pe=Object.getOwnPropertySymbols,vt=Object.prototype.hasOwnProperty,yt=Object.prototype.propertyIsEnumerable,fe=(e,t,o)=>t in e?bt(e,t,{enumerable:!0,configurable:!0,writable:!0,value:o}):e[t]=o,k=(e,t)=>{for(var o in t||(t={}))vt.call(t,o)&&fe(e,o,t[o]);if(pe)for(var o of pe(t))yt.call(t,o)&&fe(e,o,t[o]);return e},T=(e,t)=>pt(e,ft(t));function Et(e){let t=document.createElement("template");return t.innerHTML=e,t}function ee(e,t){t=t||document.body;let o=Et(e).content.cloneNode(!0).querySelector("*");return t.appendChild(o)}function V(e,t={}){if(!e)return;Y(e);let{outline:o,outlineOffset:r}=t;o=o||"dashed 3px red",r=r||"0px",e.originalStyles=e.originalStyles||{display:e.style.display,minHeight:e.style.minHeight,minWidth:e.style.minWidth,outline:e.style.outline,outlineOffset:e.style.outlineOffset},getComputedStyle(e).display.match(/^inline$/i)&&e.offsetWidth===0&&e.offsetHeight===0&&(e.style.display="inline-block",e.style.minHeight="2px",e.style.minWidth="2px"),e.style.outline=o,e.style.outlineOffset=r,e.dataset.turboBoostHighlight=!0}function Y(e){if(e){if(e.originalStyles){for(let[t,o]of Object.entries(e.originalStyles))o?e.style[t]=o:e.style[t]="";delete e.originalStyles}delete e.dataset.turboBoostHighlight}}function U(e){if(!e)return{};let t=e.getBoundingClientRect(),o=e.offsetWidth,r=e.offsetHeight,n=t.top+window.scrollY,s=t.left+window.scrollX,i=s+o,L=n+r;return{top:n,left:s,right:i,bottom:L,width:o,height:r}}function $(e){try{e()}catch(t){}}var wt=class extends HTMLElement{constructor(){super(),this.attachShadow({mode:"open"}),this.shadowRoot.innerHTML=this.html,this.labelElement.addEventListener("click",e=>{e.preventDefault(),this.toggle()}),this.checkboxElement.addEventListener("change",e=>this.dispatchEvent(new CustomEvent("change",{bubbles:!0})))}toggle(){this.checked?this.uncheck():this.check()}check(){this.checkboxElement.checked=!0,this.dispatchEvent(new CustomEvent("change",{bubbles:!0}))}uncheck(){this.checkboxElement.checked=!1,this.dispatchEvent(new CustomEvent("change",{bubbles:!0}))}get name(){return this.getAttribute("name")}get checked(){return this.checkboxElement.checked}get checkboxElement(){return this.shadowRoot.querySelector("input")}get labelElement(){return this.shadowRoot.querySelector("label")}get html(){return`
1
+ var De=Object.defineProperty,Be=Object.defineProperties,He=Object.getOwnPropertyDescriptors,se=Object.getOwnPropertySymbols,Re=Object.prototype.hasOwnProperty,je=Object.prototype.propertyIsEnumerable,ie=(e,t,o)=>t in e?De(e,t,{enumerable:!0,configurable:!0,writable:!0,value:o}):e[t]=o,l=(e,t)=>{for(var o in t||(t={}))Re.call(t,o)&&ie(e,o,t[o]);if(se)for(var o of se(t))je.call(t,o)&&ie(e,o,t[o]);return e},p=(e,t)=>Be(e,He(t)),Me=class{get element(){return document.querySelector('meta[name="turbo-boost"]')}get token(){return this.element.getAttribute("content")}get busy(){return this.element.dataset.busy==="true"}set busy(e){return this.element.dataset.busy=!!e}},u=new Me,c={start:"turbo-boost:command:start",success:"turbo-boost:command:success",finish:"turbo-boost:command:finish",abort:"turbo-boost:command:abort",clientError:"turbo-boost:command:client-error",serverError:"turbo-boost:command:server-error"},f={stateLoad:"turbo-boost:state:load",stateChange:"turbo-boost:state:change"},h=l(l({},c),f);function m(e,t,o={}){return new Promise(r=>{o=o||{},o.detail=o.detail||{},t=t||document;let n=new CustomEvent(e,p(l({},o),{bubbles:!0}));t.dispatchEvent(n),r(n)})}var N;function R(e,t=null){if(!e||typeof e!="object")return e;let o=new Proxy(e,{deleteProperty(r,n){return delete r[n],m(f.stateChange,u.element,{detail:{state:N}}),!0},set(r,n,s,i){return r[n]=R(s,this),m(f.stateChange,u.element,{detail:{state:N}}),!0}});if(Array.isArray(e))e.forEach((r,n)=>e[n]=R(r,o));else if(typeof e=="object")for(let[r,n]of Object.entries(e))e[r]=R(n,o);return t||(N=o),o}var qe=R,W,E,C,le;function ce(){if(!u.element)return w();let e=atob(u.element.dataset.state);C={},E=qe(JSON.parse(e)),W=l({},E),delete u.element.dataset.clientStateChange,setTimeout(()=>m(f.stateLoad,u.element,{detail:{state:E}}))}function w(){clearTimeout(le),le=setTimeout(ce,10)}W||ce();addEventListener("DOMContentLoaded",w);addEventListener("load",w);addEventListener("turbo:load",w);addEventListener("turbo:frame-load",w);addEventListener(c.success,w);addEventListener(f.stateChange,e=>{C={};for(let[t,o]of Object.entries(E))W[t]!==o&&(C[t]=o);u.element.dataset.clientStateChange=!0,u.element.dataset.state=btoa(JSON.stringify(E))});var j={events:f,get current(){return E},get delta(){return C},get payloadChunks(){return btoa(JSON.stringify(C)).match(/.{1,2000}/g)}};function Pe(e){let t="<html",o="</html",r=e.indexOf(t),n=e.lastIndexOf(o);if(r>=0&&n>=0){let s=e.slice(e.indexOf(">",r)+1,n);document.documentElement.innerHTML=s}}function Ne(e){document.body.insertAdjacentHTML("beforeend",e)}var A={append:Ne,replaceDocument:Pe},M={};function Ie(e){M[e.id]=e}function ze(e){delete M[e]}var me={add:Ie,remove:ze,get commands(){return[...Object.values(M)]},get length(){return Object.keys(M).length}};function he(e){e.detail.endedAt=Date.now(),e.detail.milliseconds=e.detail.endedAt-e.detail.startedAt,setTimeout(()=>m(c.finish,e.target,{detail:e.detail}),25)}addEventListener(c.serverError,he);addEventListener(c.success,he);addEventListener(c.finish,e=>me.remove(e.detail.id),!0);var X={events:c},z={};addEventListener("turbo:before-fetch-request",e=>{let t=e.target.closest("turbo-frame"),{fetchOptions:o}=e.detail;if(u.busy){let r=["text/vnd.turbo-boost.html",o.headers.Accept];r=r.filter(n=>n&&n.trim().length>0).join(", "),o.headers.Accept=r,o.headers["TurboBoost-Token"]=u.token}j.payloadChunks.forEach((r,n)=>{o.headers[`TurboBoost-State-${n.toString().padStart(4,"0")}`]=r})});addEventListener("turbo:before-fetch-response",e=>{let t=e.target.closest("turbo-frame"),{fetchResponse:o}=e.detail;if(t&&(z[t.id]=t.src),o.header("TurboBoost")){if(o.statusCode<200||o.statusCode>399){let r=`Server returned a ${o.statusCode} status code! TurboBoost Commands require 2XX-3XX status codes.`;m(X.events.clientError,document,{detail:p(l({},e.detail),{error:r})},!0)}o.header("TurboBoost")==="Append"&&(e.preventDefault(),o.responseText.then(r=>A.append(r)))}});addEventListener("turbo:frame-load",e=>{let t=e.target.closest("turbo-frame");t.dataset.turboBoostSrc=z[t.id]||t.src||t.dataset.turboBoostSrc,delete z[t.id]});var _e={frameAttribute:"data-turbo-frame",methodAttribute:"data-turbo-method",commandAttribute:"data-turbo-command",confirmAttribute:"data-turbo-confirm",turboSubmitStartEvent:"turbo:submit-start"},d=l({},_e),ge={method:e=>Promise.resolve(confirm(e))},Fe=e=>e.detail.driver==="method",We=e=>{if(e.detail.driver!=="form")return!1;let t=e.target,o=t.closest("turbo-frame"),r=t.closest(`[${d.frameAttribute}]`);return!!(o||r)},Xe=e=>Fe(e)||We(e);document.addEventListener(c.start,async e=>{let t=e.target.getAttribute(d.confirmAttribute);!t||(e.detail.confirmation=!0,Xe(e))||await ge.method(t)||e.preventDefault()});var Je=ge,b=[],_;function Ge(e,t){let o=b.find(r=>r.name===e);return o&&b.splice(b.indexOf(o),1),b=[{name:e,selectors:t},...b],document.removeEventListener(e,_,!0),document.addEventListener(e,_,!0),l({},b.find(r=>r.name===e))}function Ue(e){return b.find(t=>t.selectors.find(o=>Array.from(document.querySelectorAll(o)).find(r=>r===e)))}function Ve(e,t){let o=Ue(t);return o&&o.name===e}var g={register:Ge,isRegisteredForElement:Ve,get events(){return[...b]},set handler(e){_=e}};function Ke(e){return e.closest(`[${d.commandAttribute}]`)}function Ye(e){return e.closest("turbo-frame[src]")||e.closest("turbo-frame[data-turbo-frame-src]")||e.closest("turbo-frame")}function Qe(e,t={}){if(e.tagName.toLowerCase()!=="select")return t.value=e.value||null;if(!e.multiple)return t.value=e.options[e.selectedIndex].value;t.values=Array.from(e.options).reduce((o,r)=>(r.selected&&o.push(r.value),o),[])}function Ze(e){let t=Array.from(e.attributes).reduce((o,r)=>{let n=r.value;return o[r.name]=n,o},{});return t.tag=e.tagName,t.checked=!!e.checked,t.disabled=!!e.disabled,Qe(e,t),delete t.class,delete t.action,delete t.href,delete t[d.commandAttribute],delete t[d.frameAttribute],t}var J={buildAttributePayload:Ze,findClosestCommand:Ke,findClosestFrameWithSource:Ye};function et(e){var t;if((e==null?void 0:e.formElement)instanceof HTMLFormElement&&(e==null?void 0:e.body)instanceof URLSearchParams&&((t=e==null?void 0:e.fetchRequest)==null?void 0:t.body)instanceof URLSearchParams){e.formData=new FormData(e.formElement);for(let[o,r]of e.formData.entries())e.fetchRequest.body.set(o,r),e.body.set(o,r);return e}}function tt(e,t={},o={}){t.token=u.token;let r=e.querySelector('input[name="turbo_boost_command"]')||document.createElement("input");r.type="hidden",r.name="turbo_boost_command",r.value=JSON.stringify(t),e.appendChild(r),et(o.detail.formSubmission)}var ot={invokeCommand:tt};function rt(e,t={}){let o=document.createElement("a");o.href=e;let r=new URL(o);return r.searchParams.set("turbo_boost_command",JSON.stringify(t)),r}var G={build:rt};function nt(e,t){let o=t.src;t=l({},t),delete t.src,e.src=G.build(o,t)}var ae={invokeCommand:nt};function st(e,t={}){let o=t.src;t=l({},t),delete t.src,delete t.href,e.setAttribute("href",G.build(o,t))}var it={invokeCommand:st};function lt(e){let t=e.target;m(X.events.abort,document,{detail:p(l({},e.detail),{xhr:t})})}function F(e){let t=e.target;t.getResponseHeader("TurboBoost")==="Append"||t.getResponseHeader("Content-Type").startsWith("text/vnd.turbo-boost.html")?A.append(t.responseText):A.replaceDocument(t.responseText);let o=`Server returned a ${t.status} status code! TurboBoost Commands require 2XX-3XX status codes.`;m(X.events.clientError,document,{detail:p(l({},e.detail),{error:o,xhr:t})},!0)}function at(e){let t=e.target;if(t.status<200||t.status>399)return F(e);let o=t.responseText;t.getResponseHeader("TurboBoost")==="Append"||t.getResponseHeader("Content-Type").startsWith("text/vnd.turbo-boost.html")?A.append(t.responseText):A.replaceDocument(t.responseText)}function dt(e){let t=e.src;e=l({},e),delete e.src;try{let o=new XMLHttpRequest;o.open("GET",G.build(t,e),!0),o.setRequestHeader("Accept","text/vnd.turbo-boost.html, text/html, application/xhtml+xml"),o.setRequestHeader("TurboBoost-Token",u.token),j.payloadChunks.forEach((r,n)=>o.setRequestHeader(`TurboBoost-State-${n.toString().padStart(4,"0")}`,r)),o.addEventListener("abort",lt),o.addEventListener("error",F),o.addEventListener("load",at),o.send()}catch(o){let r=`Unexpected error sending HTTP request! ${o.message}`;F(o,{detail:{message:r}})}}var ut={invokeCommand:dt};function I(e,t){return t=t||{dataset:{}},e.href||t.src||t.dataset.turboBoostSrc||location.href}function ct(e){let t=J.findClosestFrameWithSource(e),{turboFrame:o,turboMethod:r}=e.dataset;return e.tagName.toLowerCase()==="form"?{name:"form",reason:"Element is a form.",frame:t,src:e.action,invokeCommand:ot.invokeCommand}:r&&r.length>0?{name:"method",reason:"Element defines data-turbo-method.",frame:t,src:e.href,invokeCommand:it.invokeCommand}:o&&o!=="_self"?(t=document.getElementById(o),{name:"frame",reason:"element targets a frame that is not _self",frame:t,src:I(e,t),invokeCommand:ae.invokeCommand}):(!o||o==="_self")&&t?{name:"frame",reason:"element does NOT target a frame or targets _self and is contained by a frame",frame:t,src:I(e,t),invokeCommand:ae.invokeCommand}:{name:"window",reason:"element matches one or more of the following conditions (targets _top, does NOT target a frame, is NOT contained by a frame)",frame:null,src:I(e),invokeCommand:ut.invokeCommand}}var de={find:ct},q="unknown",be={debug:Object.values(h),info:Object.values(h),warn:[h.abort,h.clientError,h.serverError],error:[h.clientError,h.serverError],unknown:[]};Object.values(h).forEach(e=>{addEventListener(e,t=>{if(be[q].includes(t.type)){let{target:o,detail:r}=t;console[q](t.type,{target:o,detail:r})}})});var mt={get level(){return q},set level(e){return Object.keys(be).includes(e)||(e="unknown"),q=e}};function ht(){return([1e7]+-1e3+-4e3+-8e3+-1e11).replace(/[018]/g,e=>(e^crypto.getRandomValues(new Uint8Array(1))[0]&15>>e/4).toString(16))}var gt={v4:ht};function ue(e,t){return{id:e,name:t.getAttribute(d.commandAttribute),elementId:t.id.length>0?t.id:null,elementAttributes:J.buildAttributePayload(t),startedAt:Date.now()}}async function bt(e){let t,o={};try{if(t=J.findClosestCommand(e.target),!t||!g.isRegisteredForElement(e.type,t))return;let r=`turbo-command-${gt.v4()}`,n=de.find(t),s=p(l({},ue(r,t)),{driver:n.name,frameId:n.frame?n.frame.id:null,src:n.src}),i=await m(c.start,t,{cancelable:!0,detail:s});if(i.defaultPrevented||i.detail.confirmation&&e.defaultPrevented)return m(c.abort,t,{detail:{message:`An event handler for '${c.start}' prevented default behavior and blocked command invocation!`,source:i}});switch(n=de.find(t),s=p(l({},ue(r,t)),{driver:n.name,frameId:n.frame?n.frame.id:null,src:n.src}),me.add(s),["frame","window"].includes(n.name)&&e.preventDefault(),u.busy=!0,setTimeout(()=>u.busy=!1,10),n.name){case"method":return n.invokeCommand(t,s);case"form":return n.invokeCommand(t,s,e);case"frame":return n.invokeCommand(n.frame,s);case"window":return n.invokeCommand(s)}}catch(r){m(c.clientError,t,{detail:p(l({},o),{error:r})})}}self.TurboBoost=self.TurboBoost||{};self.TurboBoost=p(l({},self.TurboBoost),{stateEvents:f,get state(){return j.current},get stateDelta(){return j.delta}});self.TurboBoost.Commands||(g.handler=bt,g.register("click",[`[${d.commandAttribute}]`]),g.register("submit",[`form[${d.commandAttribute}]`]),g.register(d.turboSubmitStartEvent,[`form[${d.commandAttribute}]`]),g.register("change",[`input[${d.commandAttribute}]`,`select[${d.commandAttribute}]`,`textarea[${d.commandAttribute}]`]),self.TurboBoost.Commands={confirmation:Je,logger:mt,schema:d,events:c,registerEventDelegate:g.register,get eventDelegates(){return g.events}});var Nt=self.TurboBoost.Commands;var pt=Object.defineProperty,ft=Object.defineProperties,vt=Object.getOwnPropertyDescriptors,pe=Object.getOwnPropertySymbols,yt=Object.prototype.hasOwnProperty,Et=Object.prototype.propertyIsEnumerable,fe=(e,t,o)=>t in e?pt(e,t,{enumerable:!0,configurable:!0,writable:!0,value:o}):e[t]=o,T=(e,t)=>{for(var o in t||(t={}))yt.call(t,o)&&fe(e,o,t[o]);if(pe)for(var o of pe(t))Et.call(t,o)&&fe(e,o,t[o]);return e},k=(e,t)=>ft(e,vt(t));function wt(e){let t=document.createElement("template");return t.innerHTML=e,t}function ee(e,t){t=t||document.body;let o=wt(e).content.cloneNode(!0).querySelector("*");return t.appendChild(o)}function U(e,t={}){if(!e)return;Q(e);let{outline:o,outlineOffset:r}=t;o=o||"dashed 3px red",r=r||"0px",e.originalStyles=e.originalStyles||{display:e.style.display,minHeight:e.style.minHeight,minWidth:e.style.minWidth,outline:e.style.outline,outlineOffset:e.style.outlineOffset},getComputedStyle(e).display.match(/^inline$/i)&&e.offsetWidth===0&&e.offsetHeight===0&&(e.style.display="inline-block",e.style.minHeight="2px",e.style.minWidth="2px"),e.style.outline=o,e.style.outlineOffset=r,e.dataset.turboBoostHighlight=!0}function Q(e){if(e){if(e.originalStyles){for(let[t,o]of Object.entries(e.originalStyles))o?e.style[t]=o:e.style[t]="";delete e.originalStyles}delete e.dataset.turboBoostHighlight}}function V(e){if(!e)return{};let t=e.getBoundingClientRect(),o=e.offsetWidth,r=e.offsetHeight,n=t.top+window.scrollY,s=t.left+window.scrollX,i=s+o,L=n+r;return{top:n,left:s,right:i,bottom:L,width:o,height:r}}function $(e){try{e()}catch(t){}}var Tt=class extends HTMLElement{constructor(){super(),this.attachShadow({mode:"open"}),this.shadowRoot.innerHTML=this.html,this.labelElement.addEventListener("click",e=>{e.preventDefault(),this.toggle()}),this.checkboxElement.addEventListener("change",e=>this.dispatchEvent(new CustomEvent("change",{bubbles:!0})))}toggle(){this.checked?this.uncheck():this.check()}check(){this.checkboxElement.checked=!0,this.dispatchEvent(new CustomEvent("change",{bubbles:!0}))}uncheck(){this.checkboxElement.checked=!1,this.dispatchEvent(new CustomEvent("change",{bubbles:!0}))}get name(){return this.getAttribute("name")}get checked(){return this.checkboxElement.checked}get checkboxElement(){return this.shadowRoot.querySelector("input")}get labelElement(){return this.shadowRoot.querySelector("label")}get html(){return`
2
2
  <style>${this.stylesheet}</style>
3
3
  <div>
4
4
  <input name="checkbox" type="checkbox">
@@ -89,7 +89,7 @@ var Be=Object.defineProperty,De=Object.defineProperties,He=Object.getOwnProperty
89
89
  button:hover {
90
90
  opacity: 1;
91
91
  }
92
- `}},Tt=class extends HTMLElement{constructor(){super(),this.attachShadow({mode:"open"}),this.shadowRoot.innerHTML=this.html}connectedCallback(){let e=localStorage.getItem(`turbo-boost-devtools-${location.href}-${this.id}-transform`);e&&(this.style.transform=e)}disconnectedCallback(){this.id!=="undefined"&&this.id!==""&&localStorage.setItem(`turbo-boost-devtools-${location.href}-${this.id}-transform`,this.style.transform)}get color(){return this.getAttribute("color")||"darkslategray"}get backgroundColor(){return this.getAttribute("background-color")||"gainsboro"}get position(){return this.getAttribute("position")||"top"}get html(){return`
92
+ `}},xt=class extends HTMLElement{constructor(){super(),this.attachShadow({mode:"open"}),this.shadowRoot.innerHTML=this.html}connectedCallback(){let e=localStorage.getItem(`turbo-boost-devtools-${location.href}-${this.id}-transform`);e&&(this.style.transform=e)}disconnectedCallback(){this.id!=="undefined"&&this.id!==""&&localStorage.setItem(`turbo-boost-devtools-${location.href}-${this.id}-transform`,this.style.transform)}get color(){return this.getAttribute("color")||"darkslategray"}get backgroundColor(){return this.getAttribute("background-color")||"gainsboro"}get position(){return this.getAttribute("position")||"top"}get html(){return`
93
93
  <style>${this.stylesheet}</style>
94
94
  <div role="container">
95
95
  <div role="title">
@@ -183,17 +183,17 @@ var Be=Object.defineProperty,De=Object.defineProperties,He=Object.getOwnProperty
183
183
  slot[name="content-bottom"] {
184
184
  color: red;
185
185
  }
186
- `}},x=[],xt={LeaderLine:{src:"https://cdnjs.cloudflare.com/ajax/libs/leader-line/1.0.7/leader-line.min.js",integrity:"sha512-0dNdzMjpT6pJdFGF1DwybFCfm3K/lzHhxaMXC/92J9/DZujHlqYFqmhTOAoD0o+LkeEsVK2ar/ESs7/Q2B6wJg==",global:"LeaderLine"},PlainDraggable:{src:"https://cdn.jsdelivr.net/npm/plain-draggable@2.5.14/plain-draggable.min.js",global:"PlainDraggable"}};function Lt(e){return e.global&&self[e.global]||document.querySelector(`[src='${e.src}']`)?!0:x.includes(e)}function St(e){if(Lt(e))return;x.push(e);let{src:t,integrity:o}=e,r=document.createElement("script");r.setAttribute("src",t),r.setAttribute("crossorigin","anonymous"),r.setAttribute("referrerpolicy","no-referrer"),o&&r.setAttribute("integrity",o),document.head.appendChild(r)}function ye(e){if(!x.includes(e))return;x.splice(x.indexOf(e),1);let{src:t}=e,o=document.querySelector(`script[src='${t}']`);o&&o.remove(),e.global&&self[e.global]&&(self[e.global]=null)}function Ct(){[...x].forEach(e=>ye(e))}var O=T(k({},xt),{add:St,remove:ye,removeAll:Ct});customElements.define("turbo-boost-devtool",wt);customElements.define("turbo-boost-devtool-supervisor",kt);customElements.define("turbo-boost-devtool-tooltip",Tt);var a;function Ee(){if(a)try{new PlainDraggable(a)}catch(e){setTimeout(Ee,200)}}function te(){ke()||(a.close(),a.dispatchEvent(new CustomEvent("turbo-boost:devtools-stop",{bubbles:!0})),a=null,O.removeAll())}function we(){N()||(O.add(O.LeaderLine),O.add(O.PlainDraggable),a=ee("<turbo-boost-devtool-supervisor></turbo-boost-devtool-supervisor>"),setTimeout(Ee,200),a.dispatchEvent(new CustomEvent("turbo-boost:devtools-start",{bubbles:!0})))}function At(){let e=a?Object.keys(a.enabledDevtools):[];te(),we(),a.devtoolElements.forEach(t=>{e.includes(t.name)&&t.check()})}function N(){return!!a}function ke(){return!N()}var ve;function Te(){clearTimeout(ve),ve=setTimeout(At,25)}function B(){N()&&Te()}addEventListener("turbo:load",B);addEventListener("turbo-frame:load",B);addEventListener("turbo-boost:devtools-connect",B);addEventListener("turbo-boost:devtools-close",te);window.TurboBoost&&(addEventListener(TurboBoost.Commands.events.success,B),addEventListener(TurboBoost.Commands.events.finish,B));function $t(e,t){if(a)return ee(`
186
+ `}},x=[],Lt={LeaderLine:{src:"https://cdnjs.cloudflare.com/ajax/libs/leader-line/1.0.7/leader-line.min.js",integrity:"sha512-0dNdzMjpT6pJdFGF1DwybFCfm3K/lzHhxaMXC/92J9/DZujHlqYFqmhTOAoD0o+LkeEsVK2ar/ESs7/Q2B6wJg==",global:"LeaderLine"},PlainDraggable:{src:"https://cdn.jsdelivr.net/npm/plain-draggable@2.5.14/plain-draggable.min.js",global:"PlainDraggable"}};function St(e){return e.global&&self[e.global]||document.querySelector(`[src='${e.src}']`)?!0:x.includes(e)}function Ct(e){if(St(e))return;x.push(e);let{src:t,integrity:o}=e,r=document.createElement("script");r.setAttribute("src",t),r.setAttribute("crossorigin","anonymous"),r.setAttribute("referrerpolicy","no-referrer"),o&&r.setAttribute("integrity",o),document.head.appendChild(r)}function ye(e){if(!x.includes(e))return;x.splice(x.indexOf(e),1);let{src:t}=e,o=document.querySelector(`script[src='${t}']`);o&&o.remove(),e.global&&self[e.global]&&(self[e.global]=null)}function At(){[...x].forEach(e=>ye(e))}var O=k(T({},Lt),{add:Ct,remove:ye,removeAll:At});customElements.define("turbo-boost-devtool",Tt);customElements.define("turbo-boost-devtool-supervisor",kt);customElements.define("turbo-boost-devtool-tooltip",xt);var a;function Ee(){if(a)try{new PlainDraggable(a)}catch(e){setTimeout(Ee,200)}}function te(){Te()||(a.close(),a.dispatchEvent(new CustomEvent("turbo-boost:devtools-stop",{bubbles:!0})),a=null,O.removeAll())}function we(){P()||(O.add(O.LeaderLine),O.add(O.PlainDraggable),a=ee("<turbo-boost-devtool-supervisor></turbo-boost-devtool-supervisor>"),setTimeout(Ee,200),a.dispatchEvent(new CustomEvent("turbo-boost:devtools-start",{bubbles:!0})))}function $t(){let e=a?Object.keys(a.enabledDevtools):[];te(),we(),a.devtoolElements.forEach(t=>{e.includes(t.name)&&t.check()})}function P(){return!!a}function Te(){return!P()}var ve;function ke(){clearTimeout(ve),ve=setTimeout($t,25)}function D(){P()&&ke()}addEventListener("turbo:load",D);addEventListener("turbo-frame:load",D);addEventListener("turbo-boost:devtools-connect",D);addEventListener("turbo-boost:devtools-close",te);window.TurboBoost&&(addEventListener(TurboBoost.Commands.events.success,D),addEventListener(TurboBoost.Commands.events.finish,D));function Ot(e,t){if(a)return ee(`
187
187
  <turbo-boost-devtool name="${e}" slot="devtool">
188
188
  <span slot="label">${t}</span>
189
189
  </turbo-boost-devtool>
190
- `,a)}function Ot(e){return a?a.enabledDevtools[e]:!1}var Z={enabled:Ot,register:$t,start:we,stop:te,restart:Te,get started(){return N()},get stopped(){return ke()}};function K(e,t,o,r={}){let{backgroundColor:n,color:s,position:i,id:L}=r;return s=s||"white",i=i||"top",ee(`
190
+ `,a)}function Dt(e){return a?a.enabledDevtools[e]:!1}var Z={enabled:Dt,register:Ot,start:we,stop:te,restart:ke,get started(){return P()},get stopped(){return Te()}};function K(e,t,o,r={}){let{backgroundColor:n,color:s,position:i,id:L}=r;return s=s||"white",i=i||"top",ee(`
191
191
  <turbo-boost-devtool-tooltip id="${L}" position="${i}" background-color="${n}" color="${s}">
192
192
  <div slot='title'>${e}</div>
193
193
  <div slot='subtitle'>${t}</div>
194
194
  ${o}
195
195
  </turbo-boost-devtool-tooltip>
196
- `)}var Q,oe=class{constructor(e){this.delegate=e;let t,o=()=>{clearTimeout(t),t=setTimeout(this.hide({active:!1}),25)};this.eventListeners["turbo-boost:devtool-enable"]=r=>{let{name:n}=r.detail;n===this.delegate.name&&(V(this.delegate.triggerElement,{outline:"3px dashed blueviolet",outlineOffset:"2px"}),this.hide({active:!1}),this.active&&this.show())},this.eventListeners["turbo-boost:devtool-disable"]=r=>{let{name:n}=r.detail;n===this.delegate.name&&Y(this.delegate.triggerElement)},this.eventListeners.click=r=>{r.target.closest("turbo-boost-devtool-tooltip")||o()},this.eventListeners["turbo:load"]=o,this.eventListeners["turbo-frame:load"]=o,window.TurboBoost&&(this.eventListeners[TurboBoost.Commands.events.finish]=o),this.registerEventListeners()}registerEventListeners(){Object.entries(this.eventListeners).forEach(([e,t])=>{addEventListener(e,t)})}unregisterEventListeners(){Object.entries(this.eventListeners).forEach(([e,t])=>{removeEventListener(e,t)})}get eventListeners(){return this._eventListeners||(this._eventListeners={})}show(){if(!this.enabled||this.active)return;this.active=!0,this.hide({active:!0}),V(this.delegate.targetElement,{outline:"3px dashed darkcyan",outlineOffset:"-2px"}),V(this.delegate.morphElement,{outline:"3px dashed chocolate",outlineOffset:"3px"}),this.renderingTooltip=this.createRenderingTooltip(),this.targetTooltip=this.createTargetTooltip(),this.triggerTooltip=this.createTriggerTooltip(this.targetTooltip,this.renderingTooltip),document.querySelectorAll(".leader-line").forEach(t=>t.style.zIndex=1e5);let e={morph:{partial:this.delegate.triggerElement.renders,id:this.delegate.triggerElement.morphs,status:this.delegate.morphElement?"OK":"Not Found"},trigger:{partial:null,id:null,status:"Not Found"},target:{partial:null,id:null,status:"Not Found"}};this.delegate.triggerElement&&(e.trigger={partial:this.delegate.triggerElement.partial,id:this.delegate.triggerElement.id,status:"OK"},e.target.id=this.delegate.triggerElement.controls),this.delegate.targetElement&&(e.target={partial:this.delegate.targetElement.partial,dom_id:this.delegate.targetElement.id,status:"OK"}),console.table(e)}hide({active:e=!1}){document.querySelectorAll("turbo-boost-devtool-tooltip").forEach(t=>{$(()=>t.line.remove()),$(()=>t.drag.remove()),$(()=>t.lineToRendering.remove()),$(()=>t.lineToTarget.remove()),$(()=>t.remove())}),document.querySelectorAll("[data-turbo-boost-highlight]").forEach(t=>{t.tagName.match(/turbo-boost-toggle-trigger/i)||Y(t)}),this.active=e}get active(){return Q===this.delegate}set active(e){e?Q=this.delegate:Q=null}get enabled(){return Z.enabled(this.delegate.name)}static register(e,t){Z.register(e,t)}createRenderingTooltip(){if(!this.delegate.triggerElement.renders)return console.debug("Unable to create the rendering tooltip! The trigger element must set the 'renders' attribute.");if(!this.delegate.triggerElement.morphs)return console.debug(`Unable to create the rendering tooltip! The trigger element specified the 'morphs' attrbiute but no element matches the DOM id: '${this.triggerElement.morphs}'`);let e=`
196
+ `)}var Y,oe=class{constructor(e){this.delegate=e;let t,o=()=>{clearTimeout(t),t=setTimeout(this.hide({active:!1}),25)};this.eventListeners["turbo-boost:devtool-enable"]=r=>{let{name:n}=r.detail;n===this.delegate.name&&(U(this.delegate.triggerElement,{outline:"3px dashed blueviolet",outlineOffset:"2px"}),this.hide({active:!1}),this.active&&this.show())},this.eventListeners["turbo-boost:devtool-disable"]=r=>{let{name:n}=r.detail;n===this.delegate.name&&Q(this.delegate.triggerElement)},this.eventListeners.click=r=>{r.target.closest("turbo-boost-devtool-tooltip")||o()},this.eventListeners["turbo:load"]=o,this.eventListeners["turbo-frame:load"]=o,window.TurboBoost&&(this.eventListeners[TurboBoost.Commands.events.finish]=o),this.registerEventListeners()}registerEventListeners(){Object.entries(this.eventListeners).forEach(([e,t])=>{addEventListener(e,t)})}unregisterEventListeners(){Object.entries(this.eventListeners).forEach(([e,t])=>{removeEventListener(e,t)})}get eventListeners(){return this._eventListeners||(this._eventListeners={})}show(){if(!this.enabled||this.active)return;this.active=!0,this.hide({active:!0}),U(this.delegate.targetElement,{outline:"3px dashed darkcyan",outlineOffset:"-2px"}),U(this.delegate.morphElement,{outline:"3px dashed chocolate",outlineOffset:"3px"}),this.renderingTooltip=this.createRenderingTooltip(),this.targetTooltip=this.createTargetTooltip(),this.triggerTooltip=this.createTriggerTooltip(this.targetTooltip,this.renderingTooltip),document.querySelectorAll(".leader-line").forEach(t=>t.style.zIndex=1e5);let e={morph:{partial:this.delegate.triggerElement.renders,id:this.delegate.triggerElement.morphs,status:this.delegate.morphElement?"OK":"Not Found"},trigger:{partial:null,id:null,status:"Not Found"},target:{partial:null,id:null,status:"Not Found"}};this.delegate.triggerElement&&(e.trigger={partial:this.delegate.triggerElement.partial,id:this.delegate.triggerElement.id,status:"OK"},e.target.id=this.delegate.triggerElement.controls),this.delegate.targetElement&&(e.target={partial:this.delegate.targetElement.partial,dom_id:this.delegate.targetElement.id,status:"OK"}),console.table(e)}hide({active:e=!1}){document.querySelectorAll("turbo-boost-devtool-tooltip").forEach(t=>{$(()=>t.line.remove()),$(()=>t.drag.remove()),$(()=>t.lineToRendering.remove()),$(()=>t.lineToTarget.remove()),$(()=>t.remove())}),document.querySelectorAll("[data-turbo-boost-highlight]").forEach(t=>{t.tagName.match(/turbo-boost-toggle-trigger/i)||Q(t)}),this.active=e}get active(){return Y===this.delegate}set active(e){e?Y=this.delegate:Y=null}get enabled(){return Z.enabled(this.delegate.name)}static register(e,t){Z.register(e,t)}createRenderingTooltip(){if(!this.delegate.triggerElement.renders)return console.debug("Unable to create the rendering tooltip! The trigger element must set the 'renders' attribute.");if(!this.delegate.triggerElement.morphs)return console.debug(`Unable to create the rendering tooltip! The trigger element specified the 'morphs' attrbiute but no element matches the DOM id: '${this.triggerElement.morphs}'`);let e=`
197
197
  <svg xmlns="http://www.w3.org/2000/svg" style="display:inline-block;" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M12 19l7-7 3 3-7 7-3-3z"></path><path d="M18 13l-1.5-7.5L2 2l3.5 14.5L13 18l5-5z"></path><path d="M2 2l7.586 7.586"></path><circle cx="11" cy="11" r="2"></circle></svg>
198
198
  RENDERING - &lt;${this.delegate.triggerElement.tagName.toLowerCase()}&gt;
199
199
  `,t=`
@@ -203,18 +203,18 @@ var Be=Object.defineProperty,De=Object.defineProperties,He=Object.getOwnProperty
203
203
  <div slot="content-top" style="font-size:85%; font-style:italic; font-weight:100;">
204
204
  The <b>TRIGGER</b> toggles the <b>TARGET</b> then renders the partial &amp; morphs the element.<br>
205
205
  </div>
206
- `,{id:`${this.delegate.id}-rendering`,backgroundColor:"lightyellow",color:"chocolate"}),r=U(this.delegate.morphElement),n=Math.ceil(r.top+r.height/2-o.offsetHeight/2),s=Math.ceil(r.left+r.width+100);return o.style.top=`${n}px`,o.style.left=`${s}px`,o.line=new LeaderLine(o,this.delegate.morphElement,T(k({},this.leaderLineOptions),{color:"chocolate"})),o.drag=new PlainDraggable(o),o}createTargetTooltip(){var e,t;if(!this.delegate.targetElement)return console.debug(`Unable to create the target tooltip! No element matches the DOM id: '${this.delegate.triggerElement.controls}'`);let o=`
206
+ `,{id:`${this.delegate.id}-rendering`,backgroundColor:"lightyellow",color:"chocolate"}),r=V(this.delegate.morphElement),n=Math.ceil(r.top+r.height/2-o.offsetHeight/2),s=Math.ceil(r.left+r.width+100);return o.style.top=`${n}px`,o.style.left=`${s}px`,o.line=new LeaderLine(o,this.delegate.morphElement,k(T({},this.leaderLineOptions),{color:"chocolate"})),o.drag=new PlainDraggable(o),o}createTargetTooltip(){var e,t;if(!this.delegate.targetElement)return console.debug(`Unable to create the target tooltip! No element matches the DOM id: '${this.delegate.triggerElement.controls}'`);let o=`
207
207
  <svg xmlns="http://www.w3.org/2000/svg" style="display:inline-block;" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle><circle cx="12" cy="12" r="6"></circle><circle cx="12" cy="12" r="2"></circle></svg>
208
208
  TARGET - &lt;${this.delegate.targetElement.tagName.toLowerCase()}&gt;
209
- `,r=K(o,((e=this.delegate.targetTooltipData)==null?void 0:e.subtitle)||"",((t=this.delegate.targetTooltipData)==null?void 0:t.content)||"",{id:`${this.delegate.id}-target`,backgroundColor:"lightcyan",color:"darkcyan",position:"bottom"}),n=U(this.delegate.targetElement),s=Math.ceil(n.top+r.offsetHeight),i=Math.ceil(n.left+n.width+r.offsetWidth/3);return r.style.top=`${s}px`,r.style.left=`${i}px`,r.line=new LeaderLine(r,this.delegate.targetElement,T(k({},this.leaderLineOptions),{color:"darkcyan"})),r.drag=new PlainDraggable(r),r}createTriggerTooltip(e,t){var o,r;if(!this.delegate.triggerElement)return;let n=`
209
+ `,r=K(o,((e=this.delegate.targetTooltipData)==null?void 0:e.subtitle)||"",((t=this.delegate.targetTooltipData)==null?void 0:t.content)||"",{id:`${this.delegate.id}-target`,backgroundColor:"lightcyan",color:"darkcyan",position:"bottom"}),n=V(this.delegate.targetElement),s=Math.ceil(n.top+r.offsetHeight),i=Math.ceil(n.left+n.width+r.offsetWidth/3);return r.style.top=`${s}px`,r.style.left=`${i}px`,r.line=new LeaderLine(r,this.delegate.targetElement,k(T({},this.leaderLineOptions),{color:"darkcyan"})),r.drag=new PlainDraggable(r),r}createTriggerTooltip(e,t){var o,r;if(!this.delegate.triggerElement)return;let n=`
210
210
  <svg xmlns="http://www.w3.org/2000/svg" style="display:inline;" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><polygon points="13 2 3 14 12 14 11 22 21 10 12 10 13 2"></polygon></svg>
211
211
  TRIGGER - &lt;${this.delegate.triggerElement.tagName.toLowerCase()}&gt;
212
- `,s=K(n,((o=this.delegate.triggerTooltipData)==null?void 0:o.subtitle)||"",((r=this.delegate.triggerTooltipData)==null?void 0:r.content)||"",{id:`${this.delegate.id}-trigger`,backgroundColor:"lavender",color:"blueviolet"}),i=U(this.delegate.triggerElement),L=Math.ceil(i.top-s.offsetHeight*2),Oe=Math.ceil(i.left+i.width+s.offsetWidth/3);return s.style.top=`${L}px`,s.style.left=`${Oe}px`,s.line=new LeaderLine(this.delegate.triggerElement,s,T(k({},this.leaderLineOptions),{color:"blueviolet"})),e&&(s.lineToTarget=new LeaderLine(s,e,T(k({},this.leaderLineOptions),{color:"blueviolet",middleLabel:this.delegate.targetLineLabel,size:2.1})),e.drag.onMove=()=>{var S,ne;e.line.position(),(S=s.lineToTarget)==null||S.position(),(ne=s.lineToRendering)==null||ne.position()}),t&&(s.lineToRendering=new LeaderLine(s,t,T(k({},this.leaderLineOptions),{color:"blueviolet",middleLabel:this.delegate.renderingLineLabel,size:2.1})),t.drag.onMove=()=>{var S;t.line.position(),s.lineToTarget&&s.lineToTarget.position(),(S=s.lineToRendering)==null||S.position()}),s.drag=new PlainDraggable(s),s.drag.onMove=()=>{s.line.position(),s.lineToTarget&&s.lineToTarget.position(),s.lineToRendering&&s.lineToRendering.position()},s}get leaderLineOptions(){return{dash:{animation:!0},dropShadow:{opacity:.3},endPlug:"arrow3",endPlugSize:1.7,size:3,startPlug:"disc",startPlugSize:1}}},{restart:Bt,start:Dt,stop:Ht}=Z;function xe(e,t,o){Object.assign(e,{initializeDevtool(){let r=()=>this.devtool.show();addEventListener("turbo-boost:devtools-start",()=>{this.devtool=new oe(this),this.addEventListener("mouseenter",r)}),addEventListener("turbo-boost:devtools-stop",()=>{this.removeEventListener("mouseenter",r),this.removeDevtool()}),this.dispatchEvent(new CustomEvent("turbo-boost:devtools-connect",{bubbles:!0}))},hideDevtool(){var r;(r=this.devtool)==null||r.hide({active:!1})},removeDevtool(){this.devtool.hide({active:!1}),this.devtool.unregisterEventListeners(),delete this.devtool},name:t,targetLineLabel:o}),Object.defineProperties(e,{triggerElement:{get(){return e}},morphElement:{get(){return e}},targetElement:{get(){return e}}})}var Le={restart:Bt,start:Dt,stop:Ht};var v=class extends HTMLElement{constructor(t){super(),this.devtool="unknown",this.attachShadow({mode:"open"}),this.shadowRoot.innerHTML=t||"<slot></slot>"}connectedCallback(){this.ensureId()}ensureId(){this.id.trim().length||(this.id=`${this.tagName}-${this.uuidv4()}`.toLowerCase())}uuidv4(){return([1e7]+-1e3+-4e3+-8e3+-1e11).replace(/[018]/g,t=>(t^crypto.getRandomValues(new Uint8Array(1))[0]&15>>t/4).toString(16))}get viewStack(){let t=this.getAttribute("view-stack");return t?JSON.parse(t):[]}get partial(){return this.viewStack[0]}};var Rt=`
212
+ `,s=K(n,((o=this.delegate.triggerTooltipData)==null?void 0:o.subtitle)||"",((r=this.delegate.triggerTooltipData)==null?void 0:r.content)||"",{id:`${this.delegate.id}-trigger`,backgroundColor:"lavender",color:"blueviolet"}),i=V(this.delegate.triggerElement),L=Math.ceil(i.top-s.offsetHeight*2),Oe=Math.ceil(i.left+i.width+s.offsetWidth/3);return s.style.top=`${L}px`,s.style.left=`${Oe}px`,s.line=new LeaderLine(this.delegate.triggerElement,s,k(T({},this.leaderLineOptions),{color:"blueviolet"})),e&&(s.lineToTarget=new LeaderLine(s,e,k(T({},this.leaderLineOptions),{color:"blueviolet",middleLabel:this.delegate.targetLineLabel,size:2.1})),e.drag.onMove=()=>{var S,ne;e.line.position(),(S=s.lineToTarget)==null||S.position(),(ne=s.lineToRendering)==null||ne.position()}),t&&(s.lineToRendering=new LeaderLine(s,t,k(T({},this.leaderLineOptions),{color:"blueviolet",middleLabel:this.delegate.renderingLineLabel,size:2.1})),t.drag.onMove=()=>{var S;t.line.position(),s.lineToTarget&&s.lineToTarget.position(),(S=s.lineToRendering)==null||S.position()}),s.drag=new PlainDraggable(s),s.drag.onMove=()=>{s.line.position(),s.lineToTarget&&s.lineToTarget.position(),s.lineToRendering&&s.lineToRendering.position()},s}get leaderLineOptions(){return{dash:{animation:!0},dropShadow:{opacity:.3},endPlug:"arrow3",endPlugSize:1.7,size:3,startPlug:"disc",startPlugSize:1}}},{restart:Bt,start:Ht,stop:Rt}=Z;function xe(e,t,o){Object.assign(e,{initializeDevtool(){let r=()=>this.devtool.show();addEventListener("turbo-boost:devtools-start",()=>{this.devtool=new oe(this),this.addEventListener("mouseenter",r)}),addEventListener("turbo-boost:devtools-stop",()=>{this.removeEventListener("mouseenter",r),this.removeDevtool()}),this.dispatchEvent(new CustomEvent("turbo-boost:devtools-connect",{bubbles:!0}))},hideDevtool(){var r;(r=this.devtool)==null||r.hide({active:!1})},removeDevtool(){this.devtool.hide({active:!1}),this.devtool.unregisterEventListeners(),delete this.devtool},name:t,targetLineLabel:o}),["triggerElement","morphElement","targetElement"].filter(r=>e[r]===void 0).forEach(r=>{Object.defineProperty(e,r,{get(){return e}})})}var Le={restart:Bt,start:Ht,stop:Rt};var v=class extends HTMLElement{constructor(t){super(),this.devtool="unknown",this.attachShadow({mode:"open"}),this.shadowRoot.innerHTML=t||"<slot></slot>"}connectedCallback(){this.ensureId()}ensureId(){this.id.trim().length||(this.id=`${this.tagName}-${this.uuidv4()}`.toLowerCase())}uuidv4(){return([1e7]+-1e3+-4e3+-8e3+-1e11).replace(/[018]/g,t=>(t^crypto.getRandomValues(new Uint8Array(1))[0]&15>>t/4).toString(16))}get viewStack(){let t=this.getAttribute("view-stack");return t?JSON.parse(t):[]}get partial(){return this.viewStack[0]}};var jt=`
213
213
  <turbo-boost>
214
214
  <slot name="busy" hidden></slot>
215
215
  <slot></slot>
216
216
  </turbo-boost>
217
- `,Se=100,re=400,y=class extends v{constructor(){super(Rt)}showBusyElement(){clearTimeout(this.showBusyElementTimeout),clearTimeout(this.hideBusyElementTimeout),this.busyElement&&(this.busyStartedAt=Date.now()+Se,this.showBusyElementTimeout=setTimeout(()=>{this.busySlotElement.hidden=!1,this.defaultSlotElement.hidden=!0},Se))}hideBusyElement(){if(clearTimeout(this.showBusyElementTimeout),clearTimeout(this.hideBusyElementTimeout),!this.busyElement)return;let t=re-(Date.now()-this.busyStartedAt);t<0&&(t=0),delete this.busyStartedAt,this.hideBusyElementTimeout=setTimeout(()=>{this.busySlotElement.hidden=!0,this.defaultSlotElement.hidden=!1},t)}get busyElement(){return this.querySelector(':scope > [slot="busy"]')}get busySlotElement(){return this.shadowRoot.querySelector('slot[name="busy"]')}get defaultSlotElement(){return this.shadowRoot.querySelector("slot:not([name])")}get busy(){return this.getAttribute("busy")==="true"}set busy(t){t=!!t,this.busy!==t&&(this.setAttribute("busy",t),t?this.showBusyElement():this.hideBusyElement())}get busyStartedAt(){return this.dataset.busyStartedAt?Number(this.dataset.busyStartedAt):0}set busyStartedAt(t){this.dataset.busyStartedAt=t}};var D=class extends y{connectedCallback(){super.connectedCallback(),this.mouseenterHandler=this.onMouseenter.bind(this),this.addEventListener("mouseenter",this.mouseenterHandler),this.collapseHandler=this.collapse.bind(this),this.collapseNowHandler=this.collapseNow.bind(this),this.collapseOn.forEach(t=>{let o=t.split("@"),r=o[0];o.length>1?(o[1].match(/^self|window$/)?self:self[o[1]]).addEventListener(r,this.collapseNowHandler):this.addEventListener(r,this.collapseHandler)})}disconnectedCallback(){this.removeEventListener("mouseenter",this.mouseenterHandler),this.collapseOn.forEach(t=>{let o=t.split("@"),r=o[0];o.length>1?(o[1].match(/^self|window$/)?self:self[o[1]]).removeEventListener(r,this.collapseNowHandler):this.removeEventListener(r,this.collapseHandler)})}cacheHTML(){}renderCachedHTML(){}onMouseenter(){clearTimeout(this.collapseTimeout)}collapse(t=250){if(clearTimeout(this.collapseTimeout),!this.busy){if(typeof t!="number"&&(t=250),t>0)return this.collapseTimeout=setTimeout(()=>this.collapse(0),t);this.innerHTML="";try{this.expanded=!1,this.triggerElement.hideDevtool()}catch(o){}}}collapseNow(t){t.target.closest("turbo-boost-devtool-tooltip")||this.collapse(0)}collapseMatches(){document.querySelectorAll(this.collapseSelector).forEach(t=>{t.id!==this.id&&t.collapse&&t.collapse(0)})}get collapseSelector(){return this.triggerElement.collapseSelector||this.getAttribute("collapse-selector")}get focusSelector(){return this.getAttribute("focus-selector")}get triggerElement(){return document.getElementById(this.labeledBy)}get triggerElements(){return document.querySelectorAll(`[aria-controls="${this.id}"]`)}get labeledBy(){return this.getAttribute("aria-labeledby")}set labeledBy(t){return this.setAttribute("aria-labeledby",t)}get collapseOn(){let t=this.getAttribute("collapse-on");return t?JSON.parse(t):[]}get expanded(){return this.triggerElement?this.triggerElement.expanded:!1}set expanded(t){this.triggerElements.forEach(o=>o.expanded=t)}get busy(){return this.triggerElement&&this.triggerElement.busy}};var Ce;function jt(e){["bold","bullet","code","heading1","href","italic","number","quote","strike"].forEach(o=>e.deactivateAttribute(o))}function Mt(e){if(e.value.length===0)return;let t=e.editor,o=[];for(;o[0]!==t.getSelectedRange()[0]&&o[1]!==t.getSelectedRange()[1];)o=t.getSelectedRange(),t.moveCursorInDirection("forward");t.insertString(" "),t.moveCursorInDirection("forward"),t.setSelectedRange([o[1],t.getSelectedRange()[1]]),jt(t),t.setSelectedRange([t.getSelectedRange()[1],t.getSelectedRange()[1]])}function qt(e){clearTimeout(Ce),Ce=setTimeout(()=>{if(!e)return;e.focus();let t=e.closest("trix-editor");try{t?Mt(t):e.selectionStart=e.selectionEnd=e.value.length}catch(o){}finally{e.scrollIntoView({block:"center",behavior:"smooth"})}},100)}var Ae=e=>qt(e);document.addEventListener("turbo-boost:devtools-start",()=>oe.register("toggle","toggles"));var $e,H=class extends y{constructor(){super(),xe(this,"toggle","toggles")}connectedCallback(){super.connectedCallback();let{start:t}=TurboBoost.Commands.events;this.commandStartHandler=this.onCommandStart.bind(this),this.addEventListener(t,this.commandStartHandler);let{before:o}=TurboBoost.Streams.invokeEvents;this.beforeInvokeHandler=this.onBeforeInvoke.bind(this),addEventListener(o,this.beforeInvokeHandler),this.initializeDevtool()}disconnectedCallback(){setTimeout(()=>{let{start:t}=TurboBoost.Commands.events;this.removeEventListener(t,this.commandStartHandler);let{before:o}=TurboBoost.Streams.invokeEvents;removeEventListener(o,this.beforeInvokeHandler),this.removeDevtool()},1e3)}onCommandStart(t){$e=this.focusSelector,this.targetElement.labeledBy=this.id,this.targetElement.collapseMatches(),this.busy=!0}onBeforeInvoke(t){if(t.detail.method!=="morph"||t.target.id!==this.morphs)return;let o=`turbo-boost-toggle-target[aria-labeledby="${this.id}"]`;if(!t.target.querySelector(o))return;let r=Date.now()-this.busyStartedAt,n=re-r;n<10&&(n=10),t.detail.invoke={delay:n},setTimeout(()=>{this.busy=!1,this.morphToggleTriggerElements.forEach(s=>s.busy=!1)},n-10),setTimeout(()=>Ae(this.targetElement.querySelector($e)),n+100)}get sharedViews(){if(!this.targetElement)return[];if(!this.targetElement.viewStack)return[];let t=(o,r)=>(this.targetElement.viewStack.includes(r)&&o.push(r),o);return this.viewStack.reduce(t.bind(this),[])}get renders(){return this.getAttribute("renders")}get morphs(){return this.getAttribute("morphs")}get morphToggleTriggerElements(){return Array.from(this.morphElement.querySelectorAll("turbo-boost-toggle-trigger"))}get controls(){return this.getAttribute("aria-controls")}get collapseSelector(){return this.getAttribute("collapse-selector")}get focusSelector(){return this.getAttribute("focus-selector")||this.targetElement.focusSelector}get remember(){return this.getAttribute("remember")==="true"}set remember(t){return this.setAttribute("remember",!!t)}get expanded(){return this.getAttribute("aria-expanded")==="true"}set expanded(t){this.setAttribute("aria-expanded",!!t)}get collapsed(){return!this.expanded}get command(){return this.dataset.turboCommand}get renderingLineLabel(){return"renders & morphs"}get morphElement(){return this.morphs?document.getElementById(this.morphs):null}get targetElement(){return this.controls?document.getElementById(this.controls):null}get triggerTooltipData(){let t=this.triggerElement.viewStack.reverse().map((o,r)=>this.triggerElement.sharedViews.includes(o)?`<div slot="content">${r+1}. ${o}</div>`:`<div slot="content-bottom">${r+1}. ${o}</div>`,this).join("");return{subtitle:`
217
+ `,Se=100,re=400,y=class extends v{constructor(){super(jt)}showBusyElement(){clearTimeout(this.showBusyElementTimeout),clearTimeout(this.hideBusyElementTimeout),this.busyElement&&(this.busyStartedAt=Date.now()+Se,this.showBusyElementTimeout=setTimeout(()=>{this.busySlotElement.hidden=!1,this.defaultSlotElement.hidden=!0},Se))}hideBusyElement(){if(clearTimeout(this.showBusyElementTimeout),clearTimeout(this.hideBusyElementTimeout),!this.busyElement)return;let t=re-(Date.now()-this.busyStartedAt);t<0&&(t=0),delete this.busyStartedAt,this.hideBusyElementTimeout=setTimeout(()=>{this.busySlotElement.hidden=!0,this.defaultSlotElement.hidden=!1},t)}get busyElement(){return this.querySelector(':scope > [slot="busy"]')}get busySlotElement(){return this.shadowRoot.querySelector('slot[name="busy"]')}get defaultSlotElement(){return this.shadowRoot.querySelector("slot:not([name])")}get busy(){return this.getAttribute("busy")==="true"}set busy(t){t=!!t,this.busy!==t&&(this.setAttribute("busy",t),t?this.showBusyElement():this.hideBusyElement())}get busyStartedAt(){return this.dataset.busyStartedAt?Number(this.dataset.busyStartedAt):0}set busyStartedAt(t){this.dataset.busyStartedAt=t}};var B=class extends y{connectedCallback(){super.connectedCallback(),this.mouseenterHandler=this.onMouseenter.bind(this),this.addEventListener("mouseenter",this.mouseenterHandler),this.collapseHandler=this.collapse.bind(this),this.collapseNowHandler=this.collapseNow.bind(this),this.collapseOn.forEach(t=>{let o=t.split("@"),r=o[0];o.length>1?(o[1].match(/^self|window$/)?self:self[o[1]]).addEventListener(r,this.collapseNowHandler):this.addEventListener(r,this.collapseHandler)})}disconnectedCallback(){this.removeEventListener("mouseenter",this.mouseenterHandler),this.collapseOn.forEach(t=>{let o=t.split("@"),r=o[0];o.length>1?(o[1].match(/^self|window$/)?self:self[o[1]]).removeEventListener(r,this.collapseNowHandler):this.removeEventListener(r,this.collapseHandler)})}cacheHTML(){}renderCachedHTML(){}onMouseenter(){clearTimeout(this.collapseTimeout)}collapse(t=250){if(clearTimeout(this.collapseTimeout),!this.busy){if(typeof t!="number"&&(t=250),t>0)return this.collapseTimeout=setTimeout(()=>this.collapse(0),t);this.innerHTML="";try{this.expanded=!1,this.triggerElement.hideDevtool()}catch(o){}}}collapseNow(t){t.target.closest("turbo-boost-devtool-tooltip")||this.collapse(0)}collapseMatches(){document.querySelectorAll(this.collapseSelector).forEach(t=>{t.id!==this.id&&t.collapse&&t.collapse(0)})}get collapseSelector(){return this.triggerElement.collapseSelector||this.getAttribute("collapse-selector")}get focusSelector(){return this.getAttribute("focus-selector")}get triggerElement(){return document.getElementById(this.labeledBy)}get triggerElements(){return document.querySelectorAll(`[aria-controls="${this.id}"]`)}get labeledBy(){return this.getAttribute("aria-labeledby")}set labeledBy(t){return this.setAttribute("aria-labeledby",t)}get collapseOn(){let t=this.getAttribute("collapse-on");return t?JSON.parse(t):[]}get expanded(){return this.triggerElement?this.triggerElement.expanded:!1}set expanded(t){this.triggerElements.forEach(o=>o.expanded=t)}get busy(){return this.triggerElement&&this.triggerElement.busy}};var Ce;function Mt(e){["bold","bullet","code","heading1","href","italic","number","quote","strike"].forEach(o=>e.deactivateAttribute(o))}function qt(e){if(e.value.length===0)return;let t=e.editor,o=[];for(;o[0]!==t.getSelectedRange()[0]&&o[1]!==t.getSelectedRange()[1];)o=t.getSelectedRange(),t.moveCursorInDirection("forward");t.insertString(" "),t.moveCursorInDirection("forward"),t.setSelectedRange([o[1],t.getSelectedRange()[1]]),Mt(t),t.setSelectedRange([t.getSelectedRange()[1],t.getSelectedRange()[1]])}function Pt(e){clearTimeout(Ce),Ce=setTimeout(()=>{if(!e)return;e.focus();let t=e.closest("trix-editor");try{t?qt(t):e.selectionStart=e.selectionEnd=e.value.length}catch(o){}finally{e.scrollIntoView({block:"center",behavior:"smooth"})}},100)}var Ae=e=>Pt(e);document.addEventListener("turbo-boost:devtools-start",()=>oe.register("toggle","toggles"));var $e,H=class extends y{constructor(){super(),xe(this,"toggle","toggles")}connectedCallback(){super.connectedCallback();let{start:t}=TurboBoost.Commands.events;this.commandStartHandler=this.onCommandStart.bind(this),this.addEventListener(t,this.commandStartHandler);let{before:o}=TurboBoost.Streams.invokeEvents;this.beforeInvokeHandler=this.onBeforeInvoke.bind(this),addEventListener(o,this.beforeInvokeHandler),this.initializeDevtool()}disconnectedCallback(){setTimeout(()=>{let{start:t}=TurboBoost.Commands.events;this.removeEventListener(t,this.commandStartHandler);let{before:o}=TurboBoost.Streams.invokeEvents;removeEventListener(o,this.beforeInvokeHandler),this.removeDevtool()},1e3)}onCommandStart(t){$e=this.focusSelector,this.targetElement.labeledBy=this.id,this.targetElement.collapseMatches(),this.busy=!0}onBeforeInvoke(t){if(t.detail.method!=="morph"||t.target.id!==this.morphs)return;let o=`turbo-boost-toggle-target[aria-labeledby="${this.id}"]`;if(!t.target.querySelector(o))return;let r=Date.now()-this.busyStartedAt,n=re-r;n<10&&(n=10),t.detail.invoke={delay:n},setTimeout(()=>{this.busy=!1,this.morphToggleTriggerElements.forEach(s=>s.busy=!1)},n-10),setTimeout(()=>Ae(this.targetElement.querySelector($e)),n+100)}get sharedViews(){if(!this.targetElement)return[];if(!this.targetElement.viewStack)return[];let t=(o,r)=>(this.targetElement.viewStack.includes(r)&&o.push(r),o);return this.viewStack.reduce(t.bind(this),[])}get renders(){return this.getAttribute("renders")}get morphs(){return this.getAttribute("morphs")}get morphToggleTriggerElements(){return Array.from(this.morphElement.querySelectorAll("turbo-boost-toggle-trigger"))}get controls(){return this.getAttribute("aria-controls")}get collapseSelector(){return this.getAttribute("collapse-selector")}get focusSelector(){return this.getAttribute("focus-selector")||this.targetElement.focusSelector}get remember(){return this.getAttribute("remember")==="true"}set remember(t){return this.setAttribute("remember",!!t)}get expanded(){return this.getAttribute("aria-expanded")==="true"}set expanded(t){this.setAttribute("aria-expanded",!!t)}get collapsed(){return!this.expanded}get command(){return this.dataset.turboCommand}get renderingLineLabel(){return"renders & morphs"}get morphElement(){return this.morphs?document.getElementById(this.morphs):null}get targetElement(){return this.controls?document.getElementById(this.controls):null}get triggerTooltipData(){let t=this.triggerElement.viewStack.reverse().map((o,r)=>this.triggerElement.sharedViews.includes(o)?`<div slot="content">${r+1}. ${o}</div>`:`<div slot="content-bottom">${r+1}. ${o}</div>`,this).join("");return{subtitle:`
218
218
  <b>id</b>: ${this.triggerElement.id}<br>
219
219
  <b>aria-controls</b>: ${this.triggerElement.controls}<br>
220
220
  <b>aria-expanded</b>: ${this.triggerElement.expanded}<br>
@@ -233,5 +233,5 @@ var Be=Object.defineProperty,De=Object.defineProperties,He=Object.getOwnProperty
233
233
  <b>View Stack</b>
234
234
  </div>
235
235
  ${t}
236
- `}}};customElements.define("turbo-boost",v);customElements.define("turbo-boost-toggle-target",D);customElements.define("turbo-boost-toggle-trigger",H);self.TurboBoost=self.TurboBoost||{};self.TurboBoost.devtools=Le;self.TurboBoost.Elements={};var ao=self.TurboBoost.Elements;export{ao as default};
236
+ `}}};customElements.define("turbo-boost",v);customElements.define("turbo-boost-toggle-target",B);customElements.define("turbo-boost-toggle-trigger",H);self.TurboBoost=self.TurboBoost||{};self.TurboBoost.devtools=Le;self.TurboBoost.Elements={};var uo=self.TurboBoost.Elements;export{uo as default};
237
237
  //# sourceMappingURL=elements.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../../node_modules/@turbo-boost/commands/app/assets/builds/@turbo-boost/commands.js", "../../../../node_modules/@turbo-boost/devtools/src/utils/dom.js", "../../../../node_modules/@turbo-boost/devtools/src/elements/devtool_element.js", "../../../../node_modules/@turbo-boost/devtools/src/elements/supervisor_element.js", "../../../../node_modules/@turbo-boost/devtools/src/elements/tooltip_element.js", "../../../../node_modules/@turbo-boost/devtools/src/dependencies.js", "../../../../node_modules/@turbo-boost/devtools/src/supervisor.js", "../../../../node_modules/@turbo-boost/devtools/src/devtool.js", "../../../../node_modules/@turbo-boost/devtools/src/index.js", "../../../javascript/elements/turbo_boost_element/index.js", "../../../javascript/elements/toggle_elements/toggle_element/index.js", "../../../javascript/elements/toggle_elements/target_element/index.js", "../../../javascript/elements/toggle_elements/trigger_element/focus.js", "../../../javascript/elements/toggle_elements/trigger_element/index.js", "../../../javascript/elements/index.js", "../../../javascript/index.js"],
4
- "sourcesContent": ["var Z=Object.defineProperty,ee=Object.defineProperties;var te=Object.getOwnPropertyDescriptors;var X=Object.getOwnPropertySymbols;var re=Object.prototype.hasOwnProperty,oe=Object.prototype.propertyIsEnumerable;var _=(e,t,r)=>t in e?Z(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,s=(e,t)=>{for(var r in t||(t={}))re.call(t,r)&&_(e,r,t[r]);if(X)for(var r of X(t))oe.call(t,r)&&_(e,r,t[r]);return e},u=(e,t)=>ee(e,te(t));var O=class{get element(){return document.querySelector('meta[name=\"turbo-boost\"]')}get token(){return this.element.getAttribute(\"content\")}get busy(){return this.element.dataset.busy===\"true\"}set busy(t){return this.element.dataset.busy=!!t}},a=new O;var i={start:\"turbo-boost:command:start\",success:\"turbo-boost:command:success\",finish:\"turbo-boost:command:finish\",abort:\"turbo-boost:command:abort\",clientError:\"turbo-boost:command:client-error\",serverError:\"turbo-boost:command:server-error\"},l={stateLoad:\"turbo-boost:state:load\",stateChange:\"turbo-boost:state:change\"},f=s(s({},i),l);function d(e,t,r={}){return new Promise(o=>{r=r||{},r.detail=r.detail||{},t=t||document;let n=new CustomEvent(e,u(s({},r),{bubbles:!0}));t.dispatchEvent(n),o(n)})}var B;function k(e,t=null){if(!e||typeof e!=\"object\")return e;let r=new Proxy(e,{deleteProperty(o,n){return delete o[n],d(l.stateChange,a.element,{detail:{state:B}}),!0},set(o,n,c,A){return o[n]=k(c,this),d(l.stateChange,a.element,{detail:{state:B}}),!0}});if(Array.isArray(e))e.forEach((o,n)=>e[n]=k(o,r));else if(typeof e==\"object\")for(let[o,n]of Object.entries(e))e[o]=k(n,r);return t||(B=r),r}var F=k;var D,g,C,N;function J(){if(!a.element)return E();let e=atob(a.element.dataset.state);C={},g=F(JSON.parse(e)),D=s({},g),delete a.element.dataset.clientStateChange,setTimeout(()=>d(l.stateLoad,a.element,{detail:{state:g}}))}function E(){clearTimeout(N),N=setTimeout(J,10)}D||J();addEventListener(\"DOMContentLoaded\",E);addEventListener(\"load\",E);addEventListener(\"turbo:load\",E);addEventListener(\"turbo:frame-load\",E);addEventListener(i.success,E);addEventListener(l.stateChange,e=>{C={};for(let[t,r]of Object.entries(g))D[t]!==r&&(C[t]=r);a.element.dataset.clientStateChange=!0,a.element.dataset.state=btoa(JSON.stringify(g))});var h={events:l,get current(){return g},get delta(){return C},get payloadChunks(){return btoa(JSON.stringify(C)).match(/.{1,2000}/g)}};function ne(e){let t=\"<html\",r=\"</html\",o=e.indexOf(t),n=e.lastIndexOf(r);if(o>=0&&n>=0){let c=e.slice(e.indexOf(\">\",o)+1,n);document.documentElement.innerHTML=c}}function se(e){document.body.insertAdjacentHTML(\"beforeend\",e)}var v={append:se,replaceDocument:ne};var L={};function ae(e){L[e.id]=e}function ie(e){delete L[e]}var S={add:ae,remove:ie,get commands(){return[...Object.values(L)]},get length(){return Object.keys(L).length}};function M(e){e.detail.endedAt=Date.now(),e.detail.milliseconds=e.detail.endedAt-e.detail.startedAt,setTimeout(()=>d(i.finish,e.target,{detail:e.detail}),25)}addEventListener(i.serverError,M);addEventListener(i.success,M);addEventListener(i.finish,e=>S.remove(e.detail.id),!0);var T={events:i};var R={};addEventListener(\"turbo:before-fetch-request\",e=>{let t=e.target.closest(\"turbo-frame\"),{fetchOptions:r}=e.detail;if(a.busy){let o=[\"text/vnd.turbo-boost.html\",r.headers.Accept];o=o.filter(n=>n&&n.trim().length>0).join(\", \"),r.headers.Accept=o,r.headers[\"TurboBoost-Token\"]=a.token}h.payloadChunks.forEach((o,n)=>{r.headers[`TurboBoost-State-${n.toString().padStart(4,\"0\")}`]=o})});addEventListener(\"turbo:before-fetch-response\",e=>{let t=e.target.closest(\"turbo-frame\"),{fetchResponse:r}=e.detail;if(t&&(R[t.id]=t.src),r.header(\"TurboBoost\")){if(r.statusCode<200||r.statusCode>399){let o=`Server returned a ${r.statusCode} status code! TurboBoost Commands require 2XX-3XX status codes.`;d(T.events.clientError,document,{detail:u(s({},e.detail),{error:o})},!0)}r.header(\"TurboBoost\")===\"Append\"&&(e.preventDefault(),r.responseText.then(o=>v.append(o)))}});addEventListener(\"turbo:frame-load\",e=>{let t=e.target.closest(\"turbo-frame\");t.dataset.turboBoostSrc=R[t.id]||t.src||t.dataset.turboBoostSrc,delete R[t.id]});var de={frameAttribute:\"data-turbo-frame\",methodAttribute:\"data-turbo-method\",commandAttribute:\"data-turbo-command\",confirmAttribute:\"data-turbo-confirm\"},m=s({},de);var j={method:e=>Promise.resolve(confirm(e))},me=e=>e.detail.driver===\"method\",ue=e=>{if(e.detail.driver!==\"form\")return!1;let t=e.target,r=t.closest(\"turbo-frame\"),o=t.closest(`[${m.frameAttribute}]`);return!!(r||o)},ce=e=>me(e)||ue(e);document.addEventListener(i.start,async e=>{let t=e.target.getAttribute(m.confirmAttribute);if(!t||(e.detail.confirmation=!0,ce(e)))return;await j.method(t)||e.preventDefault()});var W=j;var b=[],$;function le(e,t){let r=b.find(o=>o.name===e);return r&&b.splice(b.indexOf(r),1),b=[{name:e,selectors:t},...b],document.removeEventListener(e,$,!0),document.addEventListener(e,$,!0),s({},b.find(o=>o.name===e))}function fe(e){return b.find(t=>t.selectors.find(r=>Array.from(document.querySelectorAll(r)).find(o=>o===e)))}function be(e,t){let r=fe(t);return r&&r.name===e}var p={register:le,isRegisteredForElement:be,get events(){return[...b]},set handler(e){$=e}};function pe(e){return e.closest(`[${m.commandAttribute}]`)}function he(e){return e.closest(\"turbo-frame[src]\")||e.closest(\"turbo-frame[data-turbo-frame-src]\")||e.closest(\"turbo-frame\")}function ve(e,t={}){if(e.tagName.toLowerCase()!==\"select\")return t.value=e.value||null;if(!e.multiple)return t.value=e.options[e.selectedIndex].value;t.values=Array.from(e.options).reduce((r,o)=>(o.selected&&r.push(o.value),r),[])}function ge(e){let t=Array.from(e.attributes).reduce((r,o)=>{let n=o.value;return r[o.name]=n,r},{});return t.tag=e.tagName,t.checked=!!e.checked,t.disabled=!!e.disabled,ve(e,t),delete t.class,delete t.action,delete t.href,delete t[m.commandAttribute],delete t[m.frameAttribute],t}var y={buildAttributePayload:ge,findClosestCommand:pe,findClosestFrameWithSource:he};function Ee(e,t={}){t.token=a.token;let r=document.createElement(\"input\");r.type=\"hidden\",r.name=\"turbo_boost_command\",r.value=JSON.stringify(t),e.appendChild(r)}var U={invokeCommand:Ee};function xe(e,t={}){let r=document.createElement(\"a\");r.href=e;let o=new URL(r);return o.searchParams.set(\"turbo_boost_command\",JSON.stringify(t)),o}var x={build:xe};function Ce(e,t){let r=t.src;t=s({},t),delete t.src,e.src=x.build(r,t)}var H={invokeCommand:Ce};function Te(e,t={}){let r=t.src;t=s({},t),delete t.src,delete t.href,e.setAttribute(\"href\",x.build(r,t))}var V={invokeCommand:Te};function ye(e){let t=e.target;d(T.events.abort,document,{detail:u(s({},e.detail),{xhr:t})})}function P(e){let t=e.target;t.getResponseHeader(\"TurboBoost\")===\"Append\"||t.getResponseHeader(\"Content-Type\").startsWith(\"text/vnd.turbo-boost.html\")?v.append(t.responseText):v.replaceDocument(t.responseText);let o=`Server returned a ${t.status} status code! TurboBoost Commands require 2XX-3XX status codes.`;d(T.events.clientError,document,{detail:u(s({},e.detail),{error:o,xhr:t})},!0)}function Ae(e){let t=e.target;if(t.status<200||t.status>399)return P(e);let r=t.responseText;t.getResponseHeader(\"TurboBoost\")===\"Append\"||t.getResponseHeader(\"Content-Type\").startsWith(\"text/vnd.turbo-boost.html\")?v.append(t.responseText):v.replaceDocument(t.responseText)}function ke(e){let t=e.src;e=s({},e),delete e.src;try{let r=new XMLHttpRequest;r.open(\"GET\",x.build(t,e),!0),r.setRequestHeader(\"Accept\",\"text/vnd.turbo-boost.html, text/html, application/xhtml+xml\"),r.setRequestHeader(\"TurboBoost-Token\",a.token),h.payloadChunks.forEach((o,n)=>r.setRequestHeader(`TurboBoost-State-${n.toString().padStart(4,\"0\")}`,o)),r.addEventListener(\"abort\",ye),r.addEventListener(\"error\",P),r.addEventListener(\"load\",Ae),r.send()}catch(r){let o=`Unexpected error sending HTTP request! ${r.message}`;P(r,{detail:{message:o}})}}var G={invokeCommand:ke};function q(e,t){return t=t||{dataset:{}},e.href||t.src||t.dataset.turboBoostSrc||location.href}function Le(e){let t=y.findClosestFrameWithSource(e),{turboFrame:r,turboMethod:o}=e.dataset;return e.tagName.toLowerCase()===\"form\"?{name:\"form\",reason:\"Element is a form.\",frame:t,src:e.action,invokeCommand:U.invokeCommand}:o&&o.length>0?{name:\"method\",reason:\"Element defines data-turbo-method.\",frame:t,src:e.href,invokeCommand:V.invokeCommand}:r&&r!==\"_self\"?(t=document.getElementById(r),{name:\"frame\",reason:\"element targets a frame that is not _self\",frame:t,src:q(e,t),invokeCommand:H.invokeCommand}):(!r||r===\"_self\")&&t?{name:\"frame\",reason:\"element does NOT target a frame or targets _self and is contained by a frame\",frame:t,src:q(e,t),invokeCommand:H.invokeCommand}:{name:\"window\",reason:\"element matches one or more of the following conditions (targets _top, does NOT target a frame, is NOT contained by a frame)\",frame:null,src:q(e),invokeCommand:G.invokeCommand}}var I={find:Le};var w=\"unknown\",z={debug:Object.values(f),info:Object.values(f),warn:[f.abort,f.clientError,f.serverError],error:[f.clientError,f.serverError],unknown:[]};Object.values(f).forEach(e=>{addEventListener(e,t=>{if(z[w].includes(t.type)){let{target:r,detail:o}=t;console[w](t.type,{target:r,detail:o})}})});var K={get level(){return w},set level(e){return Object.keys(z).includes(e)||(e=\"unknown\"),w=e}};function Se(){return([1e7]+-1e3+-4e3+-8e3+-1e11).replace(/[018]/g,e=>(e^crypto.getRandomValues(new Uint8Array(1))[0]&15>>e/4).toString(16))}var Q={v4:Se};function Y(e,t){return{id:e,name:t.getAttribute(m.commandAttribute),elementId:t.id.length>0?t.id:null,elementAttributes:y.buildAttributePayload(t),startedAt:Date.now()}}async function we(e){let t,r={};try{if(t=y.findClosestCommand(e.target),!t||!p.isRegisteredForElement(e.type,t))return;let o=`turbo-command-${Q.v4()}`,n=I.find(t),c=u(s({},Y(o,t)),{driver:n.name,frameId:n.frame?n.frame.id:null,src:n.src}),A=await d(i.start,t,{cancelable:!0,detail:c});if(A.defaultPrevented||A.detail.confirmation&&e.defaultPrevented)return d(i.abort,t,{detail:{message:`An event handler for '${i.start}' prevented default behavior and blocked command invocation!`,source:A}});switch(n=I.find(t),c=u(s({},Y(o,t)),{driver:n.name,frameId:n.frame?n.frame.id:null,src:n.src}),S.add(c),[\"frame\",\"window\"].includes(n.name)&&e.preventDefault(),a.busy=!0,setTimeout(()=>a.busy=!1,10),n.name){case\"method\":return n.invokeCommand(t,c);case\"form\":return n.invokeCommand(t,c);case\"frame\":return n.invokeCommand(n.frame,c);case\"window\":return n.invokeCommand(c)}}catch(o){d(i.clientError,t,{detail:u(s({},r),{error:o})})}}self.TurboBoost=self.TurboBoost||{};self.TurboBoost=u(s({},self.TurboBoost),{stateEvents:l,get state(){return h.current},get stateDelta(){return h.delta}});self.TurboBoost.Commands||(p.handler=we,p.register(\"click\",[`[${m.commandAttribute}]`]),p.register(\"submit\",[`form[${m.commandAttribute}]`]),p.register(\"change\",[`input[${m.commandAttribute}]`,`select[${m.commandAttribute}]`,`textarea[${m.commandAttribute}]`]),self.TurboBoost.Commands={confirmation:W,logger:K,schema:m,events:i,registerEventDelegate:p.register,get eventDelegates(){return p.events}});var Qt=self.TurboBoost.Commands;export{Qt as default};\n//# sourceMappingURL=commands.js.map\n", "export function template (html) {\n let template = document.createElement('template')\n template.innerHTML = html\n return template\n}\n\nexport function appendHTML (html, parent) {\n parent = parent || document.body\n const clone = template(html).content.cloneNode(true)\n const child = clone.querySelector('*')\n return parent.appendChild(child)\n}\n\nexport function addHighlight (element, options = {}) {\n if (!element) return\n removeHighlight(element)\n let { outline, outlineOffset } = options\n\n outline = outline || 'dashed 3px red'\n outlineOffset = outlineOffset || '0px'\n\n element.originalStyles = element.originalStyles || {\n display: element.style.display,\n minHeight: element.style.minHeight,\n minWidth: element.style.minWidth,\n outline: element.style.outline,\n outlineOffset: element.style.outlineOffset\n }\n\n if (\n getComputedStyle(element).display.match(/^inline$/i) &&\n element.offsetWidth === 0 &&\n element.offsetHeight === 0\n ) {\n element.style.display = 'inline-block'\n element.style.minHeight = '2px'\n element.style.minWidth = '2px'\n }\n element.style.outline = outline\n element.style.outlineOffset = outlineOffset\n element.dataset.turboBoostHighlight = true\n}\n\nexport function removeHighlight (element) {\n if (!element) return\n if (element.originalStyles) {\n for (const [key, value] of Object.entries(element.originalStyles))\n value ? (element.style[key] = value) : (element.style[key] = '')\n delete element.originalStyles\n }\n delete element.dataset.turboBoostHighlight\n}\n\nexport function coordinates (element) {\n if (!element) return {}\n const rect = element.getBoundingClientRect()\n const width = element.offsetWidth\n const height = element.offsetHeight\n const top = rect.top + window.scrollY\n const left = rect.left + window.scrollX\n const right = left + width\n const bottom = top + height\n return { top, left, right, bottom, width, height }\n}\n\nexport function attempt (callback) {\n try {\n callback()\n } catch {}\n}\n", "export default class DevtoolElement extends HTMLElement {\n constructor () {\n super()\n this.attachShadow({ mode: 'open' })\n this.shadowRoot.innerHTML = this.html\n this.labelElement.addEventListener('click', event => {\n event.preventDefault()\n this.toggle()\n })\n this.checkboxElement.addEventListener('change', event =>\n this.dispatchEvent(new CustomEvent('change', { bubbles: true }))\n )\n }\n\n toggle () {\n this.checked ? this.uncheck() : this.check()\n }\n\n check () {\n this.checkboxElement.checked = true\n this.dispatchEvent(new CustomEvent('change', { bubbles: true }))\n }\n\n uncheck () {\n this.checkboxElement.checked = false\n this.dispatchEvent(new CustomEvent('change', { bubbles: true }))\n }\n\n get name () {\n return this.getAttribute('name')\n }\n\n get checked () {\n return this.checkboxElement.checked\n }\n\n get checkboxElement () {\n return this.shadowRoot.querySelector('input')\n }\n\n get labelElement () {\n return this.shadowRoot.querySelector('label')\n }\n\n get html () {\n return `\n <style>${this.stylesheet}</style>\n <div>\n <input name=\"checkbox\" type=\"checkbox\">\n <label for=\"checkbox\"><slot name=\"label\"></slot></label>\n </div>\n `\n }\n\n get stylesheet () {\n return `\n :host, :host * {\n cursor: pointer;\n }\n\n div {\n display: flex;\n margin-right: 10px;\n }\n\n input:checked + label{\n font-weight: bold;\n }\n\n label {\n color: black;\n }\n `\n }\n}\n", "import { appendHTML } from '../utils/dom.js'\n\nexport default class SupervisorElement extends HTMLElement {\n constructor () {\n super()\n this.enabledDevtools = {}\n this.attachShadow({ mode: 'open' })\n this.shadowRoot.innerHTML = this.html\n this.shadowRoot.querySelector('button').addEventListener('click', () =>\n this.dispatchEvent(\n new CustomEvent('turbo-boost:devtools-close', {\n bubbles: true\n })\n )\n )\n\n this.addEventListener('change', event => {\n const devtoolElement = event.target\n const { checked, name } = devtoolElement\n checked ? this.enableDevtool(name) : this.disableDevtool(name)\n })\n }\n\n enableDevtool (name) {\n if (this.enabledDevtools[name]) return\n this.enabledDevtools[name] = true\n this.dispatchEvent(\n new CustomEvent('turbo-boost:devtool-enable', {\n bubbles: true,\n detail: { name: name }\n })\n )\n }\n\n disableDevtool (name) {\n if (!this.enabledDevtools[name]) return\n delete this.enabledDevtools[name]\n this.dispatchEvent(\n new CustomEvent('turbo-boost:devtool-disable', {\n bubbles: true,\n detail: { name: name }\n })\n )\n }\n\n close () {\n this.devtoolElements.forEach(el => {\n if (el.checked) el.uncheck()\n })\n this.remove()\n }\n\n get devtoolElements () {\n return this.querySelectorAll('[slot=\"devtool\"]')\n }\n\n get closeElement () {\n return this.querySelector('button')\n }\n\n get html () {\n return `\n <style>${this.stylesheet}</style>\n <div>\n <img src=\"https://ik.imagekit.io/hopsoft/turbo-boost-logo_zHiiimlvT.webp?ik-sdk-version=javascript-1.4.3&updatedAt=1671722004342\">\n <slot name=\"devtool\"></slot>\n <button>\u2715</button>\n </div>\n `\n }\n\n get stylesheet () {\n return `\n :host {\n background-color: gainsboro;\n border-radius: 5px;\n bottom: 20px;\n display: block;\n filter: drop-shadow(3px 3px 3px rgba(0,0,0,0.3));\n left: 50%;\n outline-offset: 1px;\n outline: solid 2px black;\n padding: 5px 10px;\n position: fixed;\n transform: translateX(-50%);\n z-index: 8999;\n }\n\n * {\n -webkit-user-select: none;\n font-family: helvetica, sans-serif;\n font-size: 1rem;\n user-select: none;\n }\n\n img {\n align-self: center;\n cursor: grab;\n height: 25px;\n margin-left: -5px;\n vertical-align: middle;\n }\n\n div {\n display: flex;\n gap: 0 5px;\n position: relative;\n }\n\n [slot=\"devtool\"] {\n align-self: center;\n }\n\n button {\n align-self: center;\n background-color: darkgray;\n border-radius: 50%;\n border: none;\n color: black;\n cursor: pointer;\n font-size: 10px;\n height: 18px;\n line-height: 18px;\n margin-right: -5px;\n opacity: 0.5;\n outline: solid 1px black;\n padding: 0 2px;\n width: 18px;\n }\n\n button:hover {\n opacity: 1;\n }\n `\n }\n}\n", "export default class TooltipElement extends HTMLElement {\n constructor () {\n super()\n this.attachShadow({ mode: 'open' })\n this.shadowRoot.innerHTML = this.html\n }\n\n connectedCallback () {\n const savedTransform = localStorage.getItem(\n `turbo-boost-devtools-${location.href}-${this.id}-transform`\n )\n\n if (savedTransform) {\n this.style.transform = savedTransform\n }\n }\n\n disconnectedCallback () {\n if (this.id !== 'undefined' && this.id !== '') {\n localStorage.setItem(\n `turbo-boost-devtools-${location.href}-${this.id}-transform`,\n this.style.transform\n )\n }\n }\n\n get color () {\n return this.getAttribute('color') || 'darkslategray'\n }\n\n get backgroundColor () {\n return this.getAttribute('background-color') || 'gainsboro'\n }\n\n get position () {\n return this.getAttribute('position') || 'top'\n }\n\n get html () {\n return `\n <style>${this.stylesheet}</style>\n <div role=\"container\">\n <div role=\"title\">\n <slot name=\"title\"></slot>\n <img src=\"https://ik.imagekit.io/hopsoft/turbo-boost-logo_zHiiimlvT.webp?ik-sdk-version=javascript-1.4.3&updatedAt=1671722004342\">\n </div>\n <slot name=\"subtitle\"></slot>\n <slot name=\"content-top\"></slot>\n <slot name=\"content\"></slot>\n <slot name=\"content-bottom\"></slot>\n </div>\n `\n }\n\n get stylesheet () {\n return `\n :host {\n display: block;\n position: absolute;\n z-index: 8999;\n }\n\n * {\n color: ${this.color}\n font-size: 1rem;\n }\n\n [role=\"container\"] {\n background-color: ${this.backgroundColor};\n border-radius: 15px;\n filter: drop-shadow(3px 3px 3px rgba(0,0,0,0.3));\n font-family: monospace;\n min-height: 30px;\n min-width: 100px;\n opacity: 0.9;\n outline-offset: 1px;\n outline: dashed 3px ${this.color};\n padding: 12px;\n position: relative;\n white-space: nowrap;\n }\n\n [role=\"title\"] {\n display: flex;\n }\n\n [role=\"title\"] slot[name=\"title\"] {\n color: ${this.color};\n display: block;\n flex-grow: 1;\n font-weight: bold;\n }\n\n [role=\"title\"] img {\n height: 25px;\n vertical-align: middle;\n }\n\n slot[name=\"subtitle\"] {\n border-bottom: dotted 1px ${this.color};\n border-top: dotted 1px ${this.color};\n color: ${this.color};\n display: block;\n font-size: 0.8rem;\n font-weight: lighter;\n margin-bottom: 12px;\n margin-top: 8px;\n padding-bottom: 4px;\n padding-top: 4px;\n width: 100%;\n }\n\n slot[name=\"content-top\"],\n slot[name=\"content\"],\n slot[name=\"content-bottom\"] {\n display: block;\n font-weight: normal;\n }\n\n slot[name=\"content-top\"] {\n color: ${this.color};\n margin-bottom: 8px;\n }\n\n slot[name=\"content\"],\n slot[name=\"content-bottom\"] {\n opacity: 0.7;\n padding-left: 12px;\n }\n\n slot[name=\"content\"] {\n color: ${this.color};\n }\n\n slot[name=\"content-bottom\"] {\n color: red;\n }\n `\n }\n}\n", "const added = []\n\nconst dependencies = {\n LeaderLine: {\n src:\n 'https://cdnjs.cloudflare.com/ajax/libs/leader-line/1.0.7/leader-line.min.js',\n integrity:\n 'sha512-0dNdzMjpT6pJdFGF1DwybFCfm3K/lzHhxaMXC/92J9/DZujHlqYFqmhTOAoD0o+LkeEsVK2ar/ESs7/Q2B6wJg==',\n global: 'LeaderLine'\n },\n\n PlainDraggable: {\n src:\n 'https://cdn.jsdelivr.net/npm/plain-draggable@2.5.14/plain-draggable.min.js',\n global: 'PlainDraggable'\n }\n}\n\nfunction exists (dependency) {\n if (dependency.global && self[dependency.global]) return true\n if (document.querySelector(`[src='${dependency.src}']`)) return true\n return added.includes(dependency)\n}\n\nfunction add (dependency) {\n if (exists(dependency)) return\n added.push(dependency)\n\n const { src, integrity } = dependency\n const script = document.createElement('script')\n script.setAttribute('src', src)\n script.setAttribute('crossorigin', 'anonymous')\n script.setAttribute('referrerpolicy', 'no-referrer')\n if (integrity) script.setAttribute('integrity', integrity)\n document.head.appendChild(script)\n}\n\nfunction remove (dependency) {\n if (!added.includes(dependency)) return\n added.splice(added.indexOf(dependency), 1)\n\n const { src } = dependency\n const el = document.querySelector(`script[src='${src}']`)\n if (el) el.remove()\n if (dependency.global && self[dependency.global])\n self[dependency.global] = null\n}\n\nfunction removeAll () {\n ;[...added].forEach(dependency => remove(dependency))\n}\n\nexport default { ...dependencies, add, remove, removeAll }\n", "import { appendHTML } from './utils/dom'\nimport DevtoolElement from './elements/devtool_element'\nimport SupervisorElement from './elements/supervisor_element'\nimport TooltipElement from './elements/tooltip_element'\nimport dependencies from './dependencies'\n\ncustomElements.define('turbo-boost-devtool', DevtoolElement)\ncustomElements.define('turbo-boost-devtool-supervisor', SupervisorElement)\ncustomElements.define('turbo-boost-devtool-tooltip', TooltipElement)\n\nlet supervisorElement\n\nfunction makeDraggable () {\n if (!supervisorElement) return\n try {\n new PlainDraggable(supervisorElement)\n } catch {\n setTimeout(makeDraggable, 200)\n }\n}\n\nfunction stop () {\n if (stopped()) return\n supervisorElement.close()\n supervisorElement.dispatchEvent(\n new CustomEvent('turbo-boost:devtools-stop', {\n bubbles: true\n })\n )\n supervisorElement = null\n dependencies.removeAll()\n}\n\nfunction start () {\n if (started()) return\n dependencies.add(dependencies.LeaderLine)\n dependencies.add(dependencies.PlainDraggable)\n supervisorElement = appendHTML(\n '<turbo-boost-devtool-supervisor></turbo-boost-devtool-supervisor>'\n )\n setTimeout(makeDraggable, 200)\n supervisorElement.dispatchEvent(\n new CustomEvent('turbo-boost:devtools-start', {\n bubbles: true\n })\n )\n}\n\nfunction restart () {\n const enabledList = supervisorElement\n ? Object.keys(supervisorElement.enabledDevtools)\n : []\n\n stop()\n start()\n\n supervisorElement.devtoolElements.forEach(el => {\n if (enabledList.includes(el.name)) el.check()\n })\n}\n\nfunction started () {\n return !!supervisorElement\n}\n\nfunction stopped () {\n return !started()\n}\n\nlet restartTimeout\nfunction debouncedRestart () {\n clearTimeout(restartTimeout)\n restartTimeout = setTimeout(restart, 25)\n}\n\nfunction autoRestart () {\n if (started()) debouncedRestart()\n}\n\naddEventListener('turbo:load', autoRestart)\naddEventListener('turbo-frame:load', autoRestart)\naddEventListener('turbo-boost:devtools-connect', autoRestart)\naddEventListener('turbo-boost:devtools-close', stop)\n\nif (window.TurboBoost) {\n addEventListener(TurboBoost.Commands.events.success, autoRestart)\n addEventListener(TurboBoost.Commands.events.finish, autoRestart)\n}\n\nfunction register (name, label) {\n if (!supervisorElement) return\n return appendHTML(\n `\n <turbo-boost-devtool name=\"${name}\" slot=\"devtool\">\n <span slot=\"label\">${label}</span>\n </turbo-boost-devtool>\n `,\n supervisorElement\n )\n}\n\nfunction enabled (name) {\n if (!supervisorElement) return false\n return supervisorElement.enabledDevtools[name]\n}\n\nexport default {\n enabled,\n register,\n start,\n stop,\n restart: debouncedRestart,\n get started () {\n return started()\n },\n get stopped () {\n return stopped()\n }\n}\n", "// Icons courtesy of https://feathericons.com/\nimport supervisor from './supervisor'\nimport {\n appendHTML,\n addHighlight,\n attempt,\n coordinates,\n removeHighlight\n} from './utils/dom.js'\n\nfunction appendTooltip (title, subtitle, content, options = {}) {\n let { backgroundColor, color, position, id } = options\n color = color || 'white'\n position = position || 'top'\n return appendHTML(`\n <turbo-boost-devtool-tooltip id=\"${id}\" position=\"${position}\" background-color=\"${backgroundColor}\" color=\"${color}\">\n <div slot='title'>${title}</div>\n <div slot='subtitle'>${subtitle}</div>\n ${content}\n </turbo-boost-devtool-tooltip>\n `)\n}\n\nlet activeTarget\n\nexport default class Devtool {\n constructor (delegate) {\n this.delegate = delegate\n\n let hideTimeout\n const debouncedHide = () => {\n clearTimeout(hideTimeout)\n hideTimeout = setTimeout(this.hide({ active: false }), 25)\n }\n\n this.eventListeners['turbo-boost:devtool-enable'] = event => {\n // LeaderLine.positionByWindowResize = false\n const { name } = event.detail\n if (name !== this.delegate.name) return\n\n addHighlight(this.delegate.triggerElement, {\n outline: '3px dashed blueviolet',\n outlineOffset: '2px'\n })\n\n this.hide({ active: false })\n if (this.active) this.show()\n }\n\n this.eventListeners['turbo-boost:devtool-disable'] = event => {\n const { name } = event.detail\n if (name === this.delegate.name)\n removeHighlight(this.delegate.triggerElement)\n }\n\n this.eventListeners['click'] = event => {\n if (event.target.closest('turbo-boost-devtool-tooltip')) return\n debouncedHide()\n }\n\n this.eventListeners['turbo:load'] = debouncedHide\n this.eventListeners['turbo-frame:load'] = debouncedHide\n if (window.TurboBoost) {\n this.eventListeners[TurboBoost.Commands.events.finish] = debouncedHide\n }\n\n this.registerEventListeners()\n }\n\n registerEventListeners () {\n Object.entries(this.eventListeners).forEach(([type, listener]) => {\n addEventListener(type, listener)\n })\n }\n\n unregisterEventListeners () {\n Object.entries(this.eventListeners).forEach(([type, listener]) => {\n removeEventListener(type, listener)\n })\n }\n\n get eventListeners () {\n return this._eventListeners || (this._eventListeners = {})\n }\n\n show () {\n if (!this.enabled) return\n\n if (this.active) return\n this.active = true\n\n this.hide({ active: true })\n\n addHighlight(this.delegate.targetElement, {\n outline: '3px dashed darkcyan',\n outlineOffset: '-2px'\n })\n\n addHighlight(this.delegate.morphElement, {\n outline: '3px dashed chocolate',\n outlineOffset: '3px'\n })\n\n this.renderingTooltip = this.createRenderingTooltip()\n this.targetTooltip = this.createTargetTooltip()\n this.triggerTooltip = this.createTriggerTooltip(\n this.targetTooltip,\n this.renderingTooltip\n )\n\n document\n .querySelectorAll('.leader-line')\n .forEach(el => (el.style.zIndex = 100000))\n\n const data = {\n morph: {\n partial: this.delegate.triggerElement.renders,\n id: this.delegate.triggerElement.morphs,\n status: this.delegate.morphElement ? 'OK' : 'Not Found'\n },\n trigger: { partial: null, id: null, status: 'Not Found' },\n target: { partial: null, id: null, status: 'Not Found' }\n }\n\n if (this.delegate.triggerElement) {\n data.trigger = {\n partial: this.delegate.triggerElement.partial,\n id: this.delegate.triggerElement.id,\n status: 'OK'\n }\n data.target.id = this.delegate.triggerElement.controls\n }\n\n if (this.delegate.targetElement)\n data.target = {\n partial: this.delegate.targetElement.partial,\n dom_id: this.delegate.targetElement.id,\n status: 'OK'\n }\n\n console.table(data)\n }\n\n hide ({ active: active = false }) {\n document\n .querySelectorAll('turbo-boost-devtool-tooltip')\n .forEach(tooltip => {\n attempt(() => tooltip.line.remove())\n attempt(() => tooltip.drag.remove())\n attempt(() => tooltip.lineToRendering.remove())\n attempt(() => tooltip.lineToTarget.remove())\n attempt(() => tooltip.remove())\n })\n\n document.querySelectorAll('[data-turbo-boost-highlight]').forEach(el => {\n if (!el.tagName.match(/turbo-boost-toggle-trigger/i)) removeHighlight(el)\n })\n\n this.active = active\n }\n\n get active () {\n return activeTarget === this.delegate\n }\n\n set active (value) {\n if (value) activeTarget = this.delegate\n else activeTarget = null\n }\n\n get enabled () {\n return supervisor.enabled(this.delegate.name)\n }\n\n static register (name, label) {\n supervisor.register(name, label)\n }\n\n createRenderingTooltip () {\n if (!this.delegate.triggerElement.renders)\n return console.debug(\n `Unable to create the rendering tooltip! The trigger element must set the 'renders' attribute.`\n )\n\n if (!this.delegate.triggerElement.morphs)\n return console.debug(\n `Unable to create the rendering tooltip! The trigger element specified the 'morphs' attrbiute but no element matches the DOM id: '${this.triggerElement.morphs}'`\n )\n\n const title = `\n <svg xmlns=\"http://www.w3.org/2000/svg\" style=\"display:inline-block;\" width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M12 19l7-7 3 3-7 7-3-3z\"></path><path d=\"M18 13l-1.5-7.5L2 2l3.5 14.5L13 18l5-5z\"></path><path d=\"M2 2l7.586 7.586\"></path><circle cx=\"11\" cy=\"11\" r=\"2\"></circle></svg>\n RENDERING - &lt;${this.delegate.triggerElement.tagName.toLowerCase()}&gt;\n `\n const subtitle = `\n <b>partial</b>: ${this.delegate.triggerElement.renders || 'unknown'}<br>\n <b>morphs</b>: ${this.delegate.triggerElement.morphs || 'unknown'}<br>\n `\n const content = `\n <div slot=\"content-top\" style=\"font-size:85%; font-style:italic; font-weight:100;\">\n The <b>TRIGGER</b> toggles the <b>TARGET</b> then renders the partial &amp; morphs the element.<br>\n </div>\n `\n const tooltip = appendTooltip(title, subtitle, content, {\n id: `${this.delegate.id}-rendering`,\n backgroundColor: 'lightyellow',\n color: 'chocolate'\n })\n\n const coords = coordinates(this.delegate.morphElement)\n const top = Math.ceil(\n coords.top + coords.height / 2 - tooltip.offsetHeight / 2\n )\n const left = Math.ceil(coords.left + coords.width + 100)\n tooltip.style.top = `${top}px`\n tooltip.style.left = `${left}px`\n\n tooltip.line = new LeaderLine(tooltip, this.delegate.morphElement, {\n ...this.leaderLineOptions,\n color: 'chocolate'\n })\n\n tooltip.drag = new PlainDraggable(tooltip)\n return tooltip\n }\n\n createTargetTooltip () {\n if (!this.delegate.targetElement)\n return console.debug(\n `Unable to create the target tooltip! No element matches the DOM id: '${this.delegate.triggerElement.controls}'`\n )\n\n const title = `\n <svg xmlns=\"http://www.w3.org/2000/svg\" style=\"display:inline-block;\" width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><circle cx=\"12\" cy=\"12\" r=\"10\"></circle><circle cx=\"12\" cy=\"12\" r=\"6\"></circle><circle cx=\"12\" cy=\"12\" r=\"2\"></circle></svg>\n TARGET - &lt;${this.delegate.targetElement.tagName.toLowerCase()}&gt;\n `\n\n const tooltip = appendTooltip(\n title,\n this.delegate.targetTooltipData?.subtitle || '',\n this.delegate.targetTooltipData?.content || '',\n {\n id: `${this.delegate.id}-target`,\n backgroundColor: 'lightcyan',\n color: 'darkcyan',\n position: 'bottom'\n }\n )\n\n const coords = coordinates(this.delegate.targetElement)\n const top = Math.ceil(coords.top + tooltip.offsetHeight)\n const left = Math.ceil(coords.left + coords.width + tooltip.offsetWidth / 3)\n tooltip.style.top = `${top}px`\n tooltip.style.left = `${left}px`\n\n tooltip.line = new LeaderLine(tooltip, this.delegate.targetElement, {\n ...this.leaderLineOptions,\n color: 'darkcyan'\n })\n\n tooltip.drag = new PlainDraggable(tooltip)\n return tooltip\n }\n\n createTriggerTooltip (targetTooltip, renderingTooltip) {\n if (!this.delegate.triggerElement) return\n const title = `\n <svg xmlns=\"http://www.w3.org/2000/svg\" style=\"display:inline;\" width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polygon points=\"13 2 3 14 12 14 11 22 21 10 12 10 13 2\"></polygon></svg>\n TRIGGER - &lt;${this.delegate.triggerElement.tagName.toLowerCase()}&gt;\n `\n\n const tooltip = appendTooltip(\n title,\n this.delegate.triggerTooltipData?.subtitle || '',\n this.delegate.triggerTooltipData?.content || '',\n {\n id: `${this.delegate.id}-trigger`,\n backgroundColor: 'lavender',\n color: 'blueviolet'\n }\n )\n\n const coords = coordinates(this.delegate.triggerElement)\n const top = Math.ceil(coords.top - tooltip.offsetHeight * 2)\n const left = Math.ceil(coords.left + coords.width + tooltip.offsetWidth / 3)\n tooltip.style.top = `${top}px`\n tooltip.style.left = `${left}px`\n\n tooltip.line = new LeaderLine(this.delegate.triggerElement, tooltip, {\n ...this.leaderLineOptions,\n color: 'blueviolet'\n })\n\n if (targetTooltip) {\n tooltip.lineToTarget = new LeaderLine(tooltip, targetTooltip, {\n ...this.leaderLineOptions,\n color: 'blueviolet',\n middleLabel: this.delegate.targetLineLabel,\n size: 2.1\n })\n\n targetTooltip.drag.onMove = () => {\n targetTooltip.line.position()\n tooltip.lineToTarget?.position()\n tooltip.lineToRendering?.position()\n }\n }\n\n if (renderingTooltip) {\n tooltip.lineToRendering = new LeaderLine(tooltip, renderingTooltip, {\n ...this.leaderLineOptions,\n color: 'blueviolet',\n middleLabel: this.delegate.renderingLineLabel,\n size: 2.1\n })\n\n renderingTooltip.drag.onMove = () => {\n renderingTooltip.line.position()\n if (tooltip.lineToTarget) tooltip.lineToTarget.position()\n tooltip.lineToRendering?.position()\n }\n }\n\n tooltip.drag = new PlainDraggable(tooltip)\n tooltip.drag.onMove = () => {\n tooltip.line.position()\n if (tooltip.lineToTarget) tooltip.lineToTarget.position()\n if (tooltip.lineToRendering) tooltip.lineToRendering.position()\n }\n\n return tooltip\n }\n\n get leaderLineOptions () {\n return {\n dash: { animation: true },\n dropShadow: { opacity: 0.3 },\n endPlug: 'arrow3',\n endPlugSize: 1.7,\n size: 3,\n startPlug: 'disc',\n startPlugSize: 1\n }\n }\n}\n", "import supervisor from './supervisor'\nimport Devtool from './devtool'\n\nconst { restart, start, stop } = supervisor\n\nfunction decorateElementWithDevtool (element, name, label) {\n Object.assign(element, {\n initializeDevtool () {\n const mouseenter = () => this.devtool.show()\n\n addEventListener('turbo-boost:devtools-start', () => {\n this.devtool = new Devtool(this)\n this.addEventListener('mouseenter', mouseenter)\n })\n\n addEventListener('turbo-boost:devtools-stop', () => {\n this.removeEventListener('mouseenter', mouseenter)\n this.removeDevtool()\n })\n\n this.dispatchEvent(\n new CustomEvent('turbo-boost:devtools-connect', { bubbles: true })\n )\n },\n hideDevtool () {\n this.devtool?.hide({ active: false })\n },\n removeDevtool () {\n this.devtool.hide({ active: false })\n this.devtool.unregisterEventListeners()\n delete this.devtool\n },\n name,\n targetLineLabel: label\n })\n\n Object.defineProperties(element, {\n // the element references below are defaults to be overriden if necessary\n triggerElement: {\n get () {\n return element\n }\n },\n\n morphElement: {\n get () {\n return element\n }\n },\n\n targetElement: {\n get () {\n return element\n }\n }\n })\n}\n\nexport { Devtool, decorateElementWithDevtool }\n\nexport default { restart, start, stop }\n", "export default class TurboBoostElement extends HTMLElement {\n constructor(html) {\n super()\n this.devtool = 'unknown'\n this.attachShadow({ mode: 'open' })\n this.shadowRoot.innerHTML = html || '<slot></slot>'\n }\n\n connectedCallback() {\n this.ensureId()\n }\n\n ensureId() {\n if (this.id.trim().length) return\n this.id = `${this.tagName}-${this.uuidv4()}`.toLowerCase()\n }\n\n // SEE: https://stackoverflow.com/questions/105034/how-do-i-create-a-guid-uuid\n uuidv4() {\n return ([1e7] + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, c =>\n (c ^ (crypto.getRandomValues(new Uint8Array(1))[0] & (15 >> (c / 4)))).toString(16)\n )\n }\n\n get viewStack() {\n const value = this.getAttribute('view-stack')\n if (!value) return []\n return JSON.parse(value)\n }\n\n get partial() {\n return this.viewStack[0]\n }\n}\n", "import TurboBoostElement from '../../turbo_boost_element'\n\nconst html = `\n <turbo-boost>\n <slot name=\"busy\" hidden></slot>\n <slot></slot>\n </turbo-boost>\n`\n\nexport const busyDelay = 100 // milliseconds - time to wait before showing busy element\nexport const busyDuration = 400 // milliseconds - minimum time that busy element is shown\n\nexport default class ToggleElement extends TurboBoostElement {\n constructor() {\n super(html)\n }\n\n // TODO: Should we timeout after a theoretical max wait time?\n // The idea being that a server error occurred and the toggle failed.\n showBusyElement() {\n clearTimeout(this.showBusyElementTimeout)\n clearTimeout(this.hideBusyElementTimeout)\n\n if (!this.busyElement) return\n\n this.busyStartedAt = Date.now() + busyDelay\n this.showBusyElementTimeout = setTimeout(() => {\n this.busySlotElement.hidden = false\n this.defaultSlotElement.hidden = true\n }, busyDelay)\n }\n\n hideBusyElement() {\n clearTimeout(this.showBusyElementTimeout)\n clearTimeout(this.hideBusyElementTimeout)\n\n if (!this.busyElement) return\n\n let delay = busyDuration - (Date.now() - this.busyStartedAt)\n if (delay < 0) delay = 0\n\n delete this.busyStartedAt\n this.hideBusyElementTimeout = setTimeout(() => {\n this.busySlotElement.hidden = true\n this.defaultSlotElement.hidden = false\n }, delay)\n }\n\n get busyElement() {\n return this.querySelector(':scope > [slot=\"busy\"]')\n }\n\n get busySlotElement() {\n return this.shadowRoot.querySelector('slot[name=\"busy\"]')\n }\n\n get defaultSlotElement() {\n return this.shadowRoot.querySelector('slot:not([name])')\n }\n\n // indicates if an rpc call is active/busy\n get busy() {\n return this.getAttribute('busy') === 'true'\n }\n\n // indicates if an rpc call is active/busy\n set busy(value) {\n value = !!value\n if (this.busy === value) return\n this.setAttribute('busy', value)\n if (value) this.showBusyElement()\n else this.hideBusyElement()\n }\n\n get busyStartedAt() {\n if (!this.dataset.busyStartedAt) return 0\n return Number(this.dataset.busyStartedAt)\n }\n\n set busyStartedAt(value) {\n this.dataset.busyStartedAt = value\n }\n}\n", "import ToggleElement from '../toggle_element'\n\nexport default class ToggleTargetElement extends ToggleElement {\n connectedCallback() {\n super.connectedCallback()\n\n this.mouseenterHandler = this.onMouseenter.bind(this)\n this.addEventListener('mouseenter', this.mouseenterHandler)\n\n this.collapseHandler = this.collapse.bind(this)\n this.collapseNowHandler = this.collapseNow.bind(this)\n\n this.collapseOn.forEach(entry => {\n const parts = entry.split('@')\n const name = parts[0]\n\n if (parts.length > 1) {\n const target = parts[1].match(/^self|window$/) ? self : self[parts[1]]\n target.addEventListener(name, this.collapseNowHandler)\n } else {\n this.addEventListener(name, this.collapseHandler)\n }\n })\n }\n\n disconnectedCallback() {\n this.removeEventListener('mouseenter', this.mouseenterHandler)\n\n this.collapseOn.forEach(entry => {\n const parts = entry.split('@')\n const name = parts[0]\n\n if (parts.length > 1) {\n const target = parts[1].match(/^self|window$/) ? self : self[parts[1]]\n target.removeEventListener(name, this.collapseNowHandler)\n } else {\n this.removeEventListener(name, this.collapseHandler)\n }\n })\n }\n\n // TODO: get cached content working properly\n // perhaps use a mechanic other than morph\n\n // TODO: implement cache (similar to Turbo Drive restoration visit)\n cacheHTML() {\n // this.cachedHTML = this.innerHTML\n }\n\n // TODO: implement cache (similar to Turbo Drive restoration visit)\n renderCachedHTML() {\n // if (!this.cachedHTML) return\n // this.innerHTML = this.cachedHTML\n }\n\n onMouseenter() {\n clearTimeout(this.collapseTimeout)\n }\n\n collapse(delay = 250) {\n clearTimeout(this.collapseTimeout)\n if (this.busy) return\n if (typeof delay !== 'number') delay = 250\n\n if (delay > 0) return (this.collapseTimeout = setTimeout(() => this.collapse(0), delay))\n\n this.innerHTML = ''\n try {\n this.expanded = false\n this.triggerElement.hideDevtool()\n } catch {}\n }\n\n collapseNow(event) {\n if (event.target.closest('turbo-boost-devtool-tooltip')) return\n this.collapse(0)\n }\n\n collapseMatches() {\n document.querySelectorAll(this.collapseSelector).forEach(el => {\n if (el.id === this.id) return\n if (el.collapse) el.collapse(0)\n })\n }\n\n get collapseSelector() {\n return this.triggerElement.collapseSelector || this.getAttribute('collapse-selector')\n }\n\n get focusSelector() {\n return this.getAttribute('focus-selector')\n }\n\n // the active trigger\n get triggerElement() {\n return document.getElementById(this.labeledBy)\n }\n\n // all triggers\n get triggerElements() {\n return document.querySelectorAll(`[aria-controls=\"${this.id}\"]`)\n }\n\n // the dom id of the active trigger\n get labeledBy() {\n return this.getAttribute('aria-labeledby')\n }\n\n set labeledBy(value) {\n return this.setAttribute('aria-labeledby', value)\n }\n\n get collapseOn() {\n const value = this.getAttribute('collapse-on')\n if (!value) return []\n return JSON.parse(value)\n }\n\n get expanded() {\n return this.triggerElement ? this.triggerElement.expanded : false\n }\n\n set expanded(value) {\n this.triggerElements.forEach(el => (el.expanded = value))\n }\n\n get busy() {\n return this.triggerElement && this.triggerElement.busy\n }\n}\n", "let focusTimeout\n\nfunction deactivateTrixAttributes(editor) {\n const attributes = ['bold', 'bullet', 'code', 'heading1', 'href', 'italic', 'number', 'quote', 'strike']\n attributes.forEach(name => editor.deactivateAttribute(name))\n}\n\nfunction focusTrixEditorElement(element) {\n if (element.value.length === 0) return\n\n const editor = element.editor\n\n // move cursor to the end\n let lastRange = []\n while (lastRange[0] !== editor.getSelectedRange()[0] && lastRange[1] !== editor.getSelectedRange()[1]) {\n lastRange = editor.getSelectedRange()\n editor.moveCursorInDirection('forward')\n }\n\n // insert an empty char and select it\n editor.insertString(' ')\n editor.moveCursorInDirection('forward')\n editor.setSelectedRange([lastRange[1], editor.getSelectedRange()[1]])\n\n // deactivate all trix features for the selection\n deactivateTrixAttributes(editor)\n\n // move cursor to end and collapse the selection\n editor.setSelectedRange([editor.getSelectedRange()[1], editor.getSelectedRange()[1]])\n}\n\nfunction debouncedFocus(element) {\n clearTimeout(focusTimeout)\n\n focusTimeout = setTimeout(() => {\n if (!element) return\n\n element.focus()\n const trixEditorElement = element.closest('trix-editor')\n\n try {\n if (trixEditorElement) {\n focusTrixEditorElement(trixEditorElement)\n } else {\n element.selectionStart = element.selectionEnd = element.value.length\n }\n } catch (_) {\n } finally {\n element.scrollIntoView({ block: 'center', behavior: 'smooth' })\n }\n }, 100)\n}\n\nexport default element => debouncedFocus(element)\n", "import { Devtool, decorateElementWithDevtool } from '@turbo-boost/devtools'\n\nimport ToggleElement, { busyDuration } from '../toggle_element'\nimport focus from './focus'\n\ndocument.addEventListener('turbo-boost:devtools-start', () => Devtool.register('toggle', 'toggles'))\n\nlet currentFocusSelector\n\nexport default class ToggleTriggerElement extends ToggleElement {\n constructor() {\n super()\n\n decorateElementWithDevtool(this, 'toggle', 'toggles')\n }\n\n connectedCallback() {\n super.connectedCallback()\n\n const { start: commandStartEvent } = TurboBoost.Commands.events\n this.commandStartHandler = this.onCommandStart.bind(this)\n this.addEventListener(commandStartEvent, this.commandStartHandler)\n\n const { before: beforeInvokeEvent } = TurboBoost.Streams.invokeEvents\n this.beforeInvokeHandler = this.onBeforeInvoke.bind(this)\n addEventListener(beforeInvokeEvent, this.beforeInvokeHandler)\n\n // fires after receiving the toggle morph Turbo Stream but before it is executed\n // this.addEventListener(TurboBoost.Commands.events.success, event => {\n // // TODO: imlement cache, this.targetElement.cacheHTML()\n // })\n\n this.initializeDevtool()\n }\n\n disconnectedCallback() {\n // delay cleanup because the trigger may have been morphed out of the DOM,\n // but it's needed to apply behavior like focus etc...\n setTimeout(() => {\n const { start: commandStartEvent } = TurboBoost.Commands.events\n this.removeEventListener(commandStartEvent, this.commandStartHandler)\n\n const { before: beforeInvokeEvent } = TurboBoost.Streams.invokeEvents\n removeEventListener(beforeInvokeEvent, this.beforeInvokeHandler)\n\n this.removeDevtool()\n }, 1000)\n }\n\n onCommandStart(event) {\n currentFocusSelector = this.focusSelector\n this.targetElement.labeledBy = this.id\n this.targetElement.collapseMatches()\n this.busy = true\n // TODO: implement cache - this.targetElement.renderCachedHTML()\n }\n\n // runs before an invoke turbo stream is executed\n onBeforeInvoke(event) {\n // return early if we're not the element responsible for this invoke\n if (event.detail.method !== 'morph') return\n if (event.target.id !== this.morphs) return\n const selector = `turbo-boost-toggle-target[aria-labeledby=\"${this.id}\"]`\n if (!event.target.querySelector(selector)) return\n\n // ensure the busy element is shown long enough for a good user experience\n // we accomplish this by modifying the event.detail with invoke instructions i.e. { delay }\n // SEE: the TurboBoost Streams library for details on how this works\n const duration = Date.now() - this.busyStartedAt\n let delay = busyDuration - duration\n if (delay < 10) delay = 10\n event.detail.invoke = { delay }\n\n // runs before the morph is executed\n setTimeout(() => {\n this.busy = false\n this.morphToggleTriggerElements.forEach(el => (el.busy = false))\n }, delay - 10)\n\n // runs after the morph is executed\n setTimeout(() => focus(this.targetElement.querySelector(currentFocusSelector)), delay + 100)\n }\n\n // a list of views shared between the trigger and target\n get sharedViews() {\n if (!this.targetElement) return []\n if (!this.targetElement.viewStack) return []\n const reducer = (memo, view) => {\n if (this.targetElement.viewStack.includes(view)) memo.push(view)\n return memo\n }\n return this.viewStack.reduce(reducer.bind(this), [])\n }\n\n // the partial to render\n get renders() {\n return this.getAttribute('renders')\n }\n\n // the renderered partial's top wrapping dom_id\n get morphs() {\n return this.getAttribute('morphs')\n }\n\n // all toggle elements contained by the `morphElement`\n get morphToggleTriggerElements() {\n return Array.from(this.morphElement.querySelectorAll('turbo-boost-toggle-trigger'))\n }\n\n // the target's dom_id\n get controls() {\n return this.getAttribute('aria-controls')\n }\n\n get collapseSelector() {\n return this.getAttribute('collapse-selector')\n }\n\n get focusSelector() {\n return this.getAttribute('focus-selector') || this.targetElement.focusSelector\n }\n\n // indicates if the toggle state should be remembered across requests\n get remember() {\n return this.getAttribute('remember') === 'true'\n }\n\n set remember(value) {\n return this.setAttribute('remember', !!value)\n }\n\n // indicates if the target is expanded\n get expanded() {\n return this.getAttribute('aria-expanded') === 'true'\n }\n\n set expanded(value) {\n this.setAttribute('aria-expanded', !!value)\n }\n\n // indicates if the target is expanded\n get collapsed() {\n return !this.expanded\n }\n\n // ------ DevToolDelegate ------\n get command() {\n return this.dataset.turboCommand\n }\n\n get renderingLineLabel() {\n return 'renders & morphs'\n }\n\n // the morph element\n get morphElement() {\n if (!this.morphs) return null\n return document.getElementById(this.morphs)\n }\n\n // the target element\n get targetElement() {\n if (!this.controls) return null\n return document.getElementById(this.controls)\n }\n\n get triggerTooltipData() {\n let content = this.triggerElement.viewStack\n .reverse()\n .map((view, index) => {\n return this.triggerElement.sharedViews.includes(view)\n ? `<div slot=\"content\">${index + 1}. ${view}</div>`\n : `<div slot=\"content-bottom\">${index + 1}. ${view}</div>`\n }, this)\n .join('')\n\n return {\n subtitle: `\n <b>id</b>: ${this.triggerElement.id}<br>\n <b>aria-controls</b>: ${this.triggerElement.controls}<br>\n <b>aria-expanded</b>: ${this.triggerElement.expanded}<br>\n <b>remember</b>: ${this.triggerElement.remember}<br>\n `,\n content: `\n <div slot=\"content-top\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" style=\"display:inline-block;\" width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polygon points=\"12 2 2 7 12 12 22 7 12 2\"></polygon><polyline points=\"2 17 12 22 22 17\"></polyline><polyline points=\"2 12 12 17 22 12\"></polyline></svg>\n <b>View Stack</b>\n </div>\n ${content}\n `\n }\n }\n\n get targetTooltipData() {\n let content = this.targetElement.viewStack\n .reverse()\n .map((view, index) => {\n return this.triggerElement.sharedViews.includes(view)\n ? `<div slot=\"content\">${index + 1}. ${view}</div>`\n : `<div slot=\"content-bottom\">${index + 1}. ${view}</div>`\n }, this)\n .join('')\n\n return {\n subtitle: `<b>id</b>: ${this.targetElement.id}<br>\n <b>aria-labeled-by</b>: ${this.targetElement.labeledBy}<br>\n`,\n content: `\n <div slot=\"content-top\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" style=\"display:inline-block;\" width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polygon points=\"12 2 2 7 12 12 22 7 12 2\"></polygon><polyline points=\"2 17 12 22 22 17\"></polyline><polyline points=\"2 12 12 17 22 12\"></polyline></svg>\n <b>View Stack</b>\n </div>\n ${content}\n `\n }\n }\n}\n", "import TurboBoostElement from './turbo_boost_element'\nimport ToggleTargetElement from './toggle_elements/target_element'\nimport ToggleTriggerElement from './toggle_elements/trigger_element'\n\n// Valid custom element names: https://html.spec.whatwg.org/#valid-custom-element-name\n\ncustomElements.define('turbo-boost', TurboBoostElement)\ncustomElements.define('turbo-boost-toggle-target', ToggleTargetElement)\ncustomElements.define('turbo-boost-toggle-trigger', ToggleTriggerElement)\n", "import '@turbo-boost/commands'\nimport devtools from '@turbo-boost/devtools'\nimport './elements'\n\nself.TurboBoost = self.TurboBoost || {}\nself.TurboBoost.devtools = devtools\nself.TurboBoost.Elements = {}\n\nexport default self.TurboBoost.Elements\n"],
5
- "mappings": "AAAA,IAAIA,GAAE,OAAO,eAAeC,GAAG,OAAO,iBAAqBC,GAAG,OAAO,0BAA8BC,GAAE,OAAO,sBAA0BC,GAAG,OAAO,UAAU,eAAeC,GAAG,OAAO,UAAU,qBAAyBC,GAAE,CAAC,EAAE,EAAEC,IAAI,KAAK,EAAEP,GAAE,EAAE,EAAE,CAAC,WAAW,GAAG,aAAa,GAAG,SAAS,GAAG,MAAMO,CAAC,CAAC,EAAE,EAAE,CAAC,EAAEA,EAAEC,EAAE,CAAC,EAAE,IAAI,CAAC,QAAQD,KAAK,IAAI,EAAE,CAAC,GAAGH,GAAG,KAAK,EAAEG,CAAC,GAAGD,GAAE,EAAEC,EAAE,EAAEA,CAAC,CAAC,EAAE,GAAGJ,GAAE,QAAQI,KAAKJ,GAAE,CAAC,EAAEE,GAAG,KAAK,EAAEE,CAAC,GAAGD,GAAE,EAAEC,EAAE,EAAEA,CAAC,CAAC,EAAE,OAAO,CAAC,EAAEE,EAAE,CAAC,EAAE,IAAIR,GAAG,EAAEC,GAAG,CAAC,CAAC,EAAMQ,GAAE,KAAK,CAAC,IAAI,SAAS,CAAC,OAAO,SAAS,cAAc,0BAA0B,CAAC,CAAC,IAAI,OAAO,CAAC,OAAO,KAAK,QAAQ,aAAa,SAAS,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,KAAK,QAAQ,QAAQ,OAAO,MAAM,CAAC,IAAI,KAAKC,EAAE,CAAC,OAAO,KAAK,QAAQ,QAAQ,KAAK,CAAC,CAACA,CAAC,CAAC,EAAEC,EAAE,IAAIF,GAAMG,EAAE,CAAC,MAAM,4BAA4B,QAAQ,8BAA8B,OAAO,6BAA6B,MAAM,4BAA4B,YAAY,mCAAmC,YAAY,kCAAkC,EAAEC,EAAE,CAAC,UAAU,yBAAyB,YAAY,0BAA0B,EAAEC,EAAEP,EAAEA,EAAE,CAAC,EAAEK,CAAC,EAAEC,CAAC,EAAE,SAASE,EAAE,EAAE,EAAET,EAAE,CAAC,EAAE,CAAC,OAAO,IAAI,QAAQU,GAAG,CAACV,EAAEA,GAAG,CAAC,EAAEA,EAAE,OAAOA,EAAE,QAAQ,CAAC,EAAE,EAAE,GAAG,SAAS,IAAI,EAAE,IAAI,YAAY,EAAEE,EAAED,EAAE,CAAC,EAAED,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,cAAc,CAAC,EAAEU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAIC,EAAE,SAASC,EAAE,EAAE,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,OAAO,GAAG,SAAS,OAAO,EAAE,IAAIZ,EAAE,IAAI,MAAM,EAAE,CAAC,eAAeU,EAAE,EAAE,CAAC,OAAO,OAAOA,EAAE,CAAC,EAAED,EAAEF,EAAE,YAAYF,EAAE,QAAQ,CAAC,OAAO,CAAC,MAAMM,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,IAAID,EAAE,EAAEG,EAAEC,EAAE,CAAC,OAAOJ,EAAE,CAAC,EAAEE,EAAEC,EAAE,IAAI,EAAEJ,EAAEF,EAAE,YAAYF,EAAE,QAAQ,CAAC,OAAO,CAAC,MAAMM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,MAAM,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAACD,EAAE,IAAI,EAAE,CAAC,EAAEE,EAAEF,EAAEV,CAAC,CAAC,UAAU,OAAO,GAAG,SAAS,OAAO,CAACU,EAAE,CAAC,IAAI,OAAO,QAAQ,CAAC,EAAE,EAAEA,CAAC,EAAEE,EAAE,EAAEZ,CAAC,EAAE,OAAO,IAAIW,EAAEX,GAAGA,CAAC,CAAC,IAAIe,GAAEH,EAAMI,EAAEC,EAAE,EAAEC,GAAE,SAASC,IAAG,CAAC,GAAG,CAACd,EAAE,QAAQ,OAAOe,EAAE,EAAE,IAAI,EAAE,KAAKf,EAAE,QAAQ,QAAQ,KAAK,EAAE,EAAE,CAAC,EAAEY,EAAEF,GAAE,KAAK,MAAM,CAAC,CAAC,EAAEC,EAAEf,EAAE,CAAC,EAAEgB,CAAC,EAAE,OAAOZ,EAAE,QAAQ,QAAQ,kBAAkB,WAAW,IAAII,EAAEF,EAAE,UAAUF,EAAE,QAAQ,CAAC,OAAO,CAAC,MAAMY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAASG,GAAG,CAAC,aAAaF,EAAC,EAAEA,GAAE,WAAWC,GAAE,EAAE,CAAC,CAACH,GAAGG,GAAE,EAAE,iBAAiB,mBAAmBC,CAAC,EAAE,iBAAiB,OAAOA,CAAC,EAAE,iBAAiB,aAAaA,CAAC,EAAE,iBAAiB,mBAAmBA,CAAC,EAAE,iBAAiBd,EAAE,QAAQc,CAAC,EAAE,iBAAiBb,EAAE,YAAY,GAAG,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,EAAEP,CAAC,IAAI,OAAO,QAAQiB,CAAC,EAAED,EAAE,CAAC,IAAIhB,IAAI,EAAE,CAAC,EAAEA,GAAGK,EAAE,QAAQ,QAAQ,kBAAkB,GAAGA,EAAE,QAAQ,QAAQ,MAAM,KAAK,KAAK,UAAUY,CAAC,CAAC,CAAC,CAAC,EAAE,IAAII,EAAE,CAAC,OAAOd,EAAE,IAAI,SAAS,CAAC,OAAOU,CAAC,EAAE,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,IAAI,eAAe,CAAC,OAAO,KAAK,KAAK,UAAU,CAAC,CAAC,EAAE,MAAM,YAAY,CAAC,CAAC,EAAE,SAASK,GAAG,EAAE,CAAC,IAAI,EAAE,QAAQtB,EAAE,SAASU,EAAE,EAAE,QAAQ,CAAC,EAAE,EAAE,EAAE,YAAYV,CAAC,EAAE,GAAGU,GAAG,GAAG,GAAG,EAAE,CAAC,IAAIG,EAAE,EAAE,MAAM,EAAE,QAAQ,IAAIH,CAAC,EAAE,EAAE,CAAC,EAAE,SAAS,gBAAgB,UAAUG,CAAC,CAAC,CAAC,SAASU,GAAG,EAAE,CAAC,SAAS,KAAK,mBAAmB,YAAY,CAAC,CAAC,CAAC,IAAIC,EAAE,CAAC,OAAOD,GAAG,gBAAgBD,EAAE,EAAMG,EAAE,CAAC,EAAE,SAASC,GAAG,EAAE,CAACD,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,SAASE,GAAG,EAAE,CAAC,OAAOF,EAAE,CAAC,CAAC,CAAC,IAAIG,GAAE,CAAC,IAAIF,GAAG,OAAOC,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,GAAG,OAAO,OAAOF,CAAC,CAAC,CAAC,EAAE,IAAI,QAAQ,CAAC,OAAO,OAAO,KAAKA,CAAC,EAAE,MAAM,CAAC,EAAE,SAASI,GAAE,EAAE,CAAC,EAAE,OAAO,QAAQ,KAAK,IAAI,EAAE,EAAE,OAAO,aAAa,EAAE,OAAO,QAAQ,EAAE,OAAO,UAAU,WAAW,IAAIpB,EAAEH,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,iBAAiBA,EAAE,YAAYuB,EAAC,EAAE,iBAAiBvB,EAAE,QAAQuB,EAAC,EAAE,iBAAiBvB,EAAE,OAAO,GAAGsB,GAAE,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,IAAIE,EAAE,CAAC,OAAOxB,CAAC,EAAMyB,EAAE,CAAC,EAAE,iBAAiB,6BAA6B,GAAG,CAAC,IAAI,EAAE,EAAE,OAAO,QAAQ,aAAa,EAAE,CAAC,aAAa/B,CAAC,EAAE,EAAE,OAAO,GAAGK,EAAE,KAAK,CAAC,IAAIK,EAAE,CAAC,4BAA4BV,EAAE,QAAQ,MAAM,EAAEU,EAAEA,EAAE,OAAO,GAAG,GAAG,EAAE,KAAK,EAAE,OAAO,CAAC,EAAE,KAAK,IAAI,EAAEV,EAAE,QAAQ,OAAOU,EAAEV,EAAE,QAAQ,kBAAkB,EAAEK,EAAE,KAAK,CAACgB,EAAE,cAAc,QAAQ,CAACX,EAAE,IAAI,CAACV,EAAE,QAAQ,oBAAoB,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,CAAC,EAAE,EAAEU,CAAC,CAAC,CAAC,CAAC,EAAE,iBAAiB,8BAA8B,GAAG,CAAC,IAAI,EAAE,EAAE,OAAO,QAAQ,aAAa,EAAE,CAAC,cAAcV,CAAC,EAAE,EAAE,OAAO,GAAG,IAAI+B,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK/B,EAAE,OAAO,YAAY,EAAE,CAAC,GAAGA,EAAE,WAAW,KAAKA,EAAE,WAAW,IAAI,CAAC,IAAIU,EAAE,qBAAqBV,EAAE,UAAU,kEAAkES,EAAEqB,EAAE,OAAO,YAAY,SAAS,CAAC,OAAO5B,EAAED,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,MAAMS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAACV,EAAE,OAAO,YAAY,IAAI,WAAW,EAAE,eAAe,EAAEA,EAAE,aAAa,KAAKU,GAAGc,EAAE,OAAOd,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,iBAAiB,mBAAmB,GAAG,CAAC,IAAI,EAAE,EAAE,OAAO,QAAQ,aAAa,EAAE,EAAE,QAAQ,cAAcqB,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,QAAQ,cAAc,OAAOA,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,IAAIC,GAAG,CAAC,eAAe,mBAAmB,gBAAgB,oBAAoB,iBAAiB,qBAAqB,iBAAiB,oBAAoB,EAAEC,EAAEhC,EAAE,CAAC,EAAE+B,EAAE,EAAME,GAAE,CAAC,OAAO,GAAG,QAAQ,QAAQ,QAAQ,CAAC,CAAC,CAAC,EAAEC,GAAG,GAAG,EAAE,OAAO,SAAS,SAASC,GAAG,GAAG,CAAC,GAAG,EAAE,OAAO,SAAS,OAAO,MAAM,GAAG,IAAI,EAAE,EAAE,OAAOpC,EAAE,EAAE,QAAQ,aAAa,EAAEU,EAAE,EAAE,QAAQ,IAAIuB,EAAE,cAAc,GAAG,EAAE,MAAM,CAAC,EAAEjC,GAAGU,EAAE,EAAE2B,GAAG,GAAGF,GAAG,CAAC,GAAGC,GAAG,CAAC,EAAE,SAAS,iBAAiB9B,EAAE,MAAM,MAAM,GAAG,CAAC,IAAI,EAAE,EAAE,OAAO,aAAa2B,EAAE,gBAAgB,EAAK,CAAC,IAAI,EAAE,OAAO,aAAa,GAAGI,GAAG,CAAC,IAAU,MAAMH,GAAE,OAAO,CAAC,GAAG,EAAE,eAAe,CAAC,CAAC,EAAE,IAAII,GAAEJ,GAAMK,EAAE,CAAC,EAAEC,EAAE,SAASC,GAAG,EAAE,EAAE,CAAC,IAAIzC,EAAEuC,EAAE,KAAK7B,GAAGA,EAAE,OAAO,CAAC,EAAE,OAAOV,GAAGuC,EAAE,OAAOA,EAAE,QAAQvC,CAAC,EAAE,CAAC,EAAEuC,EAAE,CAAC,CAAC,KAAK,EAAE,UAAU,CAAC,EAAE,GAAGA,CAAC,EAAE,SAAS,oBAAoB,EAAEC,EAAE,EAAE,EAAE,SAAS,iBAAiB,EAAEA,EAAE,EAAE,EAAEvC,EAAE,CAAC,EAAEsC,EAAE,KAAK7B,GAAGA,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,SAASgC,GAAG,EAAE,CAAC,OAAOH,EAAE,KAAK,GAAG,EAAE,UAAU,KAAKvC,GAAG,MAAM,KAAK,SAAS,iBAAiBA,CAAC,CAAC,EAAE,KAAKU,GAAGA,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAASiC,GAAG,EAAE,EAAE,CAAC,IAAI3C,EAAE0C,GAAG,CAAC,EAAE,OAAO1C,GAAGA,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,SAASyC,GAAG,uBAAuBE,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,GAAGJ,CAAC,CAAC,EAAE,IAAI,QAAQ,EAAE,CAACC,EAAE,CAAC,CAAC,EAAE,SAASI,GAAG,EAAE,CAAC,OAAO,EAAE,QAAQ,IAAIX,EAAE,gBAAgB,GAAG,CAAC,CAAC,SAASY,GAAG,EAAE,CAAC,OAAO,EAAE,QAAQ,kBAAkB,GAAG,EAAE,QAAQ,mCAAmC,GAAG,EAAE,QAAQ,aAAa,CAAC,CAAC,SAASC,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,QAAQ,YAAY,IAAI,SAAS,OAAO,EAAE,MAAM,EAAE,OAAO,KAAK,GAAG,CAAC,EAAE,SAAS,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,EAAE,OAAO,MAAM,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC9C,EAAEU,KAAKA,EAAE,UAAUV,EAAE,KAAKU,EAAE,KAAK,EAAEV,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS+C,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,EAAE,UAAU,EAAE,OAAO,CAAC/C,EAAEU,IAAI,CAAC,IAAI,EAAEA,EAAE,MAAM,OAAOV,EAAEU,EAAE,IAAI,EAAE,EAAEV,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,EAAE,SAAS8C,GAAG,EAAE,CAAC,EAAE,OAAO,EAAE,MAAM,OAAO,EAAE,OAAO,OAAO,EAAE,KAAK,OAAO,EAAEb,EAAE,gBAAgB,EAAE,OAAO,EAAEA,EAAE,cAAc,EAAE,CAAC,CAAC,IAAIe,EAAE,CAAC,sBAAsBD,GAAG,mBAAmBH,GAAG,2BAA2BC,EAAE,EAAE,SAASI,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM5C,EAAE,MAAM,IAAIL,EAAE,SAAS,cAAc,OAAO,EAAEA,EAAE,KAAK,SAASA,EAAE,KAAK,sBAAsBA,EAAE,MAAM,KAAK,UAAU,CAAC,EAAE,EAAE,YAAYA,CAAC,CAAC,CAAC,IAAIkD,GAAE,CAAC,cAAcD,EAAE,EAAE,SAASE,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,IAAInD,EAAE,SAAS,cAAc,GAAG,EAAEA,EAAE,KAAK,EAAE,IAAIU,EAAE,IAAI,IAAIV,CAAC,EAAE,OAAOU,EAAE,aAAa,IAAI,sBAAsB,KAAK,UAAU,CAAC,CAAC,EAAEA,CAAC,CAAC,IAAI0C,EAAE,CAAC,MAAMD,EAAE,EAAE,SAASE,GAAG,EAAE,EAAE,CAAC,IAAIrD,EAAE,EAAE,IAAI,EAAEC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,IAAImD,EAAE,MAAMpD,EAAE,CAAC,CAAC,CAAC,IAAIsD,GAAE,CAAC,cAAcD,EAAE,EAAE,SAASE,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,IAAIvD,EAAE,EAAE,IAAI,EAAEC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,OAAO,EAAE,KAAK,EAAE,aAAa,OAAOmD,EAAE,MAAMpD,EAAE,CAAC,CAAC,CAAC,CAAC,IAAIwD,GAAE,CAAC,cAAcD,EAAE,EAAE,SAASE,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE,OAAOhD,EAAEqB,EAAE,OAAO,MAAM,SAAS,CAAC,OAAO5B,EAAED,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAASyD,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,kBAAkB,YAAY,IAAI,UAAU,EAAE,kBAAkB,cAAc,EAAE,WAAW,2BAA2B,EAAElC,EAAE,OAAO,EAAE,YAAY,EAAEA,EAAE,gBAAgB,EAAE,YAAY,EAAE,IAAI,EAAE,qBAAqB,EAAE,MAAM,kEAAkEf,EAAEqB,EAAE,OAAO,YAAY,SAAS,CAAC,OAAO5B,EAAED,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,SAAS0D,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE,OAAO,GAAG,EAAE,OAAO,KAAK,EAAE,OAAO,IAAI,OAAOD,EAAE,CAAC,EAAE,IAAI1D,EAAE,EAAE,aAAa,EAAE,kBAAkB,YAAY,IAAI,UAAU,EAAE,kBAAkB,cAAc,EAAE,WAAW,2BAA2B,EAAEwB,EAAE,OAAO,EAAE,YAAY,EAAEA,EAAE,gBAAgB,EAAE,YAAY,CAAC,CAAC,SAASoC,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE3D,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,GAAG,CAAC,IAAID,EAAE,IAAI,eAAeA,EAAE,KAAK,MAAMoD,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,EAAEpD,EAAE,iBAAiB,SAAS,6DAA6D,EAAEA,EAAE,iBAAiB,mBAAmBK,EAAE,KAAK,EAAEgB,EAAE,cAAc,QAAQ,CAACX,EAAE,IAAIV,EAAE,iBAAiB,oBAAoB,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,CAAC,GAAGU,CAAC,CAAC,EAAEV,EAAE,iBAAiB,QAAQyD,EAAE,EAAEzD,EAAE,iBAAiB,QAAQ0D,CAAC,EAAE1D,EAAE,iBAAiB,OAAO2D,EAAE,EAAE3D,EAAE,KAAK,CAAC,OAAOA,EAAE,CAAC,IAAIU,EAAE,0CAA0CV,EAAE,OAAO,GAAG0D,EAAE1D,EAAE,CAAC,OAAO,CAAC,QAAQU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAImD,GAAE,CAAC,cAAcD,EAAE,EAAE,SAASE,EAAE,EAAE,EAAE,CAAC,OAAO,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,eAAe,SAAS,IAAI,CAAC,SAASC,GAAG,EAAE,CAAC,IAAI,EAAEf,EAAE,2BAA2B,CAAC,EAAE,CAAC,WAAWhD,EAAE,YAAYU,CAAC,EAAE,EAAE,QAAQ,OAAO,EAAE,QAAQ,YAAY,IAAI,OAAO,CAAC,KAAK,OAAO,OAAO,qBAAqB,MAAM,EAAE,IAAI,EAAE,OAAO,cAAcwC,GAAE,aAAa,EAAExC,GAAGA,EAAE,OAAO,EAAE,CAAC,KAAK,SAAS,OAAO,qCAAqC,MAAM,EAAE,IAAI,EAAE,KAAK,cAAc8C,GAAE,aAAa,EAAExD,GAAGA,IAAI,SAAS,EAAE,SAAS,eAAeA,CAAC,EAAE,CAAC,KAAK,QAAQ,OAAO,4CAA4C,MAAM,EAAE,IAAI8D,EAAE,EAAE,CAAC,EAAE,cAAcR,GAAE,aAAa,IAAI,CAACtD,GAAGA,IAAI,UAAU,EAAE,CAAC,KAAK,QAAQ,OAAO,+EAA+E,MAAM,EAAE,IAAI8D,EAAE,EAAE,CAAC,EAAE,cAAcR,GAAE,aAAa,EAAE,CAAC,KAAK,SAAS,OAAO,+HAA+H,MAAM,KAAK,IAAIQ,EAAE,CAAC,EAAE,cAAcD,GAAE,aAAa,CAAC,CAAC,IAAIG,GAAE,CAAC,KAAKD,EAAE,EAAME,EAAE,UAAUC,GAAE,CAAC,MAAM,OAAO,OAAO1D,CAAC,EAAE,KAAK,OAAO,OAAOA,CAAC,EAAE,KAAK,CAACA,EAAE,MAAMA,EAAE,YAAYA,EAAE,WAAW,EAAE,MAAM,CAACA,EAAE,YAAYA,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC,EAAE,OAAO,OAAOA,CAAC,EAAE,QAAQ,GAAG,CAAC,iBAAiB,EAAE,GAAG,CAAC,GAAG0D,GAAED,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,OAAOjE,EAAE,OAAOU,CAAC,EAAE,EAAE,QAAQuD,CAAC,EAAE,EAAE,KAAK,CAAC,OAAOjE,EAAE,OAAOU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAIyD,GAAE,CAAC,IAAI,OAAO,CAAC,OAAOF,CAAC,EAAE,IAAI,MAAM,EAAE,CAAC,OAAO,OAAO,KAAKC,EAAC,EAAE,SAAS,CAAC,IAAI,EAAE,WAAWD,EAAE,CAAC,CAAC,EAAE,SAASG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,KAAK,KAAK,OAAO,QAAQ,SAAS,IAAI,EAAE,OAAO,gBAAgB,IAAI,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,GAAG,SAAS,EAAE,CAAC,CAAC,CAAC,IAAIC,GAAE,CAAC,GAAGD,EAAE,EAAE,SAASE,GAAE,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,EAAE,aAAarC,EAAE,gBAAgB,EAAE,UAAU,EAAE,GAAG,OAAO,EAAE,EAAE,GAAG,KAAK,kBAAkBe,EAAE,sBAAsB,CAAC,EAAE,UAAU,KAAK,IAAI,CAAC,CAAC,CAAC,eAAeuB,GAAG,EAAE,CAAC,IAAI,EAAEvE,EAAE,CAAC,EAAE,GAAG,CAAC,GAAG,EAAEgD,EAAE,mBAAmB,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,uBAAuB,EAAE,KAAK,CAAC,EAAE,OAAO,IAAItC,EAAE,iBAAiB2D,GAAE,GAAG,CAAC,GAAG,EAAEL,GAAE,KAAK,CAAC,EAAEnD,EAAEX,EAAED,EAAE,CAAC,EAAEqE,GAAE5D,EAAE,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,EAAE,MAAM,GAAG,KAAK,IAAI,EAAE,GAAG,CAAC,EAAEI,EAAE,MAAML,EAAEH,EAAE,MAAM,EAAE,CAAC,WAAW,GAAG,OAAOO,CAAC,CAAC,EAAE,GAAGC,EAAE,kBAAkBA,EAAE,OAAO,cAAc,EAAE,iBAAiB,OAAOL,EAAEH,EAAE,MAAM,EAAE,CAAC,OAAO,CAAC,QAAQ,yBAAyBA,EAAE,KAAK,+DAA+D,OAAOQ,CAAC,CAAC,CAAC,EAAE,OAAO,EAAEkD,GAAE,KAAK,CAAC,EAAEnD,EAAEX,EAAED,EAAE,CAAC,EAAEqE,GAAE5D,EAAE,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,EAAE,MAAM,GAAG,KAAK,IAAI,EAAE,GAAG,CAAC,EAAEkB,GAAE,IAAIf,CAAC,EAAE,CAAC,QAAQ,QAAQ,EAAE,SAAS,EAAE,IAAI,GAAG,EAAE,eAAe,EAAER,EAAE,KAAK,GAAG,WAAW,IAAIA,EAAE,KAAK,GAAG,EAAE,EAAE,EAAE,KAAK,CAAC,IAAI,SAAS,OAAO,EAAE,cAAc,EAAEQ,CAAC,EAAE,IAAI,OAAO,OAAO,EAAE,cAAc,EAAEA,CAAC,EAAE,IAAI,QAAQ,OAAO,EAAE,cAAc,EAAE,MAAMA,CAAC,EAAE,IAAI,SAAS,OAAO,EAAE,cAAcA,CAAC,CAAC,CAAC,OAAOH,EAAE,CAACD,EAAEH,EAAE,YAAY,EAAE,CAAC,OAAOJ,EAAED,EAAE,CAAC,EAAED,CAAC,EAAE,CAAC,MAAMU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,WAAW,KAAK,YAAY,CAAC,EAAE,KAAK,WAAWR,EAAED,EAAE,CAAC,EAAE,KAAK,UAAU,EAAE,CAAC,YAAYM,EAAE,IAAI,OAAO,CAAC,OAAOc,EAAE,OAAO,EAAE,IAAI,YAAY,CAAC,OAAOA,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK,WAAW,WAAW,EAAE,QAAQkD,GAAG,EAAE,SAAS,QAAQ,CAAC,IAAItC,EAAE,gBAAgB,GAAG,CAAC,EAAE,EAAE,SAAS,SAAS,CAAC,QAAQA,EAAE,gBAAgB,GAAG,CAAC,EAAE,EAAE,SAAS,SAAS,CAAC,SAASA,EAAE,gBAAgB,IAAI,UAAUA,EAAE,gBAAgB,IAAI,YAAYA,EAAE,gBAAgB,GAAG,CAAC,EAAE,KAAK,WAAW,SAAS,CAAC,aAAaK,GAAE,OAAO6B,GAAE,OAAOlC,EAAE,OAAO3B,EAAE,sBAAsB,EAAE,SAAS,IAAI,gBAAgB,CAAC,OAAO,EAAE,MAAM,CAAC,GAAG,IAAIkE,GAAG,KAAK,WAAW,sbCAn0V,SAASC,GAAUC,EAAM,CAC9B,IAAID,EAAW,SAAS,cAAc,UAAU,EAChD,OAAAA,EAAS,UAAYC,EACdD,CACT,CAEO,SAASE,GAAYD,EAAME,EAAQ,CACxCA,EAASA,GAAU,SAAS,KAE5B,IAAMC,EADQJ,GAASC,CAAI,EAAE,QAAQ,UAAU,EAAI,EAC/B,cAAc,GAAG,EACrC,OAAOE,EAAO,YAAYC,CAAK,CACjC,CAEO,SAASC,EAAcC,EAASC,EAAU,CAAC,EAAG,CACnD,GAAI,CAACD,EAAS,OACdE,EAAgBF,CAAO,EACvB,GAAI,CAAE,QAAAG,EAAS,cAAAC,CAAc,EAAIH,EAEjCE,EAAUA,GAAW,iBACrBC,EAAgBA,GAAiB,MAEjCJ,EAAQ,eAAiBA,EAAQ,gBAAkB,CACjD,QAASA,EAAQ,MAAM,QACvB,UAAWA,EAAQ,MAAM,UACzB,SAAUA,EAAQ,MAAM,SACxB,QAASA,EAAQ,MAAM,QACvB,cAAeA,EAAQ,MAAM,aAC/B,EAGE,iBAAiBA,CAAO,EAAE,QAAQ,MAAM,WAAW,GACnDA,EAAQ,cAAgB,GACxBA,EAAQ,eAAiB,IAEzBA,EAAQ,MAAM,QAAU,eACxBA,EAAQ,MAAM,UAAY,MAC1BA,EAAQ,MAAM,SAAW,OAE3BA,EAAQ,MAAM,QAAUG,EACxBH,EAAQ,MAAM,cAAgBI,EAC9BJ,EAAQ,QAAQ,oBAAsB,EACxC,CAEO,SAASE,EAAiBF,EAAS,CACxC,GAAKA,EACL,CAAA,GAAIA,EAAQ,eAAgB,CAC1B,OAAW,CAACK,EAAKC,CAAK,IAAK,OAAO,QAAQN,EAAQ,cAAc,EAC9DM,EAASN,EAAQ,MAAMK,CAAG,EAAIC,EAAUN,EAAQ,MAAMK,CAAG,EAAI,GAC/D,OAAOL,EAAQ,cAAA,CAEjB,OAAOA,EAAQ,QAAQ,mBAAA,CACzB,CAEO,SAASO,EAAaP,EAAS,CACpC,GAAI,CAACA,EAAS,MAAO,CAAC,EACtB,IAAMQ,EAAOR,EAAQ,sBAAsB,EACrCS,EAAQT,EAAQ,YAChBU,EAASV,EAAQ,aACjBW,EAAMH,EAAK,IAAM,OAAO,QACxBI,EAAOJ,EAAK,KAAO,OAAO,QAC1BK,EAAQD,EAAOH,EACfK,EAASH,EAAMD,EACrB,MAAO,CAAE,IAAAC,EAAK,KAAAC,EAAM,MAAAC,EAAO,OAAAC,EAAQ,MAAAL,EAAO,OAAAC,CAAO,CACnD,CAEO,SAASK,EAASC,EAAU,CACjC,GAAI,CACFA,EAAS,CACX,OAAQC,EAAN,CAAO,CACX,CCrEA,IAAqBC,GAArB,cAA4C,WAAY,CACtD,aAAe,CACb,MAAM,EACN,KAAK,aAAa,CAAE,KAAM,MAAO,CAAC,EAClC,KAAK,WAAW,UAAY,KAAK,KACjC,KAAK,aAAa,iBAAiB,QAASC,GAAS,CACnDA,EAAM,eAAe,EACrB,KAAK,OAAO,CACd,CAAC,EACD,KAAK,gBAAgB,iBAAiB,SAAUA,GAC9C,KAAK,cAAc,IAAI,YAAY,SAAU,CAAE,QAAS,EAAK,CAAC,CAAC,CACjE,CACF,CAEA,QAAU,CACR,KAAK,QAAU,KAAK,QAAQ,EAAI,KAAK,MAAM,CAC7C,CAEA,OAAS,CACP,KAAK,gBAAgB,QAAU,GAC/B,KAAK,cAAc,IAAI,YAAY,SAAU,CAAE,QAAS,EAAK,CAAC,CAAC,CACjE,CAEA,SAAW,CACT,KAAK,gBAAgB,QAAU,GAC/B,KAAK,cAAc,IAAI,YAAY,SAAU,CAAE,QAAS,EAAK,CAAC,CAAC,CACjE,CAEA,IAAI,MAAQ,CACV,OAAO,KAAK,aAAa,MAAM,CACjC,CAEA,IAAI,SAAW,CACb,OAAO,KAAK,gBAAgB,OAC9B,CAEA,IAAI,iBAAmB,CACrB,OAAO,KAAK,WAAW,cAAc,OAAO,CAC9C,CAEA,IAAI,cAAgB,CAClB,OAAO,KAAK,WAAW,cAAc,OAAO,CAC9C,CAEA,IAAI,MAAQ,CACV,MAAO;eACI,KAAK,UAAA;;;;;KAMlB,CAEA,IAAI,YAAc,CAChB,MAAO;;;;;;;;;;;;;;;;;KAkBT,CACF,ECxEqBC,GAArB,cAA+C,WAAY,CACzD,aAAe,CACb,MAAM,EACN,KAAK,gBAAkB,CAAC,EACxB,KAAK,aAAa,CAAE,KAAM,MAAO,CAAC,EAClC,KAAK,WAAW,UAAY,KAAK,KACjC,KAAK,WAAW,cAAc,QAAQ,EAAE,iBAAiB,QAAS,IAChE,KAAK,cACH,IAAI,YAAY,6BAA8B,CAC5C,QAAS,EACX,CAAC,CACH,CACF,EAEA,KAAK,iBAAiB,SAAUD,GAAS,CACvC,IAAME,EAAiBF,EAAM,OACvB,CAAE,QAAAG,EAAS,KAAAC,CAAK,EAAIF,EAC1BC,EAAU,KAAK,cAAcC,CAAI,EAAI,KAAK,eAAeA,CAAI,CAC/D,CAAC,CACH,CAEA,cAAeA,EAAM,CACf,KAAK,gBAAgBA,CAAI,IAC7B,KAAK,gBAAgBA,CAAI,EAAI,GAC7B,KAAK,cACH,IAAI,YAAY,6BAA8B,CAC5C,QAAS,GACT,OAAQ,CAAE,KAAMA,CAAK,CACvB,CAAC,CACH,EACF,CAEA,eAAgBA,EAAM,CACf,KAAK,gBAAgBA,CAAI,IAC9B,OAAO,KAAK,gBAAgBA,CAAI,EAChC,KAAK,cACH,IAAI,YAAY,8BAA+B,CAC7C,QAAS,GACT,OAAQ,CAAE,KAAMA,CAAK,CACvB,CAAC,CACH,EACF,CAEA,OAAS,CACP,KAAK,gBAAgB,QAAQC,GAAM,CAC7BA,EAAG,SAASA,EAAG,QAAQ,CAC7B,CAAC,EACD,KAAK,OAAO,CACd,CAEA,IAAI,iBAAmB,CACrB,OAAO,KAAK,iBAAiB,kBAAkB,CACjD,CAEA,IAAI,cAAgB,CAClB,OAAO,KAAK,cAAc,QAAQ,CACpC,CAEA,IAAI,MAAQ,CACV,MAAO;eACI,KAAK,UAAA;;;;;;KAOlB,CAEA,IAAI,YAAc,CAChB,MAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA8DT,CACF,ECvIqBC,GAArB,cAA4C,WAAY,CACtD,aAAe,CACb,MAAM,EACN,KAAK,aAAa,CAAE,KAAM,MAAO,CAAC,EAClC,KAAK,WAAW,UAAY,KAAK,IACnC,CAEA,mBAAqB,CACnB,IAAMC,EAAiB,aAAa,QAClC,wBAAwB,SAAS,IAAA,IAAQ,KAAK,EAAA,YAChD,EAEIA,IACF,KAAK,MAAM,UAAYA,EAE3B,CAEA,sBAAwB,CAClB,KAAK,KAAO,aAAe,KAAK,KAAO,IACzC,aAAa,QACX,wBAAwB,SAAS,IAAA,IAAQ,KAAK,EAAA,aAC9C,KAAK,MAAM,SACb,CAEJ,CAEA,IAAI,OAAS,CACX,OAAO,KAAK,aAAa,OAAO,GAAK,eACvC,CAEA,IAAI,iBAAmB,CACrB,OAAO,KAAK,aAAa,kBAAkB,GAAK,WAClD,CAEA,IAAI,UAAY,CACd,OAAO,KAAK,aAAa,UAAU,GAAK,KAC1C,CAEA,IAAI,MAAQ,CACV,MAAO;eACI,KAAK,UAAA;;;;;;;;;;;KAYlB,CAEA,IAAI,YAAc,CAChB,MAAO;;;;;;;;iBAQM,KAAK,KAAA;;;;;4BAKM,KAAK,eAAA;;;;;;;;8BAQH,KAAK,KAAA;;;;;;;;;;;iBAWlB,KAAK,KAAA;;;;;;;;;;;;oCAYc,KAAK,KAAA;iCACR,KAAK,KAAA;iBACrB,KAAK,KAAA;;;;;;;;;;;;;;;;;;;iBAmBL,KAAK,KAAA;;;;;;;;;;;iBAWL,KAAK,KAAA;;;;;;KAOpB,CACF,EC3IMC,EAAQ,CAAC,EAETC,GAAe,CACnB,WAAY,CACV,IACE,8EACF,UACE,kGACF,OAAQ,YACV,EAEA,eAAgB,CACd,IACE,6EACF,OAAQ,gBACV,CACF,EAEA,SAASC,GAAQC,EAAY,CAE3B,OADIA,EAAW,QAAU,KAAKA,EAAW,MAAM,GAC3C,SAAS,cAAc,SAASA,EAAW,GAAA,IAAO,EAAU,GACzDH,EAAM,SAASG,CAAU,CAClC,CAEA,SAASC,GAAKD,EAAY,CACxB,GAAID,GAAOC,CAAU,EAAG,OACxBH,EAAM,KAAKG,CAAU,EAErB,GAAM,CAAE,IAAAE,EAAK,UAAAC,CAAU,EAAIH,EACrBI,EAAS,SAAS,cAAc,QAAQ,EAC9CA,EAAO,aAAa,MAAOF,CAAG,EAC9BE,EAAO,aAAa,cAAe,WAAW,EAC9CA,EAAO,aAAa,iBAAkB,aAAa,EAC/CD,GAAWC,EAAO,aAAa,YAAaD,CAAS,EACzD,SAAS,KAAK,YAAYC,CAAM,CAClC,CAEA,SAASC,GAAQL,EAAY,CAC3B,GAAI,CAACH,EAAM,SAASG,CAAU,EAAG,OACjCH,EAAM,OAAOA,EAAM,QAAQG,CAAU,EAAG,CAAC,EAEzC,GAAM,CAAE,IAAAE,CAAI,EAAIF,EACVN,EAAK,SAAS,cAAc,eAAeQ,CAAAA,IAAO,EACpDR,GAAIA,EAAG,OAAO,EACdM,EAAW,QAAU,KAAKA,EAAW,MAAM,IAC7C,KAAKA,EAAW,MAAM,EAAI,KAC9B,CAEA,SAASM,IAAa,CACnB,CAAC,GAAGT,CAAK,EAAE,QAAQG,GAAcK,GAAOL,CAAU,CAAC,CACtD,CAEA,IAAOO,EAAQC,EAAAC,EAAA,CAAA,EAAKX,EAAAA,EAAL,CAAmB,IAAAG,GAAK,OAAAI,GAAQ,UAAAC,EAAU,CAAA,EC9CzD,eAAe,OAAO,sBAAuBlB,EAAc,EAC3D,eAAe,OAAO,iCAAkCE,EAAiB,EACzE,eAAe,OAAO,8BAA+BK,EAAc,EAEnE,IAAIe,EAEJ,SAASC,IAAiB,CACxB,GAAKD,EACL,GAAI,CACF,IAAI,eAAeA,CAAiB,CACtC,OAAQ,EAAN,CACA,WAAWC,GAAe,GAAG,CAC/B,CACF,CAEA,SAASC,IAAQ,CACXC,GAAQ,IACZH,EAAkB,MAAM,EACxBA,EAAkB,cAChB,IAAI,YAAY,4BAA6B,CAC3C,QAAS,EACX,CAAC,CACH,EACAA,EAAoB,KACpBH,EAAa,UAAU,EACzB,CAEA,SAASO,IAAS,CACZC,EAAQ,IACZR,EAAa,IAAIA,EAAa,UAAU,EACxCA,EAAa,IAAIA,EAAa,cAAc,EAC5CG,EAAoB5C,GAClB,mEACF,EACA,WAAW6C,GAAe,GAAG,EAC7BD,EAAkB,cAChB,IAAI,YAAY,6BAA8B,CAC5C,QAAS,EACX,CAAC,CACH,EACF,CAEA,SAASM,IAAW,CAClB,IAAMC,EAAcP,EAChB,OAAO,KAAKA,EAAkB,eAAe,EAC7C,CAAC,EAELE,GAAK,EACLE,GAAM,EAENJ,EAAkB,gBAAgB,QAAQhB,GAAM,CAC1CuB,EAAY,SAASvB,EAAG,IAAI,GAAGA,EAAG,MAAM,CAC9C,CAAC,CACH,CAEA,SAASqB,GAAW,CAClB,MAAO,CAAC,CAACL,CACX,CAEA,SAASG,IAAW,CAClB,MAAO,CAACE,EAAQ,CAClB,CAEA,IAAIG,GACJ,SAASC,IAAoB,CAC3B,aAAaD,EAAc,EAC3BA,GAAiB,WAAWF,GAAS,EAAE,CACzC,CAEA,SAASI,GAAe,CAClBL,EAAQ,GAAGI,GAAiB,CAClC,CAEA,iBAAiB,aAAcC,CAAW,EAC1C,iBAAiB,mBAAoBA,CAAW,EAChD,iBAAiB,+BAAgCA,CAAW,EAC5D,iBAAiB,6BAA8BR,EAAI,EAE/C,OAAO,aACT,iBAAiB,WAAW,SAAS,OAAO,QAASQ,CAAW,EAChE,iBAAiB,WAAW,SAAS,OAAO,OAAQA,CAAW,GAGjE,SAASC,GAAU5B,EAAM6B,EAAO,CAC9B,GAAKZ,EACL,OAAO5C,GACL;mCAC+B2B,CAAAA;6BACN6B,CAAAA;;MAGzBZ,CACF,CACF,CAEA,SAASa,GAAS9B,EAAM,CACtB,OAAKiB,EACEA,EAAkB,gBAAgBjB,CAAI,EADd,EAEjC,CAEA,IAAO+B,EAAQ,CACb,QAAAD,GACA,SAAAF,GACA,MAAAP,GACA,KAAAF,GACA,QAASO,GACT,IAAI,SAAW,CACb,OAAOJ,EAAQ,CACjB,EACA,IAAI,SAAW,CACb,OAAOF,GAAQ,CACjB,CACF,EC5GA,SAASY,EAAeC,EAAOC,EAAUC,EAASzD,EAAU,CAAC,EAAG,CAC9D,GAAI,CAAE,gBAAA0D,EAAiB,MAAAC,EAAO,SAAAC,EAAU,GAAAC,CAAG,EAAI7D,EAC/C,OAAA2D,EAAQA,GAAS,QACjBC,EAAWA,GAAY,MAChBjE,GAAW;uCACmBkE,CAAAA,eAAiBD,CAAAA,uBAA+BF,CAAAA,YAA2BC,CAAAA;0BACxFJ,CAAAA;6BACGC,CAAAA;QACrBC,CAAAA;;GAEL,CACH,CAEA,IAAIK,EAEiBC,GAArB,KAA6B,CAC3B,YAAaC,EAAU,CACrB,KAAK,SAAWA,EAEhB,IAAIC,EACEC,EAAgB,IAAM,CAC1B,aAAaD,CAAW,EACxBA,EAAc,WAAW,KAAK,KAAK,CAAE,OAAQ,EAAM,CAAC,EAAG,EAAE,CAC3D,EAEA,KAAK,eAAe,4BAA4B,EAAI/C,GAAS,CAE3D,GAAM,CAAE,KAAAI,CAAK,EAAIJ,EAAM,OACnBI,IAAS,KAAK,SAAS,OAE3BxB,EAAa,KAAK,SAAS,eAAgB,CACzC,QAAS,wBACT,cAAe,KACjB,CAAC,EAED,KAAK,KAAK,CAAE,OAAQ,EAAM,CAAC,EACvB,KAAK,QAAQ,KAAK,KAAK,EAC7B,EAEA,KAAK,eAAe,6BAA6B,EAAIoB,GAAS,CAC5D,GAAM,CAAE,KAAAI,CAAK,EAAIJ,EAAM,OACnBI,IAAS,KAAK,SAAS,MACzBrB,EAAgB,KAAK,SAAS,cAAc,CAChD,EAEA,KAAK,eAAe,MAAWiB,GAAS,CAClCA,EAAM,OAAO,QAAQ,6BAA6B,GACtDgD,EAAc,CAChB,EAEA,KAAK,eAAe,YAAY,EAAIA,EACpC,KAAK,eAAe,kBAAkB,EAAIA,EACtC,OAAO,aACT,KAAK,eAAe,WAAW,SAAS,OAAO,MAAM,EAAIA,GAG3D,KAAK,uBAAuB,CAC9B,CAEA,wBAA0B,CACxB,OAAO,QAAQ,KAAK,cAAc,EAAE,QAAQ,CAAC,CAACC,EAAMC,CAAQ,IAAM,CAChE,iBAAiBD,EAAMC,CAAQ,CACjC,CAAC,CACH,CAEA,0BAA4B,CAC1B,OAAO,QAAQ,KAAK,cAAc,EAAE,QAAQ,CAAC,CAACD,EAAMC,CAAQ,IAAM,CAChE,oBAAoBD,EAAMC,CAAQ,CACpC,CAAC,CACH,CAEA,IAAI,gBAAkB,CACpB,OAAO,KAAK,kBAAoB,KAAK,gBAAkB,CAAC,EAC1D,CAEA,MAAQ,CAGN,GAFI,CAAC,KAAK,SAEN,KAAK,OAAQ,OACjB,KAAK,OAAS,GAEd,KAAK,KAAK,CAAE,OAAQ,EAAK,CAAC,EAE1BtE,EAAa,KAAK,SAAS,cAAe,CACxC,QAAS,sBACT,cAAe,MACjB,CAAC,EAEDA,EAAa,KAAK,SAAS,aAAc,CACvC,QAAS,uBACT,cAAe,KACjB,CAAC,EAED,KAAK,iBAAmB,KAAK,uBAAuB,EACpD,KAAK,cAAgB,KAAK,oBAAoB,EAC9C,KAAK,eAAiB,KAAK,qBACzB,KAAK,cACL,KAAK,gBACP,EAEA,SACG,iBAAiB,cAAc,EAC/B,QAAQyB,GAAOA,EAAG,MAAM,OAAS,GAAO,EAE3C,IAAM8C,EAAO,CACX,MAAO,CACL,QAAS,KAAK,SAAS,eAAe,QACtC,GAAI,KAAK,SAAS,eAAe,OACjC,OAAQ,KAAK,SAAS,aAAe,KAAO,WAC9C,EACA,QAAS,CAAE,QAAS,KAAM,GAAI,KAAM,OAAQ,WAAY,EACxD,OAAQ,CAAE,QAAS,KAAM,GAAI,KAAM,OAAQ,WAAY,CACzD,EAEI,KAAK,SAAS,iBAChBA,EAAK,QAAU,CACb,QAAS,KAAK,SAAS,eAAe,QACtC,GAAI,KAAK,SAAS,eAAe,GACjC,OAAQ,IACV,EACAA,EAAK,OAAO,GAAK,KAAK,SAAS,eAAe,UAG5C,KAAK,SAAS,gBAChBA,EAAK,OAAS,CACZ,QAAS,KAAK,SAAS,cAAc,QACrC,OAAQ,KAAK,SAAS,cAAc,GACpC,OAAQ,IACV,GAEF,QAAQ,MAAMA,CAAI,CACpB,CAEA,KAAM,CAAE,OAAQC,EAAS,EAAM,EAAG,CAChC,SACG,iBAAiB,6BAA6B,EAC9C,QAAQC,GAAW,CAClBzD,EAAQ,IAAMyD,EAAQ,KAAK,OAAO,CAAC,EACnCzD,EAAQ,IAAMyD,EAAQ,KAAK,OAAO,CAAC,EACnCzD,EAAQ,IAAMyD,EAAQ,gBAAgB,OAAO,CAAC,EAC9CzD,EAAQ,IAAMyD,EAAQ,aAAa,OAAO,CAAC,EAC3CzD,EAAQ,IAAMyD,EAAQ,OAAO,CAAC,CAChC,CAAC,EAEH,SAAS,iBAAiB,8BAA8B,EAAE,QAAQhD,GAAM,CACjEA,EAAG,QAAQ,MAAM,6BAA6B,GAAGtB,EAAgBsB,CAAE,CAC1E,CAAC,EAED,KAAK,OAAS+C,CAChB,CAEA,IAAI,QAAU,CACZ,OAAOR,IAAiB,KAAK,QAC/B,CAEA,IAAI,OAAQzD,EAAO,CACbA,EAAOyD,EAAe,KAAK,SAC1BA,EAAe,IACtB,CAEA,IAAI,SAAW,CACb,OAAOT,EAAW,QAAQ,KAAK,SAAS,IAAI,CAC9C,CAEA,OAAO,SAAU/B,EAAM6B,EAAO,CAC5BE,EAAW,SAAS/B,EAAM6B,CAAK,CACjC,CAEA,wBAA0B,CACxB,GAAI,CAAC,KAAK,SAAS,eAAe,QAChC,OAAO,QAAQ,MACb,+FACF,EAEF,GAAI,CAAC,KAAK,SAAS,eAAe,OAChC,OAAO,QAAQ,MACb,oIAAoI,KAAK,eAAe,MAAA,GAC1J,EAEF,IAAMI,EAAQ;;wBAEM,KAAK,SAAS,eAAe,QAAQ,YAAY,CAAA;MAE/DC,EAAW;wBACG,KAAK,SAAS,eAAe,SAAW,SAAA;uBACzC,KAAK,SAAS,eAAe,QAAU,SAAA;MAOpDe,EAAUjB,EAAcC,EAAOC,EALrB;;;;MAKwC,CACtD,GAAI,GAAG,KAAK,SAAS,EAAA,aACrB,gBAAiB,cACjB,MAAO,WACT,CAAC,EAEKgB,EAASlE,EAAY,KAAK,SAAS,YAAY,EAC/CI,EAAM,KAAK,KACf8D,EAAO,IAAMA,EAAO,OAAS,EAAID,EAAQ,aAAe,CAC1D,EACM5D,EAAO,KAAK,KAAK6D,EAAO,KAAOA,EAAO,MAAQ,GAAG,EACvD,OAAAD,EAAQ,MAAM,IAAM,GAAG7D,CAAAA,KACvB6D,EAAQ,MAAM,KAAO,GAAG5D,CAAAA,KAExB4D,EAAQ,KAAO,IAAI,WAAWA,EAAS,KAAK,SAAS,aAAclC,EAAAC,EAAA,CAAA,EAC9D,KAAK,iBAAA,EADyD,CAEjE,MAAO,WACT,CAAA,CAAC,EAEDiC,EAAQ,KAAO,IAAI,eAAeA,CAAO,EAClCA,CACT,CAEA,qBAAuB,CAjOzB,IAAAE,EAAAC,EAkOI,GAAI,CAAC,KAAK,SAAS,cACjB,OAAO,QAAQ,MACb,wEAAwE,KAAK,SAAS,eAAe,QAAA,GACvG,EAEF,IAAMnB,EAAQ;;qBAEG,KAAK,SAAS,cAAc,QAAQ,YAAY,CAAA;MAG3DgB,EAAUjB,EACdC,IACAkB,EAAA,KAAK,SAAS,oBAAd,KAAA,OAAAA,EAAiC,WAAY,KAC7CC,EAAA,KAAK,SAAS,oBAAd,KAAA,OAAAA,EAAiC,UAAW,GAC5C,CACE,GAAI,GAAG,KAAK,SAAS,EAAA,UACrB,gBAAiB,YACjB,MAAO,WACP,SAAU,QACZ,CACF,EAEMF,EAASlE,EAAY,KAAK,SAAS,aAAa,EAChDI,EAAM,KAAK,KAAK8D,EAAO,IAAMD,EAAQ,YAAY,EACjD5D,EAAO,KAAK,KAAK6D,EAAO,KAAOA,EAAO,MAAQD,EAAQ,YAAc,CAAC,EAC3E,OAAAA,EAAQ,MAAM,IAAM,GAAG7D,CAAAA,KACvB6D,EAAQ,MAAM,KAAO,GAAG5D,CAAAA,KAExB4D,EAAQ,KAAO,IAAI,WAAWA,EAAS,KAAK,SAAS,cAAelC,EAAAC,EAAA,CAAA,EAC/D,KAAK,iBAAA,EAD0D,CAElE,MAAO,UACT,CAAA,CAAC,EAEDiC,EAAQ,KAAO,IAAI,eAAeA,CAAO,EAClCA,CACT,CAEA,qBAAsBI,EAAeC,EAAkB,CAvQzD,IAAAH,EAAAC,EAwQI,GAAI,CAAC,KAAK,SAAS,eAAgB,OACnC,IAAMnB,EAAQ;;sBAEI,KAAK,SAAS,eAAe,QAAQ,YAAY,CAAA;MAG7DgB,EAAUjB,EACdC,IACAkB,EAAA,KAAK,SAAS,qBAAd,KAAA,OAAAA,EAAkC,WAAY,KAC9CC,EAAA,KAAK,SAAS,qBAAd,KAAA,OAAAA,EAAkC,UAAW,GAC7C,CACE,GAAI,GAAG,KAAK,SAAS,EAAA,WACrB,gBAAiB,WACjB,MAAO,YACT,CACF,EAEMF,EAASlE,EAAY,KAAK,SAAS,cAAc,EACjDI,EAAM,KAAK,KAAK8D,EAAO,IAAMD,EAAQ,aAAe,CAAC,EACrD5D,GAAO,KAAK,KAAK6D,EAAO,KAAOA,EAAO,MAAQD,EAAQ,YAAc,CAAC,EAC3E,OAAAA,EAAQ,MAAM,IAAM,GAAG7D,CAAAA,KACvB6D,EAAQ,MAAM,KAAO,GAAG5D,EAAAA,KAExB4D,EAAQ,KAAO,IAAI,WAAW,KAAK,SAAS,eAAgBA,EAASlC,EAAAC,EAAA,CAAA,EAChE,KAAK,iBAAA,EAD2D,CAEnE,MAAO,YACT,CAAA,CAAC,EAEGqC,IACFJ,EAAQ,aAAe,IAAI,WAAWA,EAASI,EAAetC,EAAAC,EAAA,CAAA,EACzD,KAAK,iBAAA,EADoD,CAE5D,MAAO,aACP,YAAa,KAAK,SAAS,gBAC3B,KAAM,GACR,CAAA,CAAC,EAEDqC,EAAc,KAAK,OAAS,IAAM,CA5SxC,IAAAF,EAAAC,GA6SQC,EAAc,KAAK,SAAS,GAC5BF,EAAAF,EAAQ,eAAR,MAAAE,EAAsB,SAAA,GACtBC,GAAAH,EAAQ,kBAAR,MAAAG,GAAyB,SAAA,CAC3B,GAGEE,IACFL,EAAQ,gBAAkB,IAAI,WAAWA,EAASK,EAAkBvC,EAAAC,EAAA,CAAA,EAC/D,KAAK,iBAAA,EAD0D,CAElE,MAAO,aACP,YAAa,KAAK,SAAS,mBAC3B,KAAM,GACR,CAAA,CAAC,EAEDsC,EAAiB,KAAK,OAAS,IAAM,CA3T3C,IAAAH,EA4TQG,EAAiB,KAAK,SAAS,EAC3BL,EAAQ,cAAcA,EAAQ,aAAa,SAAS,GACxDE,EAAAF,EAAQ,kBAAR,MAAAE,EAAyB,SAAA,CAC3B,GAGFF,EAAQ,KAAO,IAAI,eAAeA,CAAO,EACzCA,EAAQ,KAAK,OAAS,IAAM,CAC1BA,EAAQ,KAAK,SAAS,EAClBA,EAAQ,cAAcA,EAAQ,aAAa,SAAS,EACpDA,EAAQ,iBAAiBA,EAAQ,gBAAgB,SAAS,CAChE,EAEOA,CACT,CAEA,IAAI,mBAAqB,CACvB,MAAO,CACL,KAAM,CAAE,UAAW,EAAK,EACxB,WAAY,CAAE,QAAS,EAAI,EAC3B,QAAS,SACT,YAAa,IACb,KAAM,EACN,UAAW,OACX,cAAe,CACjB,CACF,CACF,ECpVM,CAAE,QAAA1B,GAAS,MAAAF,GAAO,KAAAF,EAAK,EAAIY,EAEjC,SAASwB,GAA4B9E,EAASuB,EAAM6B,EAAO,CACzD,OAAO,OAAOpD,EAAS,CACrB,mBAAqB,CACnB,IAAM+E,EAAa,IAAM,KAAK,QAAQ,KAAK,EAE3C,iBAAiB,6BAA8B,IAAM,CACnD,KAAK,QAAU,IAAIf,GAAQ,IAAI,EAC/B,KAAK,iBAAiB,aAAce,CAAU,CAChD,CAAC,EAED,iBAAiB,4BAA6B,IAAM,CAClD,KAAK,oBAAoB,aAAcA,CAAU,EACjD,KAAK,cAAc,CACrB,CAAC,EAED,KAAK,cACH,IAAI,YAAY,+BAAgC,CAAE,QAAS,EAAK,CAAC,CACnE,CACF,EACA,aAAe,CAxBnB,IAAAL,GAyBMA,EAAA,KAAK,UAAL,MAAAA,EAAc,KAAK,CAAE,OAAQ,EAAM,CAAA,CACrC,EACA,eAAiB,CACf,KAAK,QAAQ,KAAK,CAAE,OAAQ,EAAM,CAAC,EACnC,KAAK,QAAQ,yBAAyB,EACtC,OAAO,KAAK,OACd,EACA,KAAAnD,EACA,gBAAiB6B,CACnB,CAAC,EAED,OAAO,iBAAiBpD,EAAS,CAE/B,eAAgB,CACd,KAAO,CACL,OAAOA,CACT,CACF,EAEA,aAAc,CACZ,KAAO,CACL,OAAOA,CACT,CACF,EAEA,cAAe,CACb,KAAO,CACL,OAAOA,CACT,CACF,CACF,CAAC,CACH,CAIA,IAAOgF,GAAQ,CAAE,QAAAlC,GAAS,MAAAF,GAAO,KAAAF,EAAK,EC5DtC,IAAqBuC,EAArB,cAA+C,WAAY,CACzD,YAAYC,EAAM,CAChB,MAAM,EACN,KAAK,QAAU,UACf,KAAK,aAAa,CAAE,KAAM,MAAO,CAAC,EAClC,KAAK,WAAW,UAAYA,GAAQ,eACtC,CAEA,mBAAoB,CAClB,KAAK,SAAS,CAChB,CAEA,UAAW,CACL,KAAK,GAAG,KAAK,EAAE,SACnB,KAAK,GAAK,GAAG,KAAK,OAAO,IAAI,KAAK,OAAO,CAAC,GAAG,YAAY,EAC3D,CAGA,QAAS,CACP,OAAQ,CAAC,GAAG,EAAI,KAAO,KAAO,KAAO,OAAO,QAAQ,SAAUC,IAC3DA,EAAK,OAAO,gBAAgB,IAAI,WAAW,CAAC,CAAC,EAAE,CAAC,EAAK,IAAOA,EAAI,GAAM,SAAS,EAAE,CACpF,CACF,CAEA,IAAI,WAAY,CACd,IAAMC,EAAQ,KAAK,aAAa,YAAY,EAC5C,OAAKA,EACE,KAAK,MAAMA,CAAK,EADJ,CAAC,CAEtB,CAEA,IAAI,SAAU,CACZ,OAAO,KAAK,UAAU,CAAC,CACzB,CACF,EC/BA,IAAMC,GAAO;AAAA;AAAA;AAAA;AAAA;AAAA,EAOAC,GAAY,IACZC,GAAe,IAEPC,EAArB,cAA2CC,CAAkB,CAC3D,aAAc,CACZ,MAAMJ,EAAI,CACZ,CAIA,iBAAkB,CAChB,aAAa,KAAK,sBAAsB,EACxC,aAAa,KAAK,sBAAsB,EAEnC,KAAK,cAEV,KAAK,cAAgB,KAAK,IAAI,EAAIC,GAClC,KAAK,uBAAyB,WAAW,IAAM,CAC7C,KAAK,gBAAgB,OAAS,GAC9B,KAAK,mBAAmB,OAAS,EACnC,EAAGA,EAAS,EACd,CAEA,iBAAkB,CAIhB,GAHA,aAAa,KAAK,sBAAsB,EACxC,aAAa,KAAK,sBAAsB,EAEpC,CAAC,KAAK,YAAa,OAEvB,IAAII,EAAQH,IAAgB,KAAK,IAAI,EAAI,KAAK,eAC1CG,EAAQ,IAAGA,EAAQ,GAEvB,OAAO,KAAK,cACZ,KAAK,uBAAyB,WAAW,IAAM,CAC7C,KAAK,gBAAgB,OAAS,GAC9B,KAAK,mBAAmB,OAAS,EACnC,EAAGA,CAAK,CACV,CAEA,IAAI,aAAc,CAChB,OAAO,KAAK,cAAc,wBAAwB,CACpD,CAEA,IAAI,iBAAkB,CACpB,OAAO,KAAK,WAAW,cAAc,mBAAmB,CAC1D,CAEA,IAAI,oBAAqB,CACvB,OAAO,KAAK,WAAW,cAAc,kBAAkB,CACzD,CAGA,IAAI,MAAO,CACT,OAAO,KAAK,aAAa,MAAM,IAAM,MACvC,CAGA,IAAI,KAAKC,EAAO,CACdA,EAAQ,CAAC,CAACA,EACN,KAAK,OAASA,IAClB,KAAK,aAAa,OAAQA,CAAK,EAC3BA,EAAO,KAAK,gBAAgB,EAC3B,KAAK,gBAAgB,EAC5B,CAEA,IAAI,eAAgB,CAClB,OAAK,KAAK,QAAQ,cACX,OAAO,KAAK,QAAQ,aAAa,EADA,CAE1C,CAEA,IAAI,cAAcA,EAAO,CACvB,KAAK,QAAQ,cAAgBA,CAC/B,CACF,EChFA,IAAqBC,EAArB,cAAiDC,CAAc,CAC7D,mBAAoB,CAClB,MAAM,kBAAkB,EAExB,KAAK,kBAAoB,KAAK,aAAa,KAAK,IAAI,EACpD,KAAK,iBAAiB,aAAc,KAAK,iBAAiB,EAE1D,KAAK,gBAAkB,KAAK,SAAS,KAAK,IAAI,EAC9C,KAAK,mBAAqB,KAAK,YAAY,KAAK,IAAI,EAEpD,KAAK,WAAW,QAAQC,GAAS,CAC/B,IAAMC,EAAQD,EAAM,MAAM,GAAG,EACvBE,EAAOD,EAAM,CAAC,EAEhBA,EAAM,OAAS,GACFA,EAAM,CAAC,EAAE,MAAM,eAAe,EAAI,KAAO,KAAKA,EAAM,CAAC,CAAC,GAC9D,iBAAiBC,EAAM,KAAK,kBAAkB,EAErD,KAAK,iBAAiBA,EAAM,KAAK,eAAe,CAEpD,CAAC,CACH,CAEA,sBAAuB,CACrB,KAAK,oBAAoB,aAAc,KAAK,iBAAiB,EAE7D,KAAK,WAAW,QAAQF,GAAS,CAC/B,IAAMC,EAAQD,EAAM,MAAM,GAAG,EACvBE,EAAOD,EAAM,CAAC,EAEhBA,EAAM,OAAS,GACFA,EAAM,CAAC,EAAE,MAAM,eAAe,EAAI,KAAO,KAAKA,EAAM,CAAC,CAAC,GAC9D,oBAAoBC,EAAM,KAAK,kBAAkB,EAExD,KAAK,oBAAoBA,EAAM,KAAK,eAAe,CAEvD,CAAC,CACH,CAMA,WAAY,CAEZ,CAGA,kBAAmB,CAGnB,CAEA,cAAe,CACb,aAAa,KAAK,eAAe,CACnC,CAEA,SAASC,EAAQ,IAAK,CAEpB,GADA,aAAa,KAAK,eAAe,EAC7B,MAAK,KAGT,IAFI,OAAOA,GAAU,WAAUA,EAAQ,KAEnCA,EAAQ,EAAG,OAAQ,KAAK,gBAAkB,WAAW,IAAM,KAAK,SAAS,CAAC,EAAGA,CAAK,EAEtF,KAAK,UAAY,GACjB,GAAI,CACF,KAAK,SAAW,GAChB,KAAK,eAAe,YAAY,CAClC,OAAQC,EAAA,CAAC,EACX,CAEA,YAAYC,EAAO,CACbA,EAAM,OAAO,QAAQ,6BAA6B,GACtD,KAAK,SAAS,CAAC,CACjB,CAEA,iBAAkB,CAChB,SAAS,iBAAiB,KAAK,gBAAgB,EAAE,QAAQC,GAAM,CACzDA,EAAG,KAAO,KAAK,IACfA,EAAG,UAAUA,EAAG,SAAS,CAAC,CAChC,CAAC,CACH,CAEA,IAAI,kBAAmB,CACrB,OAAO,KAAK,eAAe,kBAAoB,KAAK,aAAa,mBAAmB,CACtF,CAEA,IAAI,eAAgB,CAClB,OAAO,KAAK,aAAa,gBAAgB,CAC3C,CAGA,IAAI,gBAAiB,CACnB,OAAO,SAAS,eAAe,KAAK,SAAS,CAC/C,CAGA,IAAI,iBAAkB,CACpB,OAAO,SAAS,iBAAiB,mBAAmB,KAAK,EAAE,IAAI,CACjE,CAGA,IAAI,WAAY,CACd,OAAO,KAAK,aAAa,gBAAgB,CAC3C,CAEA,IAAI,UAAUC,EAAO,CACnB,OAAO,KAAK,aAAa,iBAAkBA,CAAK,CAClD,CAEA,IAAI,YAAa,CACf,IAAMA,EAAQ,KAAK,aAAa,aAAa,EAC7C,OAAKA,EACE,KAAK,MAAMA,CAAK,EADJ,CAAC,CAEtB,CAEA,IAAI,UAAW,CACb,OAAO,KAAK,eAAiB,KAAK,eAAe,SAAW,EAC9D,CAEA,IAAI,SAASA,EAAO,CAClB,KAAK,gBAAgB,QAAQD,GAAOA,EAAG,SAAWC,CAAM,CAC1D,CAEA,IAAI,MAAO,CACT,OAAO,KAAK,gBAAkB,KAAK,eAAe,IACpD,CACF,ECjIA,IAAIC,GAEJ,SAASC,GAAyBC,EAAQ,CACrB,CAAC,OAAQ,SAAU,OAAQ,WAAY,OAAQ,SAAU,SAAU,QAAS,QAAQ,EAC5F,QAAQC,GAAQD,EAAO,oBAAoBC,CAAI,CAAC,CAC7D,CAEA,SAASC,GAAuBC,EAAS,CACvC,GAAIA,EAAQ,MAAM,SAAW,EAAG,OAEhC,IAAMH,EAASG,EAAQ,OAGnBC,EAAY,CAAC,EACjB,KAAOA,EAAU,CAAC,IAAMJ,EAAO,iBAAiB,EAAE,CAAC,GAAKI,EAAU,CAAC,IAAMJ,EAAO,iBAAiB,EAAE,CAAC,GAClGI,EAAYJ,EAAO,iBAAiB,EACpCA,EAAO,sBAAsB,SAAS,EAIxCA,EAAO,aAAa,GAAG,EACvBA,EAAO,sBAAsB,SAAS,EACtCA,EAAO,iBAAiB,CAACI,EAAU,CAAC,EAAGJ,EAAO,iBAAiB,EAAE,CAAC,CAAC,CAAC,EAGpED,GAAyBC,CAAM,EAG/BA,EAAO,iBAAiB,CAACA,EAAO,iBAAiB,EAAE,CAAC,EAAGA,EAAO,iBAAiB,EAAE,CAAC,CAAC,CAAC,CACtF,CAEA,SAASK,GAAeF,EAAS,CAC/B,aAAaL,EAAY,EAEzBA,GAAe,WAAW,IAAM,CAC9B,GAAI,CAACK,EAAS,OAEdA,EAAQ,MAAM,EACd,IAAMG,EAAoBH,EAAQ,QAAQ,aAAa,EAEvD,GAAI,CACEG,EACFJ,GAAuBI,CAAiB,EAExCH,EAAQ,eAAiBA,EAAQ,aAAeA,EAAQ,MAAM,MAElE,OAASI,EAAG,CACZ,QAAE,CACAJ,EAAQ,eAAe,CAAE,MAAO,SAAU,SAAU,QAAS,CAAC,CAChE,CACF,EAAG,GAAG,CACR,CAEA,IAAOK,GAAQL,GAAWE,GAAeF,CAAO,EChDhD,SAAS,iBAAiB,6BAA8B,IAAMM,GAAQ,SAAS,SAAU,SAAS,CAAC,EAEnG,IAAIC,GAEiBC,EAArB,cAAkDC,CAAc,CAC9D,aAAc,CACZ,MAAM,EAENC,GAA2B,KAAM,SAAU,SAAS,CACtD,CAEA,mBAAoB,CAClB,MAAM,kBAAkB,EAExB,GAAM,CAAE,MAAOC,CAAkB,EAAI,WAAW,SAAS,OACzD,KAAK,oBAAsB,KAAK,eAAe,KAAK,IAAI,EACxD,KAAK,iBAAiBA,EAAmB,KAAK,mBAAmB,EAEjE,GAAM,CAAE,OAAQC,CAAkB,EAAI,WAAW,QAAQ,aACzD,KAAK,oBAAsB,KAAK,eAAe,KAAK,IAAI,EACxD,iBAAiBA,EAAmB,KAAK,mBAAmB,EAO5D,KAAK,kBAAkB,CACzB,CAEA,sBAAuB,CAGrB,WAAW,IAAM,CACf,GAAM,CAAE,MAAOD,CAAkB,EAAI,WAAW,SAAS,OACzD,KAAK,oBAAoBA,EAAmB,KAAK,mBAAmB,EAEpE,GAAM,CAAE,OAAQC,CAAkB,EAAI,WAAW,QAAQ,aACzD,oBAAoBA,EAAmB,KAAK,mBAAmB,EAE/D,KAAK,cAAc,CACrB,EAAG,GAAI,CACT,CAEA,eAAeC,EAAO,CACpBN,GAAuB,KAAK,cAC5B,KAAK,cAAc,UAAY,KAAK,GACpC,KAAK,cAAc,gBAAgB,EACnC,KAAK,KAAO,EAEd,CAGA,eAAeM,EAAO,CAGpB,GADIA,EAAM,OAAO,SAAW,SACxBA,EAAM,OAAO,KAAO,KAAK,OAAQ,OACrC,IAAMC,EAAW,6CAA6C,KAAK,EAAE,KACrE,GAAI,CAACD,EAAM,OAAO,cAAcC,CAAQ,EAAG,OAK3C,IAAMC,EAAW,KAAK,IAAI,EAAI,KAAK,cAC/BC,EAAQC,GAAeF,EACvBC,EAAQ,KAAIA,EAAQ,IACxBH,EAAM,OAAO,OAAS,CAAE,MAAAG,CAAM,EAG9B,WAAW,IAAM,CACf,KAAK,KAAO,GACZ,KAAK,2BAA2B,QAAQE,GAAOA,EAAG,KAAO,EAAM,CACjE,EAAGF,EAAQ,EAAE,EAGb,WAAW,IAAMG,GAAM,KAAK,cAAc,cAAcZ,EAAoB,CAAC,EAAGS,EAAQ,GAAG,CAC7F,CAGA,IAAI,aAAc,CAChB,GAAI,CAAC,KAAK,cAAe,MAAO,CAAC,EACjC,GAAI,CAAC,KAAK,cAAc,UAAW,MAAO,CAAC,EAC3C,IAAMI,EAAU,CAACC,EAAMC,KACjB,KAAK,cAAc,UAAU,SAASA,CAAI,GAAGD,EAAK,KAAKC,CAAI,EACxDD,GAET,OAAO,KAAK,UAAU,OAAOD,EAAQ,KAAK,IAAI,EAAG,CAAC,CAAC,CACrD,CAGA,IAAI,SAAU,CACZ,OAAO,KAAK,aAAa,SAAS,CACpC,CAGA,IAAI,QAAS,CACX,OAAO,KAAK,aAAa,QAAQ,CACnC,CAGA,IAAI,4BAA6B,CAC/B,OAAO,MAAM,KAAK,KAAK,aAAa,iBAAiB,4BAA4B,CAAC,CACpF,CAGA,IAAI,UAAW,CACb,OAAO,KAAK,aAAa,eAAe,CAC1C,CAEA,IAAI,kBAAmB,CACrB,OAAO,KAAK,aAAa,mBAAmB,CAC9C,CAEA,IAAI,eAAgB,CAClB,OAAO,KAAK,aAAa,gBAAgB,GAAK,KAAK,cAAc,aACnE,CAGA,IAAI,UAAW,CACb,OAAO,KAAK,aAAa,UAAU,IAAM,MAC3C,CAEA,IAAI,SAASG,EAAO,CAClB,OAAO,KAAK,aAAa,WAAY,CAAC,CAACA,CAAK,CAC9C,CAGA,IAAI,UAAW,CACb,OAAO,KAAK,aAAa,eAAe,IAAM,MAChD,CAEA,IAAI,SAASA,EAAO,CAClB,KAAK,aAAa,gBAAiB,CAAC,CAACA,CAAK,CAC5C,CAGA,IAAI,WAAY,CACd,MAAO,CAAC,KAAK,QACf,CAGA,IAAI,SAAU,CACZ,OAAO,KAAK,QAAQ,YACtB,CAEA,IAAI,oBAAqB,CACvB,MAAO,kBACT,CAGA,IAAI,cAAe,CACjB,OAAK,KAAK,OACH,SAAS,eAAe,KAAK,MAAM,EADjB,IAE3B,CAGA,IAAI,eAAgB,CAClB,OAAK,KAAK,SACH,SAAS,eAAe,KAAK,QAAQ,EADjB,IAE7B,CAEA,IAAI,oBAAqB,CACvB,IAAIC,EAAU,KAAK,eAAe,UAC/B,QAAQ,EACR,IAAI,CAACF,EAAMG,IACH,KAAK,eAAe,YAAY,SAASH,CAAI,EAChD,uBAAuBG,EAAQ,CAAC,KAAKH,CAAI,SACzC,8BAA8BG,EAAQ,CAAC,KAAKH,CAAI,SACnD,IAAI,EACN,KAAK,EAAE,EAEV,MAAO,CACL,SAAU;AAAA,mBACG,KAAK,eAAe,EAAE;AAAA,8BACX,KAAK,eAAe,QAAQ;AAAA,8BAC5B,KAAK,eAAe,QAAQ;AAAA,yBACjC,KAAK,eAAe,QAAQ;AAAA,MAE/C,QAAS;AAAA;AAAA;AAAA;AAAA;AAAA,QAKPE,CAAO;AAAA,KAEX,CACF,CAEA,IAAI,mBAAoB,CACtB,IAAIA,EAAU,KAAK,cAAc,UAC9B,QAAQ,EACR,IAAI,CAACF,EAAMG,IACH,KAAK,eAAe,YAAY,SAASH,CAAI,EAChD,uBAAuBG,EAAQ,CAAC,KAAKH,CAAI,SACzC,8BAA8BG,EAAQ,CAAC,KAAKH,CAAI,SACnD,IAAI,EACN,KAAK,EAAE,EAEV,MAAO,CACL,SAAU,cAAc,KAAK,cAAc,EAAE;AAAA,gCACnB,KAAK,cAAc,SAAS;AAAA,EAEtD,QAAS;AAAA;AAAA;AAAA;AAAA;AAAA,QAKPE,CAAO;AAAA,KAEX,CACF,CACF,EClNA,eAAe,OAAO,cAAeE,CAAiB,EACtD,eAAe,OAAO,4BAA6BC,CAAmB,EACtE,eAAe,OAAO,6BAA8BC,CAAoB,ECJxE,KAAK,WAAa,KAAK,YAAc,CAAC,EACtC,KAAK,WAAW,SAAWC,GAC3B,KAAK,WAAW,SAAW,CAAC,EAE5B,IAAOC,GAAQ,KAAK,WAAW",
6
- "names": ["Z", "ee", "te", "X", "re", "oe", "_", "r", "s", "u", "O", "t", "a", "i", "l", "f", "d", "o", "B", "k", "c", "A", "F", "D", "g", "N", "J", "E", "h", "ne", "se", "v", "L", "ae", "ie", "S", "M", "T", "R", "de", "m", "j", "me", "ue", "ce", "W", "b", "$", "le", "fe", "be", "pe", "he", "ve", "ge", "y", "Ee", "U", "xe", "x", "Ce", "H", "Te", "V", "ye", "P", "Ae", "ke", "G", "q", "Le", "I", "w", "z", "K", "Se", "Q", "Y", "we", "Qt", "template", "html", "appendHTML", "parent", "child", "addHighlight", "element", "options", "removeHighlight", "outline", "outlineOffset", "key", "value", "coordinates", "rect", "width", "height", "top", "left", "right", "bottom", "attempt", "callback", "e", "DevtoolElement", "event", "SupervisorElement", "devtoolElement", "checked", "name", "el", "TooltipElement", "savedTransform", "added", "dependencies", "exists", "dependency", "add", "src", "integrity", "script", "remove", "removeAll", "dependencies_default", "__spreadProps", "__spreadValues", "supervisorElement", "makeDraggable", "stop", "stopped", "start", "started", "restart", "enabledList", "restartTimeout", "debouncedRestart", "autoRestart", "register", "label", "enabled", "supervisor_default", "appendTooltip", "title", "subtitle", "content", "backgroundColor", "color", "position", "id", "activeTarget", "Devtool", "delegate", "hideTimeout", "debouncedHide", "type", "listener", "data", "active", "tooltip", "coords", "_a", "_b", "targetTooltip", "renderingTooltip", "decorateElementWithDevtool", "mouseenter", "src_default", "TurboBoostElement", "html", "c", "value", "html", "busyDelay", "busyDuration", "ToggleElement", "TurboBoostElement", "delay", "value", "ToggleTargetElement", "ToggleElement", "entry", "parts", "name", "delay", "e", "event", "el", "value", "focusTimeout", "deactivateTrixAttributes", "editor", "name", "focusTrixEditorElement", "element", "lastRange", "debouncedFocus", "trixEditorElement", "_", "focus_default", "y", "currentFocusSelector", "ToggleTriggerElement", "ToggleElement", "kt", "commandStartEvent", "beforeInvokeEvent", "event", "selector", "duration", "delay", "busyDuration", "el", "focus_default", "reducer", "memo", "view", "value", "content", "index", "TurboBoostElement", "ToggleTargetElement", "ToggleTriggerElement", "Lt", "javascript_default"]
3
+ "sources": ["../../../../node_modules/@turbo-boost/commands/app/javascript/meta.js", "../../../../node_modules/@turbo-boost/commands/app/javascript/events.js", "../../../../node_modules/@turbo-boost/commands/app/javascript/state/observable.js", "../../../../node_modules/@turbo-boost/commands/app/javascript/state/index.js", "../../../../node_modules/@turbo-boost/commands/app/javascript/renderer.js", "../../../../node_modules/@turbo-boost/commands/app/javascript/activity.js", "../../../../node_modules/@turbo-boost/commands/app/javascript/lifecycle.js", "../../../../node_modules/@turbo-boost/commands/app/javascript/turbo.js", "../../../../node_modules/@turbo-boost/commands/app/javascript/schema.js", "../../../../node_modules/@turbo-boost/commands/app/javascript/confirmation.js", "../../../../node_modules/@turbo-boost/commands/app/javascript/delegates.js", "../../../../node_modules/@turbo-boost/commands/app/javascript/elements.js", "../../../../node_modules/@turbo-boost/commands/app/javascript/drivers/form.js", "../../../../node_modules/@turbo-boost/commands/app/javascript/urls.js", "../../../../node_modules/@turbo-boost/commands/app/javascript/drivers/frame.js", "../../../../node_modules/@turbo-boost/commands/app/javascript/drivers/method.js", "../../../../node_modules/@turbo-boost/commands/app/javascript/drivers/window.js", "../../../../node_modules/@turbo-boost/commands/app/javascript/drivers/index.js", "../../../../node_modules/@turbo-boost/commands/app/javascript/logger.js", "../../../../node_modules/@turbo-boost/commands/app/javascript/uuids.js", "../../../../node_modules/@turbo-boost/commands/app/javascript/index.js", "../../../../node_modules/@turbo-boost/devtools/src/utils/dom.js", "../../../../node_modules/@turbo-boost/devtools/src/elements/devtool_element.js", "../../../../node_modules/@turbo-boost/devtools/src/elements/supervisor_element.js", "../../../../node_modules/@turbo-boost/devtools/src/elements/tooltip_element.js", "../../../../node_modules/@turbo-boost/devtools/src/dependencies.js", "../../../../node_modules/@turbo-boost/devtools/src/supervisor.js", "../../../../node_modules/@turbo-boost/devtools/src/devtool.js", "../../../../node_modules/@turbo-boost/devtools/src/index.js", "../../../javascript/elements/turbo_boost_element/index.js", "../../../javascript/elements/toggle_elements/toggle_element/index.js", "../../../javascript/elements/toggle_elements/target_element/index.js", "../../../javascript/elements/toggle_elements/trigger_element/focus.js", "../../../javascript/elements/toggle_elements/trigger_element/index.js", "../../../javascript/elements/index.js", "../../../javascript/index.js"],
4
+ "sourcesContent": ["class Meta {\n get element() {\n return document.querySelector('meta[name=\"turbo-boost\"]')\n }\n\n get token() {\n return this.element.getAttribute('content')\n }\n\n get busy() {\n return this.element.dataset.busy === 'true'\n }\n\n set busy(value) {\n return (this.element.dataset.busy = !!value)\n }\n}\n\nexport default new Meta()\n", "export const commandEvents = {\n start: 'turbo-boost:command:start',\n success: 'turbo-boost:command:success',\n finish: 'turbo-boost:command:finish',\n abort: 'turbo-boost:command:abort',\n clientError: 'turbo-boost:command:client-error',\n serverError: 'turbo-boost:command:server-error'\n}\n\nexport const stateEvents = {\n stateLoad: 'turbo-boost:state:load',\n stateChange: 'turbo-boost:state:change'\n}\n\nexport const allEvents = { ...commandEvents, ...stateEvents }\n\nexport function dispatch(name, target, options = {}) {\n return new Promise(resolve => {\n options = options || {}\n options.detail = options.detail || {}\n target = target || document\n const evt = new CustomEvent(name, { ...options, bubbles: true })\n target.dispatchEvent(evt)\n resolve(evt)\n })\n}\n", "import meta from '../meta'\nimport { dispatch, stateEvents as events } from '../events'\n\nlet head\n\nfunction observable(object, parent = null) {\n if (!object || typeof object !== 'object') return object\n\n const proxy = new Proxy(object, {\n deleteProperty(target, key) {\n delete target[key]\n dispatch(events.stateChange, meta.element, { detail: { state: head } })\n return true\n },\n\n set(target, key, value, receiver) {\n target[key] = observable(value, this)\n dispatch(events.stateChange, meta.element, { detail: { state: head } })\n return true\n }\n })\n\n if (Array.isArray(object)) {\n object.forEach((value, index) => (object[index] = observable(value, proxy)))\n } else if (typeof object === 'object') {\n for (const [key, value] of Object.entries(object)) object[key] = observable(value, proxy)\n }\n\n if (!parent) head = proxy\n return proxy\n}\n\nexport default observable\n", "import meta from '../meta'\nimport observable from './observable'\nimport { dispatch, commandEvents, stateEvents } from '../events'\n\nlet loadedState, currentState, changedState\nlet loadStateTimeout\n\nfunction loadState() {\n if (!meta.element) return loadStateLater()\n const json = atob(meta.element.dataset.state)\n changedState = {}\n currentState = observable(JSON.parse(json))\n loadedState = { ...currentState }\n delete meta.element.dataset.clientStateChange\n setTimeout(() =>\n dispatch(stateEvents.stateLoad, meta.element, {\n detail: { state: currentState }\n })\n )\n}\n\nfunction loadStateLater() {\n clearTimeout(loadStateTimeout)\n loadStateTimeout = setTimeout(loadState, 10)\n}\n\nif (!loadedState) loadState()\n\naddEventListener('DOMContentLoaded', loadStateLater)\naddEventListener('load', loadStateLater)\naddEventListener('turbo:load', loadStateLater)\naddEventListener('turbo:frame-load', loadStateLater)\naddEventListener(commandEvents.success, loadStateLater)\n\naddEventListener(stateEvents.stateChange, event => {\n changedState = {}\n for (const [key, value] of Object.entries(currentState))\n if (loadedState[key] !== value) changedState[key] = value\n meta.element.dataset.clientStateChange = true\n meta.element.dataset.state = btoa(JSON.stringify(currentState))\n})\n\nexport default {\n events: stateEvents,\n\n get current() {\n return currentState\n },\n\n get delta() {\n return changedState\n },\n\n // The UI state changes are split into chunks and sent to the server in an HTTP request header.\n // Max size for an HTTP header is around 4k or 4,000 bytes.\n // A Base64 character is an 8-bit-padded ASCII character... or 1 byte\n //\n // SEE: lib/state.rb - for info on how `state` is serialized/deserialized\n get payloadChunks() {\n return btoa(JSON.stringify(changedState)).match(/.{1,2000}/g)\n }\n}\n", "function replaceDocument(content) {\n const head = '<html'\n const tail = '</html'\n const headIndex = content.indexOf(head)\n const tailIndex = content.lastIndexOf(tail)\n if (headIndex >= 0 && tailIndex >= 0) {\n const html = content.slice(content.indexOf('>', headIndex) + 1, tailIndex)\n document.documentElement.innerHTML = html\n }\n}\n\nfunction append(content) {\n document.body.insertAdjacentHTML('beforeend', content)\n}\n\nexport default { append, replaceDocument }\n", "const active = {}\n\nfunction add(payload) {\n active[payload.id] = payload\n}\n\nfunction remove(id) {\n delete active[id]\n}\n\nexport default {\n add,\n remove,\n get commands() {\n return [...Object.values(active)]\n },\n get length() {\n return Object.keys(active).length\n }\n}\n", "import activity from './activity'\nimport { dispatch, commandEvents } from './events'\n\nfunction finish(event) {\n event.detail.endedAt = Date.now()\n event.detail.milliseconds = event.detail.endedAt - event.detail.startedAt\n setTimeout(() => dispatch(commandEvents.finish, event.target, { detail: event.detail }), 25)\n}\n\n// TODO: forward source event to finish (error or success)\naddEventListener(commandEvents.serverError, finish)\naddEventListener(commandEvents.success, finish)\naddEventListener(commandEvents.finish, event => activity.remove(event.detail.id), true)\n\nexport default { events: commandEvents }\n", "import meta from './meta'\nimport state from './state'\nimport renderer from './renderer'\nimport { dispatch } from './events'\nimport lifecycle from './lifecycle'\n\nconst frameSources = {}\n\n// fires before making a turbo HTTP request\naddEventListener('turbo:before-fetch-request', event => {\n const frame = event.target.closest('turbo-frame')\n const { fetchOptions } = event.detail\n\n // command invoked and busy\n if (meta.busy) {\n let acceptHeaders = ['text/vnd.turbo-boost.html', fetchOptions.headers['Accept']]\n acceptHeaders = acceptHeaders.filter(entry => entry && entry.trim().length > 0).join(', ')\n fetchOptions.headers['Accept'] = acceptHeaders\n fetchOptions.headers['TurboBoost-Token'] = meta.token\n }\n\n // always send state\n state.payloadChunks.forEach((chunk, i) => {\n fetchOptions.headers[`TurboBoost-State-${i.toString().padStart(4, '0')}`] = chunk\n })\n})\n\n// fires after receiving a turbo HTTP response\naddEventListener('turbo:before-fetch-response', event => {\n const frame = event.target.closest('turbo-frame')\n const { fetchResponse: response } = event.detail\n\n if (frame) frameSources[frame.id] = frame.src\n\n if (response.header('TurboBoost')) {\n if (response.statusCode < 200 || response.statusCode > 399) {\n const error = `Server returned a ${response.statusCode} status code! TurboBoost Commands require 2XX-3XX status codes.`\n dispatch(lifecycle.events.clientError, document, { detail: { ...event.detail, error } }, true)\n }\n\n if (response.header('TurboBoost') === 'Append') {\n event.preventDefault()\n response.responseText.then(content => renderer.append(content))\n }\n }\n})\n\n// fires when a frame element is navigated and finishes loading\naddEventListener('turbo:frame-load', event => {\n const frame = event.target.closest('turbo-frame')\n frame.dataset.turboBoostSrc = frameSources[frame.id] || frame.src || frame.dataset.turboBoostSrc\n delete frameSources[frame.id]\n})\n", "const schema = {\n // attributes\n frameAttribute: 'data-turbo-frame',\n methodAttribute: 'data-turbo-method',\n commandAttribute: 'data-turbo-command',\n confirmAttribute: 'data-turbo-confirm',\n\n // events\n turboSubmitStartEvent: 'turbo:submit-start'\n}\n\nexport default { ...schema }\n", "import { commandEvents } from './events'\nimport schema from './schema'\n\nconst confirmation = {\n method: message => Promise.resolve(confirm(message))\n}\n\nconst isTurboMethod = event => event.detail.driver === 'method'\n\nconst isTurboForm = event => {\n if (event.detail.driver !== 'form') return false\n\n const element = event.target\n const frame = element.closest('turbo-frame')\n const target = element.closest(`[${schema.frameAttribute}]`)\n return !!(frame || target)\n}\n\nconst shouldDelegate = event => isTurboMethod(event) || isTurboForm(event)\n\ndocument.addEventListener(commandEvents.start, async event => {\n const message = event.target.getAttribute(schema.confirmAttribute)\n if (!message) return\n\n event.detail.confirmation = true\n\n if (shouldDelegate(event)) return // delegate confirmation handling to Turbo\n\n const proceed = await confirmation.method(message)\n if (!proceed) event.preventDefault()\n})\n\nexport default confirmation\n", "let events = []\nlet eventListener\n\nfunction register(eventName, selectors) {\n const match = events.find(evt => evt.name === eventName)\n if (match) events.splice(events.indexOf(match), 1)\n events = [{ name: eventName, selectors }, ...events]\n\n document.removeEventListener(eventName, eventListener, true)\n document.addEventListener(eventName, eventListener, true)\n\n return { ...events.find(evt => evt.name === eventName) }\n}\n\nfunction getRegisteredEventForElement(element) {\n return events.find(evt =>\n evt.selectors.find(selector => Array.from(document.querySelectorAll(selector)).find(el => el === element))\n )\n}\n\nfunction isRegisteredForElement(eventName, element) {\n const evt = getRegisteredEventForElement(element)\n return evt && evt.name === eventName\n}\n\nexport default {\n register,\n isRegisteredForElement,\n get events() {\n return [...events]\n },\n set handler(fn) {\n eventListener = fn\n }\n}\n", "import schema from './schema'\nimport lifecycle from './lifecycle'\n\nfunction findClosestCommand(element) {\n return element.closest(`[${schema.commandAttribute}]`)\n}\n\nfunction findClosestFrameWithSource(element) {\n return (\n element.closest('turbo-frame[src]') ||\n element.closest('turbo-frame[data-turbo-frame-src]') ||\n element.closest('turbo-frame')\n )\n}\n\nfunction assignElementValueToPayload(element, payload = {}) {\n if (element.tagName.toLowerCase() !== 'select') return (payload.value = element.value || null)\n\n if (!element.multiple) return (payload.value = element.options[element.selectedIndex].value)\n\n payload.values = Array.from(element.options).reduce((memo, option) => {\n if (option.selected) memo.push(option.value)\n return memo\n }, [])\n}\n\nfunction buildAttributePayload(element) {\n const payload = Array.from(element.attributes).reduce((memo, attr) => {\n let value = attr.value\n memo[attr.name] = value\n return memo\n }, {})\n\n payload.tag = element.tagName\n payload.checked = !!element.checked\n payload.disabled = !!element.disabled\n assignElementValueToPayload(element, payload)\n\n // reduce payload size to keep URL length smaller\n delete payload.class\n delete payload.action\n delete payload.href\n delete payload[schema.commandAttribute]\n delete payload[schema.frameAttribute]\n\n return payload\n}\n\nexport default {\n buildAttributePayload,\n findClosestCommand,\n findClosestFrameWithSource\n}\n", "import meta from '../meta'\n\nfunction updateFormSubmission(formSubmission) {\n const shouldUpdate =\n formSubmission?.formElement instanceof HTMLFormElement &&\n formSubmission?.body instanceof URLSearchParams &&\n formSubmission?.fetchRequest?.body instanceof URLSearchParams\n\n if (!shouldUpdate) return\n\n formSubmission.formData = new FormData(formSubmission.formElement)\n for (const [key, value] of formSubmission.formData.entries()) {\n formSubmission.fetchRequest.body.set(key, value)\n formSubmission.body.set(key, value)\n }\n\n return formSubmission\n}\n\nfunction invokeCommand(form, payload = {}, event = {}) {\n payload.token = meta.token\n const input = form.querySelector('input[name=\"turbo_boost_command\"]') || document.createElement('input')\n input.type = 'hidden'\n input.name = 'turbo_boost_command'\n input.value = JSON.stringify(payload)\n form.appendChild(input)\n updateFormSubmission(event.detail.formSubmission)\n}\n\nexport default { invokeCommand }\n", "function build(urlString, payload = {}) {\n const a = document.createElement('a')\n a.href = urlString\n const url = new URL(a)\n url.searchParams.set('turbo_boost_command', JSON.stringify(payload))\n return url\n}\n\nexport default { build }\n", "import urls from '../urls'\n\nfunction invokeCommand(frame, payload) {\n const src = payload.src\n payload = { ...payload }\n delete payload.src\n frame.src = urls.build(src, payload)\n}\n\nexport default { invokeCommand }\n", "import urls from '../urls'\n\nfunction invokeCommand(element, payload = {}) {\n const src = payload.src\n payload = { ...payload }\n delete payload.src\n delete payload.href\n element.setAttribute('href', urls.build(src, payload))\n}\n\nexport default { invokeCommand }\n", "import meta from '../meta'\nimport state from '../state'\nimport { dispatch } from '../events'\nimport lifecycle from '../lifecycle'\nimport urls from '../urls'\nimport renderer from '../renderer'\n\nfunction aborted(event) {\n const xhr = event.target\n dispatch(lifecycle.events.abort, document, {\n detail: { ...event.detail, xhr }\n })\n}\n\nfunction errored(event) {\n const xhr = event.target\n\n const append =\n xhr.getResponseHeader('TurboBoost') === 'Append' ||\n xhr.getResponseHeader('Content-Type').startsWith('text/vnd.turbo-boost.html')\n append ? renderer.append(xhr.responseText) : renderer.replaceDocument(xhr.responseText)\n\n const error = `Server returned a ${xhr.status} status code! TurboBoost Commands require 2XX-3XX status codes.`\n\n dispatch(lifecycle.events.clientError, document, { detail: { ...event.detail, error, xhr } }, true)\n}\n\nfunction loaded(event) {\n const xhr = event.target\n if (xhr.status < 200 || xhr.status > 399) return errored(event)\n const content = xhr.responseText\n const append =\n xhr.getResponseHeader('TurboBoost') === 'Append' ||\n xhr.getResponseHeader('Content-Type').startsWith('text/vnd.turbo-boost.html')\n append ? renderer.append(xhr.responseText) : renderer.replaceDocument(xhr.responseText)\n}\n\nfunction invokeCommand(payload) {\n const src = payload.src\n payload = { ...payload }\n delete payload.src\n\n try {\n const xhr = new XMLHttpRequest()\n xhr.open('GET', urls.build(src, payload), true)\n xhr.setRequestHeader('Accept', 'text/vnd.turbo-boost.html, text/html, application/xhtml+xml')\n xhr.setRequestHeader('TurboBoost-Token', meta.token)\n state.payloadChunks.forEach((chunk, i) =>\n xhr.setRequestHeader(`TurboBoost-State-${i.toString().padStart(4, '0')}`, chunk)\n )\n\n xhr.addEventListener('abort', aborted)\n xhr.addEventListener('error', errored)\n xhr.addEventListener('load', loaded)\n xhr.send()\n } catch (ex) {\n const message = `Unexpected error sending HTTP request! ${ex.message}`\n errored(ex, { detail: { message } })\n }\n}\n\nexport default { invokeCommand }\n", "import elements from '../elements'\nimport formDriver from './form'\nimport frameDriver from './frame'\nimport methodDriver from './method'\nimport windowDriver from './window'\n\nfunction src(element, frame) {\n frame = frame || { dataset: {} }\n return element.href || frame.src || frame.dataset.turboBoostSrc || location.href\n}\n\nfunction find(element) {\n let frame = elements.findClosestFrameWithSource(element)\n\n const { turboFrame, turboMethod } = element.dataset\n\n if (element.tagName.toLowerCase() === 'form')\n return {\n name: 'form',\n reason: 'Element is a form.',\n frame,\n src: element.action,\n invokeCommand: formDriver.invokeCommand\n }\n\n if (turboMethod && turboMethod.length > 0)\n return {\n name: 'method',\n reason: 'Element defines data-turbo-method.',\n frame,\n src: element.href,\n invokeCommand: methodDriver.invokeCommand\n }\n\n // element targets a frame that is not _self\n if (turboFrame && turboFrame !== '_self') {\n frame = document.getElementById(turboFrame)\n return {\n name: 'frame',\n reason: 'element targets a frame that is not _self',\n frame,\n src: src(element, frame),\n invokeCommand: frameDriver.invokeCommand\n }\n }\n\n // element does NOT target a frame or targets _self and is contained by a frame\n if ((!turboFrame || turboFrame === '_self') && frame)\n return {\n name: 'frame',\n reason: 'element does NOT target a frame or targets _self and is contained by a frame',\n frame,\n src: src(element, frame),\n invokeCommand: frameDriver.invokeCommand\n }\n\n // element matches one or more of the following conditions\n // - targets _top\n // - does NOT target a frame\n // - is NOT contained by a frame\n return {\n name: 'window',\n reason:\n 'element matches one or more of the following conditions (targets _top, does NOT target a frame, is NOT contained by a frame)',\n frame: null,\n src: src(element),\n invokeCommand: windowDriver.invokeCommand\n }\n}\n\nexport default { find }\n", "import { allEvents as events } from './events'\n\nlet currentLevel = 'unknown'\n\nconst logLevels = {\n debug: Object.values(events),\n info: Object.values(events),\n warn: [events.abort, events.clientError, events.serverError],\n error: [events.clientError, events.serverError],\n unknown: []\n}\n\nObject.values(events).forEach(name => {\n addEventListener(name, event => {\n if (logLevels[currentLevel].includes(event.type)) {\n const { target, detail } = event\n console[currentLevel](event.type, { target, detail })\n }\n })\n})\n\nexport default {\n get level() {\n return currentLevel\n },\n set level(value) {\n if (!Object.keys(logLevels).includes(value)) value = 'unknown'\n return (currentLevel = value)\n }\n}\n", "function v4() {\n return ([1e7] + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, c =>\n (c ^ (crypto.getRandomValues(new Uint8Array(1))[0] & (15 >> (c / 4)))).toString(16)\n )\n}\n\nexport default { v4 }\n", "import './turbo'\nimport schema from './schema'\nimport { dispatch, commandEvents, stateEvents } from './events'\nimport activity from './activity'\nimport confirmation from './confirmation'\nimport delegates from './delegates'\nimport drivers from './drivers'\nimport meta from './meta'\nimport elements from './elements'\nimport lifecycle from './lifecycle'\nimport logger from './logger'\nimport state from './state'\nimport urls from './urls'\nimport uuids from './uuids'\n\nfunction buildCommandPayload(id, element) {\n return {\n id, // uniquely identifies the command\n name: element.getAttribute(schema.commandAttribute),\n elementId: element.id.length > 0 ? element.id : null,\n elementAttributes: elements.buildAttributePayload(element),\n startedAt: Date.now()\n }\n}\n\nasync function invokeCommand(event) {\n let element\n let payload = {}\n\n try {\n element = elements.findClosestCommand(event.target)\n if (!element) return\n if (!delegates.isRegisteredForElement(event.type, element)) return\n\n const commandId = `turbo-command-${uuids.v4()}`\n let driver = drivers.find(element)\n let payload = {\n ...buildCommandPayload(commandId, element),\n driver: driver.name,\n frameId: driver.frame ? driver.frame.id : null,\n src: driver.src\n }\n\n const startEvent = await dispatch(commandEvents.start, element, {\n cancelable: true,\n detail: payload\n })\n\n if (startEvent.defaultPrevented || (startEvent.detail.confirmation && event.defaultPrevented))\n return dispatch(commandEvents.abort, element, {\n detail: {\n message: `An event handler for '${commandEvents.start}' prevented default behavior and blocked command invocation!`,\n source: startEvent\n }\n })\n\n // the element and thus the driver may have changed based on the start event handler(s)\n driver = drivers.find(element)\n payload = {\n ...buildCommandPayload(commandId, element),\n driver: driver.name,\n frameId: driver.frame ? driver.frame.id : null,\n src: driver.src\n }\n\n activity.add(payload)\n\n if (['frame', 'window'].includes(driver.name)) event.preventDefault()\n\n meta.busy = true\n setTimeout(() => (meta.busy = false), 10)\n\n switch (driver.name) {\n case 'method':\n return driver.invokeCommand(element, payload)\n case 'form':\n return driver.invokeCommand(element, payload, event)\n case 'frame':\n return driver.invokeCommand(driver.frame, payload)\n case 'window':\n return driver.invokeCommand(payload)\n }\n } catch (error) {\n dispatch(commandEvents.clientError, element, {\n detail: { ...payload, error }\n })\n }\n}\n\nself.TurboBoost = self.TurboBoost || {}\n\nself.TurboBoost = {\n ...self.TurboBoost,\n\n stateEvents,\n\n get state() {\n return state.current\n },\n\n get stateDelta() {\n return state.delta\n }\n}\n\nif (!self.TurboBoost.Commands) {\n // wire things up and setup defaults for event delegation\n delegates.handler = invokeCommand\n delegates.register('click', [`[${schema.commandAttribute}]`])\n delegates.register('submit', [`form[${schema.commandAttribute}]`])\n delegates.register(schema.turboSubmitStartEvent, [`form[${schema.commandAttribute}]`])\n delegates.register('change', [\n `input[${schema.commandAttribute}]`,\n `select[${schema.commandAttribute}]`,\n `textarea[${schema.commandAttribute}]`\n ])\n\n self.TurboBoost.Commands = {\n confirmation,\n logger,\n schema,\n events: commandEvents,\n registerEventDelegate: delegates.register,\n get eventDelegates() {\n return delegates.events\n }\n }\n}\n\nexport default self.TurboBoost.Commands\n", "export function template (html) {\n let template = document.createElement('template')\n template.innerHTML = html\n return template\n}\n\nexport function appendHTML (html, parent) {\n parent = parent || document.body\n const clone = template(html).content.cloneNode(true)\n const child = clone.querySelector('*')\n return parent.appendChild(child)\n}\n\nexport function addHighlight (element, options = {}) {\n if (!element) return\n removeHighlight(element)\n let { outline, outlineOffset } = options\n\n outline = outline || 'dashed 3px red'\n outlineOffset = outlineOffset || '0px'\n\n element.originalStyles = element.originalStyles || {\n display: element.style.display,\n minHeight: element.style.minHeight,\n minWidth: element.style.minWidth,\n outline: element.style.outline,\n outlineOffset: element.style.outlineOffset\n }\n\n if (\n getComputedStyle(element).display.match(/^inline$/i) &&\n element.offsetWidth === 0 &&\n element.offsetHeight === 0\n ) {\n element.style.display = 'inline-block'\n element.style.minHeight = '2px'\n element.style.minWidth = '2px'\n }\n element.style.outline = outline\n element.style.outlineOffset = outlineOffset\n element.dataset.turboBoostHighlight = true\n}\n\nexport function removeHighlight (element) {\n if (!element) return\n if (element.originalStyles) {\n for (const [key, value] of Object.entries(element.originalStyles))\n value ? (element.style[key] = value) : (element.style[key] = '')\n delete element.originalStyles\n }\n delete element.dataset.turboBoostHighlight\n}\n\nexport function coordinates (element) {\n if (!element) return {}\n const rect = element.getBoundingClientRect()\n const width = element.offsetWidth\n const height = element.offsetHeight\n const top = rect.top + window.scrollY\n const left = rect.left + window.scrollX\n const right = left + width\n const bottom = top + height\n return { top, left, right, bottom, width, height }\n}\n\nexport function attempt (callback) {\n try {\n callback()\n } catch {}\n}\n", "export default class DevtoolElement extends HTMLElement {\n constructor () {\n super()\n this.attachShadow({ mode: 'open' })\n this.shadowRoot.innerHTML = this.html\n this.labelElement.addEventListener('click', event => {\n event.preventDefault()\n this.toggle()\n })\n this.checkboxElement.addEventListener('change', event =>\n this.dispatchEvent(new CustomEvent('change', { bubbles: true }))\n )\n }\n\n toggle () {\n this.checked ? this.uncheck() : this.check()\n }\n\n check () {\n this.checkboxElement.checked = true\n this.dispatchEvent(new CustomEvent('change', { bubbles: true }))\n }\n\n uncheck () {\n this.checkboxElement.checked = false\n this.dispatchEvent(new CustomEvent('change', { bubbles: true }))\n }\n\n get name () {\n return this.getAttribute('name')\n }\n\n get checked () {\n return this.checkboxElement.checked\n }\n\n get checkboxElement () {\n return this.shadowRoot.querySelector('input')\n }\n\n get labelElement () {\n return this.shadowRoot.querySelector('label')\n }\n\n get html () {\n return `\n <style>${this.stylesheet}</style>\n <div>\n <input name=\"checkbox\" type=\"checkbox\">\n <label for=\"checkbox\"><slot name=\"label\"></slot></label>\n </div>\n `\n }\n\n get stylesheet () {\n return `\n :host, :host * {\n cursor: pointer;\n }\n\n div {\n display: flex;\n margin-right: 10px;\n }\n\n input:checked + label{\n font-weight: bold;\n }\n\n label {\n color: black;\n }\n `\n }\n}\n", "import { appendHTML } from '../utils/dom.js'\n\nexport default class SupervisorElement extends HTMLElement {\n constructor () {\n super()\n this.enabledDevtools = {}\n this.attachShadow({ mode: 'open' })\n this.shadowRoot.innerHTML = this.html\n this.shadowRoot.querySelector('button').addEventListener('click', () =>\n this.dispatchEvent(\n new CustomEvent('turbo-boost:devtools-close', {\n bubbles: true\n })\n )\n )\n\n this.addEventListener('change', event => {\n const devtoolElement = event.target\n const { checked, name } = devtoolElement\n checked ? this.enableDevtool(name) : this.disableDevtool(name)\n })\n }\n\n enableDevtool (name) {\n if (this.enabledDevtools[name]) return\n this.enabledDevtools[name] = true\n this.dispatchEvent(\n new CustomEvent('turbo-boost:devtool-enable', {\n bubbles: true,\n detail: { name: name }\n })\n )\n }\n\n disableDevtool (name) {\n if (!this.enabledDevtools[name]) return\n delete this.enabledDevtools[name]\n this.dispatchEvent(\n new CustomEvent('turbo-boost:devtool-disable', {\n bubbles: true,\n detail: { name: name }\n })\n )\n }\n\n close () {\n this.devtoolElements.forEach(el => {\n if (el.checked) el.uncheck()\n })\n this.remove()\n }\n\n get devtoolElements () {\n return this.querySelectorAll('[slot=\"devtool\"]')\n }\n\n get closeElement () {\n return this.querySelector('button')\n }\n\n get html () {\n return `\n <style>${this.stylesheet}</style>\n <div>\n <img src=\"https://ik.imagekit.io/hopsoft/turbo-boost-logo_zHiiimlvT.webp?ik-sdk-version=javascript-1.4.3&updatedAt=1671722004342\">\n <slot name=\"devtool\"></slot>\n <button>\u2715</button>\n </div>\n `\n }\n\n get stylesheet () {\n return `\n :host {\n background-color: gainsboro;\n border-radius: 5px;\n bottom: 20px;\n display: block;\n filter: drop-shadow(3px 3px 3px rgba(0,0,0,0.3));\n left: 50%;\n outline-offset: 1px;\n outline: solid 2px black;\n padding: 5px 10px;\n position: fixed;\n transform: translateX(-50%);\n z-index: 8999;\n }\n\n * {\n -webkit-user-select: none;\n font-family: helvetica, sans-serif;\n font-size: 1rem;\n user-select: none;\n }\n\n img {\n align-self: center;\n cursor: grab;\n height: 25px;\n margin-left: -5px;\n vertical-align: middle;\n }\n\n div {\n display: flex;\n gap: 0 5px;\n position: relative;\n }\n\n [slot=\"devtool\"] {\n align-self: center;\n }\n\n button {\n align-self: center;\n background-color: darkgray;\n border-radius: 50%;\n border: none;\n color: black;\n cursor: pointer;\n font-size: 10px;\n height: 18px;\n line-height: 18px;\n margin-right: -5px;\n opacity: 0.5;\n outline: solid 1px black;\n padding: 0 2px;\n width: 18px;\n }\n\n button:hover {\n opacity: 1;\n }\n `\n }\n}\n", "export default class TooltipElement extends HTMLElement {\n constructor () {\n super()\n this.attachShadow({ mode: 'open' })\n this.shadowRoot.innerHTML = this.html\n }\n\n connectedCallback () {\n const savedTransform = localStorage.getItem(\n `turbo-boost-devtools-${location.href}-${this.id}-transform`\n )\n\n if (savedTransform) {\n this.style.transform = savedTransform\n }\n }\n\n disconnectedCallback () {\n if (this.id !== 'undefined' && this.id !== '') {\n localStorage.setItem(\n `turbo-boost-devtools-${location.href}-${this.id}-transform`,\n this.style.transform\n )\n }\n }\n\n get color () {\n return this.getAttribute('color') || 'darkslategray'\n }\n\n get backgroundColor () {\n return this.getAttribute('background-color') || 'gainsboro'\n }\n\n get position () {\n return this.getAttribute('position') || 'top'\n }\n\n get html () {\n return `\n <style>${this.stylesheet}</style>\n <div role=\"container\">\n <div role=\"title\">\n <slot name=\"title\"></slot>\n <img src=\"https://ik.imagekit.io/hopsoft/turbo-boost-logo_zHiiimlvT.webp?ik-sdk-version=javascript-1.4.3&updatedAt=1671722004342\">\n </div>\n <slot name=\"subtitle\"></slot>\n <slot name=\"content-top\"></slot>\n <slot name=\"content\"></slot>\n <slot name=\"content-bottom\"></slot>\n </div>\n `\n }\n\n get stylesheet () {\n return `\n :host {\n display: block;\n position: absolute;\n z-index: 8999;\n }\n\n * {\n color: ${this.color}\n font-size: 1rem;\n }\n\n [role=\"container\"] {\n background-color: ${this.backgroundColor};\n border-radius: 15px;\n filter: drop-shadow(3px 3px 3px rgba(0,0,0,0.3));\n font-family: monospace;\n min-height: 30px;\n min-width: 100px;\n opacity: 0.9;\n outline-offset: 1px;\n outline: dashed 3px ${this.color};\n padding: 12px;\n position: relative;\n white-space: nowrap;\n }\n\n [role=\"title\"] {\n display: flex;\n }\n\n [role=\"title\"] slot[name=\"title\"] {\n color: ${this.color};\n display: block;\n flex-grow: 1;\n font-weight: bold;\n }\n\n [role=\"title\"] img {\n height: 25px;\n vertical-align: middle;\n }\n\n slot[name=\"subtitle\"] {\n border-bottom: dotted 1px ${this.color};\n border-top: dotted 1px ${this.color};\n color: ${this.color};\n display: block;\n font-size: 0.8rem;\n font-weight: lighter;\n margin-bottom: 12px;\n margin-top: 8px;\n padding-bottom: 4px;\n padding-top: 4px;\n width: 100%;\n }\n\n slot[name=\"content-top\"],\n slot[name=\"content\"],\n slot[name=\"content-bottom\"] {\n display: block;\n font-weight: normal;\n }\n\n slot[name=\"content-top\"] {\n color: ${this.color};\n margin-bottom: 8px;\n }\n\n slot[name=\"content\"],\n slot[name=\"content-bottom\"] {\n opacity: 0.7;\n padding-left: 12px;\n }\n\n slot[name=\"content\"] {\n color: ${this.color};\n }\n\n slot[name=\"content-bottom\"] {\n color: red;\n }\n `\n }\n}\n", "const added = []\n\nconst dependencies = {\n LeaderLine: {\n src:\n 'https://cdnjs.cloudflare.com/ajax/libs/leader-line/1.0.7/leader-line.min.js',\n integrity:\n 'sha512-0dNdzMjpT6pJdFGF1DwybFCfm3K/lzHhxaMXC/92J9/DZujHlqYFqmhTOAoD0o+LkeEsVK2ar/ESs7/Q2B6wJg==',\n global: 'LeaderLine'\n },\n\n PlainDraggable: {\n src:\n 'https://cdn.jsdelivr.net/npm/plain-draggable@2.5.14/plain-draggable.min.js',\n global: 'PlainDraggable'\n }\n}\n\nfunction exists (dependency) {\n if (dependency.global && self[dependency.global]) return true\n if (document.querySelector(`[src='${dependency.src}']`)) return true\n return added.includes(dependency)\n}\n\nfunction add (dependency) {\n if (exists(dependency)) return\n added.push(dependency)\n\n const { src, integrity } = dependency\n const script = document.createElement('script')\n script.setAttribute('src', src)\n script.setAttribute('crossorigin', 'anonymous')\n script.setAttribute('referrerpolicy', 'no-referrer')\n if (integrity) script.setAttribute('integrity', integrity)\n document.head.appendChild(script)\n}\n\nfunction remove (dependency) {\n if (!added.includes(dependency)) return\n added.splice(added.indexOf(dependency), 1)\n\n const { src } = dependency\n const el = document.querySelector(`script[src='${src}']`)\n if (el) el.remove()\n if (dependency.global && self[dependency.global])\n self[dependency.global] = null\n}\n\nfunction removeAll () {\n ;[...added].forEach(dependency => remove(dependency))\n}\n\nexport default { ...dependencies, add, remove, removeAll }\n", "import { appendHTML } from './utils/dom'\nimport DevtoolElement from './elements/devtool_element'\nimport SupervisorElement from './elements/supervisor_element'\nimport TooltipElement from './elements/tooltip_element'\nimport dependencies from './dependencies'\n\ncustomElements.define('turbo-boost-devtool', DevtoolElement)\ncustomElements.define('turbo-boost-devtool-supervisor', SupervisorElement)\ncustomElements.define('turbo-boost-devtool-tooltip', TooltipElement)\n\nlet supervisorElement\n\nfunction makeDraggable () {\n if (!supervisorElement) return\n try {\n new PlainDraggable(supervisorElement)\n } catch {\n setTimeout(makeDraggable, 200)\n }\n}\n\nfunction stop () {\n if (stopped()) return\n supervisorElement.close()\n supervisorElement.dispatchEvent(\n new CustomEvent('turbo-boost:devtools-stop', {\n bubbles: true\n })\n )\n supervisorElement = null\n dependencies.removeAll()\n}\n\nfunction start () {\n if (started()) return\n dependencies.add(dependencies.LeaderLine)\n dependencies.add(dependencies.PlainDraggable)\n supervisorElement = appendHTML(\n '<turbo-boost-devtool-supervisor></turbo-boost-devtool-supervisor>'\n )\n setTimeout(makeDraggable, 200)\n supervisorElement.dispatchEvent(\n new CustomEvent('turbo-boost:devtools-start', {\n bubbles: true\n })\n )\n}\n\nfunction restart () {\n const enabledList = supervisorElement\n ? Object.keys(supervisorElement.enabledDevtools)\n : []\n\n stop()\n start()\n\n supervisorElement.devtoolElements.forEach(el => {\n if (enabledList.includes(el.name)) el.check()\n })\n}\n\nfunction started () {\n return !!supervisorElement\n}\n\nfunction stopped () {\n return !started()\n}\n\nlet restartTimeout\nfunction debouncedRestart () {\n clearTimeout(restartTimeout)\n restartTimeout = setTimeout(restart, 25)\n}\n\nfunction autoRestart () {\n if (started()) debouncedRestart()\n}\n\naddEventListener('turbo:load', autoRestart)\naddEventListener('turbo-frame:load', autoRestart)\naddEventListener('turbo-boost:devtools-connect', autoRestart)\naddEventListener('turbo-boost:devtools-close', stop)\n\nif (window.TurboBoost) {\n addEventListener(TurboBoost.Commands.events.success, autoRestart)\n addEventListener(TurboBoost.Commands.events.finish, autoRestart)\n}\n\nfunction register (name, label) {\n if (!supervisorElement) return\n return appendHTML(\n `\n <turbo-boost-devtool name=\"${name}\" slot=\"devtool\">\n <span slot=\"label\">${label}</span>\n </turbo-boost-devtool>\n `,\n supervisorElement\n )\n}\n\nfunction enabled (name) {\n if (!supervisorElement) return false\n return supervisorElement.enabledDevtools[name]\n}\n\nexport default {\n enabled,\n register,\n start,\n stop,\n restart: debouncedRestart,\n get started () {\n return started()\n },\n get stopped () {\n return stopped()\n }\n}\n", "// Icons courtesy of https://feathericons.com/\nimport supervisor from './supervisor'\nimport {\n appendHTML,\n addHighlight,\n attempt,\n coordinates,\n removeHighlight\n} from './utils/dom.js'\n\nfunction appendTooltip (title, subtitle, content, options = {}) {\n let { backgroundColor, color, position, id } = options\n color = color || 'white'\n position = position || 'top'\n return appendHTML(`\n <turbo-boost-devtool-tooltip id=\"${id}\" position=\"${position}\" background-color=\"${backgroundColor}\" color=\"${color}\">\n <div slot='title'>${title}</div>\n <div slot='subtitle'>${subtitle}</div>\n ${content}\n </turbo-boost-devtool-tooltip>\n `)\n}\n\nlet activeTarget\n\nexport default class Devtool {\n constructor (delegate) {\n this.delegate = delegate\n\n let hideTimeout\n const debouncedHide = () => {\n clearTimeout(hideTimeout)\n hideTimeout = setTimeout(this.hide({ active: false }), 25)\n }\n\n this.eventListeners['turbo-boost:devtool-enable'] = event => {\n // LeaderLine.positionByWindowResize = false\n const { name } = event.detail\n if (name !== this.delegate.name) return\n\n addHighlight(this.delegate.triggerElement, {\n outline: '3px dashed blueviolet',\n outlineOffset: '2px'\n })\n\n this.hide({ active: false })\n if (this.active) this.show()\n }\n\n this.eventListeners['turbo-boost:devtool-disable'] = event => {\n const { name } = event.detail\n if (name === this.delegate.name)\n removeHighlight(this.delegate.triggerElement)\n }\n\n this.eventListeners['click'] = event => {\n if (event.target.closest('turbo-boost-devtool-tooltip')) return\n debouncedHide()\n }\n\n this.eventListeners['turbo:load'] = debouncedHide\n this.eventListeners['turbo-frame:load'] = debouncedHide\n if (window.TurboBoost) {\n this.eventListeners[TurboBoost.Commands.events.finish] = debouncedHide\n }\n\n this.registerEventListeners()\n }\n\n registerEventListeners () {\n Object.entries(this.eventListeners).forEach(([type, listener]) => {\n addEventListener(type, listener)\n })\n }\n\n unregisterEventListeners () {\n Object.entries(this.eventListeners).forEach(([type, listener]) => {\n removeEventListener(type, listener)\n })\n }\n\n get eventListeners () {\n return this._eventListeners || (this._eventListeners = {})\n }\n\n show () {\n if (!this.enabled) return\n\n if (this.active) return\n this.active = true\n\n this.hide({ active: true })\n\n addHighlight(this.delegate.targetElement, {\n outline: '3px dashed darkcyan',\n outlineOffset: '-2px'\n })\n\n addHighlight(this.delegate.morphElement, {\n outline: '3px dashed chocolate',\n outlineOffset: '3px'\n })\n\n this.renderingTooltip = this.createRenderingTooltip()\n this.targetTooltip = this.createTargetTooltip()\n this.triggerTooltip = this.createTriggerTooltip(\n this.targetTooltip,\n this.renderingTooltip\n )\n\n document\n .querySelectorAll('.leader-line')\n .forEach(el => (el.style.zIndex = 100000))\n\n const data = {\n morph: {\n partial: this.delegate.triggerElement.renders,\n id: this.delegate.triggerElement.morphs,\n status: this.delegate.morphElement ? 'OK' : 'Not Found'\n },\n trigger: { partial: null, id: null, status: 'Not Found' },\n target: { partial: null, id: null, status: 'Not Found' }\n }\n\n if (this.delegate.triggerElement) {\n data.trigger = {\n partial: this.delegate.triggerElement.partial,\n id: this.delegate.triggerElement.id,\n status: 'OK'\n }\n data.target.id = this.delegate.triggerElement.controls\n }\n\n if (this.delegate.targetElement)\n data.target = {\n partial: this.delegate.targetElement.partial,\n dom_id: this.delegate.targetElement.id,\n status: 'OK'\n }\n\n console.table(data)\n }\n\n hide ({ active: active = false }) {\n document\n .querySelectorAll('turbo-boost-devtool-tooltip')\n .forEach(tooltip => {\n attempt(() => tooltip.line.remove())\n attempt(() => tooltip.drag.remove())\n attempt(() => tooltip.lineToRendering.remove())\n attempt(() => tooltip.lineToTarget.remove())\n attempt(() => tooltip.remove())\n })\n\n document.querySelectorAll('[data-turbo-boost-highlight]').forEach(el => {\n if (!el.tagName.match(/turbo-boost-toggle-trigger/i)) removeHighlight(el)\n })\n\n this.active = active\n }\n\n get active () {\n return activeTarget === this.delegate\n }\n\n set active (value) {\n if (value) activeTarget = this.delegate\n else activeTarget = null\n }\n\n get enabled () {\n return supervisor.enabled(this.delegate.name)\n }\n\n static register (name, label) {\n supervisor.register(name, label)\n }\n\n createRenderingTooltip () {\n if (!this.delegate.triggerElement.renders)\n return console.debug(\n `Unable to create the rendering tooltip! The trigger element must set the 'renders' attribute.`\n )\n\n if (!this.delegate.triggerElement.morphs)\n return console.debug(\n `Unable to create the rendering tooltip! The trigger element specified the 'morphs' attrbiute but no element matches the DOM id: '${this.triggerElement.morphs}'`\n )\n\n const title = `\n <svg xmlns=\"http://www.w3.org/2000/svg\" style=\"display:inline-block;\" width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M12 19l7-7 3 3-7 7-3-3z\"></path><path d=\"M18 13l-1.5-7.5L2 2l3.5 14.5L13 18l5-5z\"></path><path d=\"M2 2l7.586 7.586\"></path><circle cx=\"11\" cy=\"11\" r=\"2\"></circle></svg>\n RENDERING - &lt;${this.delegate.triggerElement.tagName.toLowerCase()}&gt;\n `\n const subtitle = `\n <b>partial</b>: ${this.delegate.triggerElement.renders || 'unknown'}<br>\n <b>morphs</b>: ${this.delegate.triggerElement.morphs || 'unknown'}<br>\n `\n const content = `\n <div slot=\"content-top\" style=\"font-size:85%; font-style:italic; font-weight:100;\">\n The <b>TRIGGER</b> toggles the <b>TARGET</b> then renders the partial &amp; morphs the element.<br>\n </div>\n `\n const tooltip = appendTooltip(title, subtitle, content, {\n id: `${this.delegate.id}-rendering`,\n backgroundColor: 'lightyellow',\n color: 'chocolate'\n })\n\n const coords = coordinates(this.delegate.morphElement)\n const top = Math.ceil(\n coords.top + coords.height / 2 - tooltip.offsetHeight / 2\n )\n const left = Math.ceil(coords.left + coords.width + 100)\n tooltip.style.top = `${top}px`\n tooltip.style.left = `${left}px`\n\n tooltip.line = new LeaderLine(tooltip, this.delegate.morphElement, {\n ...this.leaderLineOptions,\n color: 'chocolate'\n })\n\n tooltip.drag = new PlainDraggable(tooltip)\n return tooltip\n }\n\n createTargetTooltip () {\n if (!this.delegate.targetElement)\n return console.debug(\n `Unable to create the target tooltip! No element matches the DOM id: '${this.delegate.triggerElement.controls}'`\n )\n\n const title = `\n <svg xmlns=\"http://www.w3.org/2000/svg\" style=\"display:inline-block;\" width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><circle cx=\"12\" cy=\"12\" r=\"10\"></circle><circle cx=\"12\" cy=\"12\" r=\"6\"></circle><circle cx=\"12\" cy=\"12\" r=\"2\"></circle></svg>\n TARGET - &lt;${this.delegate.targetElement.tagName.toLowerCase()}&gt;\n `\n\n const tooltip = appendTooltip(\n title,\n this.delegate.targetTooltipData?.subtitle || '',\n this.delegate.targetTooltipData?.content || '',\n {\n id: `${this.delegate.id}-target`,\n backgroundColor: 'lightcyan',\n color: 'darkcyan',\n position: 'bottom'\n }\n )\n\n const coords = coordinates(this.delegate.targetElement)\n const top = Math.ceil(coords.top + tooltip.offsetHeight)\n const left = Math.ceil(coords.left + coords.width + tooltip.offsetWidth / 3)\n tooltip.style.top = `${top}px`\n tooltip.style.left = `${left}px`\n\n tooltip.line = new LeaderLine(tooltip, this.delegate.targetElement, {\n ...this.leaderLineOptions,\n color: 'darkcyan'\n })\n\n tooltip.drag = new PlainDraggable(tooltip)\n return tooltip\n }\n\n createTriggerTooltip (targetTooltip, renderingTooltip) {\n if (!this.delegate.triggerElement) return\n const title = `\n <svg xmlns=\"http://www.w3.org/2000/svg\" style=\"display:inline;\" width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polygon points=\"13 2 3 14 12 14 11 22 21 10 12 10 13 2\"></polygon></svg>\n TRIGGER - &lt;${this.delegate.triggerElement.tagName.toLowerCase()}&gt;\n `\n\n const tooltip = appendTooltip(\n title,\n this.delegate.triggerTooltipData?.subtitle || '',\n this.delegate.triggerTooltipData?.content || '',\n {\n id: `${this.delegate.id}-trigger`,\n backgroundColor: 'lavender',\n color: 'blueviolet'\n }\n )\n\n const coords = coordinates(this.delegate.triggerElement)\n const top = Math.ceil(coords.top - tooltip.offsetHeight * 2)\n const left = Math.ceil(coords.left + coords.width + tooltip.offsetWidth / 3)\n tooltip.style.top = `${top}px`\n tooltip.style.left = `${left}px`\n\n tooltip.line = new LeaderLine(this.delegate.triggerElement, tooltip, {\n ...this.leaderLineOptions,\n color: 'blueviolet'\n })\n\n if (targetTooltip) {\n tooltip.lineToTarget = new LeaderLine(tooltip, targetTooltip, {\n ...this.leaderLineOptions,\n color: 'blueviolet',\n middleLabel: this.delegate.targetLineLabel,\n size: 2.1\n })\n\n targetTooltip.drag.onMove = () => {\n targetTooltip.line.position()\n tooltip.lineToTarget?.position()\n tooltip.lineToRendering?.position()\n }\n }\n\n if (renderingTooltip) {\n tooltip.lineToRendering = new LeaderLine(tooltip, renderingTooltip, {\n ...this.leaderLineOptions,\n color: 'blueviolet',\n middleLabel: this.delegate.renderingLineLabel,\n size: 2.1\n })\n\n renderingTooltip.drag.onMove = () => {\n renderingTooltip.line.position()\n if (tooltip.lineToTarget) tooltip.lineToTarget.position()\n tooltip.lineToRendering?.position()\n }\n }\n\n tooltip.drag = new PlainDraggable(tooltip)\n tooltip.drag.onMove = () => {\n tooltip.line.position()\n if (tooltip.lineToTarget) tooltip.lineToTarget.position()\n if (tooltip.lineToRendering) tooltip.lineToRendering.position()\n }\n\n return tooltip\n }\n\n get leaderLineOptions () {\n return {\n dash: { animation: true },\n dropShadow: { opacity: 0.3 },\n endPlug: 'arrow3',\n endPlugSize: 1.7,\n size: 3,\n startPlug: 'disc',\n startPlugSize: 1\n }\n }\n}\n", "import supervisor from './supervisor'\nimport Devtool from './devtool'\n\nconst { restart, start, stop } = supervisor\n\nfunction decorateElementWithDevtool (element, name, label) {\n Object.assign(element, {\n initializeDevtool () {\n const mouseenter = () => this.devtool.show()\n\n addEventListener('turbo-boost:devtools-start', () => {\n this.devtool = new Devtool(this)\n this.addEventListener('mouseenter', mouseenter)\n })\n\n addEventListener('turbo-boost:devtools-stop', () => {\n this.removeEventListener('mouseenter', mouseenter)\n this.removeDevtool()\n })\n\n this.dispatchEvent(\n new CustomEvent('turbo-boost:devtools-connect', { bubbles: true })\n )\n },\n hideDevtool () {\n this.devtool?.hide({ active: false })\n },\n removeDevtool () {\n this.devtool.hide({ active: false })\n this.devtool.unregisterEventListeners()\n delete this.devtool\n },\n name,\n targetLineLabel: label\n })\n\n // the element references below are defaults that are placed on the receiver if not present\n const properties = ['triggerElement', 'morphElement', 'targetElement']\n\n properties\n .filter(property => {\n return element[property] === undefined\n })\n .forEach(property => {\n Object.defineProperty(element, property, {\n get () {\n return element\n }\n })\n })\n}\n\n//;(async () => {\n// // we cannot detect customElements.get(\"cable-ready-updates-for\") because they are lazily initialized\n// if (window.CableReady) await import('./delegates/cable_ready.js')\n//})()\n\nexport { Devtool, decorateElementWithDevtool }\n\nexport default { restart, start, stop }\n", "export default class TurboBoostElement extends HTMLElement {\n constructor(html) {\n super()\n this.devtool = 'unknown'\n this.attachShadow({ mode: 'open' })\n this.shadowRoot.innerHTML = html || '<slot></slot>'\n }\n\n connectedCallback() {\n this.ensureId()\n }\n\n ensureId() {\n if (this.id.trim().length) return\n this.id = `${this.tagName}-${this.uuidv4()}`.toLowerCase()\n }\n\n // SEE: https://stackoverflow.com/questions/105034/how-do-i-create-a-guid-uuid\n uuidv4() {\n return ([1e7] + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, c =>\n (c ^ (crypto.getRandomValues(new Uint8Array(1))[0] & (15 >> (c / 4)))).toString(16)\n )\n }\n\n get viewStack() {\n const value = this.getAttribute('view-stack')\n if (!value) return []\n return JSON.parse(value)\n }\n\n get partial() {\n return this.viewStack[0]\n }\n}\n", "import TurboBoostElement from '../../turbo_boost_element'\n\nconst html = `\n <turbo-boost>\n <slot name=\"busy\" hidden></slot>\n <slot></slot>\n </turbo-boost>\n`\n\nexport const busyDelay = 100 // milliseconds - time to wait before showing busy element\nexport const busyDuration = 400 // milliseconds - minimum time that busy element is shown\n\nexport default class ToggleElement extends TurboBoostElement {\n constructor() {\n super(html)\n }\n\n // TODO: Should we timeout after a theoretical max wait time?\n // The idea being that a server error occurred and the toggle failed.\n showBusyElement() {\n clearTimeout(this.showBusyElementTimeout)\n clearTimeout(this.hideBusyElementTimeout)\n\n if (!this.busyElement) return\n\n this.busyStartedAt = Date.now() + busyDelay\n this.showBusyElementTimeout = setTimeout(() => {\n this.busySlotElement.hidden = false\n this.defaultSlotElement.hidden = true\n }, busyDelay)\n }\n\n hideBusyElement() {\n clearTimeout(this.showBusyElementTimeout)\n clearTimeout(this.hideBusyElementTimeout)\n\n if (!this.busyElement) return\n\n let delay = busyDuration - (Date.now() - this.busyStartedAt)\n if (delay < 0) delay = 0\n\n delete this.busyStartedAt\n this.hideBusyElementTimeout = setTimeout(() => {\n this.busySlotElement.hidden = true\n this.defaultSlotElement.hidden = false\n }, delay)\n }\n\n get busyElement() {\n return this.querySelector(':scope > [slot=\"busy\"]')\n }\n\n get busySlotElement() {\n return this.shadowRoot.querySelector('slot[name=\"busy\"]')\n }\n\n get defaultSlotElement() {\n return this.shadowRoot.querySelector('slot:not([name])')\n }\n\n // indicates if an rpc call is active/busy\n get busy() {\n return this.getAttribute('busy') === 'true'\n }\n\n // indicates if an rpc call is active/busy\n set busy(value) {\n value = !!value\n if (this.busy === value) return\n this.setAttribute('busy', value)\n if (value) this.showBusyElement()\n else this.hideBusyElement()\n }\n\n get busyStartedAt() {\n if (!this.dataset.busyStartedAt) return 0\n return Number(this.dataset.busyStartedAt)\n }\n\n set busyStartedAt(value) {\n this.dataset.busyStartedAt = value\n }\n}\n", "import ToggleElement from '../toggle_element'\n\nexport default class ToggleTargetElement extends ToggleElement {\n connectedCallback() {\n super.connectedCallback()\n\n this.mouseenterHandler = this.onMouseenter.bind(this)\n this.addEventListener('mouseenter', this.mouseenterHandler)\n\n this.collapseHandler = this.collapse.bind(this)\n this.collapseNowHandler = this.collapseNow.bind(this)\n\n this.collapseOn.forEach(entry => {\n const parts = entry.split('@')\n const name = parts[0]\n\n if (parts.length > 1) {\n const target = parts[1].match(/^self|window$/) ? self : self[parts[1]]\n target.addEventListener(name, this.collapseNowHandler)\n } else {\n this.addEventListener(name, this.collapseHandler)\n }\n })\n }\n\n disconnectedCallback() {\n this.removeEventListener('mouseenter', this.mouseenterHandler)\n\n this.collapseOn.forEach(entry => {\n const parts = entry.split('@')\n const name = parts[0]\n\n if (parts.length > 1) {\n const target = parts[1].match(/^self|window$/) ? self : self[parts[1]]\n target.removeEventListener(name, this.collapseNowHandler)\n } else {\n this.removeEventListener(name, this.collapseHandler)\n }\n })\n }\n\n // TODO: get cached content working properly\n // perhaps use a mechanic other than morph\n\n // TODO: implement cache (similar to Turbo Drive restoration visit)\n cacheHTML() {\n // this.cachedHTML = this.innerHTML\n }\n\n // TODO: implement cache (similar to Turbo Drive restoration visit)\n renderCachedHTML() {\n // if (!this.cachedHTML) return\n // this.innerHTML = this.cachedHTML\n }\n\n onMouseenter() {\n clearTimeout(this.collapseTimeout)\n }\n\n collapse(delay = 250) {\n clearTimeout(this.collapseTimeout)\n if (this.busy) return\n if (typeof delay !== 'number') delay = 250\n\n if (delay > 0) return (this.collapseTimeout = setTimeout(() => this.collapse(0), delay))\n\n this.innerHTML = ''\n try {\n this.expanded = false\n this.triggerElement.hideDevtool()\n } catch {}\n }\n\n collapseNow(event) {\n if (event.target.closest('turbo-boost-devtool-tooltip')) return\n this.collapse(0)\n }\n\n collapseMatches() {\n document.querySelectorAll(this.collapseSelector).forEach(el => {\n if (el.id === this.id) return\n if (el.collapse) el.collapse(0)\n })\n }\n\n get collapseSelector() {\n return this.triggerElement.collapseSelector || this.getAttribute('collapse-selector')\n }\n\n get focusSelector() {\n return this.getAttribute('focus-selector')\n }\n\n // the active trigger\n get triggerElement() {\n return document.getElementById(this.labeledBy)\n }\n\n // all triggers\n get triggerElements() {\n return document.querySelectorAll(`[aria-controls=\"${this.id}\"]`)\n }\n\n // the dom id of the active trigger\n get labeledBy() {\n return this.getAttribute('aria-labeledby')\n }\n\n set labeledBy(value) {\n return this.setAttribute('aria-labeledby', value)\n }\n\n get collapseOn() {\n const value = this.getAttribute('collapse-on')\n if (!value) return []\n return JSON.parse(value)\n }\n\n get expanded() {\n return this.triggerElement ? this.triggerElement.expanded : false\n }\n\n set expanded(value) {\n this.triggerElements.forEach(el => (el.expanded = value))\n }\n\n get busy() {\n return this.triggerElement && this.triggerElement.busy\n }\n}\n", "let focusTimeout\n\nfunction deactivateTrixAttributes(editor) {\n const attributes = ['bold', 'bullet', 'code', 'heading1', 'href', 'italic', 'number', 'quote', 'strike']\n attributes.forEach(name => editor.deactivateAttribute(name))\n}\n\nfunction focusTrixEditorElement(element) {\n if (element.value.length === 0) return\n\n const editor = element.editor\n\n // move cursor to the end\n let lastRange = []\n while (lastRange[0] !== editor.getSelectedRange()[0] && lastRange[1] !== editor.getSelectedRange()[1]) {\n lastRange = editor.getSelectedRange()\n editor.moveCursorInDirection('forward')\n }\n\n // insert an empty char and select it\n editor.insertString(' ')\n editor.moveCursorInDirection('forward')\n editor.setSelectedRange([lastRange[1], editor.getSelectedRange()[1]])\n\n // deactivate all trix features for the selection\n deactivateTrixAttributes(editor)\n\n // move cursor to end and collapse the selection\n editor.setSelectedRange([editor.getSelectedRange()[1], editor.getSelectedRange()[1]])\n}\n\nfunction debouncedFocus(element) {\n clearTimeout(focusTimeout)\n\n focusTimeout = setTimeout(() => {\n if (!element) return\n\n element.focus()\n const trixEditorElement = element.closest('trix-editor')\n\n try {\n if (trixEditorElement) {\n focusTrixEditorElement(trixEditorElement)\n } else {\n element.selectionStart = element.selectionEnd = element.value.length\n }\n } catch (_) {\n } finally {\n element.scrollIntoView({ block: 'center', behavior: 'smooth' })\n }\n }, 100)\n}\n\nexport default element => debouncedFocus(element)\n", "import { Devtool, decorateElementWithDevtool } from '@turbo-boost/devtools'\n\nimport ToggleElement, { busyDuration } from '../toggle_element'\nimport focus from './focus'\n\ndocument.addEventListener('turbo-boost:devtools-start', () => Devtool.register('toggle', 'toggles'))\n\nlet currentFocusSelector\n\nexport default class ToggleTriggerElement extends ToggleElement {\n constructor() {\n super()\n\n decorateElementWithDevtool(this, 'toggle', 'toggles')\n }\n\n connectedCallback() {\n super.connectedCallback()\n\n const { start: commandStartEvent } = TurboBoost.Commands.events\n this.commandStartHandler = this.onCommandStart.bind(this)\n this.addEventListener(commandStartEvent, this.commandStartHandler)\n\n const { before: beforeInvokeEvent } = TurboBoost.Streams.invokeEvents\n this.beforeInvokeHandler = this.onBeforeInvoke.bind(this)\n addEventListener(beforeInvokeEvent, this.beforeInvokeHandler)\n\n // fires after receiving the toggle morph Turbo Stream but before it is executed\n // this.addEventListener(TurboBoost.Commands.events.success, event => {\n // // TODO: imlement cache, this.targetElement.cacheHTML()\n // })\n\n this.initializeDevtool()\n }\n\n disconnectedCallback() {\n // delay cleanup because the trigger may have been morphed out of the DOM,\n // but it's needed to apply behavior like focus etc...\n setTimeout(() => {\n const { start: commandStartEvent } = TurboBoost.Commands.events\n this.removeEventListener(commandStartEvent, this.commandStartHandler)\n\n const { before: beforeInvokeEvent } = TurboBoost.Streams.invokeEvents\n removeEventListener(beforeInvokeEvent, this.beforeInvokeHandler)\n\n this.removeDevtool()\n }, 1000)\n }\n\n onCommandStart(event) {\n currentFocusSelector = this.focusSelector\n this.targetElement.labeledBy = this.id\n this.targetElement.collapseMatches()\n this.busy = true\n // TODO: implement cache - this.targetElement.renderCachedHTML()\n }\n\n // runs before an invoke turbo stream is executed\n onBeforeInvoke(event) {\n // return early if we're not the element responsible for this invoke\n if (event.detail.method !== 'morph') return\n if (event.target.id !== this.morphs) return\n const selector = `turbo-boost-toggle-target[aria-labeledby=\"${this.id}\"]`\n if (!event.target.querySelector(selector)) return\n\n // ensure the busy element is shown long enough for a good user experience\n // we accomplish this by modifying the event.detail with invoke instructions i.e. { delay }\n // SEE: the TurboBoost Streams library for details on how this works\n const duration = Date.now() - this.busyStartedAt\n let delay = busyDuration - duration\n if (delay < 10) delay = 10\n event.detail.invoke = { delay }\n\n // runs before the morph is executed\n setTimeout(() => {\n this.busy = false\n this.morphToggleTriggerElements.forEach(el => (el.busy = false))\n }, delay - 10)\n\n // runs after the morph is executed\n setTimeout(() => focus(this.targetElement.querySelector(currentFocusSelector)), delay + 100)\n }\n\n // a list of views shared between the trigger and target\n get sharedViews() {\n if (!this.targetElement) return []\n if (!this.targetElement.viewStack) return []\n const reducer = (memo, view) => {\n if (this.targetElement.viewStack.includes(view)) memo.push(view)\n return memo\n }\n return this.viewStack.reduce(reducer.bind(this), [])\n }\n\n // the partial to render\n get renders() {\n return this.getAttribute('renders')\n }\n\n // the renderered partial's top wrapping dom_id\n get morphs() {\n return this.getAttribute('morphs')\n }\n\n // all toggle elements contained by the `morphElement`\n get morphToggleTriggerElements() {\n return Array.from(this.morphElement.querySelectorAll('turbo-boost-toggle-trigger'))\n }\n\n // the target's dom_id\n get controls() {\n return this.getAttribute('aria-controls')\n }\n\n get collapseSelector() {\n return this.getAttribute('collapse-selector')\n }\n\n get focusSelector() {\n return this.getAttribute('focus-selector') || this.targetElement.focusSelector\n }\n\n // indicates if the toggle state should be remembered across requests\n get remember() {\n return this.getAttribute('remember') === 'true'\n }\n\n set remember(value) {\n return this.setAttribute('remember', !!value)\n }\n\n // indicates if the target is expanded\n get expanded() {\n return this.getAttribute('aria-expanded') === 'true'\n }\n\n set expanded(value) {\n this.setAttribute('aria-expanded', !!value)\n }\n\n // indicates if the target is expanded\n get collapsed() {\n return !this.expanded\n }\n\n // ------ DevToolDelegate ------\n get command() {\n return this.dataset.turboCommand\n }\n\n get renderingLineLabel() {\n return 'renders & morphs'\n }\n\n // the morph element\n get morphElement() {\n if (!this.morphs) return null\n return document.getElementById(this.morphs)\n }\n\n // the target element\n get targetElement() {\n if (!this.controls) return null\n return document.getElementById(this.controls)\n }\n\n get triggerTooltipData() {\n let content = this.triggerElement.viewStack\n .reverse()\n .map((view, index) => {\n return this.triggerElement.sharedViews.includes(view)\n ? `<div slot=\"content\">${index + 1}. ${view}</div>`\n : `<div slot=\"content-bottom\">${index + 1}. ${view}</div>`\n }, this)\n .join('')\n\n return {\n subtitle: `\n <b>id</b>: ${this.triggerElement.id}<br>\n <b>aria-controls</b>: ${this.triggerElement.controls}<br>\n <b>aria-expanded</b>: ${this.triggerElement.expanded}<br>\n <b>remember</b>: ${this.triggerElement.remember}<br>\n `,\n content: `\n <div slot=\"content-top\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" style=\"display:inline-block;\" width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polygon points=\"12 2 2 7 12 12 22 7 12 2\"></polygon><polyline points=\"2 17 12 22 22 17\"></polyline><polyline points=\"2 12 12 17 22 12\"></polyline></svg>\n <b>View Stack</b>\n </div>\n ${content}\n `\n }\n }\n\n get targetTooltipData() {\n let content = this.targetElement.viewStack\n .reverse()\n .map((view, index) => {\n return this.triggerElement.sharedViews.includes(view)\n ? `<div slot=\"content\">${index + 1}. ${view}</div>`\n : `<div slot=\"content-bottom\">${index + 1}. ${view}</div>`\n }, this)\n .join('')\n\n return {\n subtitle: `<b>id</b>: ${this.targetElement.id}<br>\n <b>aria-labeled-by</b>: ${this.targetElement.labeledBy}<br>\n`,\n content: `\n <div slot=\"content-top\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" style=\"display:inline-block;\" width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polygon points=\"12 2 2 7 12 12 22 7 12 2\"></polygon><polyline points=\"2 17 12 22 22 17\"></polyline><polyline points=\"2 12 12 17 22 12\"></polyline></svg>\n <b>View Stack</b>\n </div>\n ${content}\n `\n }\n }\n}\n", "import TurboBoostElement from './turbo_boost_element'\nimport ToggleTargetElement from './toggle_elements/target_element'\nimport ToggleTriggerElement from './toggle_elements/trigger_element'\n\n// Valid custom element names: https://html.spec.whatwg.org/#valid-custom-element-name\n\ncustomElements.define('turbo-boost', TurboBoostElement)\ncustomElements.define('turbo-boost-toggle-target', ToggleTargetElement)\ncustomElements.define('turbo-boost-toggle-trigger', ToggleTriggerElement)\n", "import '@turbo-boost/commands'\nimport devtools from '@turbo-boost/devtools'\nimport './elements'\n\nself.TurboBoost = self.TurboBoost || {}\nself.TurboBoost.devtools = devtools\nself.TurboBoost.Elements = {}\n\nexport default self.TurboBoost.Elements\n"],
5
+ "mappings": "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",
6
+ "names": ["Meta", "value", "meta_default", "commandEvents", "stateEvents", "allEvents", "__spreadValues", "dispatch", "name", "target", "options", "resolve", "evt", "__spreadProps", "head", "observable", "object", "parent", "proxy", "key", "receiver", "index", "observable_default", "loadedState", "currentState", "changedState", "loadStateTimeout", "loadState", "loadStateLater", "json", "event", "state_default", "replaceDocument", "content", "tail", "headIndex", "tailIndex", "html", "append", "renderer_default", "active", "add", "payload", "remove", "id", "activity_default", "finish", "lifecycle_default", "frameSources", "frame", "fetchOptions", "acceptHeaders", "entry", "chunk", "i", "response", "error", "schema", "schema_default", "confirmation", "message", "isTurboMethod", "isTurboForm", "element", "shouldDelegate", "confirmation_default", "events", "eventListener", "register", "eventName", "selectors", "match", "getRegisteredEventForElement", "selector", "el", "isRegisteredForElement", "delegates_default", "fn", "findClosestCommand", "findClosestFrameWithSource", "assignElementValueToPayload", "memo", "option", "buildAttributePayload", "attr", "elements_default", "updateFormSubmission", "formSubmission", "_a", "invokeCommand", "form", "input", "form_default", "build", "urlString", "a", "url", "urls_default", "src", "frame_default", "method_default", "aborted", "xhr", "errored", "loaded", "ex", "window_default", "find", "turboFrame", "turboMethod", "drivers_default", "currentLevel", "logLevels", "detail", "logger_default", "v4", "c", "uuids_default", "buildCommandPayload", "commandId", "driver", "startEvent", "javascript_default", "template", "html", "appendHTML", "parent", "child", "addHighlight", "element", "options", "removeHighlight", "outline", "outlineOffset", "key", "value", "coordinates", "rect", "width", "height", "top", "left", "right", "bottom", "attempt", "callback", "e", "DevtoolElement", "event", "SupervisorElement", "devtoolElement", "checked", "name", "el", "TooltipElement", "savedTransform", "added", "dependencies", "exists", "dependency", "add", "src", "integrity", "script", "remove", "removeAll", "dependencies_default", "__spreadProps", "__spreadValues", "supervisorElement", "makeDraggable", "stop", "stopped", "start", "started", "restart", "enabledList", "restartTimeout", "debouncedRestart", "autoRestart", "register", "label", "enabled", "supervisor_default", "appendTooltip", "title", "subtitle", "content", "backgroundColor", "color", "position", "id", "activeTarget", "Devtool", "delegate", "hideTimeout", "debouncedHide", "type", "listener", "data", "active", "tooltip", "coords", "_a", "_b", "targetTooltip", "renderingTooltip", "decorateElementWithDevtool", "mouseenter", "property", "src_default", "TurboBoostElement", "html", "c", "value", "html", "busyDelay", "busyDuration", "ToggleElement", "TurboBoostElement", "delay", "value", "ToggleTargetElement", "ToggleElement", "entry", "parts", "name", "delay", "e", "event", "el", "value", "focusTimeout", "deactivateTrixAttributes", "editor", "name", "focusTrixEditorElement", "element", "lastRange", "debouncedFocus", "trixEditorElement", "_", "focus_default", "y", "currentFocusSelector", "ToggleTriggerElement", "ToggleElement", "kt", "commandStartEvent", "beforeInvokeEvent", "event", "selector", "duration", "delay", "busyDuration", "el", "focus_default", "reducer", "memo", "view", "value", "content", "index", "TurboBoostElement", "ToggleTargetElement", "ToggleTriggerElement", "Lt", "javascript_default"]
7
7
  }
@@ -1 +1 @@
1
- {"inputs":{"node_modules/@turbo-boost/commands/app/assets/builds/@turbo-boost/commands.js":{"bytes":11151,"imports":[],"format":"esm"},"node_modules/@turbo-boost/devtools/dist/@turbo-boost/devtools.js":{"bytes":19326,"imports":[],"format":"esm"},"app/javascript/elements/turbo_boost_element/index.js":{"bytes":844,"imports":[],"format":"esm"},"app/javascript/elements/toggle_elements/toggle_element/index.js":{"bytes":2193,"imports":[{"path":"app/javascript/elements/turbo_boost_element/index.js","kind":"import-statement","original":"../../turbo_boost_element"}],"format":"esm"},"app/javascript/elements/toggle_elements/target_element/index.js":{"bytes":3370,"imports":[{"path":"app/javascript/elements/toggle_elements/toggle_element/index.js","kind":"import-statement","original":"../toggle_element"}],"format":"esm"},"app/javascript/elements/toggle_elements/trigger_element/focus.js":{"bytes":1585,"imports":[],"format":"esm"},"app/javascript/elements/toggle_elements/trigger_element/index.js":{"bytes":7168,"imports":[{"path":"node_modules/@turbo-boost/devtools/dist/@turbo-boost/devtools.js","kind":"import-statement","original":"@turbo-boost/devtools"},{"path":"app/javascript/elements/toggle_elements/toggle_element/index.js","kind":"import-statement","original":"../toggle_element"},{"path":"app/javascript/elements/toggle_elements/trigger_element/focus.js","kind":"import-statement","original":"./focus"}],"format":"esm"},"app/javascript/elements/index.js":{"bytes":481,"imports":[{"path":"app/javascript/elements/turbo_boost_element/index.js","kind":"import-statement","original":"./turbo_boost_element"},{"path":"app/javascript/elements/toggle_elements/target_element/index.js","kind":"import-statement","original":"./toggle_elements/target_element"},{"path":"app/javascript/elements/toggle_elements/trigger_element/index.js","kind":"import-statement","original":"./toggle_elements/trigger_element"}],"format":"esm"},"app/javascript/index.js":{"bytes":244,"imports":[{"path":"node_modules/@turbo-boost/commands/app/assets/builds/@turbo-boost/commands.js","kind":"import-statement","original":"@turbo-boost/commands"},{"path":"node_modules/@turbo-boost/devtools/dist/@turbo-boost/devtools.js","kind":"import-statement","original":"@turbo-boost/devtools"},{"path":"app/javascript/elements/index.js","kind":"import-statement","original":"./elements"}],"format":"esm"}},"outputs":{"app/assets/builds/@turbo-boost/elements.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":92571},"app/assets/builds/@turbo-boost/elements.js":{"imports":[],"exports":["default"],"entryPoint":"app/javascript/index.js","inputs":{"node_modules/@turbo-boost/commands/app/assets/builds/@turbo-boost/commands.js":{"bytesInOutput":11085},"node_modules/@turbo-boost/devtools/dist/@turbo-boost/devtools.js":{"bytesInOutput":19262},"app/javascript/elements/turbo_boost_element/index.js":{"bytesInOutput":541},"app/javascript/elements/toggle_elements/toggle_element/index.js":{"bytesInOutput":1284},"app/javascript/elements/toggle_elements/target_element/index.js":{"bytesInOutput":2040},"app/javascript/elements/toggle_elements/trigger_element/focus.js":{"bytesInOutput":768},"app/javascript/elements/toggle_elements/trigger_element/index.js":{"bytesInOutput":4299},"app/javascript/elements/index.js":{"bytesInOutput":146},"app/javascript/index.js":{"bytesInOutput":124}},"bytes":39609}}}
1
+ {"inputs":{"node_modules/@turbo-boost/commands/app/assets/builds/@turbo-boost/commands.js":{"bytes":11697,"imports":[],"format":"esm"},"node_modules/@turbo-boost/devtools/dist/@turbo-boost/devtools.js":{"bytes":19335,"imports":[],"format":"esm"},"app/javascript/elements/turbo_boost_element/index.js":{"bytes":844,"imports":[],"format":"esm"},"app/javascript/elements/toggle_elements/toggle_element/index.js":{"bytes":2193,"imports":[{"path":"app/javascript/elements/turbo_boost_element/index.js","kind":"import-statement","original":"../../turbo_boost_element"}],"format":"esm"},"app/javascript/elements/toggle_elements/target_element/index.js":{"bytes":3370,"imports":[{"path":"app/javascript/elements/toggle_elements/toggle_element/index.js","kind":"import-statement","original":"../toggle_element"}],"format":"esm"},"app/javascript/elements/toggle_elements/trigger_element/focus.js":{"bytes":1585,"imports":[],"format":"esm"},"app/javascript/elements/toggle_elements/trigger_element/index.js":{"bytes":7168,"imports":[{"path":"node_modules/@turbo-boost/devtools/dist/@turbo-boost/devtools.js","kind":"import-statement","original":"@turbo-boost/devtools"},{"path":"app/javascript/elements/toggle_elements/toggle_element/index.js","kind":"import-statement","original":"../toggle_element"},{"path":"app/javascript/elements/toggle_elements/trigger_element/focus.js","kind":"import-statement","original":"./focus"}],"format":"esm"},"app/javascript/elements/index.js":{"bytes":481,"imports":[{"path":"app/javascript/elements/turbo_boost_element/index.js","kind":"import-statement","original":"./turbo_boost_element"},{"path":"app/javascript/elements/toggle_elements/target_element/index.js","kind":"import-statement","original":"./toggle_elements/target_element"},{"path":"app/javascript/elements/toggle_elements/trigger_element/index.js","kind":"import-statement","original":"./toggle_elements/trigger_element"}],"format":"esm"},"app/javascript/index.js":{"bytes":244,"imports":[{"path":"node_modules/@turbo-boost/commands/app/assets/builds/@turbo-boost/commands.js","kind":"import-statement","original":"@turbo-boost/commands"},{"path":"node_modules/@turbo-boost/devtools/dist/@turbo-boost/devtools.js","kind":"import-statement","original":"@turbo-boost/devtools"},{"path":"app/javascript/elements/index.js","kind":"import-statement","original":"./elements"}],"format":"esm"}},"outputs":{"app/assets/builds/@turbo-boost/elements.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":107124},"app/assets/builds/@turbo-boost/elements.js":{"imports":[],"exports":["default"],"entryPoint":"app/javascript/index.js","inputs":{"node_modules/@turbo-boost/commands/app/assets/builds/@turbo-boost/commands.js":{"bytesInOutput":11631},"node_modules/@turbo-boost/devtools/dist/@turbo-boost/devtools.js":{"bytesInOutput":19271},"app/javascript/elements/turbo_boost_element/index.js":{"bytesInOutput":541},"app/javascript/elements/toggle_elements/toggle_element/index.js":{"bytesInOutput":1284},"app/javascript/elements/toggle_elements/target_element/index.js":{"bytesInOutput":2040},"app/javascript/elements/toggle_elements/trigger_element/focus.js":{"bytesInOutput":768},"app/javascript/elements/toggle_elements/trigger_element/index.js":{"bytesInOutput":4299},"app/javascript/elements/index.js":{"bytesInOutput":146},"app/javascript/index.js":{"bytesInOutput":124}},"bytes":40164}}}
@@ -2,6 +2,6 @@
2
2
 
3
3
  module TurboBoost
4
4
  module Elements
5
- VERSION = "0.0.15"
5
+ VERSION = "0.0.17"
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: turbo_boost-elements
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.15
4
+ version: 0.0.17
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nate Hopkins (hopsoft)
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-08-09 00:00:00.000000000 Z
11
+ date: 2023-09-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails