diff --git a/.github/workflows/prettier.yml b/.github/workflows/prettier.yml index ab170c9..2d33bff 100644 --- a/.github/workflows/prettier.yml +++ b/.github/workflows/prettier.yml @@ -14,16 +14,16 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 + - name: Setup Node - uses: actions/setup-node@v3 + uses: actions/setup-node@v4 with: - version: '16.x' - cache: 'yarn' + version: '20.x' + cache: 'npm' - - name: Yarn install - run: yarn install --frozen-lockfile + - name: NPM Install + run: 'npm install --legacy-peer-deps' - name: Run Prettier - run: yarn run prettier package.json prettier.config.js bin/build.mjs app/javascript/**/**/**/**/*.js - + run: 'npx prettier --check --fail-on-errors .' diff --git a/.github/workflows/standardrb.yml b/.github/workflows/standardrb.yml index 11a69e5..2f9d0ff 100644 --- a/.github/workflows/standardrb.yml +++ b/.github/workflows/standardrb.yml @@ -14,23 +14,15 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - ruby-version: ['3.1'] + ruby-version: ['3.3'] + steps: - - uses: actions/checkout@v3 - - name: Set up Ruby ${{ matrix.ruby-version }} - uses: ruby/setup-ruby@v1 - with: - ruby-version: ${{ matrix.ruby-version }} - - uses: actions/cache@v1 - with: - path: vendor/bundle - key: ${{ runner.os }}-gems-${{ hashFiles('**/Gemfile.lock') }} - restore-keys: | - ${{ runner.os }}-gems- - - name: Bundle install - run: | - gem install bundler - bundle config path vendor/bundle - bundle install --jobs 4 --retry 3 - - name: Run StandardRB - run: bundle exec standardrb --format progress + - uses: actions/checkout@v3 + - name: Set up Ruby ${{ matrix.ruby-version }} + uses: ruby/setup-ruby@v1 + with: + ruby-version: ${{ matrix.ruby-version }} + bundler-cache: true + + - name: Run StandardRB + run: bundle exec standardrb --format progress diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 98869c5..09be1d5 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -14,23 +14,16 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - ruby-version: ['3.0', '3.1', '3.2'] + ruby-version: ['3.0', '3.1', '3.2', '3.3'] + steps: - - uses: actions/checkout@v3 - - name: Set up Ruby ${{ matrix.ruby-version }} - uses: ruby/setup-ruby@v1 - with: - ruby-version: ${{ matrix.ruby-version }} - - uses: actions/cache@v3 - with: - path: vendor/bundle - key: ${{ runner.os }}-gems-${{ hashFiles('**/Gemfile.lock') }} - restore-keys: | - ${{ runner.os }}-gems- - - name: Bundle install - run: | - gem install bundler - bundle config path vendor/bundle - bundle install --jobs 4 --retry 3 - - name: Run ruby tests - run: bundle exec rake test + - uses: actions/checkout@v3 + + - name: Set up Ruby ${{ matrix.ruby-version }} + uses: ruby/setup-ruby@v1 + with: + ruby-version: ${{ matrix.ruby-version }} + bundler-cache: true + + - name: Run Tests + run: 'bundle exec rake test' diff --git a/.gitignore b/.gitignore index 9680538..b955337 100644 --- a/.gitignore +++ b/.gitignore @@ -1,17 +1,18 @@ +*.gem +*.key +*.metafile.json +*~ /.bundle/ +/.dir-locals.el /doc/ /log/*.log +/node_modules /pkg/ -/tmp/ /test/dummy/db/*.sqlite3 /test/dummy/db/*.sqlite3-* /test/dummy/log/*.log +/test/dummy/public/assets/ /test/dummy/storage/ /test/dummy/tmp/ -/test/dummy/public/assets/ -*.gem -/node_modules +/tmp/ Gemfile.lock -*.key -*~ -/.dir-locals.el diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 0000000..8f758fa --- /dev/null +++ b/.prettierignore @@ -0,0 +1,4 @@ +*.md +*.yml +builds +test/dummy/vendor diff --git a/.standard.yml b/.standard.yml index eebd761..cbdebc4 100644 --- a/.standard.yml +++ b/.standard.yml @@ -1,3 +1,10 @@ +ruby_version: 2.7 +format: progress +parallel: true + ignore: - test/dummy/bin/* - - test/dummy/config/initializers/inspect_helpers.rb + - test/dummy/db/schema.rb + +Lint/RescueException: + Enabled: false diff --git a/README.md b/README.md index da607be..617fad3 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@

- Lines of Code + Lines of Code @@ -78,12 +78,12 @@ Pre-built easy to use reactive TurboBoost elements for Rails/Hotwire apps. ## Dependencies -- [ruby](https://www.ruby-lang.org/) `>=2.7.3` -- [rails](https://rubygems.org/gems/rails) `>=6.1` -- [turbo-rails](https://rubygems.org/gems/turbo-rails) `>=1.1` -- [@hotwired/turbo](https://yarnpkg.com/package/@hotwired/turbo) `>=7.2.0` -- [@hotwired/turbo-rails](https://yarnpkg.com/package/@hotwired/turbo-rails) `>=7.2.0` -- [turbo_boost-commands](https://github.com/hopsoft/turbo_boost-commands) `>=0.0.2` +- [ruby](https://www.ruby-lang.org/) `>= 3.0` +- [rails](https://rubygems.org/gems/rails) `>= 6.1` +- [turbo-rails](https://rubygems.org/gems/turbo-rails) `>= 1.1` +- [@hotwired/turbo-rails](https://www.npmjs.com/package/@hotwired/turbo-rails) `>= 7.2` +- [turbo_boost-commands](https://rubygems.org/gems/turbo_boost-commands) `>= 0.1.1` +- [@turbo-boost/commands](https://www.npmjs.com/package/@turbo-boost/commands) `>= 0.1.1` ## Setup @@ -195,14 +195,16 @@ TurboBoost.devtools.start() ## Releasing -1. Run `yarn` and `bundle` to pick up the latest -1. Bump version number at `lib/turbo_boost/elements/version.rb`. Pre-release versions use `.preN` +1. Run `npm install` and `bundle` to pick up the latest +1. Update the version number consistently in the following files: + * `lib/turbo_boost/elements/version.rb` - pre-release versions should use `.preN` + * `app/javascript/version.js` - pre-release versions use `-preN` + * `package.json` - pre-release versions use `-preN` 1. Run `bin/standardize` -1. Run `rake build` and `yarn build` +1. Run `rake build` and `npm run build` 1. Commit and push changes to GitHub 1. Run `rake release` -1. Run `yarn publish --no-git-tag-version --access public` -1. Yarn will prompt you for the new version. Pre-release versions use `-preN` +1. Run `npm publish --access public` 1. Commit and push changes to GitHub 1. Create a new release on GitHub ([here](https://github.com/hopsoft/turbo_boost-elements/releases)) and generate the changelog for the stable release for it diff --git a/app/assets/builds/@turbo-boost/commands.metafile.json b/app/assets/builds/@turbo-boost/commands.metafile.json deleted file mode 100644 index d0258c6..0000000 --- a/app/assets/builds/@turbo-boost/commands.metafile.json +++ /dev/null @@ -1 +0,0 @@ -{"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}}} \ No newline at end of file diff --git a/app/assets/builds/@turbo-boost/elements.js b/app/assets/builds/@turbo-boost/elements.js index afb11ce..791b7b5 100644 --- a/app/assets/builds/@turbo-boost/elements.js +++ b/app/assets/builds/@turbo-boost/elements.js @@ -1,4 +1,4 @@ -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="=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` +import"@turbo-boost/commands";var K=Object.defineProperty,U=Object.defineProperties,X=Object.getOwnPropertyDescriptors,O=Object.getOwnPropertySymbols,Y=Object.prototype.hasOwnProperty,Q=Object.prototype.propertyIsEnumerable,H=(t,e,o)=>e in t?K(t,e,{enumerable:!0,configurable:!0,writable:!0,value:o}):t[e]=o,c=(t,e)=>{for(var o in e||(e={}))Y.call(e,o)&&H(t,o,e[o]);if(O)for(var o of O(e))Q.call(e,o)&&H(t,o,e[o]);return t},h=(t,e)=>U(t,X(e)),Z="0.0.6";function ee(t){let e=document.createElement("template");return e.innerHTML=t,e}function $(t,e){e=e||document.body;let o=ee(t).content.cloneNode(!0).querySelector("*");return e.appendChild(o)}function w(t,e={}){if(!t)return;L(t);let{outline:o,outlineOffset:r}=e;o=o||"dashed 3px red",r=r||"0px",t.originalStyles=t.originalStyles||{display:t.style.display,minHeight:t.style.minHeight,minWidth:t.style.minWidth,outline:t.style.outline,outlineOffset:t.style.outlineOffset},getComputedStyle(t).display.match(/^inline$/i)&&t.offsetWidth===0&&t.offsetHeight===0&&(t.style.display="inline-block",t.style.minHeight="2px",t.style.minWidth="2px"),t.style.outline=o,t.style.outlineOffset=r,t.dataset.turboBoostHighlight=!0}function L(t){if(t){if(t.originalStyles){for(let[e,o]of Object.entries(t.originalStyles))o?t.style[e]=o:t.style[e]="";delete t.originalStyles}delete t.dataset.turboBoostHighlight}}function k(t){if(!t)return{};let e=t.getBoundingClientRect(),o=t.offsetWidth,r=t.offsetHeight,s=e.top+window.scrollY,i=e.left+window.scrollX,n=i+o,g=s+r;return{top:s,left:i,right:n,bottom:g,width:o,height:r}}function b(t){try{t()}catch(e){}}var te=class extends HTMLElement{constructor(){super(),this.attachShadow({mode:"open"}),this.shadowRoot.innerHTML=this.html,this.labelElement.addEventListener("click",t=>{t.preventDefault(),this.toggle()}),this.checkboxElement.addEventListener("change",t=>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`

@@ -21,7 +21,7 @@ var De=Object.defineProperty,Be=Object.defineProperties,He=Object.getOwnProperty label { color: black; } - `}},kt=class extends HTMLElement{constructor(){super(),this.enabledDevtools={},this.attachShadow({mode:"open"}),this.shadowRoot.innerHTML=this.html,this.shadowRoot.querySelector("button").addEventListener("click",()=>this.dispatchEvent(new CustomEvent("turbo-boost:devtools-close",{bubbles:!0}))),this.addEventListener("change",e=>{let t=e.target,{checked:o,name:r}=t;o?this.enableDevtool(r):this.disableDevtool(r)})}enableDevtool(e){this.enabledDevtools[e]||(this.enabledDevtools[e]=!0,this.dispatchEvent(new CustomEvent("turbo-boost:devtool-enable",{bubbles:!0,detail:{name:e}})))}disableDevtool(e){this.enabledDevtools[e]&&(delete this.enabledDevtools[e],this.dispatchEvent(new CustomEvent("turbo-boost:devtool-disable",{bubbles:!0,detail:{name:e}})))}close(){this.devtoolElements.forEach(e=>{e.checked&&e.uncheck()}),this.remove()}get devtoolElements(){return this.querySelectorAll('[slot="devtool"]')}get closeElement(){return this.querySelector("button")}get html(){return` + `}},oe=class extends HTMLElement{constructor(){super(),this.enabledDevtools={},this.attachShadow({mode:"open"}),this.shadowRoot.innerHTML=this.html,this.shadowRoot.querySelector("button").addEventListener("click",()=>this.dispatchEvent(new CustomEvent("turbo-boost:devtools-close",{bubbles:!0}))),this.addEventListener("change",t=>{let e=t.target,{checked:o,name:r}=e;o?this.enableDevtool(r):this.disableDevtool(r)})}enableDevtool(t){this.enabledDevtools[t]||(this.enabledDevtools[t]=!0,this.dispatchEvent(new CustomEvent("turbo-boost:devtool-enable",{bubbles:!0,detail:{name:t}})))}disableDevtool(t){this.enabledDevtools[t]&&(delete this.enabledDevtools[t],this.dispatchEvent(new CustomEvent("turbo-boost:devtool-disable",{bubbles:!0,detail:{name:t}})))}close(){this.devtoolElements.forEach(t=>{t.checked&&t.uncheck()}),this.remove()}get devtoolElements(){return this.querySelectorAll('[slot="devtool"]')}get closeElement(){return this.querySelector("button")}get html(){return`
@@ -89,7 +89,7 @@ var De=Object.defineProperty,Be=Object.defineProperties,He=Object.getOwnProperty button:hover { opacity: 1; } - `}},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` + `}},re=class extends HTMLElement{constructor(){super(),this.attachShadow({mode:"open"}),this.shadowRoot.innerHTML=this.html}connectedCallback(){let t=localStorage.getItem(`turbo-boost-devtools-${location.href}-${this.id}-transform`);t&&(this.style.transform=t)}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`
@@ -183,38 +183,38 @@ var De=Object.defineProperty,Be=Object.defineProperties,He=Object.getOwnProperty slot[name="content-bottom"] { color: red; } - `}},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(""),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(` - - ${t} + `}},u=[],ie={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 se(t){return t.global&&self[t.global]||document.querySelector(`[src='${t.src}']`)?!0:u.includes(t)}function le(t){if(se(t))return;u.push(t);let{src:e,integrity:o}=t,r=document.createElement("script");r.setAttribute("src",e),r.setAttribute("crossorigin","anonymous"),r.setAttribute("referrerpolicy","no-referrer"),o&&r.setAttribute("integrity",o),document.head.appendChild(r)}function M(t){if(!u.includes(t))return;u.splice(u.indexOf(t),1);let{src:e}=t,o=document.querySelector(`script[src='${e}']`);o&&o.remove(),t.global&&self[t.global]&&(self[t.global]=null)}function ne(){[...u].forEach(t=>M(t))}var p=h(c({},ie),{add:le,remove:M,removeAll:ne});customElements.define("turbo-boost-devtool",te);customElements.define("turbo-boost-devtool-supervisor",oe);customElements.define("turbo-boost-devtool-tooltip",re);var l;function j(){if(l)try{new PlainDraggable(l)}catch(t){setTimeout(j,200)}}function A(){N()||(l.close(),l.dispatchEvent(new CustomEvent("turbo-boost:devtools-stop",{bubbles:!0})),l=null,p.removeAll())}function I(){y()||(p.add(p.LeaderLine),p.add(p.PlainDraggable),l=$(""),setTimeout(j,200),l.dispatchEvent(new CustomEvent("turbo-boost:devtools-start",{bubbles:!0})))}function ae(){let t=l?Object.keys(l.enabledDevtools):[];A(),I(),l.devtoolElements.forEach(e=>{t.includes(e.name)&&e.check()})}function y(){return!!l}function N(){return!y()}var R;function q(){clearTimeout(R),R=setTimeout(ae,25)}function v(){y()&&q()}addEventListener("turbo:load",v);addEventListener("turbo-frame:load",v);addEventListener("turbo-boost:devtools-connect",v);addEventListener("turbo-boost:devtools-close",A);window.TurboBoost&&(addEventListener(TurboBoost.Commands.events.success,v),addEventListener(TurboBoost.Commands.events.finish,v));function de(t,e){if(l)return $(` + + ${e} - `,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(` - -
${e}
-
${t}
+ `,l)}function ce(t){return l?l.enabledDevtools[t]:!1}var S={enabled:ce,register:de,start:I,stop:A,restart:q,get started(){return y()},get stopped(){return N()}};function x(t,e,o,r={}){let{backgroundColor:s,color:i,position:n,id:g}=r;return i=i||"white",n=n||"top",$(` + +
${t}
+
${e}
${o}
- `)}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=` + `)}var T,D=class{constructor(t){this.delegate=t;let e,o=()=>{clearTimeout(e),e=setTimeout(this.hide({active:!1}),25)};this.eventListeners["turbo-boost:devtool-enable"]=r=>{let{name:s}=r.detail;s===this.delegate.name&&(w(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:s}=r.detail;s===this.delegate.name&&L(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(([t,e])=>{addEventListener(t,e)})}unregisterEventListeners(){Object.entries(this.eventListeners).forEach(([t,e])=>{removeEventListener(t,e)})}get eventListeners(){return this._eventListeners||(this._eventListeners={})}show(){if(!this.enabled||this.active)return;this.active=!0,this.hide({active:!0}),w(this.delegate.targetElement,{outline:"3px dashed darkcyan",outlineOffset:"-2px"}),w(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(e=>e.style.zIndex=1e5);let t={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&&(t.trigger={partial:this.delegate.triggerElement.partial,id:this.delegate.triggerElement.id,status:"OK"},t.target.id=this.delegate.triggerElement.controls),this.delegate.targetElement&&(t.target={partial:this.delegate.targetElement.partial,dom_id:this.delegate.targetElement.id,status:"OK"}),console.table(t)}hide({active:t=!1}){document.querySelectorAll("turbo-boost-devtool-tooltip").forEach(e=>{b(()=>e.line.remove()),b(()=>e.drag.remove()),b(()=>e.lineToRendering.remove()),b(()=>e.lineToTarget.remove()),b(()=>e.remove())}),document.querySelectorAll("[data-turbo-boost-highlight]").forEach(e=>{e.tagName.match(/turbo-boost-toggle-trigger/i)||L(e)}),this.active=t}get active(){return T===this.delegate}set active(t){t?T=this.delegate:T=null}get enabled(){return S.enabled(this.delegate.name)}static register(t,e){S.register(t,e)}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 t=` RENDERING - <${this.delegate.triggerElement.tagName.toLowerCase()}> - `,t=` + `,e=` partial: ${this.delegate.triggerElement.renders||"unknown"}
morphs: ${this.delegate.triggerElement.morphs||"unknown"}
- `,o=K(e,t,` + `,o=x(t,e,`
The TRIGGER toggles the TARGET then renders the partial & morphs the element.
- `,{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=` + `,{id:`${this.delegate.id}-rendering`,backgroundColor:"lightyellow",color:"chocolate"}),r=k(this.delegate.morphElement),s=Math.ceil(r.top+r.height/2-o.offsetHeight/2),i=Math.ceil(r.left+r.width+100);return o.style.top=`${s}px`,o.style.left=`${i}px`,o.line=new LeaderLine(o,this.delegate.morphElement,h(c({},this.leaderLineOptions),{color:"chocolate"})),o.drag=new PlainDraggable(o),o}createTargetTooltip(){var t,e;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=` TARGET - <${this.delegate.targetElement.tagName.toLowerCase()}> - `,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=` + `,r=x(o,((t=this.delegate.targetTooltipData)==null?void 0:t.subtitle)||"",((e=this.delegate.targetTooltipData)==null?void 0:e.content)||"",{id:`${this.delegate.id}-target`,backgroundColor:"lightcyan",color:"darkcyan",position:"bottom"}),s=k(this.delegate.targetElement),i=Math.ceil(s.top+r.offsetHeight),n=Math.ceil(s.left+s.width+r.offsetWidth/3);return r.style.top=`${i}px`,r.style.left=`${n}px`,r.line=new LeaderLine(r,this.delegate.targetElement,h(c({},this.leaderLineOptions),{color:"darkcyan"})),r.drag=new PlainDraggable(r),r}createTriggerTooltip(t,e){var o,r;if(!this.delegate.triggerElement)return;let s=` TRIGGER - <${this.delegate.triggerElement.tagName.toLowerCase()}> - `,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||""}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=` + `,i=x(s,((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"}),n=k(this.delegate.triggerElement),g=Math.ceil(n.top-i.offsetHeight*2),J=Math.ceil(n.left+n.width+i.offsetWidth/3);return i.style.top=`${g}px`,i.style.left=`${J}px`,i.line=new LeaderLine(this.delegate.triggerElement,i,h(c({},this.leaderLineOptions),{color:"blueviolet"})),t&&(i.lineToTarget=new LeaderLine(i,t,h(c({},this.leaderLineOptions),{color:"blueviolet",middleLabel:this.delegate.targetLineLabel,size:2.1})),t.drag.onMove=()=>{var m,B;t.line.position(),(m=i.lineToTarget)==null||m.position(),(B=i.lineToRendering)==null||B.position()}),e&&(i.lineToRendering=new LeaderLine(i,e,h(c({},this.leaderLineOptions),{color:"blueviolet",middleLabel:this.delegate.renderingLineLabel,size:2.1})),e.drag.onMove=()=>{var m;e.line.position(),i.lineToTarget&&i.lineToTarget.position(),(m=i.lineToRendering)==null||m.position()}),i.drag=new PlainDraggable(i),i.drag.onMove=()=>{i.line.position(),i.lineToTarget&&i.lineToTarget.position(),i.lineToRendering&&i.lineToRendering.position()},i}get leaderLineOptions(){return{dash:{animation:!0},dropShadow:{opacity:.3},endPlug:"arrow3",endPlugSize:1.7,size:3,startPlug:"disc",startPlugSize:1}}},{restart:he,start:ue,stop:ge}=S;function z(t,e,o){Object.assign(t,{initializeDevtool(){let r=()=>this.devtool.show();addEventListener("turbo-boost:devtools-start",()=>{this.devtool=new D(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(){var r,s;(r=this.devtool)!=null&&r.hide&&this.devtool.hide({active:!1}),(s=this.devtool)!=null&&s.unregisterEventListeners&&this.devtool.unregisterEventListeners(),delete this.devtool},name:e,targetLineLabel:o}),["triggerElement","morphElement","targetElement"].filter(r=>t[r]===void 0).forEach(r=>{Object.defineProperty(t,r,{get(){return t}})})}var P={restart:he,start:ue,stop:ge,VERSION:Z};var V="0.0.18";var a=class extends HTMLElement{constructor(e){super(),this.devtool="unknown",this.attachShadow({mode:"open"}),this.shadowRoot.innerHTML=e||""}connectedCallback(){this.ensureId()}ensureId(){this.id.trim().length||(this.id=`${this.tagName}-${this.uuidv4()}`.toLowerCase())}uuidv4(){return("10000000-1000-4000-8000"+-1e11).replace(/[018]/g,e=>(e^crypto.getRandomValues(new Uint8Array(1))[0]&15>>e/4).toString(16))}get viewStack(){let e=this.getAttribute("view-stack");return e?JSON.parse(e):[]}get partial(){return this.viewStack[0]}};var me=` -`,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)?`
${r+1}. ${o}
`:`
${r+1}. ${o}
`,this).join("");return{subtitle:` +`,F=100,C=400,d=class extends a{constructor(){super(me)}showBusyElement(){clearTimeout(this.showBusyElementTimeout),clearTimeout(this.hideBusyElementTimeout),this.busyElement&&(this.busyStartedAt=Date.now()+F,this.showBusyElementTimeout=setTimeout(()=>{this.busySlotElement.hidden=!1,this.defaultSlotElement.hidden=!0},F))}hideBusyElement(){if(clearTimeout(this.showBusyElementTimeout),clearTimeout(this.hideBusyElementTimeout),!this.busyElement)return;let e=C-(Date.now()-this.busyStartedAt);e<0&&(e=0),delete this.busyStartedAt,this.hideBusyElementTimeout=setTimeout(()=>{this.busySlotElement.hidden=!0,this.defaultSlotElement.hidden=!1},e)}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(e){e=!!e,this.busy!==e&&(this.setAttribute("busy",e),e?this.showBusyElement():this.hideBusyElement())}get busyStartedAt(){return this.dataset.busyStartedAt?Number(this.dataset.busyStartedAt):0}set busyStartedAt(e){this.dataset.busyStartedAt=e}};var f=class extends d{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(e=>{let o=e.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(e=>{let o=e.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(e=250){if(clearTimeout(this.collapseTimeout),!this.busy){if(typeof e!="number"&&(e=250),e>0)return this.collapseTimeout=setTimeout(()=>this.collapse(0),e);this.innerHTML="";try{this.expanded=!1,this.triggerElement.hideDevtool()}catch(o){}}}collapseNow(e){e.target.closest("turbo-boost-devtool-tooltip")||this.collapse(0)}collapseMatches(){document.querySelectorAll(this.collapseSelector).forEach(e=>{e.id!==this.id&&e.collapse&&e.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(e){return this.setAttribute("aria-labeledby",e)}get collapseOn(){let e=this.getAttribute("collapse-on");return e?JSON.parse(e):[]}get expanded(){return this.triggerElement?this.triggerElement.expanded:!1}set expanded(e){this.triggerElements.forEach(o=>o.expanded=e)}get busy(){return this.triggerElement&&this.triggerElement.busy}};var W;function be(t){["bold","bullet","code","heading1","href","italic","number","quote","strike"].forEach(o=>t.deactivateAttribute(o))}function pe(t){if(t.value.length===0)return;let e=t.editor,o=[];for(;o[0]!==e.getSelectedRange()[0]&&o[1]!==e.getSelectedRange()[1];)o=e.getSelectedRange(),e.moveCursorInDirection("forward");e.insertString(" "),e.moveCursorInDirection("forward"),e.setSelectedRange([o[1],e.getSelectedRange()[1]]),be(e),e.setSelectedRange([e.getSelectedRange()[1],e.getSelectedRange()[1]])}function ve(t){clearTimeout(W),W=setTimeout(()=>{if(!t)return;t.focus();let e=t.closest("trix-editor");try{e?pe(e):t.selectionStart=t.selectionEnd=t.value.length}catch(o){}finally{t.scrollIntoView({block:"center",behavior:"smooth"})}},100)}var G=t=>ve(t);document.addEventListener("turbo-boost:devtools-start",()=>D.register("toggle","toggles"));var _,E=class extends d{constructor(){super(),z(this,"toggle","toggles")}connectedCallback(){super.connectedCallback();let{start:e}=TurboBoost.Commands.events;this.commandStartHandler=this.onCommandStart.bind(this),this.addEventListener(e,this.commandStartHandler);let{before:o}=TurboBoost.Streams.invokeEvents;this.beforeInvokeHandler=this.onBeforeInvoke.bind(this),addEventListener(o,this.beforeInvokeHandler),this.initializeDevtool()}disconnectedCallback(){setTimeout(()=>{let{start:e}=TurboBoost.Commands.events;this.removeEventListener(e,this.commandStartHandler);let{before:o}=TurboBoost.Streams.invokeEvents;removeEventListener(o,this.beforeInvokeHandler),this.removeDevtool()},1e3)}onCommandStart(e){_=this.focusSelector,this.targetElement.labeledBy=this.id,this.targetElement.collapseMatches(),this.busy=!0}onBeforeInvoke(e){if(e.detail.method!=="morph"||e.target.id!==this.morphs)return;let o=`turbo-boost-toggle-target[aria-labeledby="${this.id}"]`;if(!e.target.querySelector(o))return;let r=Date.now()-this.busyStartedAt,s=C-r;s<10&&(s=10),e.detail.invoke={delay:s},setTimeout(()=>{this.busy=!1,this.morphToggleTriggerElements.forEach(i=>i.busy=!1)},s-10),setTimeout(()=>G(this.targetElement.querySelector(_)),s+100)}get sharedViews(){if(!this.targetElement)return[];if(!this.targetElement.viewStack)return[];let e=(o,r)=>(this.targetElement.viewStack.includes(r)&&o.push(r),o);return this.viewStack.reduce(e.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(e){return this.setAttribute("remember",!!e)}get expanded(){return this.getAttribute("aria-expanded")==="true"}set expanded(e){this.setAttribute("aria-expanded",!!e)}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 e=this.triggerElement.viewStack.reverse().map((o,r)=>this.triggerElement.sharedViews.includes(o)?`
${r+1}. ${o}
`:`
${r+1}. ${o}
`,this).join("");return{subtitle:` id: ${this.triggerElement.id}
aria-controls: ${this.triggerElement.controls}
aria-expanded: ${this.triggerElement.expanded}
@@ -224,14 +224,14 @@ var De=Object.defineProperty,Be=Object.defineProperties,He=Object.getOwnProperty View Stack
- ${t} - `}}get targetTooltipData(){let t=this.targetElement.viewStack.reverse().map((o,r)=>this.triggerElement.sharedViews.includes(o)?`
${r+1}. ${o}
`:`
${r+1}. ${o}
`,this).join("");return{subtitle:`id: ${this.targetElement.id}
+ ${e} + `}}get targetTooltipData(){let e=this.targetElement.viewStack.reverse().map((o,r)=>this.triggerElement.sharedViews.includes(o)?`
${r+1}. ${o}
`:`
${r+1}. ${o}
`,this).join("");return{subtitle:`id: ${this.targetElement.id}
aria-labeled-by: ${this.targetElement.labeledBy}
`,content:`
View Stack
- ${t} - `}}};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}; + ${e} + `}}};customElements.define("turbo-boost",a);customElements.define("turbo-boost-toggle-target",f);customElements.define("turbo-boost-toggle-trigger",E);self.TurboBoost=self.TurboBoost||{};self.TurboBoost.devtools=P;self.TurboBoost.Elements={VERSION:V};var Pe=self.TurboBoost.Elements;export{Pe as default}; //# sourceMappingURL=elements.js.map diff --git a/app/assets/builds/@turbo-boost/elements.js.map b/app/assets/builds/@turbo-boost/elements.js.map index 15165c1..92d6f0d 100644 --- a/app/assets/builds/@turbo-boost/elements.js.map +++ b/app/assets/builds/@turbo-boost/elements.js.map @@ -1,7 +1,7 @@ { "version": 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"], - "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 = '= 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 \n
\n \n \n
\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 \n
\n \n \n \n
\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 \n
\n
\n \n \n
\n \n \n \n \n
\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 ''\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 \n ${label}\n \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 \n
${title}
\n
${subtitle}
\n ${content}\n
\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 \n RENDERING - <${this.delegate.triggerElement.tagName.toLowerCase()}>\n `\n const subtitle = `\n partial: ${this.delegate.triggerElement.renders || 'unknown'}
\n morphs: ${this.delegate.triggerElement.morphs || 'unknown'}
\n `\n const content = `\n
\n The TRIGGER toggles the TARGET then renders the partial & morphs the element.
\n
\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 \n TARGET - <${this.delegate.targetElement.tagName.toLowerCase()}>\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 \n TRIGGER - <${this.delegate.triggerElement.tagName.toLowerCase()}>\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 || ''\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 \n \n \n \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 ? `
${index + 1}. ${view}
`\n : `
${index + 1}. ${view}
`\n }, this)\n .join('')\n\n return {\n subtitle: `\n id: ${this.triggerElement.id}
\n aria-controls: ${this.triggerElement.controls}
\n aria-expanded: ${this.triggerElement.expanded}
\n remember: ${this.triggerElement.remember}
\n `,\n content: `\n
\n \n View Stack\n
\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 ? `
${index + 1}. ${view}
`\n : `
${index + 1}. ${view}
`\n }, this)\n .join('')\n\n return {\n subtitle: `id: ${this.targetElement.id}
\n aria-labeled-by: ${this.targetElement.labeledBy}
\n`,\n content: `\n
\n \n View Stack\n
\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"], - "mappings": "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", - "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"] + "sources": ["../../../javascript/index.js", "../../../../node_modules/@turbo-boost/devtools/src/version.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/version.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"], + "sourcesContent": ["import '@turbo-boost/commands'\nimport devtools from '@turbo-boost/devtools'\nimport VERSION from './version'\nimport './elements'\n\nself.TurboBoost = self.TurboBoost || {}\nself.TurboBoost.devtools = devtools\nself.TurboBoost.Elements = { VERSION }\n\nexport default self.TurboBoost.Elements\n", "export default '0.0.6'\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 \n
\n \n \n
\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 \n
\n \n \n \n
\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(`turbo-boost-devtools-${location.href}-${this.id}-transform`)\n\n if (savedTransform) {\n this.style.transform = savedTransform\n }\n }\n\n disconnectedCallback() {\n if (this.id !== 'undefined' && this.id !== '') {\n localStorage.setItem(`turbo-boost-devtools-${location.href}-${this.id}-transform`, this.style.transform)\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 \n
\n
\n \n \n
\n \n \n \n \n
\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: '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: '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]) 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 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 ? Object.keys(supervisorElement.enabledDevtools) : []\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 \n ${label}\n \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 { appendHTML, addHighlight, attempt, coordinates, removeHighlight } 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 \n
${title}
\n
${subtitle}
\n ${content}\n
\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) 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(this.targetTooltip, this.renderingTooltip)\n\n document.querySelectorAll('.leader-line').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.querySelectorAll('turbo-boost-devtool-tooltip').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 \n RENDERING - <${this.delegate.triggerElement.tagName.toLowerCase()}>\n `\n const subtitle = `\n partial: ${this.delegate.triggerElement.renders || 'unknown'}
\n morphs: ${this.delegate.triggerElement.morphs || 'unknown'}
\n `\n const content = `\n
\n The TRIGGER toggles the TARGET then renders the partial & morphs the element.
\n
\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(coords.top + coords.height / 2 - tooltip.offsetHeight / 2)\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 \n TARGET - <${this.delegate.targetElement.tagName.toLowerCase()}>\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 \n TRIGGER - <${this.delegate.triggerElement.tagName.toLowerCase()}>\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 VERSION from './version'\nimport 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(new CustomEvent('turbo-boost:devtools-connect', { bubbles: true }))\n },\n hideDevtool() {\n this.devtool?.hide({ active: false })\n },\n removeDevtool() {\n if (this.devtool?.hide) this.devtool.hide({ active: false })\n if (this.devtool?.unregisterEventListeners) 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, VERSION }\n", "export default '0.0.18'\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 || ''\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 \n \n \n \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 ? `
${index + 1}. ${view}
`\n : `
${index + 1}. ${view}
`\n }, this)\n .join('')\n\n return {\n subtitle: `\n id: ${this.triggerElement.id}
\n aria-controls: ${this.triggerElement.controls}
\n aria-expanded: ${this.triggerElement.expanded}
\n remember: ${this.triggerElement.remember}
\n `,\n content: `\n
\n \n View Stack\n
\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 ? `
${index + 1}. ${view}
`\n : `
${index + 1}. ${view}
`\n }, this)\n .join('')\n\n return {\n subtitle: `id: ${this.targetElement.id}
\n aria-labeled-by: ${this.targetElement.labeledBy}
\n`,\n content: `\n
\n \n View Stack\n
\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"], + "mappings": "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", + "names": ["version_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", "version_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", "$t", "commandStartEvent", "beforeInvokeEvent", "event", "selector", "duration", "delay", "busyDuration", "el", "focus_default", "reducer", "memo", "view", "value", "content", "index", "TurboBoostElement", "ToggleTargetElement", "ToggleTriggerElement", "Dt", "version_default", "javascript_default"] } diff --git a/app/assets/builds/@turbo-boost/elements.metafile.json b/app/assets/builds/@turbo-boost/elements.metafile.json deleted file mode 100644 index 7e4dfef..0000000 --- a/app/assets/builds/@turbo-boost/elements.metafile.json +++ /dev/null @@ -1 +0,0 @@ -{"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}}} \ No newline at end of file diff --git a/app/helpers/turbo_boost/elements/application_helper.rb b/app/helpers/turbo_boost/elements/application_helper.rb index 2708f6a..0b164c6 100644 --- a/app/helpers/turbo_boost/elements/application_helper.rb +++ b/app/helpers/turbo_boost/elements/application_helper.rb @@ -13,7 +13,7 @@ def method_missing(name, ...) prefixes = %w[toggle_] prefixes.each do |prefix| next unless name.start_with?(prefix) - return send("#{prefix}tag_builder").public_send(name.to_s.delete_prefix(prefix), ...) + return send(:"#{prefix}tag_builder").public_send(name.to_s.delete_prefix(prefix), ...) end super end @@ -22,7 +22,7 @@ def respond_to_missing?(name, ...) prefixes = %w[toggle_] prefixes.each do |prefix| next unless name.start_with?(prefix) - return send("#{prefix}tag_builder").respond_to_missing?(name.to_s.delete_prefix(prefix), ...) + return send(:"#{prefix}tag_builder").respond_to_missing?(name.to_s.delete_prefix(prefix), ...) end super end diff --git a/app/javascript/index.js b/app/javascript/index.js index 986590c..e75fcac 100644 --- a/app/javascript/index.js +++ b/app/javascript/index.js @@ -1,9 +1,10 @@ import '@turbo-boost/commands' import devtools from '@turbo-boost/devtools' +import VERSION from './version' import './elements' self.TurboBoost = self.TurboBoost || {} self.TurboBoost.devtools = devtools -self.TurboBoost.Elements = {} +self.TurboBoost.Elements = { VERSION } export default self.TurboBoost.Elements diff --git a/app/javascript/version.js b/app/javascript/version.js new file mode 100644 index 0000000..246ce39 --- /dev/null +++ b/app/javascript/version.js @@ -0,0 +1 @@ +export default '0.0.18' diff --git a/bin/build.mjs b/bin/build.mjs index fd6770a..a05c229 100755 --- a/bin/build.mjs +++ b/bin/build.mjs @@ -3,7 +3,7 @@ import fs from 'fs' const context = await esbuild.context({ entryPoints: ['app/javascript/index.js'], - external: ['@hotwired/turbo-rails'], + external: ['@hotwired/turbo-rails', '@turbo-boost/commands'], bundle: true, format: 'esm', logLevel: 'debug', diff --git a/bin/standardize b/bin/standardize index 6f2040c..4039ac5 100755 --- a/bin/standardize +++ b/bin/standardize @@ -1,5 +1,6 @@ #!/bin/bash +shopt -s globstar bundle exec magic_frozen_string_literal bundle exec standardrb --fix -yarn run prettier --write package.json prettier.config.js bin/build.mjs app/javascript/**/**/**/**/*.js +npx prettier --write . diff --git a/lib/turbo_boost/elements/version.rb b/lib/turbo_boost/elements/version.rb index f2d51a8..11860a4 100644 --- a/lib/turbo_boost/elements/version.rb +++ b/lib/turbo_boost/elements/version.rb @@ -2,6 +2,6 @@ module TurboBoost module Elements - VERSION = "0.0.17" + VERSION = "0.0.18" end end diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..f15c047 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,1642 @@ +{ + "name": "@turbo-boost/elements", + "version": "0.0.18", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "@turbo-boost/elements", + "version": "0.0.18", + "license": "MIT", + "dependencies": { + "@turbo-boost/devtools": "^0.0.6" + }, + "devDependencies": { + "esbuild": "^0.20.0", + "eslint": "^8.48.0", + "prettier": "^3.0.3" + }, + "peerDependencies": { + "@hotwired/turbo-rails": ">= 7.2", + "@turbo-boost/commands": ">= 0.1.2" + } + }, + "node_modules/@aashutoshrathi/word-wrap": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", + "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.20.0", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.20.0.tgz", + "integrity": "sha512-fGFDEctNh0CcSwsiRPxiaqX0P5rq+AqE0SRhYGZ4PX46Lg1FNR6oCxJghf8YgY0WQEgQuh3lErUFE4KxLeRmmw==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.20.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.20.0.tgz", + "integrity": "sha512-3bMAfInvByLHfJwYPJRlpTeaQA75n8C/QKpEaiS4HrFWFiJlNI0vzq/zCjBrhAYcPyVPG7Eo9dMrcQXuqmNk5g==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.20.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.20.0.tgz", + "integrity": "sha512-aVpnM4lURNkp0D3qPoAzSG92VXStYmoVPOgXveAUoQBWRSuQzt51yvSju29J6AHPmwY1BjH49uR29oyfH1ra8Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.20.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.20.0.tgz", + "integrity": "sha512-uK7wAnlRvjkCPzh8jJ+QejFyrP8ObKuR5cBIsQZ+qbMunwR8sbd8krmMbxTLSrDhiPZaJYKQAU5Y3iMDcZPhyQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.20.0", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.20.0.tgz", + "integrity": "sha512-AjEcivGAlPs3UAcJedMa9qYg9eSfU6FnGHJjT8s346HSKkrcWlYezGE8VaO2xKfvvlZkgAhyvl06OJOxiMgOYQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.20.0", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.20.0.tgz", + "integrity": "sha512-bsgTPoyYDnPv8ER0HqnJggXK6RyFy4PH4rtsId0V7Efa90u2+EifxytE9pZnsDgExgkARy24WUQGv9irVbTvIw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.20.0", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.20.0.tgz", + "integrity": "sha512-kQ7jYdlKS335mpGbMW5tEe3IrQFIok9r84EM3PXB8qBFJPSc6dpWfrtsC/y1pyrz82xfUIn5ZrnSHQQsd6jebQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.20.0", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.20.0.tgz", + "integrity": "sha512-uG8B0WSepMRsBNVXAQcHf9+Ko/Tr+XqmK7Ptel9HVmnykupXdS4J7ovSQUIi0tQGIndhbqWLaIL/qO/cWhXKyQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.20.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.20.0.tgz", + "integrity": "sha512-2ezuhdiZw8vuHf1HKSf4TIk80naTbP9At7sOqZmdVwvvMyuoDiZB49YZKLsLOfKIr77+I40dWpHVeY5JHpIEIg==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.20.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.20.0.tgz", + "integrity": "sha512-uTtyYAP5veqi2z9b6Gr0NUoNv9F/rOzI8tOD5jKcCvRUn7T60Bb+42NDBCWNhMjkQzI0qqwXkQGo1SY41G52nw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.20.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.20.0.tgz", + "integrity": "sha512-c88wwtfs8tTffPaoJ+SQn3y+lKtgTzyjkD8NgsyCtCmtoIC8RDL7PrJU05an/e9VuAke6eJqGkoMhJK1RY6z4w==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.20.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.20.0.tgz", + "integrity": "sha512-lR2rr/128/6svngnVta6JN4gxSXle/yZEZL3o4XZ6esOqhyR4wsKyfu6qXAL04S4S5CgGfG+GYZnjFd4YiG3Aw==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.20.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.20.0.tgz", + "integrity": "sha512-9Sycc+1uUsDnJCelDf6ZNqgZQoK1mJvFtqf2MUz4ujTxGhvCWw+4chYfDLPepMEvVL9PDwn6HrXad5yOrNzIsQ==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.20.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.20.0.tgz", + "integrity": "sha512-CoWSaaAXOZd+CjbUTdXIJE/t7Oz+4g90A3VBCHLbfuc5yUQU/nFDLOzQsN0cdxgXd97lYW/psIIBdjzQIwTBGw==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.20.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.20.0.tgz", + "integrity": "sha512-mlb1hg/eYRJUpv8h/x+4ShgoNLL8wgZ64SUr26KwglTYnwAWjkhR2GpoKftDbPOCnodA9t4Y/b68H4J9XmmPzA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.20.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.20.0.tgz", + "integrity": "sha512-fgf9ubb53xSnOBqyvWEY6ukBNRl1mVX1srPNu06B6mNsNK20JfH6xV6jECzrQ69/VMiTLvHMicQR/PgTOgqJUQ==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.20.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.20.0.tgz", + "integrity": "sha512-H9Eu6MGse++204XZcYsse1yFHmRXEWgadk2N58O/xd50P9EvFMLJTQLg+lB4E1cF2xhLZU5luSWtGTb0l9UeSg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.20.0", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.20.0.tgz", + "integrity": "sha512-lCT675rTN1v8Fo+RGrE5KjSnfY0x9Og4RN7t7lVrN3vMSjy34/+3na0q7RIfWDAj0e0rCh0OL+P88lu3Rt21MQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.20.0", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.20.0.tgz", + "integrity": "sha512-HKoUGXz/TOVXKQ+67NhxyHv+aDSZf44QpWLa3I1lLvAwGq8x1k0T+e2HHSRvxWhfJrFxaaqre1+YyzQ99KixoA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.20.0", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.20.0.tgz", + "integrity": "sha512-GDwAqgHQm1mVoPppGsoq4WJwT3vhnz/2N62CzhvApFD1eJyTroob30FPpOZabN+FgCjhG+AgcZyOPIkR8dfD7g==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.20.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.20.0.tgz", + "integrity": "sha512-0vYsP8aC4TvMlOQYozoksiaxjlvUcQrac+muDqj1Fxy6jh9l9CZJzj7zmh8JGfiV49cYLTorFLxg7593pGldwQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.20.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.20.0.tgz", + "integrity": "sha512-p98u4rIgfh4gdpV00IqknBD5pC84LCub+4a3MO+zjqvU5MVXOc3hqR2UgT2jI2nh3h8s9EQxmOsVI3tyzv1iFg==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.20.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.20.0.tgz", + "integrity": "sha512-NgJnesu1RtWihtTtXGFMU5YSE6JyyHPMxCwBZK7a6/8d31GuSo9l0Ss7w1Jw5QnKUawG6UEehs883kcXf5fYwg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", + "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", + "dev": true, + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/js": { + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.56.0.tgz", + "integrity": "sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@hotwired/turbo": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@hotwired/turbo/-/turbo-8.0.2.tgz", + "integrity": "sha512-3K6QZkwWfosAV8zuM5bY+kKF02jp1lMQGsWfSE6wXdZBRBP3ah+Vj26YNqYtkEomBwRWA0QKhZgyJP7xOQkVEg==", + "peer": true, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@hotwired/turbo-rails": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@hotwired/turbo-rails/-/turbo-rails-8.0.2.tgz", + "integrity": "sha512-j+6THPc+CsaUdUXZTg6wQ+YcStO9kn6CuGzElqFxUmV/vyd1Jfm0RLZMIbaY8w9Qse7u6JBcrm4AcRxhIhYmaQ==", + "peer": true, + "dependencies": { + "@hotwired/turbo": "^8.0.2", + "@rails/actioncable": "^7.0" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.11.14", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", + "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", + "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^2.0.2", + "debug": "^4.3.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.2.tgz", + "integrity": "sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==", + "dev": true + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@rails/actioncable": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/@rails/actioncable/-/actioncable-7.1.3.tgz", + "integrity": "sha512-ojNvnoZtPN0pYvVFtlO7dyEN9Oml1B6IDM+whGKVak69MMYW99lC2NOWXWeE3bmwEydbP/nn6ERcpfjHVjYQjA==", + "peer": true + }, + "node_modules/@turbo-boost/commands": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@turbo-boost/commands/-/commands-0.1.2.tgz", + "integrity": "sha512-oK9tvyVlOYWKspaDnPpfjfMBtddwobGV/y9b7+tfR+grK65nvRjeaZCCNdxB4iq3/+/itb+gxeoLCIcq7sVfXA==", + "peer": true, + "peerDependencies": { + "@hotwired/turbo-rails": ">= 7.2.0", + "@turbo-boost/streams": "^0.1.10" + } + }, + "node_modules/@turbo-boost/devtools": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/@turbo-boost/devtools/-/devtools-0.0.6.tgz", + "integrity": "sha512-VMinDrZ/me/DgUl6jpBIj9VkF6Hd03mtZiDGtzNeYoFds3K/2Mm5ikzgcYv174Ga9CsDJ3GvtlVF97uP2NcdFg==", + "peerDependencies": { + "@hotwired/turbo-rails": ">= 7.2", + "cable_ready": ">= 5.0.0" + } + }, + "node_modules/@turbo-boost/streams": { + "version": "0.1.10", + "resolved": "https://registry.npmjs.org/@turbo-boost/streams/-/streams-0.1.10.tgz", + "integrity": "sha512-Vl1dz/UUWxqVhiV2NF3UUPD4cNgmWJyo0avYq1RAMQeJz/3WYz60bK3i+0IaIOHmy4hWjbhCqOU2j8Z5oqPiPw==", + "peer": true, + "dependencies": { + "idiomorph": "git+https://github.com/bigskysoftware/idiomorph.git" + }, + "peerDependencies": { + "@hotwired/turbo-rails": ">= 7.2.0" + } + }, + "node_modules/@ungap/structured-clone": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", + "dev": true + }, + "node_modules/acorn": { + "version": "8.11.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", + "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/cable_ready": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/cable_ready/-/cable_ready-5.0.3.tgz", + "integrity": "sha512-0WcXRSwNw6p4SQmcAPk/APkqgfN3MlLCg6N6SUV+xJECWcdPPRIF8bQ7CLZBrch7Q8Fv7NZiokJpQShuSv+yNw==", + "peer": true, + "dependencies": { + "morphdom": "2.6.1" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/esbuild": { + "version": "0.20.0", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.20.0.tgz", + "integrity": "sha512-6iwE3Y2RVYCME1jLpBqq7LQWK3MW6vjV2bZy6gt/WrqkY+WE74Spyc0ThAOYpMtITvnjX09CrC6ym7A/m9mebA==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.20.0", + "@esbuild/android-arm": "0.20.0", + "@esbuild/android-arm64": "0.20.0", + "@esbuild/android-x64": "0.20.0", + "@esbuild/darwin-arm64": "0.20.0", + "@esbuild/darwin-x64": "0.20.0", + "@esbuild/freebsd-arm64": "0.20.0", + "@esbuild/freebsd-x64": "0.20.0", + "@esbuild/linux-arm": "0.20.0", + "@esbuild/linux-arm64": "0.20.0", + "@esbuild/linux-ia32": "0.20.0", + "@esbuild/linux-loong64": "0.20.0", + "@esbuild/linux-mips64el": "0.20.0", + "@esbuild/linux-ppc64": "0.20.0", + "@esbuild/linux-riscv64": "0.20.0", + "@esbuild/linux-s390x": "0.20.0", + "@esbuild/linux-x64": "0.20.0", + "@esbuild/netbsd-x64": "0.20.0", + "@esbuild/openbsd-x64": "0.20.0", + "@esbuild/sunos-x64": "0.20.0", + "@esbuild/win32-arm64": "0.20.0", + "@esbuild/win32-ia32": "0.20.0", + "@esbuild/win32-x64": "0.20.0" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.56.0.tgz", + "integrity": "sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.56.0", + "@humanwhocodes/config-array": "^0.11.13", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "dev": true, + "dependencies": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esquery": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", + "dev": true, + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "node_modules/fastq": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", + "dev": true, + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.3", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.2.9", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz", + "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==", + "dev": true + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/idiomorph": { + "version": "0.3.0", + "resolved": "git+ssh://git@github.com/bigskysoftware/idiomorph.git#8e40c42cc573609eb6863e72fa3403574974dd7d", + "license": "BSD 2-Clause", + "peer": true + }, + "node_modules/ignore": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", + "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/morphdom": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/morphdom/-/morphdom-2.6.1.tgz", + "integrity": "sha512-Y8YRbAEP3eKykroIBWrjcfMw7mmwJfjhqdpSvoqinu8Y702nAwikpXcNFDiIkyvfCLxLM9Wu95RZqo4a9jFBaA==", + "peer": true + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/optionator": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", + "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", + "dev": true, + "dependencies": { + "@aashutoshrathi/word-wrap": "^1.2.3", + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prettier": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.2.5.tgz", + "integrity": "sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==", + "dev": true, + "bin": { + "prettier": "bin/prettier.cjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + } +} diff --git a/package.json b/package.json index d62d6bd..a837cfd 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@turbo-boost/elements", - "version": "0.0.17", + "version": "0.0.18", "description": "Pre-built easy to use reactive TurboBoost elements for Rails/Hotwire apps.", "keywords": [ "hotwire", @@ -12,25 +12,25 @@ ], "main": "app/assets/builds/@turbo-boost/elements.js", "files": [ - "app/assets/builds/*" + "app/assets/builds/@turbo-boost/*{.js,.map}" ], "repository": "https://github.com/hopsoft/turbo_boost-elements", "author": "Nate Hopkins (hopsoft) ", "license": "MIT", "dependencies": { - "@turbo-boost/commands": ">= 0.0.14", - "@turbo-boost/devtools": "^0.0.4" + "@turbo-boost/devtools": "^0.0.6" }, "peerDependencies": { - "@hotwired/turbo-rails": ">= 7.2" + "@hotwired/turbo-rails": ">= 7.2", + "@turbo-boost/commands": ">= 0.1.2" }, "devDependencies": { - "esbuild": "^0.19.0", + "esbuild": "^0.20.0", "eslint": "^8.48.0", "prettier": "^3.0.3" }, "scripts": { - "build": "bin/standardize && node bin/build.mjs", - "build:watch": "yarn build --watch" + "build": "node bin/build.mjs", + "build:watch": "node bin/build.mjs --watch" } } diff --git a/turbo_boost-elements.gemspec b/turbo_boost-elements.gemspec index 21f7728..c7fade8 100644 --- a/turbo_boost-elements.gemspec +++ b/turbo_boost-elements.gemspec @@ -22,7 +22,7 @@ Gem::Specification.new do |s| s.add_dependency "rails", ">= 6.1" s.add_dependency "turbo-rails", ">= 1.1" - s.add_dependency "turbo_boost-commands", ">= 0.0.11" + s.add_dependency "turbo_boost-commands", ">= 0.1.2" s.add_development_dependency "magic_frozen_string_literal" s.add_development_dependency "minitest-reporters" diff --git a/yarn.lock b/yarn.lock deleted file mode 100644 index 0a9b362..0000000 --- a/yarn.lock +++ /dev/null @@ -1,799 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@aashutoshrathi/word-wrap@^1.2.3": - version "1.2.6" - resolved "https://registry.yarnpkg.com/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz#bd9154aec9983f77b3a034ecaa015c2e4201f6cf" - integrity sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA== - -"@esbuild/android-arm64@0.19.2": - version "0.19.2" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.19.2.tgz#bc35990f412a749e948b792825eef7df0ce0e073" - integrity sha512-lsB65vAbe90I/Qe10OjkmrdxSX4UJDjosDgb8sZUKcg3oefEuW2OT2Vozz8ef7wrJbMcmhvCC+hciF8jY/uAkw== - -"@esbuild/android-arm@0.19.2": - version "0.19.2" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.19.2.tgz#edd1c8f23ba353c197f5b0337123c58ff2a56999" - integrity sha512-tM8yLeYVe7pRyAu9VMi/Q7aunpLwD139EY1S99xbQkT4/q2qa6eA4ige/WJQYdJ8GBL1K33pPFhPfPdJ/WzT8Q== - -"@esbuild/android-x64@0.19.2": - version "0.19.2" - resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.19.2.tgz#2dcdd6e6f1f2d82ea1b746abd8da5b284960f35a" - integrity sha512-qK/TpmHt2M/Hg82WXHRc/W/2SGo/l1thtDHZWqFq7oi24AjZ4O/CpPSu6ZuYKFkEgmZlFoa7CooAyYmuvnaG8w== - -"@esbuild/darwin-arm64@0.19.2": - version "0.19.2" - resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.19.2.tgz#55b36bc06d76f5c243987c1f93a11a80d8fc3b26" - integrity sha512-Ora8JokrvrzEPEpZO18ZYXkH4asCdc1DLdcVy8TGf5eWtPO1Ie4WroEJzwI52ZGtpODy3+m0a2yEX9l+KUn0tA== - -"@esbuild/darwin-x64@0.19.2": - version "0.19.2" - resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.19.2.tgz#982524af33a6424a3b5cb44bbd52559623ad719c" - integrity sha512-tP+B5UuIbbFMj2hQaUr6EALlHOIOmlLM2FK7jeFBobPy2ERdohI4Ka6ZFjZ1ZYsrHE/hZimGuU90jusRE0pwDw== - -"@esbuild/freebsd-arm64@0.19.2": - version "0.19.2" - resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.2.tgz#8e478a0856645265fe79eac4b31b52193011ee06" - integrity sha512-YbPY2kc0acfzL1VPVK6EnAlig4f+l8xmq36OZkU0jzBVHcOTyQDhnKQaLzZudNJQyymd9OqQezeaBgkTGdTGeQ== - -"@esbuild/freebsd-x64@0.19.2": - version "0.19.2" - resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.19.2.tgz#01b96604f2540db023c73809bb8ae6cd1692d6f3" - integrity sha512-nSO5uZT2clM6hosjWHAsS15hLrwCvIWx+b2e3lZ3MwbYSaXwvfO528OF+dLjas1g3bZonciivI8qKR/Hm7IWGw== - -"@esbuild/linux-arm64@0.19.2": - version "0.19.2" - resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.19.2.tgz#7e5d2c7864c5c83ec789b59c77cd9c20d2594916" - integrity sha512-ig2P7GeG//zWlU0AggA3pV1h5gdix0MA3wgB+NsnBXViwiGgY77fuN9Wr5uoCrs2YzaYfogXgsWZbm+HGr09xg== - -"@esbuild/linux-arm@0.19.2": - version "0.19.2" - resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.19.2.tgz#c32ae97bc0246664a1cfbdb4a98e7b006d7db8ae" - integrity sha512-Odalh8hICg7SOD7XCj0YLpYCEc+6mkoq63UnExDCiRA2wXEmGlK5JVrW50vZR9Qz4qkvqnHcpH+OFEggO3PgTg== - -"@esbuild/linux-ia32@0.19.2": - version "0.19.2" - resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.19.2.tgz#3fc4f0fa026057fe885e4a180b3956e704f1ceaa" - integrity sha512-mLfp0ziRPOLSTek0Gd9T5B8AtzKAkoZE70fneiiyPlSnUKKI4lp+mGEnQXcQEHLJAcIYDPSyBvsUbKUG2ri/XQ== - -"@esbuild/linux-loong64@0.19.2": - version "0.19.2" - resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.19.2.tgz#633bcaea443f3505fb0ed109ab840c99ad3451a4" - integrity sha512-hn28+JNDTxxCpnYjdDYVMNTR3SKavyLlCHHkufHV91fkewpIyQchS1d8wSbmXhs1fiYDpNww8KTFlJ1dHsxeSw== - -"@esbuild/linux-mips64el@0.19.2": - version "0.19.2" - resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.19.2.tgz#e0bff2898c46f52be7d4dbbcca8b887890805823" - integrity sha512-KbXaC0Sejt7vD2fEgPoIKb6nxkfYW9OmFUK9XQE4//PvGIxNIfPk1NmlHmMg6f25x57rpmEFrn1OotASYIAaTg== - -"@esbuild/linux-ppc64@0.19.2": - version "0.19.2" - resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.19.2.tgz#d75798da391f54a9674f8c143b9a52d1dbfbfdde" - integrity sha512-dJ0kE8KTqbiHtA3Fc/zn7lCd7pqVr4JcT0JqOnbj4LLzYnp+7h8Qi4yjfq42ZlHfhOCM42rBh0EwHYLL6LEzcw== - -"@esbuild/linux-riscv64@0.19.2": - version "0.19.2" - resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.19.2.tgz#012409bd489ed1bb9b775541d4a46c5ded8e6dd8" - integrity sha512-7Z/jKNFufZ/bbu4INqqCN6DDlrmOTmdw6D0gH+6Y7auok2r02Ur661qPuXidPOJ+FSgbEeQnnAGgsVynfLuOEw== - -"@esbuild/linux-s390x@0.19.2": - version "0.19.2" - resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.19.2.tgz#ece3ed75c5a150de8a5c110f02e97d315761626b" - integrity sha512-U+RinR6aXXABFCcAY4gSlv4CL1oOVvSSCdseQmGO66H+XyuQGZIUdhG56SZaDJQcLmrSfRmx5XZOWyCJPRqS7g== - -"@esbuild/linux-x64@0.19.2": - version "0.19.2" - resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.19.2.tgz#dea187019741602d57aaf189a80abba261fbd2aa" - integrity sha512-oxzHTEv6VPm3XXNaHPyUTTte+3wGv7qVQtqaZCrgstI16gCuhNOtBXLEBkBREP57YTd68P0VgDgG73jSD8bwXQ== - -"@esbuild/netbsd-x64@0.19.2": - version "0.19.2" - resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.19.2.tgz#bbfd7cf9ab236a23ee3a41b26f0628c57623d92a" - integrity sha512-WNa5zZk1XpTTwMDompZmvQLHszDDDN7lYjEHCUmAGB83Bgs20EMs7ICD+oKeT6xt4phV4NDdSi/8OfjPbSbZfQ== - -"@esbuild/openbsd-x64@0.19.2": - version "0.19.2" - resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.19.2.tgz#fa5c4c6ee52a360618f00053652e2902e1d7b4a7" - integrity sha512-S6kI1aT3S++Dedb7vxIuUOb3oAxqxk2Rh5rOXOTYnzN8JzW1VzBd+IqPiSpgitu45042SYD3HCoEyhLKQcDFDw== - -"@esbuild/sunos-x64@0.19.2": - version "0.19.2" - resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.19.2.tgz#52a2ac8ac6284c02d25df22bb4cfde26fbddd68d" - integrity sha512-VXSSMsmb+Z8LbsQGcBMiM+fYObDNRm8p7tkUDMPG/g4fhFX5DEFmjxIEa3N8Zr96SjsJ1woAhF0DUnS3MF3ARw== - -"@esbuild/win32-arm64@0.19.2": - version "0.19.2" - resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.19.2.tgz#719ed5870855de8537aef8149694a97d03486804" - integrity sha512-5NayUlSAyb5PQYFAU9x3bHdsqB88RC3aM9lKDAz4X1mo/EchMIT1Q+pSeBXNgkfNmRecLXA0O8xP+x8V+g/LKg== - -"@esbuild/win32-ia32@0.19.2": - version "0.19.2" - resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.19.2.tgz#24832223880b0f581962c8660f8fb8797a1e046a" - integrity sha512-47gL/ek1v36iN0wL9L4Q2MFdujR0poLZMJwhO2/N3gA89jgHp4MR8DKCmwYtGNksbfJb9JoTtbkoe6sDhg2QTA== - -"@esbuild/win32-x64@0.19.2": - version "0.19.2" - resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.19.2.tgz#1205014625790c7ff0e471644a878a65d1e34ab0" - integrity sha512-tcuhV7ncXBqbt/Ybf0IyrMcwVOAPDckMK9rXNHtF17UTK18OKLpg08glminN06pt2WCoALhXdLfSPbVvK/6fxw== - -"@eslint-community/eslint-utils@^4.2.0": - version "4.4.0" - resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59" - integrity sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA== - dependencies: - eslint-visitor-keys "^3.3.0" - -"@eslint-community/regexpp@^4.6.1": - version "4.7.0" - resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.7.0.tgz#96e7c05e738327602ae5942437f9c6b177ec279a" - integrity sha512-+HencqxU7CFJnQb7IKtuNBqS6Yx3Tz4kOL8BJXo+JyeiBm5MEX6pO8onXDkjrkCRlfYXS1Axro15ZjVFe9YgsA== - -"@eslint/eslintrc@^2.1.2": - version "2.1.2" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.1.2.tgz#c6936b4b328c64496692f76944e755738be62396" - integrity sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g== - dependencies: - ajv "^6.12.4" - debug "^4.3.2" - espree "^9.6.0" - globals "^13.19.0" - ignore "^5.2.0" - import-fresh "^3.2.1" - js-yaml "^4.1.0" - minimatch "^3.1.2" - strip-json-comments "^3.1.1" - -"@eslint/js@8.48.0": - version "8.48.0" - resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.48.0.tgz#642633964e217905436033a2bd08bf322849b7fb" - integrity sha512-ZSjtmelB7IJfWD2Fvb7+Z+ChTIKWq6kjda95fLcQKNS5aheVHn4IkfgRQE3sIIzTcSLwLcLZUD9UBt+V7+h+Pw== - -"@humanwhocodes/config-array@^0.11.10": - version "0.11.10" - resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.10.tgz#5a3ffe32cc9306365fb3fd572596cd602d5e12d2" - integrity sha512-KVVjQmNUepDVGXNuoRRdmmEjruj0KfiGSbS8LVc12LMsWDQzRXJ0qdhN8L8uUigKpfEHRhlaQFY0ib1tnUbNeQ== - dependencies: - "@humanwhocodes/object-schema" "^1.2.1" - debug "^4.1.1" - minimatch "^3.0.5" - -"@humanwhocodes/module-importer@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" - integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== - -"@humanwhocodes/object-schema@^1.2.1": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" - integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== - -"@nodelib/fs.scandir@2.1.5": - version "2.1.5" - resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" - integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== - dependencies: - "@nodelib/fs.stat" "2.0.5" - run-parallel "^1.1.9" - -"@nodelib/fs.stat@2.0.5": - version "2.0.5" - resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" - integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== - -"@nodelib/fs.walk@^1.2.8": - version "1.2.8" - resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" - integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== - dependencies: - "@nodelib/fs.scandir" "2.1.5" - fastq "^1.6.0" - -"@turbo-boost/commands@>= 0.0.14": - version "0.0.14" - resolved "https://registry.yarnpkg.com/@turbo-boost/commands/-/commands-0.0.14.tgz#9f9160326e92484d35018da2a7bafc6885443b82" - integrity sha512-OYe1hnFffHFDG6YTz964YZaSXCSaWMygD8Nuj7AaKZzoedMKWw6KlAwF1liYtLwIi1DB3/RapI0mzVIu2AywZQ== - -"@turbo-boost/devtools@^0.0.4": - version "0.0.4" - resolved "https://registry.yarnpkg.com/@turbo-boost/devtools/-/devtools-0.0.4.tgz#5fc2b09dbbacb0c6d6608fd068100fc0fb47e7f8" - integrity sha512-92SuX7BVWrwFVU1UVyqYS0rhc4V6xKpGhD9OfCNGa2M+bpihRobl9XLl3dHYjOfsLbDKYB2jll64XkLgMF08Mw== - -acorn-jsx@^5.3.2: - version "5.3.2" - resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" - integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== - -acorn@^8.9.0: - version "8.10.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.10.0.tgz#8be5b3907a67221a81ab23c7889c4c5526b62ec5" - integrity sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw== - -ajv@^6.12.4: - version "6.12.6" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" - integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== - dependencies: - fast-deep-equal "^3.1.1" - fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.4.1" - uri-js "^4.2.2" - -ansi-regex@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" - integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== - -ansi-styles@^4.1.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" - integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== - dependencies: - color-convert "^2.0.1" - -argparse@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" - integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== - -balanced-match@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" - integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== - -brace-expansion@^1.1.7: - version "1.1.11" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" - integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== - dependencies: - balanced-match "^1.0.0" - concat-map "0.0.1" - -callsites@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" - integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== - -chalk@^4.0.0: - version "4.1.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" - integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - -color-convert@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" - integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== - dependencies: - color-name "~1.1.4" - -color-name@~1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" - integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== - -concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== - -cross-spawn@^7.0.2: - version "7.0.3" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" - integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== - dependencies: - path-key "^3.1.0" - shebang-command "^2.0.0" - which "^2.0.1" - -debug@^4.1.1, debug@^4.3.2: - version "4.3.4" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" - integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== - dependencies: - ms "2.1.2" - -deep-is@^0.1.3: - version "0.1.4" - resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" - integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== - -doctrine@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" - integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== - dependencies: - esutils "^2.0.2" - -esbuild@^0.19.0: - version "0.19.2" - resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.19.2.tgz#b1541828a89dfb6f840d38538767c6130dca2aac" - integrity sha512-G6hPax8UbFakEj3hWO0Vs52LQ8k3lnBhxZWomUJDxfz3rZTLqF5k/FCzuNdLx2RbpBiQQF9H9onlDDH1lZsnjg== - optionalDependencies: - "@esbuild/android-arm" "0.19.2" - "@esbuild/android-arm64" "0.19.2" - "@esbuild/android-x64" "0.19.2" - "@esbuild/darwin-arm64" "0.19.2" - "@esbuild/darwin-x64" "0.19.2" - "@esbuild/freebsd-arm64" "0.19.2" - "@esbuild/freebsd-x64" "0.19.2" - "@esbuild/linux-arm" "0.19.2" - "@esbuild/linux-arm64" "0.19.2" - "@esbuild/linux-ia32" "0.19.2" - "@esbuild/linux-loong64" "0.19.2" - "@esbuild/linux-mips64el" "0.19.2" - "@esbuild/linux-ppc64" "0.19.2" - "@esbuild/linux-riscv64" "0.19.2" - "@esbuild/linux-s390x" "0.19.2" - "@esbuild/linux-x64" "0.19.2" - "@esbuild/netbsd-x64" "0.19.2" - "@esbuild/openbsd-x64" "0.19.2" - "@esbuild/sunos-x64" "0.19.2" - "@esbuild/win32-arm64" "0.19.2" - "@esbuild/win32-ia32" "0.19.2" - "@esbuild/win32-x64" "0.19.2" - -escape-string-regexp@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" - integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== - -eslint-scope@^7.2.2: - version "7.2.2" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.2.2.tgz#deb4f92563390f32006894af62a22dba1c46423f" - integrity sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg== - dependencies: - esrecurse "^4.3.0" - estraverse "^5.2.0" - -eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3: - version "3.4.3" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" - integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== - -eslint@^8.48.0: - version "8.48.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.48.0.tgz#bf9998ba520063907ba7bfe4c480dc8be03c2155" - integrity sha512-sb6DLeIuRXxeM1YljSe1KEx9/YYeZFQWcV8Rq9HfigmdDEugjLEVEa1ozDjL6YDjBpQHPJxJzze+alxi4T3OLg== - dependencies: - "@eslint-community/eslint-utils" "^4.2.0" - "@eslint-community/regexpp" "^4.6.1" - "@eslint/eslintrc" "^2.1.2" - "@eslint/js" "8.48.0" - "@humanwhocodes/config-array" "^0.11.10" - "@humanwhocodes/module-importer" "^1.0.1" - "@nodelib/fs.walk" "^1.2.8" - ajv "^6.12.4" - chalk "^4.0.0" - cross-spawn "^7.0.2" - debug "^4.3.2" - doctrine "^3.0.0" - escape-string-regexp "^4.0.0" - eslint-scope "^7.2.2" - eslint-visitor-keys "^3.4.3" - espree "^9.6.1" - esquery "^1.4.2" - esutils "^2.0.2" - fast-deep-equal "^3.1.3" - file-entry-cache "^6.0.1" - find-up "^5.0.0" - glob-parent "^6.0.2" - globals "^13.19.0" - graphemer "^1.4.0" - ignore "^5.2.0" - imurmurhash "^0.1.4" - is-glob "^4.0.0" - is-path-inside "^3.0.3" - js-yaml "^4.1.0" - json-stable-stringify-without-jsonify "^1.0.1" - levn "^0.4.1" - lodash.merge "^4.6.2" - minimatch "^3.1.2" - natural-compare "^1.4.0" - optionator "^0.9.3" - strip-ansi "^6.0.1" - text-table "^0.2.0" - -espree@^9.6.0, espree@^9.6.1: - version "9.6.1" - resolved "https://registry.yarnpkg.com/espree/-/espree-9.6.1.tgz#a2a17b8e434690a5432f2f8018ce71d331a48c6f" - integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ== - dependencies: - acorn "^8.9.0" - acorn-jsx "^5.3.2" - eslint-visitor-keys "^3.4.1" - -esquery@^1.4.2: - version "1.5.0" - resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.5.0.tgz#6ce17738de8577694edd7361c57182ac8cb0db0b" - integrity sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg== - dependencies: - estraverse "^5.1.0" - -esrecurse@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" - integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== - dependencies: - estraverse "^5.2.0" - -estraverse@^5.1.0, estraverse@^5.2.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" - integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== - -esutils@^2.0.2: - version "2.0.3" - resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" - integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== - -fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" - integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== - -fast-json-stable-stringify@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" - integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== - -fast-levenshtein@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" - integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== - -fastq@^1.6.0: - version "1.15.0" - resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.15.0.tgz#d04d07c6a2a68fe4599fea8d2e103a937fae6b3a" - integrity sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw== - dependencies: - reusify "^1.0.4" - -file-entry-cache@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" - integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== - dependencies: - flat-cache "^3.0.4" - -find-up@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" - integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== - dependencies: - locate-path "^6.0.0" - path-exists "^4.0.0" - -flat-cache@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" - integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== - dependencies: - flatted "^3.1.0" - rimraf "^3.0.2" - -flatted@^3.1.0: - version "3.2.7" - resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.7.tgz#609f39207cb614b89d0765b477cb2d437fbf9787" - integrity sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ== - -fs.realpath@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" - integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== - -glob-parent@^6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" - integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== - dependencies: - is-glob "^4.0.3" - -glob@^7.1.3: - version "7.2.3" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" - integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.1.1" - once "^1.3.0" - path-is-absolute "^1.0.0" - -globals@^13.19.0: - version "13.21.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-13.21.0.tgz#163aae12f34ef502f5153cfbdd3600f36c63c571" - integrity sha512-ybyme3s4yy/t/3s35bewwXKOf7cvzfreG2lH0lZl0JB7I4GxRP2ghxOK/Nb9EkRXdbBXZLfq/p/0W2JUONB/Gg== - dependencies: - type-fest "^0.20.2" - -graphemer@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6" - integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== - -has-flag@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" - integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== - -ignore@^5.2.0: - version "5.2.4" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.4.tgz#a291c0c6178ff1b960befe47fcdec301674a6324" - integrity sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ== - -import-fresh@^3.2.1: - version "3.3.0" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" - integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== - dependencies: - parent-module "^1.0.0" - resolve-from "^4.0.0" - -imurmurhash@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" - integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== - -inflight@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" - integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== - dependencies: - once "^1.3.0" - wrappy "1" - -inherits@2: - version "2.0.4" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" - integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== - -is-extglob@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" - integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== - -is-glob@^4.0.0, is-glob@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" - integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== - dependencies: - is-extglob "^2.1.1" - -is-path-inside@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" - integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== - -isexe@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" - integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== - -js-yaml@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" - integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== - dependencies: - argparse "^2.0.1" - -json-schema-traverse@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" - integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== - -json-stable-stringify-without-jsonify@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" - integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== - -levn@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" - integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== - dependencies: - prelude-ls "^1.2.1" - type-check "~0.4.0" - -locate-path@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" - integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== - dependencies: - p-locate "^5.0.0" - -lodash.merge@^4.6.2: - version "4.6.2" - resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" - integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== - -minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" - integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== - dependencies: - brace-expansion "^1.1.7" - -ms@2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" - integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== - -natural-compare@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" - integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== - -once@^1.3.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== - dependencies: - wrappy "1" - -optionator@^0.9.3: - version "0.9.3" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.3.tgz#007397d44ed1872fdc6ed31360190f81814e2c64" - integrity sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg== - dependencies: - "@aashutoshrathi/word-wrap" "^1.2.3" - deep-is "^0.1.3" - fast-levenshtein "^2.0.6" - levn "^0.4.1" - prelude-ls "^1.2.1" - type-check "^0.4.0" - -p-limit@^3.0.2: - version "3.1.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" - integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== - dependencies: - yocto-queue "^0.1.0" - -p-locate@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" - integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== - dependencies: - p-limit "^3.0.2" - -parent-module@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" - integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== - dependencies: - callsites "^3.0.0" - -path-exists@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" - integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== - -path-is-absolute@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" - integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== - -path-key@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" - integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== - -prelude-ls@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" - integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== - -prettier@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.0.3.tgz#432a51f7ba422d1469096c0fdc28e235db8f9643" - integrity sha512-L/4pUDMxcNa8R/EthV08Zt42WBO4h1rarVtK0K+QJG0X187OLo7l699jWw0GKuwzkPQ//jMFA/8Xm6Fh3J/DAg== - -punycode@^2.1.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.0.tgz#f67fa67c94da8f4d0cfff981aee4118064199b8f" - integrity sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA== - -queue-microtask@^1.2.2: - version "1.2.3" - resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" - integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== - -resolve-from@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" - integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== - -reusify@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" - integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== - -rimraf@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" - integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== - dependencies: - glob "^7.1.3" - -run-parallel@^1.1.9: - version "1.2.0" - resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" - integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== - dependencies: - queue-microtask "^1.2.2" - -shebang-command@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" - integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== - dependencies: - shebang-regex "^3.0.0" - -shebang-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" - integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== - -strip-ansi@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" - integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== - dependencies: - ansi-regex "^5.0.1" - -strip-json-comments@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" - integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== - -supports-color@^7.1.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" - integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== - dependencies: - has-flag "^4.0.0" - -text-table@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" - integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== - -type-check@^0.4.0, type-check@~0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" - integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== - dependencies: - prelude-ls "^1.2.1" - -type-fest@^0.20.2: - version "0.20.2" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" - integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== - -uri-js@^4.2.2: - version "4.4.1" - resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" - integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== - dependencies: - punycode "^2.1.0" - -which@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" - integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== - dependencies: - isexe "^2.0.0" - -wrappy@1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== - -yocto-queue@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" - integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==