diff --git a/.github/workflows/ci-main.yml b/.github/workflows/ci-main.yml new file mode 100644 index 0000000..58d45bb --- /dev/null +++ b/.github/workflows/ci-main.yml @@ -0,0 +1,15 @@ +name: CI main +on: + push: + branches: + - 'main' + tags-ignore: + - '**' + workflow_dispatch: +jobs: + run-tests: + name: Run tests + uses: ./.github/workflows/run-tests.yml + secrets: + BROWSERSTACK_USERNAME: ${{ secrets.BROWSERSTACK_USERNAME }} + BROWSERSTACK_ACCESS_KEY: ${{ secrets.BROWSERSTACK_ACCESS_KEY }} diff --git a/.github/workflows/ci-pr.yml b/.github/workflows/ci-pr.yml new file mode 100644 index 0000000..0253c01 --- /dev/null +++ b/.github/workflows/ci-pr.yml @@ -0,0 +1,13 @@ +name: CI Pull Request +on: + pull_request: + branches: + - 'main' + workflow_dispatch: +jobs: + run-tests: + name: Run tests + uses: ./.github/workflows/run-tests.yml + secrets: + BROWSERSTACK_USERNAME: ${{ secrets.BROWSERSTACK_USERNAME }} + BROWSERSTACK_ACCESS_KEY: ${{ secrets.BROWSERSTACK_ACCESS_KEY }} diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy-docs.yml similarity index 73% rename from .github/workflows/deploy.yml rename to .github/workflows/deploy-docs.yml index b1cac8b..5f76506 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy-docs.yml @@ -1,25 +1,21 @@ -name: Deploy - +name: Deploy docs on: push: branches: - main - jobs: deploy: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - uses: actions/setup-node@v3 with: - node-version: 18 + node-version: '18.x' cache: npm - run: npm ci - - - name: Build + - name: Build docs run: npm run docs-build - - - name: Deploy + - name: Deploy docs uses: peaceiris/actions-gh-pages@v3 with: github_token: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/publish-npm.yml b/.github/workflows/publish-npm.yml new file mode 100644 index 0000000..3293eb4 --- /dev/null +++ b/.github/workflows/publish-npm.yml @@ -0,0 +1,17 @@ +name: Publish to npm +on: + release: + types: [published] +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-node@v3 + with: + node-version: '18.x' + registry-url: 'https://registry.npmjs.org' + - run: npm ci + - run: npm publish + env: + NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} diff --git a/.github/workflows/run-tests.yml b/.github/workflows/run-tests.yml new file mode 100644 index 0000000..de1c53c --- /dev/null +++ b/.github/workflows/run-tests.yml @@ -0,0 +1,27 @@ +name: Run tests +on: + workflow_call: + secrets: + BROWSERSTACK_USERNAME: + required: true + BROWSERSTACK_ACCESS_KEY: + required: true +jobs: + run-tests: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Use Node.js 18.x + uses: actions/setup-node@v4 + with: + node-version: '18.x' + - name: Install dependencies + run: npm ci + - name: Check formatting + run: npm run format-check + - name: Tests + env: + BROWSERSTACK_USERNAME: ${{ secrets.BROWSERSTACK_USERNAME }} + BROWSERSTACK_ACCESS_KEY: ${{ secrets.BROWSERSTACK_ACCESS_KEY }} + run: npm run test diff --git a/.gitignore b/.gitignore index d1781e6..9637605 100644 --- a/.gitignore +++ b/.gitignore @@ -3,4 +3,5 @@ docs/.vitepress/cache docs/.vitepress/dist *.log *.env -*.DS_Store \ No newline at end of file +*.DS_Store +.parcel-cache diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 0000000..9531ab8 --- /dev/null +++ b/.prettierignore @@ -0,0 +1,13 @@ +**/*.log +**/*.map +**/*.svg +**/.env +**/.git +**/.gitignore +**/.parcel-cache +**/.prettierignore +**/cache +**/dist +**/docs/public/examples +**/node_modules +**/package-lock.json diff --git a/LICENSE.md b/LICENSE.md index ecda061..91c7032 100644 --- a/LICENSE.md +++ b/LICENSE.md @@ -1,7 +1,7 @@ -Copyright (c) 2022, Niklas Rämö - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file +Copyright (c) 2022, Niklas Rämö + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/README.md b/README.md index cb40134..bfc5e8f 100644 --- a/README.md +++ b/README.md @@ -1,37 +1,37 @@ -

- -

- -DragDoll is a modular and highly extensible drag & drop system written in TypeScript. It's originally based on [Muuri's](https://github.com/haltu/muuri) internal drag & drop system, but fully redesigned to be used as a general purpose drag & drop system. - -📡   **Sweet Sensors** - -A well documented and extendable Sensor system that normalizes any inputs into unified drag events. - -🤏   **Dynamic Draggables** - -A highly customizable and pluggable Draggable system with autoscrolling superpowers. - -🧘   **Blissful DX** - -Comes with strong types, smart defaults and prebaked solutions for common use cases. - -🎁   **Tiny and Modular** - -Weighs around 11kB gzipped all in all, but you can use only the bits and pieces you need. - -🍦   **Vanilla Flavour** - -No frameworks were abused while writing this library. It's all vanilla framework-free TS down to the core. - -💝   **Free & Open Source** - -100% MIT licensed, spread the love. - -## Docs - -https://niklasramo.github.io/dragdoll/docs/getting-started.html - -## Copyright - -Copyright © 2022, Niklas Rämö (inramo@gmail.com). Licensed under the MIT license. +

+ +

+ +DragDoll is a modular and highly extensible drag & drop system written in TypeScript. It's originally based on [Muuri's](https://github.com/haltu/muuri) internal drag & drop system, but fully redesigned to be used as a general purpose drag & drop system. + +📡   **Sweet Sensors** + +A well documented and extendable Sensor system that normalizes any inputs into unified drag events. + +🤏   **Dynamic Draggables** + +A highly customizable and pluggable Draggable system with autoscrolling superpowers. + +🧘   **Blissful DX** + +Comes with strong types, smart defaults and prebaked solutions for common use cases. + +🎁   **Tiny and Modular** + +Weighs around 11kB gzipped all in all, but you can use only the bits and pieces you need. + +🍦   **Vanilla Flavour** + +No frameworks were abused while writing this library. It's all vanilla framework-free TS down to the core. + +💝   **Free & Open Source** + +100% MIT licensed, spread the love. + +## Docs + +https://niklasramo.github.io/dragdoll/docs/getting-started.html + +## Copyright + +Copyright © 2022, Niklas Rämö (inramo@gmail.com). Licensed under the MIT license. diff --git a/dist/dragdoll.cjs b/dist/dragdoll.cjs new file mode 100644 index 0000000..8e60e31 --- /dev/null +++ b/dist/dragdoll.cjs @@ -0,0 +1 @@ +"use strict";var ue=Object.defineProperty;var lt=Object.getOwnPropertyDescriptor;var ct=Object.getOwnPropertyNames;var dt=Object.prototype.hasOwnProperty;var ht=(r,e)=>{for(var t in e)ue(r,t,{get:e[t],enumerable:!0})},mt=(r,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of ct(e))!dt.call(r,i)&&i!==t&&ue(r,i,{get:()=>e[i],enumerable:!(n=lt(e,i))||n.enumerable});return r};var ut=r=>mt(ue({},"__esModule",{value:!0}),r);var Tt={};ht(Tt,{AUTO_SCROLL_AXIS:()=>h,AUTO_SCROLL_AXIS_DIRECTION:()=>M,AUTO_SCROLL_DIRECTION:()=>p,AutoScroll:()=>j,BaseMotionSensor:()=>B,BaseSensor:()=>O,Draggable:()=>xe,DraggableAutoScroll:()=>ae,KeyboardMotionSensor:()=>ve,KeyboardSensor:()=>Ee,PointerSensor:()=>W,SensorEventType:()=>_,autoScroll:()=>se,autoScrollPlugin:()=>Dt,autoScrollSmoothSpeed:()=>We,createPointerSensorStartPredicate:()=>Pt,setTicker:()=>pt,ticker:()=>u,tickerReadPhase:()=>S,tickerWritePhase:()=>D});module.exports=ut(Tt);var _={start:"start",move:"move",cancel:"cancel",end:"end",destroy:"destroy"};var Ve=require("eventti");var O=class{constructor(){this.drag=null,this.isDestroyed=!1,this._emitter=new Ve.Emitter}_createDragData(e){return{x:e.x,y:e.y}}_updateDragData(e){this.drag&&(this.drag.x=e.x,this.drag.y=e.y)}_resetDragData(){this.drag=null}_start(e){this.isDestroyed||this.drag||(this.drag=this._createDragData(e),this._emitter.emit(_.start,e))}_move(e){this.drag&&(this._updateDragData(e),this._emitter.emit(_.move,e))}_end(e){this.drag&&(this._updateDragData(e),this._emitter.emit(_.end,e),this._resetDragData())}_cancel(e){this.drag&&(this._updateDragData(e),this._emitter.emit(_.cancel,e),this._resetDragData())}on(e,t,n){return this._emitter.on(e,t,n)}off(e,t){this._emitter.off(e,t)}cancel(){this.drag&&(this._emitter.emit(_.cancel,{type:_.cancel,x:this.drag.x,y:this.drag.y}),this._resetDragData())}destroy(){this.isDestroyed||(this.isDestroyed=!0,this.cancel(),this._emitter.emit(_.destroy,{type:_.destroy}),this._emitter.off())}};var Ue=require("tikki"),S=Symbol(),D=Symbol(),u=new Ue.Ticker({phases:[S,D]});function pt(r,e,t){S=e,D=t,u=r}var B=class extends O{constructor(){super();this.drag=null,this._direction={x:0,y:0},this._speed=0,this._tick=this._tick.bind(this)}_createDragData(t){return{...super._createDragData(t),time:0,deltaTime:0}}_start(t){this.isDestroyed||this.drag||(super._start(t),u.on(S,this._tick))}_end(t){this.drag&&(u.off(S,this._tick),super._end(t))}_cancel(t){this.drag&&(u.off(S,this._tick),super._cancel(t))}_tick(t){if(this.drag)if(t&&this.drag.time){this.drag.deltaTime=t-this.drag.time,this.drag.time=t;let n={type:"tick",time:this.drag.time,deltaTime:this.drag.deltaTime};if(this._emitter.emit("tick",n),!this.drag)return;let i=this._speed*(this.drag.deltaTime/1e3),s=this._direction.x*i,o=this._direction.y*i;(s||o)&&this._move({type:"move",x:this.drag.x+s,y:this.drag.y+o})}else this.drag.time=t,this.drag.deltaTime=0}};var Fe=require("eventti");function pe(r,e){if("pointerId"in r)return r.pointerId===e?r:null;if("changedTouches"in r){let t=0;for(;t{let r=!1;try{let e=Object.defineProperty({},"passive",{get:function(){r=!0}});window.addEventListener("testPassive",null,e),window.removeEventListener("testPassive",null,e)}catch{}return r})(),He=fe&&"ontouchstart"in window,Ge=fe&&!!window.PointerEvent,zt=!!(fe&&navigator.vendor&&navigator.vendor.indexOf("Apple")>-1&&navigator.userAgent&&navigator.userAgent.indexOf("CriOS")==-1&&navigator.userAgent.indexOf("FxiOS")==-1);function ge(r={}){let{capture:e=!0,passive:t=!0}=r;return Z?{capture:e,passive:t}:{capture:e}}function Se(r){return r==="auto"||r===void 0?Ge?"pointer":He?"touch":"mouse":r}var ft={start:"pointerdown",move:"pointermove",cancel:"pointercancel",end:"pointerup"},gt={start:"touchstart",move:"touchmove",cancel:"touchcancel",end:"touchend"},St={start:"mousedown",move:"mousemove",cancel:"",end:"mouseup"},Y={pointer:ft,touch:gt,mouse:St},W=class{constructor(e,t={}){let{listenerOptions:n={},sourceEvents:i="auto",startPredicate:s=o=>!("button"in o&&o.button>0)}=t;this.element=e,this.drag=null,this.isDestroyed=!1,this._areWindowListenersBound=!1,this._startPredicate=s,this._listenerOptions=ge(n),this._sourceEvents=Se(i),this._emitter=new Fe.Emitter,this._onStart=this._onStart.bind(this),this._onMove=this._onMove.bind(this),this._onCancel=this._onCancel.bind(this),this._onEnd=this._onEnd.bind(this),e.addEventListener(Y[this._sourceEvents].start,this._onStart,this._listenerOptions)}_getTrackedPointerEventData(e){return this.drag?pe(e,this.drag.pointerId):null}_onStart(e){if(this.isDestroyed||this.drag||!this._startPredicate(e))return;let t=Be(e);if(t===null)return;let n=pe(e,t);if(n===null)return;let i={pointerId:t,pointerType:ze(e),x:n.clientX,y:n.clientY};this.drag=i;let s={...i,type:_.start,srcEvent:e,target:n.target};this._emitter.emit(s.type,s),this.drag&&this._bindWindowListeners()}_onMove(e){if(!this.drag)return;let t=this._getTrackedPointerEventData(e);if(!t)return;this.drag.x=t.clientX,this.drag.y=t.clientY;let n={type:_.move,srcEvent:e,target:t.target,...this.drag};this._emitter.emit(n.type,n)}_onCancel(e){if(!this.drag)return;let t=this._getTrackedPointerEventData(e);if(!t)return;this.drag.x=t.clientX,this.drag.y=t.clientY;let n={type:_.cancel,srcEvent:e,target:t.target,...this.drag};this._emitter.emit(n.type,n),this._resetDrag()}_onEnd(e){if(!this.drag)return;let t=this._getTrackedPointerEventData(e);if(!t)return;this.drag.x=t.clientX,this.drag.y=t.clientY;let n={type:_.end,srcEvent:e,target:t.target,...this.drag};this._emitter.emit(n.type,n),this._resetDrag()}_bindWindowListeners(){if(this._areWindowListenersBound)return;let{move:e,end:t,cancel:n}=Y[this._sourceEvents];window.addEventListener(e,this._onMove,this._listenerOptions),window.addEventListener(t,this._onEnd,this._listenerOptions),n&&window.addEventListener(n,this._onCancel,this._listenerOptions),this._areWindowListenersBound=!0}_unbindWindowListeners(){if(this._areWindowListenersBound){let{move:e,end:t,cancel:n}=Y[this._sourceEvents];window.removeEventListener(e,this._onMove,this._listenerOptions),window.removeEventListener(t,this._onEnd,this._listenerOptions),n&&window.removeEventListener(n,this._onCancel,this._listenerOptions),this._areWindowListenersBound=!1}}_resetDrag(){this.drag=null,this._unbindWindowListeners()}cancel(){if(!this.drag)return;let e={type:_.cancel,srcEvent:null,target:null,...this.drag};this._emitter.emit(e.type,e),this._resetDrag()}updateSettings(e){if(this.isDestroyed)return;let{listenerOptions:t,sourceEvents:n,startPredicate:i}=e,s=Se(n),o=ge(t);i&&this._startPredicate!==i&&(this._startPredicate=i),(t&&(this._listenerOptions.capture!==o.capture||this._listenerOptions.passive===o.passive)||n&&this._sourceEvents!==s)&&(this.element.removeEventListener(Y[this._sourceEvents].start,this._onStart,this._listenerOptions),this._unbindWindowListeners(),this.cancel(),n&&(this._sourceEvents=s),t&&o&&(this._listenerOptions=o),this.element.addEventListener(Y[this._sourceEvents].start,this._onStart,this._listenerOptions))}on(e,t,n){return this._emitter.on(e,t,n)}off(e,t){this._emitter.off(e,t)}destroy(){this.isDestroyed||(this.isDestroyed=!0,this.cancel(),this._emitter.emit(_.destroy,{type:_.destroy}),this._emitter.off(),this.element.removeEventListener(Y[this._sourceEvents].start,this._onStart,this._listenerOptions))}};var Ee=class extends O{constructor(t={}){super();let{moveDistance:n=25,startPredicate:i=l=>{if((l.key==="Enter"||l.key===" ")&&document.activeElement&&document.activeElement!==document.body){let{left:a,top:d}=document.activeElement.getBoundingClientRect();return{x:a,y:d}}return null},movePredicate:s=(l,a,d)=>{if(!a.drag)return null;switch(l.key){case"ArrowLeft":return{x:a.drag.x-d.x,y:a.drag.y};case"ArrowRight":return{x:a.drag.x+d.x,y:a.drag.y};case"ArrowUp":return{x:a.drag.x,y:a.drag.y-d.y};case"ArrowDown":return{x:a.drag.x,y:a.drag.y+d.y};default:return null}},cancelPredicate:o=(l,a)=>a.drag&&l.key==="Escape"?{x:a.drag.x,y:a.drag.y}:null,endPredicate:c=(l,a)=>a.drag&&(l.key==="Enter"||l.key===" ")?{x:a.drag.x,y:a.drag.y}:null}=t;this._moveDistance=typeof n=="number"?{x:n,y:n}:{...n},this._startPredicate=i,this._movePredicate=s,this._cancelPredicate=o,this._endPredicate=c,this.cancel=this.cancel.bind(this),this._onKeyDown=this._onKeyDown.bind(this),document.addEventListener("keydown",this._onKeyDown),window.addEventListener("blur",this.cancel),window.addEventListener("visibilitychange",this.cancel)}_onKeyDown(t){if(!this.drag){let o=this._startPredicate(t,this,this._moveDistance);o&&(t.preventDefault(),this._start({type:"start",x:o.x,y:o.y,srcEvent:t}));return}let n=this._cancelPredicate(t,this,this._moveDistance);if(n){t.preventDefault(),this._cancel({type:"cancel",x:n.x,y:n.y,srcEvent:t});return}let i=this._endPredicate(t,this,this._moveDistance);if(i){t.preventDefault(),this._end({type:"end",x:i.x,y:i.y,srcEvent:t});return}let s=this._movePredicate(t,this,this._moveDistance);if(s){t.preventDefault(),this._move({type:"move",x:s.x,y:s.y,srcEvent:t});return}}updateSettings(t={}){t.moveDistance!==void 0&&(typeof t.moveDistance=="number"?(this._moveDistance.x=t.moveDistance,this._moveDistance.y=t.moveDistance):(this._moveDistance.x=t.moveDistance.x,this._moveDistance.y=t.moveDistance.y)),t.startPredicate!==void 0&&(this._startPredicate=t.startPredicate),t.movePredicate!==void 0&&(this._movePredicate=t.movePredicate),t.cancelPredicate!==void 0&&(this._cancelPredicate=t.cancelPredicate),t.endPredicate!==void 0&&(this._endPredicate=t.endPredicate)}destroy(){this.isDestroyed||(super.destroy(),document.removeEventListener("keydown",this._onKeyDown),window.removeEventListener("blur",this.cancel),window.removeEventListener("visibilitychange",this.cancel))}};var Et=["start","cancel","end","moveLeft","moveRight","moveUp","moveDown"];function ee(r,e){if(!r.size||!e.size)return 1/0;let t=1/0;for(let n of r){let i=e.get(n);i!==void 0&&i{if(document.activeElement){let{left:y,top:g}=document.activeElement.getBoundingClientRect();return{x:y,y:g}}return null},computeSpeed:i=()=>500,startKeys:s=[" ","Enter"],moveLeftKeys:o=["ArrowLeft"],moveRightKeys:c=["ArrowRight"],moveUpKeys:l=["ArrowUp"],moveDownKeys:a=["ArrowDown"],cancelKeys:d=["Escape"],endKeys:m=[" ","Enter"]}=t;this._computeSpeed=i,this._startPredicate=n,this._startKeys=new Set(s),this._cancelKeys=new Set(d),this._endKeys=new Set(m),this._moveLeftKeys=new Set(o),this._moveRightKeys=new Set(c),this._moveUpKeys=new Set(l),this._moveDownKeys=new Set(a),this._moveKeys=new Set([...o,...c,...l,...a]),this._moveKeyTimestamps=new Map,this._onKeyDown=this._onKeyDown.bind(this),this._onKeyUp=this._onKeyUp.bind(this),this._onTick=this._onTick.bind(this),this.on("tick",this._onTick),document.addEventListener("keydown",this._onKeyDown),document.addEventListener("keyup",this._onKeyUp),window.addEventListener("blur",this.cancel),window.addEventListener("visibilitychange",this.cancel)}_end(t){this.drag&&(this._moveKeyTimestamps.clear(),this._direction.x=0,this._direction.y=0,super._end(t))}_cancel(t){this.drag&&(this._moveKeyTimestamps.clear(),this._direction.x=0,this._direction.y=0,super._cancel(t))}_updateDirection(){let t=ee(this._moveLeftKeys,this._moveKeyTimestamps),n=ee(this._moveRightKeys,this._moveKeyTimestamps),i=ee(this._moveUpKeys,this._moveKeyTimestamps),s=ee(this._moveDownKeys,this._moveKeyTimestamps),o=t===n?0:t{let o=`${i}Keys`,c=t[o];c!==void 0&&(this[`_${o}`]=new Set(c),s>=3&&(n=!0))}),n){let i=[...this._moveLeftKeys,...this._moveRightKeys,...this._moveUpKeys,...this._moveDownKeys];[...this._moveKeys].every((o,c)=>i[c]===o)||(this._moveKeys=new Set(i),this._moveKeyTimestamps.clear(),this._updateDirection())}}destroy(){this.isDestroyed||(super.destroy(),this.off("tick",this._onTick),document.removeEventListener("keydown",this._onKeyDown),document.removeEventListener("keyup",this._onKeyUp),window.removeEventListener("blur",this.cancel),window.removeEventListener("visibilitychange",this.cancel))}};var Qe=require("eventti"),De=require("mezr");var te=class{constructor(){this.sensor=null,this.isEnded=!1,this.isStarted=!1,this.startEvent=null,this.nextMoveEvent=null,this.prevMoveEvent=null,this.endEvent=null,this.items=[]}};var ne=class{constructor(e,t,n,i,s){this.data={},this.element=e,this.elementContainer=t,this.elementOffsetContainer=n,this.dragContainer=i,this.dragOffsetContainer=s,this.initialTransform="",this.frozenProps=null,this.unfrozenProps=null,this.x=0,this.y=0,this.pX=0,this.pY=0,this._updateDiffX=0,this._updateDiffY=0,this._moveDiffX=0,this._moveDiffY=0,this._containerDiffX=0,this._containerDiffY=0}};var _e=require("mezr");function ye(r,e,t={left:0,top:0}){if(t.left=0,t.top=0,r===e)return t;let n=(0,_e.getOffset)([r,"padding"]),i=(0,_e.getOffset)([e,"padding"]);return t.left=i.left-n.left,t.top=i.top-n.top,t}var je=new WeakMap;function re(r){let e=je.get(r)?.deref();return e||(e=window.getComputedStyle(r,null),je.set(r,new WeakRef(e))),e}var vt="matrix(1, 0, 0, 1, 0, 0)",_t="matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)",$e=Z?{capture:!0,passive:!0}:!0,Je={left:0,top:0},be={x:0,y:0};function yt(){return{container:null,startPredicate:()=>!0,getElements:()=>null,releaseElements:()=>null,getFrozenProps:()=>null,getStartPosition:()=>({x:0,y:0}),setPosition:({item:r,x:e,y:t})=>{r.element.style.transform=`translate(${e}px, ${t}px) ${r.initialTransform}`},getPositionChange:({event:r,prevEvent:e})=>(be.x=r.x-e.x,be.y=r.y-e.y,be)}}var xe=class{constructor(e,t={}){this.sensors=e,this.settings=this._parseSettings(t),this.plugins={},this.drag=null,this.isDestroyed=!1,this._sensorData=new Map,this._emitter=new Qe.Emitter,this._startId=Symbol(),this._moveId=Symbol(),this._updateId=Symbol(),this._onMove=this._onMove.bind(this),this._onScroll=this._onScroll.bind(this),this._onEnd=this._onEnd.bind(this),this._prepareStart=this._prepareStart.bind(this),this._applyStart=this._applyStart.bind(this),this._prepareMove=this._prepareMove.bind(this),this._applyMove=this._applyMove.bind(this),this._preparePositionUpdate=this._preparePositionUpdate.bind(this),this._applyPositionUpdate=this._applyPositionUpdate.bind(this),this.sensors.forEach(n=>{this._sensorData.set(n,{predicateState:0,predicateEvent:null,onMove:o=>this._onMove(o,n),onEnd:o=>this._onEnd(o,n)});let{onMove:i,onEnd:s}=this._sensorData.get(n);n.on("start",i),n.on("move",i),n.on("cancel",s),n.on("end",s),n.on("destroy",s)})}_parseSettings(e,t=yt()){let{container:n=t.container,startPredicate:i=t.startPredicate,getElements:s=t.getElements,releaseElements:o=t.releaseElements,getFrozenProps:c=t.getFrozenProps,getStartPosition:l=t.getStartPosition,setPosition:a=t.setPosition,getPositionChange:d=t.getPositionChange}=e||{};return{container:n,startPredicate:i,getElements:s,releaseElements:o,getFrozenProps:c,getStartPosition:l,setPosition:a,getPositionChange:d}}_emit(e,...t){this._emitter.emit(e,...t)}_onMove(e,t){let n=this._sensorData.get(t);if(n)switch(n.predicateState){case 0:{n.predicateEvent=e;let i=this.settings.startPredicate({draggable:this,sensor:t,event:e});i===!0?this.resolveStartPredicate(t):i===!1&&this.rejectStartPredicate(t);break}case 1:{this.drag&&(this.drag.nextMoveEvent=e,u.once(S,this._prepareMove,this._moveId),u.once(D,this._applyMove,this._moveId));break}}}_onScroll(){this.updatePosition()}_onEnd(e,t){let n=this._sensorData.get(t);n&&(this.drag?n.predicateState===1&&(this.drag.endEvent=e,this._sensorData.forEach(i=>{i.predicateState=0,i.predicateEvent=null}),this.stop()):(n.predicateState=0,n.predicateEvent=null))}_prepareStart(){let{drag:e}=this;if(!e||!e.startEvent)return;let t=this.settings.getElements({draggable:this,sensor:e.sensor,startEvent:e.startEvent})||[];e.items=t.map(n=>{if(!n.isConnected)throw new Error("Element is not connected");let i=n.parentElement,s=(0,De.getOffsetContainer)(n);if(!s)throw new Error("Offset container could not be computed for the element!");let o=this.settings.container||i,c=o===i?s:(0,De.getOffsetContainer)(n,{container:o});if(!c)throw new Error("Drag offset container could not be computed for the element!");let l=new ne(n,i,s,o,c),a=n.getBoundingClientRect();if(l.x=a.left,l.y=a.top,s!==c){let{left:b,top:f}=ye(c,s,Je);l._containerDiffX=b,l._containerDiffY=f}let d=re(n),{transform:m}=d;m&&m!=="none"&&m!==vt&&m!==_t&&(l.initialTransform=m);let{x:y,y:g}=this.settings.getStartPosition({draggable:this,sensor:e.sensor,item:l,style:d});l.pX=y,l.pY=g;let E=this.settings.getFrozenProps({draggable:this,sensor:e.sensor,item:l,style:d});if(Array.isArray(E))if(E.length){let b={};for(let f of E)b[f]=d[f];l.frozenProps=b}else l.frozenProps=null;else l.frozenProps=E;if(l.frozenProps){let b={};for(let f in l.frozenProps)l.frozenProps.hasOwnProperty(f)&&(b[f]=n.style[f]);l.unfrozenProps=b}return l}),this._emit("preparestart",e.startEvent)}_applyStart(){let e=this.drag;if(!e||!e.startEvent)return;let{container:t}=this.settings;for(let n of e.items)t&&n.element.parentElement!==t&&(t.appendChild(n.element),n.pX+=n._containerDiffX,n.pY+=n._containerDiffY),n.frozenProps&&Object.assign(n.element.style,n.frozenProps),this.settings.setPosition({phase:"start",draggable:this,sensor:e.sensor,item:n,x:n.pX,y:n.pY});window.addEventListener("scroll",this._onScroll,$e),e.isStarted=!0,this._emit("start",e.startEvent)}_prepareMove(){let{drag:e}=this;if(!e||!e.startEvent)return;let t=e.nextMoveEvent,n=e.prevMoveEvent||e.startEvent;if(!(!t||t===n)){for(let i of e.items){let{x:s,y:o}=this.settings.getPositionChange({draggable:this,sensor:e.sensor,item:i,startEvent:e.startEvent,prevEvent:n,event:t});s&&(i.pX=i.pX-i._moveDiffX+s,i.x=i.x-i._moveDiffX+s,i._moveDiffX=s),o&&(i.pY=i.pY-i._moveDiffY+o,i.y=i.y-i._moveDiffY+o,i._moveDiffY=o)}e.prevMoveEvent=t,this._emit("preparemove",t)}}_applyMove(){let{drag:e}=this;if(!(!e||!e.nextMoveEvent)){for(let t of e.items)t._moveDiffX=0,t._moveDiffY=0;for(let t of e.items)this.settings.setPosition({phase:"move",draggable:this,sensor:e.sensor,item:t,x:t.pX,y:t.pY});this._emit("move",e.nextMoveEvent)}}_preparePositionUpdate(){let{drag:e}=this;if(e)for(let t of e.items){if(t.elementOffsetContainer!==t.dragOffsetContainer){let{left:c,top:l}=ye(t.dragOffsetContainer,t.elementOffsetContainer,Je);t._containerDiffX=c,t._containerDiffY=l}let{left:n,top:i}=t.element.getBoundingClientRect(),s=t.x-t._moveDiffX-n;t.pX=t.pX-t._updateDiffX+s,t._updateDiffX=s;let o=t.y-t._moveDiffY-i;t.pY=t.pY-t._updateDiffY+o,t._updateDiffY=o}}_applyPositionUpdate(){let{drag:e}=this;if(e)for(let t of e.items)t._updateDiffX=0,t._updateDiffY=0,this.settings.setPosition({phase:"move",draggable:this,sensor:e.sensor,item:t,x:t.pX,y:t.pY})}on(e,t,n){return this._emitter.on(e,t,n)}off(e,t){this._emitter.off(e,t)}resolveStartPredicate(e,t){let n=this._sensorData.get(e);if(!n)return;let i=t||n.predicateEvent;n.predicateState===0&&i&&(n.predicateState=1,n.predicateEvent=null,this.drag=new te,this.drag.sensor=e,this.drag.startEvent=i,this._sensorData.forEach((s,o)=>{o!==e&&(s.predicateState=2,s.predicateEvent=null)}),u.once(S,this._prepareStart,this._startId),u.once(D,this._applyStart,this._startId))}rejectStartPredicate(e){let t=this._sensorData.get(e);t?.predicateState===0&&(t.predicateState=2,t.predicateEvent=null)}stop(){let{drag:e}=this;if(!(!e||e.isEnded)){if(e.isEnded=!0,u.off(S,this._startId),u.off(D,this._startId),u.off(S,this._moveId),u.off(D,this._moveId),u.off(S,this._updateId),u.off(D,this._updateId),e.isStarted){window.removeEventListener("scroll",this._onScroll,$e);let t=[];for(let n of e.items){if(t.push(n.element),n.elementContainer&&n.element.parentElement!==n.elementContainer&&(n.pX-=n._containerDiffX,n.pY-=n._containerDiffY,n._containerDiffX=0,n._containerDiffY=0,n.elementContainer.appendChild(n.element)),n.unfrozenProps)for(let i in n.unfrozenProps)n.element.style[i]=n.unfrozenProps[i]||"";this.settings.setPosition({phase:"end",draggable:this,sensor:e.sensor,item:n,x:n.pX,y:n.pY})}t.length&&this.settings.releaseElements({draggable:this,sensor:e.sensor,elements:t})}this._emit("end",e.endEvent),this.drag=null}}updatePosition(e=!1){this.drag&&(e?(this._preparePositionUpdate(),this._applyPositionUpdate()):(u.once(S,this._preparePositionUpdate,this._updateId),u.once(D,this._applyPositionUpdate,this._updateId)))}updateSettings(e={}){this.settings=this._parseSettings(e,this.settings)}use(e){return e(this)}destroy(){this.isDestroyed||(this.isDestroyed=!0,this.stop(),this._sensorData.forEach(({onMove:e,onEnd:t},n)=>{n.off("start",e),n.off("move",e),n.off("cancel",t),n.off("end",t),n.off("destroy",t)}),this._sensorData.clear(),this._emit("destroy"),this._emitter.off())}};var it=require("eventti"),F=require("mezr");var H=class{constructor(e,t){this._data=[],this._createObject=e,this._onPut=t}pick(){return this._data.length?this._data.pop():this._createObject()}put(e){this._data.indexOf(e)===-1&&(this._onPut&&this._onPut(e),this._data.push(e))}reset(){this._data.length=0}};var Ze=require("mezr");function et(r,e){let t=(0,Ze.getIntersection)(r,e);return t?t.width*t.height:0}function Pe(r,e){let t=et(r,e);if(!t)return 0;let n=Math.min(r.width,e.width)*Math.min(r.height,e.height);return t/n*100}function w(r){return r instanceof Window}function Te(r){return w(r)||r===document.documentElement||r===document.body?window:r}function N(r){return w(r)?r.pageXOffset:r.scrollLeft}function we(r){return w(r)&&(r=document.documentElement),r.scrollWidth-r.clientWidth}function q(r){return w(r)?r.pageYOffset:r.scrollTop}function Ie(r){return w(r)&&(r=document.documentElement),r.scrollHeight-r.clientHeight}function Ae(r,e){return!(r.right<=e.left||e.right<=r.left||r.bottom<=e.top||e.bottom<=r.top)}var Ke={width:0,height:0,left:0,right:0,top:0,bottom:0},tt={...Ke},nt=50,I={direction:"none",threshold:0,distance:0,value:0,maxValue:0,duration:0,speed:0,deltaTime:0,isEnding:!1},h={x:1,y:2},M={forward:4,reverse:8},ie={none:0,left:h.x|M.reverse,right:h.x|M.forward},G={none:0,up:h.y|M.reverse,down:h.y|M.forward},p={...ie,...G};function ke(r){switch(r){case ie.none:case G.none:return"none";case ie.left:return"left";case ie.right:return"right";case G.up:return"up";case G.down:return"down";default:throw new Error(`Unknown direction value: ${r}`)}}function rt(r,e,t){let{left:n=0,right:i=0,top:s=0,bottom:o=0}=e;return n=Math.max(0,n),i=Math.max(0,i),s=Math.max(0,s),o=Math.max(0,o),t.width=r.width+n+i,t.height=r.height+s+o,t.left=r.left-n,t.top=r.top-s,t.right=r.right+i,t.bottom=r.bottom+o,t}function oe(r,e){return Math.ceil(r)>=Math.floor(e)}function Ce(r,e){return Math.min(e/2,r)}function Le(r,e,t,n){return Math.max(0,t+r*2+n*e-n)/2}var Re=class{constructor(){this.positionX=0,this.positionY=0,this.directionX=p.none,this.directionY=p.none,this.overlapCheckRequestTime=0}},Me=class{constructor(){this.element=null,this.requestX=null,this.requestY=null,this.scrollLeft=0,this.scrollTop=0}reset(){this.requestX&&(this.requestX.action=null),this.requestY&&(this.requestY.action=null),this.element=null,this.requestX=null,this.requestY=null,this.scrollLeft=0,this.scrollTop=0}addRequest(e){h.x&e.direction?(this.requestX&&this.removeRequest(this.requestX),this.requestX=e):(this.requestY&&this.removeRequest(this.requestY),this.requestY=e),e.action=this}removeRequest(e){this.requestX===e?(this.requestX=null,e.action=null):this.requestY===e&&(this.requestY=null,e.action=null)}computeScrollValues(){this.element&&(this.scrollLeft=this.requestX?this.requestX.value:N(this.element),this.scrollTop=this.requestY?this.requestY.value:q(this.element))}scroll(){this.element&&(this.element.scrollTo?this.element.scrollTo(this.scrollLeft,this.scrollTop):(this.element.scrollLeft=this.scrollLeft,this.element.scrollTop=this.scrollTop))}},Oe=class{constructor(){this.item=null,this.element=null,this.isActive=!1,this.isEnding=!1,this.direction=0,this.value=NaN,this.maxValue=0,this.threshold=0,this.distance=0,this.deltaTime=0,this.speed=0,this.duration=0,this.action=null}reset(){this.isActive&&this.onStop(),this.item=null,this.element=null,this.isActive=!1,this.isEnding=!1,this.direction=0,this.value=NaN,this.maxValue=0,this.threshold=0,this.distance=0,this.deltaTime=0,this.speed=0,this.duration=0,this.action=null}hasReachedEnd(){return M.forward&this.direction?oe(this.value,this.maxValue):this.value<=0}computeCurrentScrollValue(){return this.element?this.value!==this.value?h.x&this.direction?N(this.element):q(this.element):Math.max(0,Math.min(this.value,this.maxValue)):0}computeNextScrollValue(){let e=this.speed*(this.deltaTime/1e3),t=M.forward&this.direction?this.value+e:this.value-e;return Math.max(0,Math.min(t,this.maxValue))}computeSpeed(){if(!this.item||!this.element)return 0;let{speed:e}=this.item;return typeof e=="function"?(I.direction=ke(this.direction),I.threshold=this.threshold,I.distance=this.distance,I.value=this.value,I.maxValue=this.maxValue,I.duration=this.duration,I.speed=this.speed,I.deltaTime=this.deltaTime,I.isEnding=this.isEnding,e(this.element,I)):e}tick(e){return this.isActive||(this.isActive=!0,this.onStart()),this.deltaTime=e,this.value=this.computeCurrentScrollValue(),this.speed=this.computeSpeed(),this.value=this.computeNextScrollValue(),this.duration+=e,this.value}onStart(){if(!this.item||!this.element)return;let{onStart:e}=this.item;typeof e=="function"&&e(this.element,ke(this.direction))}onStop(){if(!this.item||!this.element)return;let{onStop:e}=this.item;typeof e=="function"&&e(this.element,ke(this.direction))}};function We(r=500,e=.5,t=.25){let n=r*(e>0?1/e:1/0),i=r*(t>0?1/t:1/0);return function(s,o){let c=0;if(!o.isEnding)if(o.threshold>0){let d=o.threshold-Math.max(0,o.distance);c=r/o.threshold*d}else c=r;let l=o.speed;if(l===c)return c;let a=c;return lnew Oe,n=>n.reset()),this._actionPool=new H(()=>new Me,n=>n.reset()),this._emitter=new it.Emitter,this._frameRead=this._frameRead.bind(this),this._frameWrite=this._frameWrite.bind(this)}_frameRead(e){this._isDestroyed||(e&&this._tickTime?(this._tickDeltaTime=e-this._tickTime,this._tickTime=e,this._updateItems(),this._updateRequests(),this._updateActions()):(this._tickTime=e,this._tickDeltaTime=0))}_frameWrite(){this._isDestroyed||this._applyActions()}_startTicking(){this._isTicking||(this._isTicking=!0,u.on(S,this._frameRead),u.on(D,this._frameWrite))}_stopTicking(){this._isTicking&&(this._isTicking=!1,this._tickTime=0,this._tickDeltaTime=0,u.off(S,this._frameRead),u.off(D,this._frameWrite))}_getItemClientRect(e,t={width:0,height:0,left:0,right:0,top:0,bottom:0}){let{clientRect:n}=e;return t.left=n.left,t.top=n.top,t.width=n.width,t.height=n.height,t.right=n.left+n.width,t.bottom=n.top+n.height,t}_requestItemScroll(e,t,n,i,s,o,c){let l=this._requests[t],a=l.get(e);a?(a.element!==n||a.direction!==i)&&a.reset():(a=this._requestPool.pick(),l.set(e,a)),a.item=e,a.element=n,a.direction=i,a.threshold=s,a.distance=o,a.maxValue=c}_cancelItemScroll(e,t){let n=this._requests[t],i=n.get(e);i&&(i.action&&i.action.removeRequest(i),this._requestPool.put(i),n.delete(e))}_checkItemOverlap(e,t,n){let{inertAreaSize:i,targets:s}=e;if(!s.length){t&&this._cancelItemScroll(e,h.x),n&&this._cancelItemScroll(e,h.y);return}let o=this._itemData.get(e),c=o?.directionX,l=o?.directionY;if(!c&&!l){t&&this._cancelItemScroll(e,h.x),n&&this._cancelItemScroll(e,h.y);return}let a=this._getItemClientRect(e,Ke),d=null,m=-1/0,y=0,g=-1/0,E=p.none,b=0,f=0,v=null,x=-1/0,V=0,U=-1/0,ce=p.none,Ye=0,Ne=0,de=0;for(;de=m&&J>0&&(R>m||X>g)){let T=0,C=p.none,L=Ce(qe,P.width),z=Le(L,i,a.width,P.width);c===p.right?(T=P.right+z-a.right,T<=L&&!oe(N(k),J)&&(C=p.right)):c===p.left&&(T=a.left-(P.left-z),T<=L&&N(k)>0&&(C=p.left)),C&&(d=k,m=R,y=L,g=X,E=C,b=T,f=J)}if(me&&R>=x&&Q>0&&(R>x||X>U)){let T=0,C=G.none,L=Ce(qe,P.height),z=Le(L,i,a.height,P.height);l===p.down?(T=P.bottom+z-a.bottom,T<=L&&!oe(q(k),Q)&&(C=p.down)):l===p.up&&(T=a.top-(P.top-z),T<=L&&q(k)>0&&(C=p.up)),C&&(v=k,x=R,V=L,U=X,ce=C,Ye=T,Ne=Q)}}t&&(d&&E?this._requestItemScroll(e,h.x,d,E,y,b,f):this._cancelItemScroll(e,h.x)),n&&(v&&ce?this._requestItemScroll(e,h.y,v,ce,V,Ye,Ne):this._cancelItemScroll(e,h.y))}_updateScrollRequest(e){let t=e.item,{inertAreaSize:n,smoothStop:i,targets:s}=t,o=this._getItemClientRect(t,Ke),c=null,l=0;for(;lf)break;let V=m?N(d):q(d);if(c=M.forward&e.direction?oe(V,y):V<=0,c)break;return e.maxValue=y,e.threshold=f,e.distance=x,e.isEnding=!1,!0}return i===!0&&e.speed>0?(c===null&&(c=e.hasReachedEnd()),e.isEnding=!c):e.isEnding=!1,e.isEnding}_updateItems(){for(let e=0;eo?p.right:ic?p.down:s0&&this._tickTime-c>this.settings.overlapCheckInterval,a=!0,d=t.get(s);d&&d.isActive&&(a=!this._updateScrollRequest(d),a&&(l=!0,this._cancelItemScroll(s,h.x)));let m=!0,y=n.get(s);y&&y.isActive&&(m=!this._updateScrollRequest(y),m&&(l=!0,this._cancelItemScroll(s,h.y))),l&&(o.overlapCheckRequestTime=0,this._checkItemOverlap(s,a,m))}}_requestAction(e,t){let n=t===h.x,i=null,s=0;for(;s{let{drag:e}=r,t=e?.items[0];if(t)$.x=t.pX,$.y=t.pY;else{let n=e&&(e.nextMoveEvent||e.startEvent);$.x=n?n.x:0,$.y=n?n.y:0}return $},getClientRect:r=>{let{drag:e}=r,t=e?.items[0];if(t&&t.element){let{left:n,top:i,width:s,height:o}=t.element.getBoundingClientRect();K.left=n,K.top=i,K.width=s,K.height=o}else{let n=e&&(e.nextMoveEvent||e.startEvent);K.left=n?n.x-25:0,K.top=n?n.y-25:0,K.width=n?50:0,K.height=n?50:0}return K},onStart:null,onStop:null}}var Xe=class{constructor(e,t){this._draggableAutoScroll=e,this._draggable=t,this._position={x:0,y:0},this._clientRect={left:0,top:0,width:0,height:0}}_getSettings(){return this._draggableAutoScroll.settings}get targets(){let{targets:e}=this._getSettings();return typeof e=="function"&&(e=e(this._draggable)),e}get position(){let{getPosition:e}=this._getSettings();if(typeof e=="function"){let t=e(this._draggable);this._position.x=t.x,this._position.y=t.y}else this._position.x=0,this._position.y=0;return this._position}get clientRect(){let{getClientRect:e}=this._getSettings();if(typeof e=="function"){let{left:t,top:n,width:i,height:s}=e(this._draggable);this._clientRect.left=t,this._clientRect.top=n,this._clientRect.width=i,this._clientRect.height=s}else this._clientRect.left=0,this._clientRect.top=0,this._clientRect.width=0,this._clientRect.height=0;return this._clientRect}get inertAreaSize(){return this._getSettings().inertAreaSize}get smoothStop(){return this._getSettings().smoothStop}get speed(){return this._getSettings().speed}get onStart(){return this._getSettings().onStart}get onStop(){return this._getSettings().onStop}onPrepareScrollEffect(){let e=this._draggable._updateId;u.off(S,e),u.off(D,e),this._draggable._preparePositionUpdate()}onApplyScrollEffect(){this._draggable._applyPositionUpdate()}},ae=class{constructor(e,t={}){this.name="autoscroll",this.version="0.0.2",this.settings=this._parseSettings(t),this._autoScrollProxy=null,e.on("start",()=>{this._autoScrollProxy||(this._autoScrollProxy=new Xe(this,e),se.addItem(this._autoScrollProxy))}),e.on("end",()=>{this._autoScrollProxy&&(se.removeItem(this._autoScrollProxy),this._autoScrollProxy=null)})}_parseSettings(e,t=bt()){let{targets:n=t.targets,inertAreaSize:i=t.inertAreaSize,speed:s=t.speed,smoothStop:o=t.smoothStop,getPosition:c=t.getPosition,getClientRect:l=t.getClientRect,onStart:a=t.onStart,onStop:d=t.onStop}=e||{};return{targets:n,inertAreaSize:i,speed:s,smoothStop:o,getPosition:c,getClientRect:l,onStart:a,onStop:d}}updateSettings(e={}){this.settings=this._parseSettings(e,this.settings)}};function Dt(r){return e=>{let t=new ae(e,r),n=e;return n.plugins[t.name]=t,n}}var ot=new Set(["auto","scroll","overlay"]);function le(r){let e=re(r);return!!(ot.has(e.overflowY)||ot.has(e.overflowX))}function st(r){return r instanceof Document}function at(r,e=[]){let t=r?.parentNode;for(;t&&!st(t);)t instanceof Element?(le(t)&&e.push(t),t=t.parentNode):t instanceof ShadowRoot?t=t.host:t=t.parentNode;return e.push(window),e}function xt(r){let e=[];return le(r)&&e.push(r),at(r,e),e}function Pt(r={}){let e,t=0,n=null,i,{timeout:s=250,fallback:o=()=>!0}=r,c=d=>d.preventDefault(),l=d=>{if(t){if(e){d.cancelable&&d.preventDefault();return}e===void 0&&(d.cancelable&&d.timeStamp-t>s?(e=!0,d.preventDefault()):e=!1)}};return d=>{if(!(d.sensor instanceof W))return o(d);let{draggable:m,sensor:y,event:g}=d,E=g;if(E.pointerType==="touch"){if(E.type==="start"&&(E.srcEvent.type==="pointerdown"||E.srcEvent.type==="touchstart")){n=E.target;let b=n?xt(n):[];b.forEach(v=>{v.addEventListener("touchmove",l,{passive:!1,capture:!0})});let f=()=>{t&&(m.off("end",f),m.sensors.forEach(v=>{v instanceof W&&v.off("end",f)}),n?.removeEventListener("contextmenu",c),b.forEach(v=>{v.removeEventListener("touchmove",l,{capture:!0})}),t=0,e=void 0,n=null,i=void window.clearTimeout(i))};e=void 0,t=E.srcEvent.timeStamp,n?.addEventListener("contextmenu",c),m.on("end",f),m.sensors.forEach(v=>{v instanceof W&&v.off("end",f)}),s>0&&(i=window.setTimeout(()=>{m.resolveStartPredicate(y),e=!0,i=void 0},s))}return e}return E.type==="start"&&!E.srcEvent.button}}0&&(module.exports={AUTO_SCROLL_AXIS,AUTO_SCROLL_AXIS_DIRECTION,AUTO_SCROLL_DIRECTION,AutoScroll,BaseMotionSensor,BaseSensor,Draggable,DraggableAutoScroll,KeyboardMotionSensor,KeyboardSensor,PointerSensor,SensorEventType,autoScroll,autoScrollPlugin,autoScrollSmoothSpeed,createPointerSensorStartPredicate,setTicker,ticker,tickerReadPhase,tickerWritePhase}); diff --git a/dist/dragdoll.d.cts b/dist/dragdoll.d.cts new file mode 100644 index 0000000..4551ef1 --- /dev/null +++ b/dist/dragdoll.d.cts @@ -0,0 +1,704 @@ +import { Emitter, Events, EventListenerId, EventName } from 'eventti'; +import * as tikki from 'tikki'; +import { Ticker, FrameCallback } from 'tikki'; + +declare const SensorEventType: { + readonly start: "start"; + readonly move: "move"; + readonly cancel: "cancel"; + readonly end: "end"; + readonly destroy: "destroy"; +}; +interface SensorStartEvent { + type: typeof SensorEventType.start; + x: number; + y: number; +} +interface SensorMoveEvent { + type: typeof SensorEventType.move; + x: number; + y: number; +} +interface SensorCancelEvent { + type: typeof SensorEventType.cancel; + x: number; + y: number; +} +interface SensorEndEvent { + type: typeof SensorEventType.end; + x: number; + y: number; +} +interface SensorDestroyEvent { + type: typeof SensorEventType.destroy; +} +interface SensorEvents { + start: SensorStartEvent; + move: SensorMoveEvent; + cancel: SensorCancelEvent; + end: SensorEndEvent; + destroy: SensorDestroyEvent; +} +interface Sensor { + events: E; + on(eventName: K, listener: (eventData: E[K]) => void): void; + off(eventName: K, listener: (eventData: E[K]) => void): void; + cancel(): void; + destroy(): void; +} + +interface BaseSensorDragData { + readonly x: number; + readonly y: number; +} +declare class BaseSensor implements Sensor { + events: E; + readonly drag: BaseSensorDragData | null; + readonly isDestroyed: boolean; + protected _emitter: Emitter; + constructor(); + protected _createDragData(data: E['start']): BaseSensorDragData; + protected _updateDragData(data: E['move'] | E['end'] | E['cancel']): void; + protected _resetDragData(): void; + protected _start(data: E['start']): void; + protected _move(data: E['move']): void; + protected _end(data: E['end']): void; + protected _cancel(data: E['cancel']): void; + on(eventName: K, listener: (e: E[K]) => void, listenerId?: EventListenerId): EventListenerId; + off(eventName: K, listener: ((e: E[K]) => void) | EventListenerId): void; + cancel(): void; + destroy(): void; +} + +interface BaseMotionSensorTickEvent { + type: 'tick'; + time: number; + deltaTime: number; +} +interface BaseMotionSensorEvents extends SensorEvents { + tick: BaseMotionSensorTickEvent; +} +interface BaseMotionSensorDragData extends BaseSensorDragData { + readonly time: number; + readonly deltaTime: number; +} +declare class BaseMotionSensor extends BaseSensor implements Sensor { + events: E; + readonly drag: BaseMotionSensorDragData | null; + protected _direction: { + x: number; + y: number; + }; + protected _speed: number; + constructor(); + protected _createDragData(data: E['start']): BaseMotionSensorDragData; + protected _start(data: E['start']): void; + protected _end(data: E['end']): void; + protected _cancel(data: E['cancel']): void; + protected _tick(time: number): void; +} + +type ListenerOptions = { + capture?: boolean; + passive?: boolean; +}; +type PointerType = 'mouse' | 'pen' | 'touch'; +type Dimensions = { + width: number; + height: number; +}; +interface Rect extends Dimensions { + left: number; + top: number; +} +interface RectExtended extends Rect { + right: number; + bottom: number; +} +type CSSProperties = Partial>; + +declare const SOURCE_EVENTS: { + readonly pointer: { + readonly start: "pointerdown"; + readonly move: "pointermove"; + readonly cancel: "pointercancel"; + readonly end: "pointerup"; + }; + readonly touch: { + readonly start: "touchstart"; + readonly move: "touchmove"; + readonly cancel: "touchcancel"; + readonly end: "touchend"; + }; + readonly mouse: { + readonly start: "mousedown"; + readonly move: "mousemove"; + readonly cancel: ""; + readonly end: "mouseup"; + }; +}; +type PointerSensorSourceEvent = PointerEvent | TouchEvent | MouseEvent; +type PointerSensorDragData = { + readonly pointerId: number; + readonly pointerType: PointerType; + readonly x: number; + readonly y: number; +}; +interface PointerSensorSettings { + listenerOptions: ListenerOptions; + sourceEvents: keyof typeof SOURCE_EVENTS | 'auto'; + startPredicate: (e: PointerSensorSourceEvent) => boolean; +} +interface PointerSensorStartEvent extends SensorStartEvent { + pointerId: number; + pointerType: PointerType; + srcEvent: PointerSensorSourceEvent; + target: EventTarget | null; +} +interface PointerSensorMoveEvent extends SensorMoveEvent { + pointerId: number; + pointerType: PointerType; + srcEvent: PointerSensorSourceEvent; + target: EventTarget | null; +} +interface PointerSensorCancelEvent extends SensorCancelEvent { + pointerId: number; + pointerType: PointerType; + srcEvent: PointerSensorSourceEvent | null; + target: EventTarget | null; +} +interface PointerSensorEndEvent extends SensorEndEvent { + pointerId: number; + pointerType: PointerType; + srcEvent: PointerSensorSourceEvent | null; + target: EventTarget | null; +} +interface PointerSensorDestroyEvent extends SensorDestroyEvent { +} +interface PointerSensorEvents { + start: PointerSensorStartEvent; + move: PointerSensorMoveEvent; + cancel: PointerSensorCancelEvent; + end: PointerSensorEndEvent; + destroy: PointerSensorDestroyEvent; +} +declare class PointerSensor implements Sensor { + events: E; + readonly element: Element | Window; + readonly drag: PointerSensorDragData | null; + readonly isDestroyed: boolean; + protected _startPredicate: (e: PointerSensorSourceEvent) => boolean; + protected _listenerOptions: ListenerOptions; + protected _sourceEvents: keyof typeof SOURCE_EVENTS; + protected _areWindowListenersBound: boolean; + protected _emitter: Emitter; + constructor(element: Element | Window, options?: Partial); + protected _getTrackedPointerEventData(e: PointerSensorSourceEvent): PointerEvent | MouseEvent | Touch | null; + protected _onStart(e: PointerSensorSourceEvent): void; + protected _onMove(e: PointerSensorSourceEvent): void; + protected _onCancel(e: PointerEvent | TouchEvent): void; + protected _onEnd(e: PointerSensorSourceEvent): void; + protected _bindWindowListeners(): void; + protected _unbindWindowListeners(): void; + protected _resetDrag(): void; + cancel(): void; + updateSettings(options: Partial): void; + on(eventName: K, listener: (e: E[K]) => void, listenerId?: EventListenerId): EventListenerId; + off(eventName: K, listener: ((e: E[K]) => void) | EventListenerId): void; + destroy(): void; +} + +type KeyboardSensorPredicate = (e: KeyboardEvent, sensor: KeyboardSensor, moveDistance: { + x: number; + y: number; +}) => { + x: number; + y: number; +} | null | undefined; +interface KeyboardSensorSettings { + moveDistance: number | { + x: number; + y: number; + }; + startPredicate: KeyboardSensorPredicate; + movePredicate: KeyboardSensorPredicate; + cancelPredicate: KeyboardSensorPredicate; + endPredicate: KeyboardSensorPredicate; +} +interface KeyboardSensorStartEvent extends SensorStartEvent { + srcEvent: KeyboardEvent; +} +interface KeyboardSensorMoveEvent extends SensorMoveEvent { + srcEvent: KeyboardEvent; +} +interface KeyboardSensorCancelEvent extends SensorCancelEvent { + srcEvent: KeyboardEvent; +} +interface KeyboardSensorEndEvent extends SensorEndEvent { + srcEvent: KeyboardEvent; +} +interface KeyboardSensorDestroyEvent extends SensorDestroyEvent { +} +interface KeyboardSensorEvents { + start: KeyboardSensorStartEvent; + move: KeyboardSensorMoveEvent; + cancel: KeyboardSensorCancelEvent; + end: KeyboardSensorEndEvent; + destroy: KeyboardSensorDestroyEvent; +} +declare class KeyboardSensor extends BaseSensor implements Sensor { + events: E; + protected _moveDistance: { + x: number; + y: number; + }; + protected _startPredicate: KeyboardSensorPredicate; + protected _movePredicate: KeyboardSensorPredicate; + protected _cancelPredicate: KeyboardSensorPredicate; + protected _endPredicate: KeyboardSensorPredicate; + constructor(options?: Partial); + protected _onKeyDown(e: KeyboardEvent): void; + updateSettings(options?: Partial): void; + destroy(): void; +} + +interface KeyboardMotionSensorSettings { + startPredicate: (e: KeyboardEvent, sensor: KeyboardMotionSensor) => { + x: number; + y: number; + } | null | undefined; + computeSpeed: (sensor: KeyboardMotionSensor) => number; + startKeys: string[]; + moveLeftKeys: string[]; + moveRightKeys: string[]; + moveUpKeys: string[]; + moveDownKeys: string[]; + cancelKeys: string[]; + endKeys: string[]; +} +interface KeyboardMotionSensorEvents extends BaseMotionSensorEvents { +} +declare class KeyboardMotionSensor extends BaseMotionSensor implements Sensor { + events: E; + protected _startPredicate: Exclude['startPredicate'], undefined>; + protected _computeSpeed: Exclude['computeSpeed'], undefined>; + protected _moveKeys: Set; + protected _moveKeyTimestamps: Map; + protected _startKeys: Set; + protected _moveLeftKeys: Set; + protected _moveRightKeys: Set; + protected _moveUpKeys: Set; + protected _moveDownKeys: Set; + protected _cancelKeys: Set; + protected _endKeys: Set; + constructor(options?: Partial>); + protected _end(data: E['end']): void; + protected _cancel(data: E['cancel']): void; + protected _updateDirection(): void; + protected _onTick(): void; + protected _onKeyUp(e: KeyboardEvent): void; + protected _onKeyDown(e: KeyboardEvent): void; + updateSettings(options?: Partial>): void; + destroy(): void; +} + +declare class DraggableDragItem { + data: { + [key: string]: any; + }; + readonly element: HTMLElement | SVGSVGElement; + readonly elementContainer: HTMLElement; + readonly elementOffsetContainer: HTMLElement | SVGSVGElement | Window | Document; + readonly dragContainer: HTMLElement; + readonly dragOffsetContainer: HTMLElement | SVGSVGElement | Window | Document; + readonly initialTransform: string; + readonly frozenProps: CSSProperties | null; + readonly unfrozenProps: CSSProperties | null; + readonly x: number; + readonly y: number; + readonly pX: number; + readonly pY: number; + readonly _updateDiffX: number; + readonly _updateDiffY: number; + readonly _moveDiffX: number; + readonly _moveDiffY: number; + readonly _containerDiffX: number; + readonly _containerDiffY: number; + constructor(element: HTMLElement | SVGSVGElement, elementContainer: HTMLElement, elementOffsetContainer: HTMLElement | SVGSVGElement | Window | Document, dragContainer: HTMLElement, dragOffsetContainer: HTMLElement | SVGSVGElement | Window | Document); +} + +declare class DraggableDrag { + readonly sensor: S[number] | null; + readonly isStarted: boolean; + readonly isEnded: boolean; + readonly startEvent: E['start'] | E['move'] | null; + readonly nextMoveEvent: E['move'] | null; + readonly prevMoveEvent: E['move'] | null; + readonly endEvent: E['end'] | E['cancel'] | E['destroy'] | null; + readonly items: DraggableDragItem[]; + constructor(); +} + +declare enum DraggableStartPredicateState { + PENDING = 0, + RESOLVED = 1, + REJECTED = 2 +} +interface DraggableSettings { + container: HTMLElement | null; + startPredicate: (data: { + draggable: Draggable; + sensor: S[number]; + event: E['start'] | E['move']; + }) => boolean | undefined; + getElements: (data: { + draggable: Draggable; + sensor: S[number]; + startEvent: E['start'] | E['move']; + }) => (HTMLElement | SVGSVGElement)[] | null; + releaseElements: (data: { + draggable: Draggable; + sensor: S[number]; + elements: (HTMLElement | SVGSVGElement)[]; + }) => void; + getFrozenProps: (data: { + draggable: Draggable; + sensor: S[number]; + item: DraggableDragItem; + style: CSSStyleDeclaration; + }) => CSSProperties | (keyof CSSProperties)[] | null; + getStartPosition: (data: { + draggable: Draggable; + sensor: S[number]; + item: DraggableDragItem; + style: CSSStyleDeclaration; + }) => { + x: number; + y: number; + }; + setPosition: (data: { + draggable: Draggable; + sensor: S[number]; + phase: 'start' | 'move' | 'end'; + item: DraggableDragItem; + x: number; + y: number; + }) => void; + getPositionChange: (data: { + draggable: Draggable; + sensor: S[number]; + item: DraggableDragItem; + event: E['move']; + prevEvent: E['start'] | E['move']; + startEvent: E['start'] | E['move']; + }) => { + x: number; + y: number; + }; +} +interface DraggablePlugin { + name: string; + version: string; +} +type DraggablePluginMap = Record; +interface DraggableEventCallbacks { + preparestart(event: E['start'] | E['move']): void; + start(event: E['start'] | E['move']): void; + preparemove(event: E['move']): void; + move(event: E['move']): void; + end(event: E['end'] | E['cancel'] | E['destroy'] | null): void; + destroy(): void; +} +declare class Draggable { + readonly sensors: S; + readonly settings: DraggableSettings; + readonly plugins: P; + readonly drag: DraggableDrag | null; + readonly isDestroyed: boolean; + protected _sensorData: Map['_onMove']>[0]) => void; + onEnd: (e: Parameters['_onEnd']>[0]) => void; + }>; + protected _emitter: Emitter<{ + [K in keyof DraggableEventCallbacks]: DraggableEventCallbacks[K]; + }>; + protected _startId: symbol; + protected _moveId: symbol; + protected _updateId: symbol; + constructor(sensors: S, options?: Partial>); + protected _parseSettings(options?: Partial, defaults?: this['settings']): this['settings']; + protected _emit>(type: K, ...e: Parameters[K]>): void; + protected _onMove(e: E['start'] | E['move'], sensor: S[number]): void; + protected _onScroll(): void; + protected _onEnd(e: E['end'] | E['cancel'] | E['destroy'], sensor: S[number]): void; + protected _prepareStart(): void; + protected _applyStart(): void; + protected _prepareMove(): void; + protected _applyMove(): void; + protected _preparePositionUpdate(): void; + protected _applyPositionUpdate(): void; + on>(eventName: K, listener: DraggableEventCallbacks[K], listenerId?: EventListenerId): EventListenerId; + off>(eventName: K, listener: DraggableEventCallbacks[K] | EventListenerId): void; + resolveStartPredicate(sensor: S[number], e?: E['start'] | E['move']): void; + rejectStartPredicate(sensor: S[number]): void; + stop(): void; + updatePosition(instant?: boolean): void; + updateSettings(options?: Partial): void; + use(plugin: (draggable: this) => Draggable): Draggable; + destroy(): void; +} + +declare class Pool { + protected _data: T[]; + protected _createObject: () => T; + protected _onPut: ((object: T) => void) | undefined; + constructor(createObject: () => T, onPut?: (object: T) => void); + pick(): T; + put(object: T): void; + reset(): void; +} + +declare const AUTO_SCROLL_AXIS: { + readonly x: 1; + readonly y: 2; +}; +declare const AUTO_SCROLL_AXIS_DIRECTION: { + readonly forward: 4; + readonly reverse: 8; +}; +declare const AUTO_SCROLL_DIRECTION_X: { + readonly none: 0; + readonly left: 9; + readonly right: 5; +}; +declare const AUTO_SCROLL_DIRECTION_Y: { + readonly none: 0; + readonly up: 10; + readonly down: 6; +}; +declare const AUTO_SCROLL_DIRECTION: { + readonly none: 0; + readonly up: 10; + readonly down: 6; + readonly left: 9; + readonly right: 5; +}; +declare function getDirectionAsString(direction: number): "none" | "left" | "right" | "up" | "down"; +type AutoScrollAxis = (typeof AUTO_SCROLL_AXIS)[keyof typeof AUTO_SCROLL_AXIS]; +type AutoScrollDirectionX = (typeof AUTO_SCROLL_DIRECTION_X)[keyof typeof AUTO_SCROLL_DIRECTION_X]; +type AutoScrollDirectionY = (typeof AUTO_SCROLL_DIRECTION_Y)[keyof typeof AUTO_SCROLL_DIRECTION_Y]; +type AutoScrollDirection = (typeof AUTO_SCROLL_DIRECTION)[keyof typeof AUTO_SCROLL_DIRECTION]; +interface AutoScrollSpeedData { + direction: ReturnType; + threshold: number; + distance: number; + value: number; + maxValue: number; + duration: number; + speed: number; + deltaTime: number; + isEnding: boolean; +} +type AutoScrollTargetPadding = { + left?: number; + right?: number; + top?: number; + bottom?: number; +}; +interface AutoScrollItem { + readonly targets: AutoScrollItemTarget[]; + readonly clientRect: Rect; + readonly position: { + x: number; + y: number; + }; + readonly inertAreaSize: number; + readonly smoothStop: boolean; + readonly speed: number | AutoScrollItemSpeedCallback; + readonly onStart?: AutoScrollItemEventCallback | null; + readonly onStop?: AutoScrollItemEventCallback | null; + readonly onPrepareScrollEffect?: AutoScrollItemEffectCallback | null; + readonly onApplyScrollEffect?: AutoScrollItemEffectCallback | null; +} +interface AutoScrollSettings { + overlapCheckInterval: number; +} +interface AutoScrollOptions extends Partial { +} +interface AutoScrollEventCallbacks { + beforescroll(): void; + afterscroll(): void; +} +interface AutoScrollItemTarget { + element: Window | Element; + axis?: 'x' | 'y' | 'xy'; + priority?: number; + threshold?: number; + padding?: AutoScrollTargetPadding; + scrollPadding?: AutoScrollTargetPadding; +} +type AutoScrollItemEventCallback = (scrollElement: Window | Element, scrollDirection: ReturnType) => void; +type AutoScrollItemEffectCallback = () => void; +type AutoScrollItemSpeedCallback = (scrollElement: Window | Element, scrollData: AutoScrollSpeedData) => number; +declare class AutoScrollItemData { + positionX: number; + positionY: number; + directionX: AutoScrollDirectionX; + directionY: AutoScrollDirectionY; + overlapCheckRequestTime: number; + constructor(); +} +declare class AutoScrollAction { + element: Element | Window | null; + requestX: AutoScrollRequest | null; + requestY: AutoScrollRequest | null; + scrollLeft: number; + scrollTop: number; + constructor(); + reset(): void; + addRequest(request: AutoScrollRequest): void; + removeRequest(request: AutoScrollRequest): void; + computeScrollValues(): void; + scroll(): void; +} +declare class AutoScrollRequest { + item: AutoScrollItem | null; + element: Element | Window | null; + isActive: boolean; + isEnding: boolean; + direction: AutoScrollDirection; + value: number; + maxValue: number; + threshold: number; + distance: number; + deltaTime: number; + speed: number; + duration: number; + action: AutoScrollAction | null; + constructor(); + reset(): void; + hasReachedEnd(): boolean; + computeCurrentScrollValue(): number; + computeNextScrollValue(): number; + computeSpeed(): number; + tick(deltaTime: number): number; + onStart(): void; + onStop(): void; +} +declare function autoScrollSmoothSpeed(maxSpeed?: number, accelerationFactor?: number, decelerationFactor?: number): AutoScrollItemSpeedCallback; +declare class AutoScroll { + readonly items: AutoScrollItem[]; + readonly settings: AutoScrollSettings; + protected _isDestroyed: boolean; + protected _isTicking: boolean; + protected _tickTime: number; + protected _tickDeltaTime: number; + protected _itemData: Map; + protected _actions: AutoScrollAction[]; + protected _requests: { + [AUTO_SCROLL_AXIS.x]: Map; + [AUTO_SCROLL_AXIS.y]: Map; + }; + protected _requestPool: Pool; + protected _actionPool: Pool; + protected _emitter: Emitter<{ + beforescroll: () => void; + afterscroll: () => void; + }>; + constructor(options?: AutoScrollOptions); + protected _frameRead(time: number): void; + protected _frameWrite(): void; + protected _startTicking(): void; + protected _stopTicking(): void; + protected _getItemClientRect(item: AutoScrollItem, result?: RectExtended): RectExtended; + protected _requestItemScroll(item: AutoScrollItem, axis: AutoScrollAxis, element: Window | Element, direction: AutoScrollDirection, threshold: number, distance: number, maxValue: number): void; + protected _cancelItemScroll(item: AutoScrollItem, axis: AutoScrollAxis): void; + protected _checkItemOverlap(item: AutoScrollItem, checkX: boolean, checkY: boolean): void; + protected _updateScrollRequest(scrollRequest: AutoScrollRequest): boolean; + protected _updateItems(): void; + protected _updateRequests(): void; + protected _requestAction(request: AutoScrollRequest, axis: AutoScrollAxis): void; + protected _updateActions(): void; + protected _applyActions(): void; + on(eventName: T, listener: AutoScrollEventCallbacks[T]): EventListenerId; + off(eventName: T, listener: AutoScrollEventCallbacks[T] | EventListenerId): void; + addItem(item: AutoScrollItem): void; + removeItem(item: AutoScrollItem): void; + isDestroyed(): boolean; + isItemScrollingX(item: AutoScrollItem): boolean; + isItemScrollingY(item: AutoScrollItem): boolean; + isItemScrolling(item: AutoScrollItem): boolean; + updateSettings(options?: AutoScrollOptions): void; + destroy(): void; +} + +declare class DraggableAutoScrollProxy implements AutoScrollItem { + protected _draggableAutoScroll: DraggableAutoScroll; + protected _draggable: Draggable; + protected _position: AutoScrollItem['position']; + protected _clientRect: AutoScrollItem['clientRect']; + constructor(draggableAutoScroll: DraggableAutoScroll, draggable: Draggable); + private _getSettings; + get targets(): AutoScrollItemTarget[]; + get position(): { + x: number; + y: number; + }; + get clientRect(): Rect; + get inertAreaSize(): number; + get smoothStop(): boolean; + get speed(): number | AutoScrollItemSpeedCallback; + get onStart(): AutoScrollItemEventCallback | null; + get onStop(): AutoScrollItemEventCallback | null; + onPrepareScrollEffect(): void; + onApplyScrollEffect(): void; +} +interface DraggableAutoScrollSettings { + targets: AutoScrollItemTarget[] | ((draggable: Draggable) => AutoScrollItemTarget[]); + inertAreaSize: number; + speed: number | AutoScrollItemSpeedCallback; + smoothStop: boolean; + getPosition: ((draggable: Draggable) => { + x: number; + y: number; + }) | null; + getClientRect: ((draggable: Draggable) => { + left: number; + top: number; + width: number; + height: number; + }) | null; + onStart: AutoScrollItemEventCallback | null; + onStop: AutoScrollItemEventCallback | null; +} +type DraggableAutoScrollOptions = Partial>; +declare class DraggableAutoScroll { + readonly name: 'autoscroll'; + readonly version: string; + readonly settings: DraggableAutoScrollSettings; + protected _autoScrollProxy: DraggableAutoScrollProxy | null; + constructor(draggable: Draggable, options?: DraggableAutoScrollOptions); + protected _parseSettings(options?: Partial, defaults?: this['settings']): this['settings']; + updateSettings(options?: Partial): void; +} +declare function autoScrollPlugin(options?: DraggableAutoScrollOptions): (draggable: Draggable) => Draggable & { + plugins: { + autoscroll: DraggableAutoScroll; + }; +}; + +declare const autoScroll: AutoScroll; + +declare let tickerReadPhase: EventName; +declare let tickerWritePhase: EventName; +declare let ticker: Ticker; +declare function setTicker(newTicker: Ticker, readPhase: EventName, writePhase: EventName): void; + +declare function createPointerSensorStartPredicate = Draggable>(options?: { + timeout?: number; + fallback?: D['settings']['startPredicate']; +}): D["settings"]["startPredicate"]; + +export { AUTO_SCROLL_AXIS, AUTO_SCROLL_AXIS_DIRECTION, AUTO_SCROLL_DIRECTION, AutoScroll, type AutoScrollEventCallbacks, type AutoScrollItem, type AutoScrollItemEffectCallback, type AutoScrollItemEventCallback, type AutoScrollItemSpeedCallback, type AutoScrollItemTarget, type AutoScrollOptions, type AutoScrollSettings, BaseMotionSensor, type BaseMotionSensorDragData, type BaseMotionSensorEvents, type BaseMotionSensorTickEvent, BaseSensor, type BaseSensorDragData, Draggable, DraggableAutoScroll, type DraggableAutoScrollOptions, type DraggableAutoScrollSettings, type DraggableEventCallbacks, type DraggablePlugin, type DraggablePluginMap, type DraggableSettings, KeyboardMotionSensor, type KeyboardMotionSensorEvents, type KeyboardMotionSensorSettings, KeyboardSensor, type KeyboardSensorCancelEvent, type KeyboardSensorDestroyEvent, type KeyboardSensorEndEvent, type KeyboardSensorEvents, type KeyboardSensorMoveEvent, type KeyboardSensorPredicate, type KeyboardSensorSettings, type KeyboardSensorStartEvent, PointerSensor, type PointerSensorCancelEvent, type PointerSensorDestroyEvent, type PointerSensorDragData, type PointerSensorEndEvent, type PointerSensorEvents, type PointerSensorMoveEvent, type PointerSensorSettings, type PointerSensorStartEvent, type Sensor, type SensorCancelEvent, type SensorDestroyEvent, type SensorEndEvent, SensorEventType, type SensorEvents, type SensorMoveEvent, type SensorStartEvent, autoScroll, autoScrollPlugin, autoScrollSmoothSpeed, createPointerSensorStartPredicate, setTicker, ticker, tickerReadPhase, tickerWritePhase }; diff --git a/dist/dragdoll.d.ts b/dist/dragdoll.d.ts index 469f957..4551ef1 100644 --- a/dist/dragdoll.d.ts +++ b/dist/dragdoll.d.ts @@ -103,16 +103,19 @@ type ListenerOptions = { passive?: boolean; }; type PointerType = 'mouse' | 'pen' | 'touch'; -interface Rect { - left: number; - top: number; +type Dimensions = { width: number; height: number; +}; +interface Rect extends Dimensions { + left: number; + top: number; } interface RectExtended extends Rect { right: number; bottom: number; } +type CSSProperties = Partial>; declare const SOURCE_EVENTS: { readonly pointer: { @@ -181,7 +184,7 @@ interface PointerSensorEvents { } declare class PointerSensor implements Sensor { events: E; - readonly element: HTMLElement | Window; + readonly element: Element | Window; readonly drag: PointerSensorDragData | null; readonly isDestroyed: boolean; protected _startPredicate: (e: PointerSensorSourceEvent) => boolean; @@ -189,7 +192,7 @@ declare class PointerSensor protected _sourceEvents: keyof typeof SOURCE_EVENTS; protected _areWindowListenersBound: boolean; protected _emitter: Emitter; - constructor(element: HTMLElement | Window, options?: Partial); + constructor(element: Element | Window, options?: Partial); protected _getTrackedPointerEventData(e: PointerSensorSourceEvent): PointerEvent | MouseEvent | Touch | null; protected _onStart(e: PointerSensorSourceEvent): void; protected _onMove(e: PointerSensorSourceEvent): void; @@ -205,12 +208,18 @@ declare class PointerSensor destroy(): void; } -type KeyboardSensorPredicate = (e: KeyboardEvent, sensor: KeyboardSensor, moveDistance: number) => { +type KeyboardSensorPredicate = (e: KeyboardEvent, sensor: KeyboardSensor, moveDistance: { + x: number; + y: number; +}) => { x: number; y: number; } | null | undefined; interface KeyboardSensorSettings { - moveDistance: number; + moveDistance: number | { + x: number; + y: number; + }; startPredicate: KeyboardSensorPredicate; movePredicate: KeyboardSensorPredicate; cancelPredicate: KeyboardSensorPredicate; @@ -239,7 +248,10 @@ interface KeyboardSensorEvents { } declare class KeyboardSensor extends BaseSensor implements Sensor { events: E; - protected _moveDistance: number; + protected _moveDistance: { + x: number; + y: number; + }; protected _startPredicate: KeyboardSensorPredicate; protected _movePredicate: KeyboardSensorPredicate; protected _cancelPredicate: KeyboardSensorPredicate; @@ -290,17 +302,18 @@ declare class KeyboardMotionSensor { readonly sensor: S[number] | null; readonly isStarted: boolean; @@ -325,6 +338,12 @@ declare class DraggableDrag { readonly items: DraggableDragItem[]; constructor(); } + +declare enum DraggableStartPredicateState { + PENDING = 0, + RESOLVED = 1, + REJECTED = 2 +} interface DraggableSettings { container: HTMLElement | null; startPredicate: (data: { @@ -336,16 +355,23 @@ interface DraggableSettings { draggable: Draggable; sensor: S[number]; startEvent: E['start'] | E['move']; - }) => HTMLElement[] | null; + }) => (HTMLElement | SVGSVGElement)[] | null; releaseElements: (data: { draggable: Draggable; sensor: S[number]; - elements: HTMLElement[]; + elements: (HTMLElement | SVGSVGElement)[]; }) => void; + getFrozenProps: (data: { + draggable: Draggable; + sensor: S[number]; + item: DraggableDragItem; + style: CSSStyleDeclaration; + }) => CSSProperties | (keyof CSSProperties)[] | null; getStartPosition: (data: { draggable: Draggable; sensor: S[number]; item: DraggableDragItem; + style: CSSStyleDeclaration; }) => { x: number; y: number; @@ -376,11 +402,10 @@ interface DraggablePlugin { } type DraggablePluginMap = Record; interface DraggableEventCallbacks { - beforestart(event: E['start'] | E['move']): void; + preparestart(event: E['start'] | E['move']): void; start(event: E['start'] | E['move']): void; - beforemove(event: E['move']): void; + preparemove(event: E['move']): void; move(event: E['move']): void; - beforeend(event: E['end'] | E['cancel'] | E['destroy'] | null): void; end(event: E['end'] | E['cancel'] | E['destroy'] | null): void; destroy(): void; } @@ -507,16 +532,16 @@ interface AutoScrollEventCallbacks { afterscroll(): void; } interface AutoScrollItemTarget { - element: Window | HTMLElement; + element: Window | Element; axis?: 'x' | 'y' | 'xy'; priority?: number; threshold?: number; padding?: AutoScrollTargetPadding; scrollPadding?: AutoScrollTargetPadding; } -type AutoScrollItemEventCallback = (scrollElement: Window | HTMLElement, scrollDirection: ReturnType) => void; +type AutoScrollItemEventCallback = (scrollElement: Window | Element, scrollDirection: ReturnType) => void; type AutoScrollItemEffectCallback = () => void; -type AutoScrollItemSpeedCallback = (scrollElement: Window | HTMLElement, scrollData: AutoScrollSpeedData) => number; +type AutoScrollItemSpeedCallback = (scrollElement: Window | Element, scrollData: AutoScrollSpeedData) => number; declare class AutoScrollItemData { positionX: number; positionY: number; @@ -526,7 +551,7 @@ declare class AutoScrollItemData { constructor(); } declare class AutoScrollAction { - element: HTMLElement | Window | null; + element: Element | Window | null; requestX: AutoScrollRequest | null; requestY: AutoScrollRequest | null; scrollLeft: number; @@ -540,7 +565,7 @@ declare class AutoScrollAction { } declare class AutoScrollRequest { item: AutoScrollItem | null; - element: HTMLElement | Window | null; + element: Element | Window | null; isActive: boolean; isEnding: boolean; direction: AutoScrollDirection; @@ -588,7 +613,7 @@ declare class AutoScroll { protected _startTicking(): void; protected _stopTicking(): void; protected _getItemClientRect(item: AutoScrollItem, result?: RectExtended): RectExtended; - protected _requestItemScroll(item: AutoScrollItem, axis: AutoScrollAxis, element: Window | HTMLElement, direction: AutoScrollDirection, threshold: number, distance: number, maxValue: number): void; + protected _requestItemScroll(item: AutoScrollItem, axis: AutoScrollAxis, element: Window | Element, direction: AutoScrollDirection, threshold: number, distance: number, maxValue: number): void; protected _cancelItemScroll(item: AutoScrollItem, axis: AutoScrollAxis): void; protected _checkItemOverlap(item: AutoScrollItem, checkX: boolean, checkY: boolean): void; protected _updateScrollRequest(scrollRequest: AutoScrollRequest): boolean; @@ -676,4 +701,4 @@ declare function createPointerSensorStartPredicate{let t=!1;try{const e=Object.defineProperty({},"passive",{get:function(){t=!0}});window.addEventListener("testPassive",null,e),window.removeEventListener("testPassive",null,e)}catch(t){}return t})(),HAS_TOUCH_EVENTS=IS_BROWSER&&"ontouchstart"in window,HAS_POINTER_EVENTS=IS_BROWSER&&!!window.PointerEvent,IS_SAFARI=!!(IS_BROWSER&&navigator.vendor&&navigator.vendor.indexOf("Apple")>-1&&navigator.userAgent&&-1==navigator.userAgent.indexOf("CriOS")&&-1==navigator.userAgent.indexOf("FxiOS"));function parseListenerOptions(t={}){const{capture:e=!0,passive:i=!0}=t;return HAS_PASSIVE_EVENTS?{capture:e,passive:i}:{capture:e}}function parseSourceEvents(t){return"auto"===t||void 0===t?HAS_POINTER_EVENTS?"pointer":HAS_TOUCH_EVENTS?"touch":"mouse":t}const POINTER_EVENTS={start:"pointerdown",move:"pointermove",cancel:"pointercancel",end:"pointerup"},TOUCH_EVENTS={start:"touchstart",move:"touchmove",cancel:"touchcancel",end:"touchend"},MOUSE_EVENTS={start:"mousedown",move:"mousemove",cancel:"",end:"mouseup"},SOURCE_EVENTS={pointer:POINTER_EVENTS,touch:TOUCH_EVENTS,mouse:MOUSE_EVENTS};class PointerSensor{constructor(t,e={}){const{listenerOptions:i={},sourceEvents:s="auto",startPredicate:n=(t=>!("button"in t&&t.button>0))}=e;this.element=t,this.drag=null,this.isDestroyed=!1,this._areWindowListenersBound=!1,this._startPredicate=n,this._listenerOptions=parseListenerOptions(i),this._sourceEvents=parseSourceEvents(s),this._emitter=new Emitter,this._onStart=this._onStart.bind(this),this._onMove=this._onMove.bind(this),this._onCancel=this._onCancel.bind(this),this._onEnd=this._onEnd.bind(this),t.addEventListener(SOURCE_EVENTS[this._sourceEvents].start,this._onStart,this._listenerOptions)}_getTrackedPointerEventData(t){return this.drag?getPointerEventData(t,this.drag.pointerId):null}_onStart(t){if(this.isDestroyed||this.drag)return;if(!this._startPredicate(t))return;const e=getPointerId(t);if(null===e)return;const i=getPointerEventData(t,e);if(null===i)return;const s={pointerId:e,pointerType:getPointerType(t),x:i.clientX,y:i.clientY};this.drag=s;const n=Object.assign(Object.assign({},s),{type:SensorEventType.start,srcEvent:t,target:i.target});this._emitter.emit(n.type,n),this.drag&&this._bindWindowListeners()}_onMove(t){if(!this.drag)return;const e=this._getTrackedPointerEventData(t);if(!e)return;this.drag.x=e.clientX,this.drag.y=e.clientY;const i=Object.assign({type:SensorEventType.move,srcEvent:t,target:e.target},this.drag);this._emitter.emit(i.type,i)}_onCancel(t){if(!this.drag)return;const e=this._getTrackedPointerEventData(t);if(!e)return;this.drag.x=e.clientX,this.drag.y=e.clientY;const i=Object.assign({type:SensorEventType.cancel,srcEvent:t,target:e.target},this.drag);this._emitter.emit(i.type,i),this._resetDrag()}_onEnd(t){if(!this.drag)return;const e=this._getTrackedPointerEventData(t);if(!e)return;this.drag.x=e.clientX,this.drag.y=e.clientY;const i=Object.assign({type:SensorEventType.end,srcEvent:t,target:e.target},this.drag);this._emitter.emit(i.type,i),this._resetDrag()}_bindWindowListeners(){if(this._areWindowListenersBound)return;const{move:t,end:e,cancel:i}=SOURCE_EVENTS[this._sourceEvents];window.addEventListener(t,this._onMove,this._listenerOptions),window.addEventListener(e,this._onEnd,this._listenerOptions),i&&window.addEventListener(i,this._onCancel,this._listenerOptions),this._areWindowListenersBound=!0}_unbindWindowListeners(){if(this._areWindowListenersBound){const{move:t,end:e,cancel:i}=SOURCE_EVENTS[this._sourceEvents];window.removeEventListener(t,this._onMove,this._listenerOptions),window.removeEventListener(e,this._onEnd,this._listenerOptions),i&&window.removeEventListener(i,this._onCancel,this._listenerOptions),this._areWindowListenersBound=!1}}_resetDrag(){this.drag=null,this._unbindWindowListeners()}cancel(){if(!this.drag)return;const t=Object.assign({type:SensorEventType.cancel,srcEvent:null,target:null},this.drag);this._emitter.emit(t.type,t),this._resetDrag()}updateSettings(t){if(this.isDestroyed)return;const{listenerOptions:e,sourceEvents:i,startPredicate:s}=t,n=parseSourceEvents(i),o=parseListenerOptions(e);s&&this._startPredicate!==s&&(this._startPredicate=s),(e&&(this._listenerOptions.capture!==o.capture||this._listenerOptions.passive===o.passive)||i&&this._sourceEvents!==n)&&(this.element.removeEventListener(SOURCE_EVENTS[this._sourceEvents].start,this._onStart,this._listenerOptions),this._unbindWindowListeners(),this.cancel(),i&&(this._sourceEvents=n),e&&o&&(this._listenerOptions=o),this.element.addEventListener(SOURCE_EVENTS[this._sourceEvents].start,this._onStart,this._listenerOptions))}on(t,e,i){return this._emitter.on(t,e,i)}off(t,e){this._emitter.off(t,e)}destroy(){this.isDestroyed||(this.isDestroyed=!0,this.cancel(),this._emitter.emit(SensorEventType.destroy,{type:SensorEventType.destroy}),this._emitter.off(),this.element.removeEventListener(SOURCE_EVENTS[this._sourceEvents].start,this._onStart,this._listenerOptions))}}class KeyboardSensor extends BaseSensor{constructor(t={}){super();const{moveDistance:e=25,startPredicate:i=(t=>{if(("Enter"===t.key||"Space"===t.key||" "===t.key)&&document.activeElement&&document.activeElement!==document.body){const{left:t,top:e}=document.activeElement.getBoundingClientRect();return{x:t,y:e}}return null}),movePredicate:s=((t,e,i)=>{if(!e.drag)return null;switch(t.key){case"ArrowLeft":return{x:e.drag.x-i,y:e.drag.y};case"ArrowRight":return{x:e.drag.x+i,y:e.drag.y};case"ArrowUp":return{x:e.drag.x,y:e.drag.y-i};case"ArrowDown":return{x:e.drag.x,y:e.drag.y+i};default:return null}}),cancelPredicate:n=((t,e)=>e.drag&&"Escape"===t.key?{x:e.drag.x,y:e.drag.y}:null),endPredicate:o=((t,e)=>!e.drag||"Enter"!==t.key&&"Space"!==t.key&&" "!==t.key?null:{x:e.drag.x,y:e.drag.y})}=t;this._moveDistance=e,this._startPredicate=i,this._movePredicate=s,this._cancelPredicate=n,this._endPredicate=o,this.cancel=this.cancel.bind(this),this._onKeyDown=this._onKeyDown.bind(this),document.addEventListener("keydown",this._onKeyDown),window.addEventListener("blur",this.cancel),window.addEventListener("visibilitychange",this.cancel)}_onKeyDown(t){if(!this.drag){const e=this._startPredicate(t,this,this._moveDistance);return void(e&&(t.preventDefault(),this._start({type:"start",x:e.x,y:e.y,srcEvent:t})))}const e=this._cancelPredicate(t,this,this._moveDistance);if(e)return t.preventDefault(),void this._cancel({type:"cancel",x:e.x,y:e.y,srcEvent:t});const i=this._endPredicate(t,this,this._moveDistance);if(i)return t.preventDefault(),void this._end({type:"end",x:i.x,y:i.y,srcEvent:t});const s=this._movePredicate(t,this,this._moveDistance);return s?(t.preventDefault(),void this._move({type:"move",x:s.x,y:s.y,srcEvent:t})):void 0}updateSettings(t={}){void 0!==t.moveDistance&&(this._moveDistance=t.moveDistance),void 0!==t.startPredicate&&(this._startPredicate=t.startPredicate),void 0!==t.movePredicate&&(this._movePredicate=t.movePredicate),void 0!==t.cancelPredicate&&(this._cancelPredicate=t.cancelPredicate),void 0!==t.endPredicate&&(this._endPredicate=t.endPredicate)}destroy(){this.isDestroyed||(super.destroy(),document.removeEventListener("keydown",this._onKeyDown),window.removeEventListener("blur",this.cancel),window.removeEventListener("visibilitychange",this.cancel))}}const KEY_TYPES=["start","cancel","end","moveLeft","moveRight","moveUp","moveDown"];function getEarliestTimestamp(t,e){if(!t.size||!e.size)return 1/0;let i=1/0;for(const s of t){const t=e.get(s);void 0!==t&&t{if(document.activeElement){const{left:t,top:e}=document.activeElement.getBoundingClientRect();return{x:t,y:e}}return null}),computeSpeed:i=(()=>500),startKeys:s=[" ","Space","Enter"],moveLeftKeys:n=["ArrowLeft"],moveRightKeys:o=["ArrowRight"],moveUpKeys:r=["ArrowUp"],moveDownKeys:a=["ArrowDown"],cancelKeys:c=["Escape"],endKeys:h=[" ","Space","Enter"]}=t;this._computeSpeed=i,this._startPredicate=e,this._startKeys=new Set(s),this._cancelKeys=new Set(c),this._endKeys=new Set(h),this._moveLeftKeys=new Set(n),this._moveRightKeys=new Set(o),this._moveUpKeys=new Set(r),this._moveDownKeys=new Set(a),this._moveKeys=new Set([...n,...o,...r,...a]),this._moveKeyTimestamps=new Map,this._onKeyDown=this._onKeyDown.bind(this),this._onKeyUp=this._onKeyUp.bind(this),this._onTick=this._onTick.bind(this),this.on("tick",this._onTick),document.addEventListener("keydown",this._onKeyDown),document.addEventListener("keyup",this._onKeyUp),window.addEventListener("blur",this.cancel),window.addEventListener("visibilitychange",this.cancel)}_end(t){this.drag&&(this._moveKeyTimestamps.clear(),super._end(t))}_cancel(t){this.drag&&(this._moveKeyTimestamps.clear(),super._cancel(t))}_updateDirection(){const t=getEarliestTimestamp(this._moveLeftKeys,this._moveKeyTimestamps),e=getEarliestTimestamp(this._moveRightKeys,this._moveKeyTimestamps),i=getEarliestTimestamp(this._moveUpKeys,this._moveKeyTimestamps),s=getEarliestTimestamp(this._moveDownKeys,this._moveKeyTimestamps);let n=t===e?0:t{const n=`${i}Keys`,o=t[n];void 0!==o&&(this[`_${n}`]=new Set(o),s>=3&&(e=!0))})),e){const t=[...this._moveLeftKeys,...this._moveRightKeys,...this._moveUpKeys,...this._moveDownKeys];[...this._moveKeys].every(((e,i)=>t[i]===e))||(this._moveKeys=new Set(t),this._moveKeyTimestamps.clear(),this._updateDirection())}}destroy(){this.isDestroyed||(super.destroy(),this.off("tick",this._onTick),document.removeEventListener("keydown",this._onKeyDown),document.removeEventListener("keyup",this._onKeyUp),window.removeEventListener("blur",this.cancel),window.removeEventListener("visibilitychange",this.cancel))}}const STYLES_CACHE=new WeakMap;function getStyle(t,e){if(!e)return"";let i=STYLES_CACHE.get(t);return i||(i=window.getComputedStyle(t,null),STYLES_CACHE.set(t,i)),i.getPropertyValue(e)}function isContainingBlock(t){if("static"!==getStyle(t,"position"))return!0;const e=getStyle(t,"display");if("inline"===e||"none"===e)return!1;const i=getStyle(t,"transform");if(i&&"none"!==i)return!0;const s=getStyle(t,"perspective");if(s&&"none"!==s)return!0;const n=getStyle(t,"content-visibility");if(n&&("auto"===n||"hidden"===n))return!0;const o=getStyle(t,"contain");if(o&&("strict"===o||"content"===o||o.indexOf("paint")>-1||o.indexOf("layout")>-1))return!0;if(!IS_SAFARI){const e=getStyle(t,"filter");if(e&&"none"!==e)return!0;const i=getStyle(t,"will-change");if(i&&(i.indexOf("transform")>-1||i.indexOf("perspective")>-1))return!0}return!1}function getContainingBlock(t){let e=t||document;for(;e&&e!==document&&!isContainingBlock(t);)e=e.parentElement||document;return e}function getStyleAsFloat(t,e){return parseFloat(getStyle(t,e))||0}function getOffset(t,e={left:0,top:0}){if(e.left=0,e.top=0,t===document)return e;if(e.left=window.pageXOffset||0,e.top=window.pageYOffset||0,"self"in t&&t.self===window.self)return e;const{left:i,top:s}=t.getBoundingClientRect();return e.left+=i,e.top+=s,e.left+=getStyleAsFloat(t,"border-left-width"),e.top+=getStyleAsFloat(t,"border-top-width"),e}const offsetA={left:0,top:0},offsetB={left:0,top:0};function getOffsetDiff(t,e,i={left:0,top:0}){return i.left=0,i.top=0,t===e||(getOffset(t,offsetA),getOffset(e,offsetB),i.left=offsetB.left-offsetA.left,i.top=offsetB.top-offsetA.top),i}const IDENTITY_MATRIX="matrix(1, 0, 0, 1, 0, 0)",IDENTITY_MATRIX_3D="matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)",SCROLL_LISTENER_OPTIONS=!HAS_PASSIVE_EVENTS||{capture:!0,passive:!0},OFFSET_DIFF={left:0,top:0},POSITION_CHANGE={x:0,y:0};var DraggableStartPredicateState;!function(t){t[t.PENDING=0]="PENDING",t[t.RESOLVED=1]="RESOLVED",t[t.REJECTED=2]="REJECTED"}(DraggableStartPredicateState||(DraggableStartPredicateState={}));class DraggableDragItem{constructor(t,e,i,s,n){this.element=t,this.rootParent=e,this.rootContainingBlock=i,this.dragParent=s,this.dragContainingBlock=n,this.x=0,this.y=0,this.pX=0,this.pY=0,this._updateDiffX=0,this._updateDiffY=0,this._moveDiffX=0,this._moveDiffY=0,this._containerDiffX=0,this._containerDiffY=0,this._transform=""}}class DraggableDrag{constructor(){this.sensor=null,this.isEnded=!1,this.isStarted=!1,this.startEvent=null,this.nextMoveEvent=null,this.prevMoveEvent=null,this.endEvent=null,this.items=[]}}function getDefaultSettings$1(){return{container:null,startPredicate:()=>!0,getElements:()=>null,releaseElements:()=>{},getStartPosition:({item:t})=>{const e=getStyle(t.element,"transform");return t._transform=e&&"none"!==e&&e!==IDENTITY_MATRIX&&e!==IDENTITY_MATRIX_3D?e:"",{x:0,y:0}},setPosition:({item:t,x:e,y:i})=>{t.element.style.transform=`translate(${e}px, ${i}px) ${t._transform}`},getPositionChange:({event:t,prevEvent:e})=>(POSITION_CHANGE.x=t.x-e.x,POSITION_CHANGE.y=t.y-e.y,POSITION_CHANGE)}}class Draggable{constructor(t,e={}){this.sensors=t,this.settings=this._parseSettings(e),this.plugins={},this.drag=null,this.isDestroyed=!1,this._sensorData=new Map,this._emitter=new Emitter,this._startId=Symbol(),this._moveId=Symbol(),this._updateId=Symbol(),this._onMove=this._onMove.bind(this),this._onScroll=this._onScroll.bind(this),this._onEnd=this._onEnd.bind(this),this._prepareStart=this._prepareStart.bind(this),this._applyStart=this._applyStart.bind(this),this._prepareMove=this._prepareMove.bind(this),this._applyMove=this._applyMove.bind(this),this._preparePositionUpdate=this._preparePositionUpdate.bind(this),this._applyPositionUpdate=this._applyPositionUpdate.bind(this),this.sensors.forEach((t=>{this._sensorData.set(t,{predicateState:DraggableStartPredicateState.PENDING,predicateEvent:null,onMove:e=>this._onMove(e,t),onEnd:e=>this._onEnd(e,t)});const{onMove:e,onEnd:i}=this._sensorData.get(t);t.on("start",e),t.on("move",e),t.on("cancel",i),t.on("end",i),t.on("destroy",i)}))}_parseSettings(t,e=getDefaultSettings$1()){const{container:i=e.container,startPredicate:s=e.startPredicate,getElements:n=e.getElements,releaseElements:o=e.releaseElements,getStartPosition:r=e.getStartPosition,setPosition:a=e.setPosition,getPositionChange:c=e.getPositionChange}=t||{};return{container:i,startPredicate:s,getElements:n,releaseElements:o,getStartPosition:r,setPosition:a,getPositionChange:c}}_emit(t,...e){this._emitter.emit(t,...e)}_onMove(t,e){const i=this._sensorData.get(e);if(i)switch(i.predicateState){case DraggableStartPredicateState.PENDING:{i.predicateEvent=t;const s=this.settings.startPredicate({draggable:this,sensor:e,event:t});!0===s?this.resolveStartPredicate(e):!1===s&&this.rejectStartPredicate(e);break}case DraggableStartPredicateState.RESOLVED:this.drag&&(this.drag.nextMoveEvent=t,ticker.once(tickerReadPhase,this._prepareMove,this._moveId),ticker.once(tickerWritePhase,this._applyMove,this._moveId))}}_onScroll(){this.updatePosition()}_onEnd(t,e){const i=this._sensorData.get(e);i&&(this.drag?i.predicateState===DraggableStartPredicateState.RESOLVED&&(this.drag.endEvent=t,this._sensorData.forEach((t=>{t.predicateState=DraggableStartPredicateState.PENDING,t.predicateEvent=null})),this.stop()):(i.predicateState=DraggableStartPredicateState.PENDING,i.predicateEvent=null))}_prepareStart(){const{drag:t}=this;if(!t||!t.startEvent)return;const e=this.settings.getElements({draggable:this,sensor:t.sensor,startEvent:t.startEvent})||[];t.items=e.map((e=>{if(!e.isConnected)throw new Error("Element is not connected");const i=e.parentNode,s=getContainingBlock(i),n=this.settings.container||i,o=n===i?s:getContainingBlock(n),r=new DraggableDragItem(e,i,s,n,o),a=e.getBoundingClientRect();if(r.x=a.left,r.y=a.top,s!==o){const{left:t,top:e}=getOffsetDiff(o,s,OFFSET_DIFF);r._containerDiffX=t,r._containerDiffY=e}const{x:c,y:h}=this.settings.getStartPosition({draggable:this,sensor:t.sensor,item:r});return r.pX=c,r.pY=h,r}))}_applyStart(){const t=this.drag;if(!t||!t.startEvent)return;if(this._emit("beforestart",t.startEvent),this.drag!==t)return;const{container:e}=this.settings;if(e)for(const i of t.items)i.element&&(i.element.parentNode!==e&&(e.appendChild(i.element),i.pX+=i._containerDiffX,i.pY+=i._containerDiffY),this.settings.setPosition({phase:"start",draggable:this,sensor:t.sensor,item:i,x:i.pX,y:i.pY}));window.addEventListener("scroll",this._onScroll,SCROLL_LISTENER_OPTIONS),t.isStarted=!0,this._emit("start",t.startEvent)}_prepareMove(){const{drag:t}=this;if(!t||!t.startEvent)return;const e=t.nextMoveEvent,i=t.prevMoveEvent||t.startEvent;if(e&&e!==i){for(const s of t.items){if(!s.element)continue;const{x:n,y:o}=this.settings.getPositionChange({draggable:this,sensor:t.sensor,item:s,startEvent:t.startEvent,prevEvent:i,event:e});n&&(s.pX=s.pX-s._moveDiffX+n,s.x=s.x-s._moveDiffX+n,s._moveDiffX=n),o&&(s.pY=s.pY-s._moveDiffY+o,s.y=s.y-s._moveDiffY+o,s._moveDiffY=o)}t.prevMoveEvent=e}}_applyMove(){const{drag:t}=this;if(t&&t.nextMoveEvent){for(const e of t.items)e._moveDiffX=0,e._moveDiffY=0;if(this._emit("beforemove",t.nextMoveEvent),this.drag===t){for(const e of t.items)e.element&&this.settings.setPosition({phase:"move",draggable:this,sensor:t.sensor,item:e,x:e.pX,y:e.pY});this._emit("move",t.nextMoveEvent)}}}_preparePositionUpdate(){const{drag:t}=this;if(t)for(const e of t.items){if(!e.element)continue;if(e.rootContainingBlock!==e.dragContainingBlock){const{left:t,top:i}=getOffsetDiff(e.dragContainingBlock,e.rootContainingBlock,OFFSET_DIFF);e._containerDiffX=t,e._containerDiffY=i}const{left:t,top:i}=e.element.getBoundingClientRect(),s=e.x-e._moveDiffX-t;e.pX=e.pX-e._updateDiffX+s,e._updateDiffX=s;const n=e.y-e._moveDiffY-i;e.pY=e.pY-e._updateDiffY+n,e._updateDiffY=n}}_applyPositionUpdate(){const{drag:t}=this;if(t)for(const e of t.items)e.element&&(e._updateDiffX=0,e._updateDiffY=0,this.settings.setPosition({phase:"move",draggable:this,sensor:t.sensor,item:e,x:e.pX,y:e.pY}))}on(t,e,i){return this._emitter.on(t,e,i)}off(t,e){this._emitter.off(t,e)}resolveStartPredicate(t,e){const i=this._sensorData.get(t);if(!i)return;const s=e||i.predicateEvent;i.predicateState===DraggableStartPredicateState.PENDING&&s&&(i.predicateState=DraggableStartPredicateState.RESOLVED,i.predicateEvent=null,this.drag=new DraggableDrag,this.drag.sensor=t,this.drag.startEvent=s,this._sensorData.forEach(((e,i)=>{i!==t&&(e.predicateState=DraggableStartPredicateState.REJECTED,e.predicateEvent=null)})),ticker.once(tickerReadPhase,this._prepareStart,this._startId),ticker.once(tickerWritePhase,this._applyStart,this._startId))}rejectStartPredicate(t){const e=this._sensorData.get(t);(null==e?void 0:e.predicateState)===DraggableStartPredicateState.PENDING&&(e.predicateState=DraggableStartPredicateState.REJECTED,e.predicateEvent=null)}stop(){const{drag:t}=this;if(t&&!t.isEnded){if(t.isEnded=!0,this._emit("beforeend",t.endEvent),ticker.off(tickerReadPhase,this._startId),ticker.off(tickerWritePhase,this._startId),ticker.off(tickerReadPhase,this._moveId),ticker.off(tickerWritePhase,this._moveId),ticker.off(tickerReadPhase,this._updateId),ticker.off(tickerWritePhase,this._updateId),t.isStarted){window.removeEventListener("scroll",this._onScroll,SCROLL_LISTENER_OPTIONS);const e=[];for(const i of t.items)i.element&&(e.push(i.element),i.rootParent&&i.element.parentNode!==i.rootParent&&(i.pX-=i._containerDiffX,i.pY-=i._containerDiffY,i._containerDiffX=0,i._containerDiffY=0,i.rootParent.appendChild(i.element)),this.settings.setPosition({phase:"end",draggable:this,sensor:t.sensor,item:i,x:i.pX,y:i.pY}));e.length&&this.settings.releaseElements({draggable:this,sensor:t.sensor,elements:e})}this._emit("end",t.endEvent),this.drag=null}}updatePosition(t=!1){this.drag&&(t?(this._preparePositionUpdate(),this._applyPositionUpdate()):(ticker.once(tickerReadPhase,this._preparePositionUpdate,this._updateId),ticker.once(tickerWritePhase,this._applyPositionUpdate,this._updateId)))}updateSettings(t={}){this.settings=this._parseSettings(t,this.settings)}use(t){return t(this)}destroy(){this.isDestroyed||(this.isDestroyed=!0,this.stop(),this._sensorData.forEach((({onMove:t,onEnd:e},i)=>{i.off("start",t),i.off("move",t),i.off("cancel",e),i.off("end",e),i.off("destroy",e)})),this._sensorData.clear(),this._emit("destroy"),this._emitter.off())}}class Pool{constructor(t,e){this._data=[],this._createObject=t,this._onPut=e}pick(){return this._data.length?this._data.pop():this._createObject()}put(t){-1===this._data.indexOf(t)&&(this._onPut&&this._onPut(t),this._data.push(t))}reset(){this._data.length=0}}function isRectsOverlapping(t,e){return!(t.right<=e.left||e.right<=t.left||t.bottom<=e.top||e.bottom<=t.top)}function getIntersectionArea(t,e){if(!isRectsOverlapping(t,e))return 0;return(Math.min(t.right,e.right)-Math.max(t.left,e.left))*(Math.min(t.bottom,e.bottom)-Math.max(t.top,e.top))}function getIntersectionScore(t,e){const i=getIntersectionArea(t,e);if(!i)return 0;return i/(Math.min(t.width,e.width)*Math.min(t.height,e.height))*100}function isWindow(t){return t===window}function getContentRect(t,e={width:0,height:0,left:0,right:0,top:0,bottom:0}){if(isWindow(t))e.width=document.documentElement.clientWidth,e.height=document.documentElement.clientHeight,e.left=0,e.right=e.width,e.top=0,e.bottom=e.height;else{const{left:i,top:s}=t.getBoundingClientRect(),n=t.clientLeft||getStyleAsFloat(t,"border-left-width"),o=t.clientTop||getStyleAsFloat(t,"border-top-width");e.width=t.clientWidth,e.height=t.clientHeight,e.left=i+n,e.right=e.left+e.width,e.top=s+o,e.bottom=e.top+e.height}return e}function distanceBetweenPoints(t,e,i,s){return Math.sqrt(Math.pow(i-t,2)+Math.pow(s-e,2))}function getDistanceBetweenRects(t,e){return isRectsOverlapping(t,e)?0:t.righte.bottom?distanceBetweenPoints(t.right,t.top,e.left,e.bottom):e.left-t.right:t.left>e.right?t.bottome.bottom?distanceBetweenPoints(t.left,t.top,e.right,e.bottom):t.left-e.right:t.bottom=Math.floor(e)}function computeThreshold(t,e){return Math.min(e/2,t)}function computeEdgeOffset(t,e,i,s){return Math.max(0,i+2*t+s*e-s)/2}class AutoScrollItemData{constructor(){this.positionX=0,this.positionY=0,this.directionX=AUTO_SCROLL_DIRECTION.none,this.directionY=AUTO_SCROLL_DIRECTION.none,this.overlapCheckRequestTime=0}}class AutoScrollAction{constructor(){this.element=null,this.requestX=null,this.requestY=null,this.scrollLeft=0,this.scrollTop=0}reset(){this.requestX&&(this.requestX.action=null),this.requestY&&(this.requestY.action=null),this.element=null,this.requestX=null,this.requestY=null,this.scrollLeft=0,this.scrollTop=0}addRequest(t){AUTO_SCROLL_AXIS.x&t.direction?(this.requestX&&this.removeRequest(this.requestX),this.requestX=t):(this.requestY&&this.removeRequest(this.requestY),this.requestY=t),t.action=this}removeRequest(t){this.requestX===t?(this.requestX=null,t.action=null):this.requestY===t&&(this.requestY=null,t.action=null)}computeScrollValues(){this.element&&(this.scrollLeft=this.requestX?this.requestX.value:getScrollLeft(this.element),this.scrollTop=this.requestY?this.requestY.value:getScrollTop(this.element))}scroll(){this.element&&(this.element.scrollTo?this.element.scrollTo(this.scrollLeft,this.scrollTop):(this.element.scrollLeft=this.scrollLeft,this.element.scrollTop=this.scrollTop))}}class AutoScrollRequest{constructor(){this.item=null,this.element=null,this.isActive=!1,this.isEnding=!1,this.direction=0,this.value=NaN,this.maxValue=0,this.threshold=0,this.distance=0,this.deltaTime=0,this.speed=0,this.duration=0,this.action=null}reset(){this.isActive&&this.onStop(),this.item=null,this.element=null,this.isActive=!1,this.isEnding=!1,this.direction=0,this.value=NaN,this.maxValue=0,this.threshold=0,this.distance=0,this.deltaTime=0,this.speed=0,this.duration=0,this.action=null}hasReachedEnd(){return AUTO_SCROLL_AXIS_DIRECTION.forward&this.direction?isScrolledToMax(this.value,this.maxValue):this.value<=0}computeCurrentScrollValue(){return this.element?this.value!=this.value?AUTO_SCROLL_AXIS.x&this.direction?getScrollLeft(this.element):getScrollTop(this.element):Math.max(0,Math.min(this.value,this.maxValue)):0}computeNextScrollValue(){const t=this.speed*(this.deltaTime/1e3),e=AUTO_SCROLL_AXIS_DIRECTION.forward&this.direction?this.value+t:this.value-t;return Math.max(0,Math.min(e,this.maxValue))}computeSpeed(){if(!this.item||!this.element)return 0;const{speed:t}=this.item;return"function"==typeof t?(SPEED_DATA.direction=getDirectionAsString(this.direction),SPEED_DATA.threshold=this.threshold,SPEED_DATA.distance=this.distance,SPEED_DATA.value=this.value,SPEED_DATA.maxValue=this.maxValue,SPEED_DATA.duration=this.duration,SPEED_DATA.speed=this.speed,SPEED_DATA.deltaTime=this.deltaTime,SPEED_DATA.isEnding=this.isEnding,t(this.element,SPEED_DATA)):t}tick(t){return this.isActive||(this.isActive=!0,this.onStart()),this.deltaTime=t,this.value=this.computeCurrentScrollValue(),this.speed=this.computeSpeed(),this.value=this.computeNextScrollValue(),this.duration+=t,this.value}onStart(){if(!this.item||!this.element)return;const{onStart:t}=this.item;"function"==typeof t&&t(this.element,getDirectionAsString(this.direction))}onStop(){if(!this.item||!this.element)return;const{onStop:t}=this.item;"function"==typeof t&&t(this.element,getDirectionAsString(this.direction))}}function autoScrollSmoothSpeed(t=500,e=.5,i=.25){const s=t*(e>0?1/e:1/0),n=t*(i>0?1/i:1/0);return function(e,i){let o=0;if(!i.isEnding)if(i.threshold>0){const e=i.threshold-Math.max(0,i.distance);o=t/i.threshold*e}else o=t;const r=i.speed;if(r===o)return o;let a=o;return rnew AutoScrollRequest),(t=>t.reset())),this._actionPool=new Pool((()=>new AutoScrollAction),(t=>t.reset())),this._emitter=new Emitter,this._frameRead=this._frameRead.bind(this),this._frameWrite=this._frameWrite.bind(this)}_frameRead(t){this._isDestroyed||(t&&this._tickTime?(this._tickDeltaTime=t-this._tickTime,this._tickTime=t,this._updateItems(),this._updateRequests(),this._updateActions()):(this._tickTime=t,this._tickDeltaTime=0))}_frameWrite(){this._isDestroyed||this._applyActions()}_startTicking(){this._isTicking||(this._isTicking=!0,ticker.on(tickerReadPhase,this._frameRead),ticker.on(tickerWritePhase,this._frameWrite))}_stopTicking(){this._isTicking&&(this._isTicking=!1,this._tickTime=0,this._tickDeltaTime=0,ticker.off(tickerReadPhase,this._frameRead),ticker.off(tickerWritePhase,this._frameWrite))}_getItemClientRect(t,e={width:0,height:0,left:0,right:0,top:0,bottom:0}){const{clientRect:i}=t;return e.left=i.left,e.top=i.top,e.width=i.width,e.height=i.height,e.right=i.left+i.width,e.bottom=i.top+i.height,e}_requestItemScroll(t,e,i,s,n,o,r){const a=this._requests[e];let c=a.get(t);c?c.element===i&&c.direction===s||c.reset():(c=this._requestPool.pick(),a.set(t,c)),c.item=t,c.element=i,c.direction=s,c.threshold=n,c.distance=o,c.maxValue=r}_cancelItemScroll(t,e){const i=this._requests[e],s=i.get(t);s&&(s.action&&s.action.removeRequest(s),this._requestPool.put(s),i.delete(t))}_checkItemOverlap(t,e,i){const{inertAreaSize:s,targets:n}=t;if(!n.length)return e&&this._cancelItemScroll(t,AUTO_SCROLL_AXIS.x),void(i&&this._cancelItemScroll(t,AUTO_SCROLL_AXIS.y));const o=this._itemData.get(t),r=o.directionX,a=o.directionY;if(!r&&!a)return e&&this._cancelItemScroll(t,AUTO_SCROLL_AXIS.x),void(i&&this._cancelItemScroll(t,AUTO_SCROLL_AXIS.y));const c=this._getItemClientRect(t,R1);let h=null,l=-1/0,d=0,_=-1/0,u=AUTO_SCROLL_DIRECTION.none,g=0,p=0,m=null,S=-1/0,f=0,E=-1/0,v=AUTO_SCROLL_DIRECTION.none,T=0,O=0,y=0;for(;y=l&&A>0&&(D>l||w>_)){let t=0,e=AUTO_SCROLL_DIRECTION.none;const i=computeThreshold(o,P.width),n=computeEdgeOffset(i,s,c.width,P.width);r===AUTO_SCROLL_DIRECTION.right?(t=P.right+n-c.right,t<=i&&!isScrolledToMax(getScrollLeft(I),A)&&(e=AUTO_SCROLL_DIRECTION.right)):r===AUTO_SCROLL_DIRECTION.left&&(t=c.left-(P.left-n),t<=i&&getScrollLeft(I)>0&&(e=AUTO_SCROLL_DIRECTION.left)),e&&(h=I,l=D,d=i,_=w,u=e,g=t,p=A)}if(R&&D>=S&&C>0&&(D>S||w>E)){let t=0,e=AUTO_SCROLL_DIRECTION_Y.none;const i=computeThreshold(o,P.height),n=computeEdgeOffset(i,s,c.height,P.height);a===AUTO_SCROLL_DIRECTION.down?(t=P.bottom+n-c.bottom,t<=i&&!isScrolledToMax(getScrollTop(I),C)&&(e=AUTO_SCROLL_DIRECTION.down)):a===AUTO_SCROLL_DIRECTION.up&&(t=c.top-(P.top-n),t<=i&&getScrollTop(I)>0&&(e=AUTO_SCROLL_DIRECTION.up)),e&&(m=I,S=D,f=i,E=w,v=e,T=t,O=C)}}e&&(h&&u?this._requestItemScroll(t,AUTO_SCROLL_AXIS.x,h,u,d,g,p):this._cancelItemScroll(t,AUTO_SCROLL_AXIS.x)),i&&(m&&v?this._requestItemScroll(t,AUTO_SCROLL_AXIS.y,m,v,f,T,O):this._cancelItemScroll(t,AUTO_SCROLL_AXIS.y))}_updateScrollRequest(t){const e=t.item,{inertAreaSize:i,smoothStop:s,targets:n}=e,o=this._getItemClientRect(e,R1);let r=null,a=0;for(;ad)break;const g=c?getScrollLeft(s):getScrollTop(s);if(r=AUTO_SCROLL_AXIS_DIRECTION.forward&t.direction?isScrolledToMax(g,h):g<=0,r)break;return t.maxValue=h,t.threshold=d,t.distance=u,t.isEnding=!1,!0}return!0===s&&t.speed>0?(null===r&&(r=t.hasReachedEnd()),t.isEnding=!r):t.isEnding=!1,t.isEnding}_updateItems(){for(let t=0;to?AUTO_SCROLL_DIRECTION.right:sr?AUTO_SCROLL_DIRECTION.down:n0&&this._tickTime-r>this.settings.overlapCheckInterval,c=!0;const h=e.get(n);h&&h.isActive&&(c=!this._updateScrollRequest(h),c&&(a=!0,this._cancelItemScroll(n,AUTO_SCROLL_AXIS.x)));let l=!0;const d=i.get(n);d&&d.isActive&&(l=!this._updateScrollRequest(d),l&&(a=!0,this._cancelItemScroll(n,AUTO_SCROLL_AXIS.y))),a&&(o.overlapCheckRequestTime=0,this._checkItemOverlap(n,c,l))}}_requestAction(t,e){const i=e===AUTO_SCROLL_AXIS.x;let s=null,n=0;for(;n{const{drag:e}=t,i=null==e?void 0:e.items[0];if(i)AUTOSCROLL_POSITION.x=i.pX,AUTOSCROLL_POSITION.y=i.pY;else{const t=e&&(e.nextMoveEvent||e.startEvent);AUTOSCROLL_POSITION.x=t?t.x:0,AUTOSCROLL_POSITION.y=t?t.y:0}return AUTOSCROLL_POSITION},getClientRect:t=>{const{drag:e}=t,i=null==e?void 0:e.items[0];if(i&&i.element){const{left:t,top:e,width:s,height:n}=i.element.getBoundingClientRect();AUTOSCROLL_CLIENT_RECT.left=t,AUTOSCROLL_CLIENT_RECT.top=e,AUTOSCROLL_CLIENT_RECT.width=s,AUTOSCROLL_CLIENT_RECT.height=n}else{const t=e&&(e.nextMoveEvent||e.startEvent);AUTOSCROLL_CLIENT_RECT.left=t?t.x-25:0,AUTOSCROLL_CLIENT_RECT.top=t?t.y-25:0,AUTOSCROLL_CLIENT_RECT.width=t?50:0,AUTOSCROLL_CLIENT_RECT.height=t?50:0}return AUTOSCROLL_CLIENT_RECT},onStart:null,onStop:null}}class DraggableAutoScrollProxy{constructor(t,e){this._draggableAutoScroll=t,this._draggable=e,this._position={x:0,y:0},this._clientRect={left:0,top:0,width:0,height:0}}_getSettings(){return this._draggableAutoScroll.settings}get targets(){let{targets:t}=this._getSettings();return"function"==typeof t&&(t=t(this._draggable)),t}get position(){let{getPosition:t}=this._getSettings();if("function"==typeof t){const e=t(this._draggable);this._position.x=e.x,this._position.y=e.y}else this._position.x=0,this._position.y=0;return this._position}get clientRect(){let{getClientRect:t}=this._getSettings();if("function"==typeof t){const{left:e,top:i,width:s,height:n}=t(this._draggable);this._clientRect.left=e,this._clientRect.top=i,this._clientRect.width=s,this._clientRect.height=n}else this._clientRect.left=0,this._clientRect.top=0,this._clientRect.width=0,this._clientRect.height=0;return this._clientRect}get inertAreaSize(){return this._getSettings().inertAreaSize}get smoothStop(){return this._getSettings().smoothStop}get speed(){return this._getSettings().speed}get onStart(){return this._getSettings().onStart}get onStop(){return this._getSettings().onStop}onPrepareScrollEffect(){const t=this._draggable._updateId;ticker.off(tickerReadPhase,t),ticker.off(tickerWritePhase,t),this._draggable._preparePositionUpdate()}onApplyScrollEffect(){this._draggable._applyPositionUpdate()}}class DraggableAutoScroll{constructor(t,e={}){this.name="autoscroll",this.version="0.0.2",this.settings=this._parseSettings(e),this._autoScrollProxy=null,t.on("start",(()=>{this._autoScrollProxy||(this._autoScrollProxy=new DraggableAutoScrollProxy(this,t),autoScroll.addItem(this._autoScrollProxy))})),t.on("beforeend",(()=>{this._autoScrollProxy&&(autoScroll.removeItem(this._autoScrollProxy),this._autoScrollProxy=null)}))}_parseSettings(t,e=getDefaultSettings()){const{targets:i=e.targets,inertAreaSize:s=e.inertAreaSize,speed:n=e.speed,smoothStop:o=e.smoothStop,getPosition:r=e.getPosition,getClientRect:a=e.getClientRect,onStart:c=e.onStart,onStop:h=e.onStop}=t||{};return{targets:i,inertAreaSize:s,speed:n,smoothStop:o,getPosition:r,getClientRect:a,onStart:c,onStop:h}}updateSettings(t={}){this.settings=this._parseSettings(t,this.settings)}}function autoScrollPlugin(t){return e=>{const i=new DraggableAutoScroll(e,t),s=e;return s.plugins[i.name]=i,s}}const SCROLLABLE_OVERFLOWS=new Set(["auto","scroll","overlay"]);function isScrollable(t){return!!(SCROLLABLE_OVERFLOWS.has(getStyle(t,"overflow"))||SCROLLABLE_OVERFLOWS.has(getStyle(t,"overflow-x"))||SCROLLABLE_OVERFLOWS.has(getStyle(t,"overflow-y")))}function getScrollableAncestors(t,e=[]){let i=null;for(;t&&(i=t.parentNode,i&&!(i instanceof Document));)isScrollable(t="host"in i?i.host:i)&&e.push(t);return e.push(window),e}function getScrollables(t){const e=[];return isScrollable(t)&&e.push(t),getScrollableAncestors(t,e),e}function createPointerSensorStartPredicate(t={}){let e,i,s=0,n=null;const{timeout:o=250,fallback:r=(()=>!0)}=t,a=t=>t.preventDefault(),c=t=>{s&&(e?t.cancelable&&t.preventDefault():void 0===e&&(t.cancelable&&t.timeStamp-s>o?(e=!0,t.preventDefault()):e=!1))};return t=>{if(!(t.sensor instanceof PointerSensor))return r(t);const{draggable:h,sensor:l,event:d}=t,_=d;if("touch"===_.pointerType){if("start"===_.type&&("pointerdown"===_.srcEvent.type||"touchstart"===_.srcEvent.type)){n=_.target;const t=n?getScrollables(n):[];t.forEach((t=>{t.addEventListener("touchmove",c,{passive:!1,capture:!0})}));const r=()=>{s&&(h.off("beforeend",r),h.sensors.forEach((t=>{t instanceof PointerSensor&&t.off("end",r)})),null==n||n.removeEventListener("contextmenu",a),t.forEach((t=>{t.removeEventListener("touchmove",c,{capture:!0})})),s=0,e=void 0,n=null,i=void window.clearTimeout(i))};e=void 0,s=_.srcEvent.timeStamp,null==n||n.addEventListener("contextmenu",a),h.on("beforeend",r),h.sensors.forEach((t=>{t instanceof PointerSensor&&t.off("end",r)})),o>0&&(i=window.setTimeout((()=>{h.resolveStartPredicate(l),e=!0,i=void 0}),o))}return e}return"start"===_.type&&!_.srcEvent.button}}export{AUTO_SCROLL_AXIS,AUTO_SCROLL_AXIS_DIRECTION,AUTO_SCROLL_DIRECTION,AutoScroll,BaseMotionSensor,BaseSensor,Draggable,DraggableAutoScroll,KeyboardMotionSensor,KeyboardSensor,PointerSensor,SensorEventType,autoScroll,autoScrollPlugin,autoScrollSmoothSpeed,createPointerSensorStartPredicate,setTicker,ticker,tickerReadPhase,tickerWritePhase}; \ No newline at end of file +var _={start:"start",move:"move",cancel:"cancel",end:"end",destroy:"destroy"};import{Emitter as tt}from"eventti";var W=class{constructor(){this.drag=null,this.isDestroyed=!1,this._emitter=new tt}_createDragData(e){return{x:e.x,y:e.y}}_updateDragData(e){this.drag&&(this.drag.x=e.x,this.drag.y=e.y)}_resetDragData(){this.drag=null}_start(e){this.isDestroyed||this.drag||(this.drag=this._createDragData(e),this._emitter.emit(_.start,e))}_move(e){this.drag&&(this._updateDragData(e),this._emitter.emit(_.move,e))}_end(e){this.drag&&(this._updateDragData(e),this._emitter.emit(_.end,e),this._resetDragData())}_cancel(e){this.drag&&(this._updateDragData(e),this._emitter.emit(_.cancel,e),this._resetDragData())}on(e,t,n){return this._emitter.on(e,t,n)}off(e,t){this._emitter.off(e,t)}cancel(){this.drag&&(this._emitter.emit(_.cancel,{type:_.cancel,x:this.drag.x,y:this.drag.y}),this._resetDragData())}destroy(){this.isDestroyed||(this.isDestroyed=!0,this.cancel(),this._emitter.emit(_.destroy,{type:_.destroy}),this._emitter.off())}};import{Ticker as nt}from"tikki";var v=Symbol(),D=Symbol(),u=new nt({phases:[v,D]});function wt(i,e,t){v=e,D=t,u=i}var $=class extends W{constructor(){super();this.drag=null,this._direction={x:0,y:0},this._speed=0,this._tick=this._tick.bind(this)}_createDragData(t){return{...super._createDragData(t),time:0,deltaTime:0}}_start(t){this.isDestroyed||this.drag||(super._start(t),u.on(v,this._tick))}_end(t){this.drag&&(u.off(v,this._tick),super._end(t))}_cancel(t){this.drag&&(u.off(v,this._tick),super._cancel(t))}_tick(t){if(this.drag)if(t&&this.drag.time){this.drag.deltaTime=t-this.drag.time,this.drag.time=t;let n={type:"tick",time:this.drag.time,deltaTime:this.drag.deltaTime};if(this._emitter.emit("tick",n),!this.drag)return;let r=this._speed*(this.drag.deltaTime/1e3),s=this._direction.x*r,o=this._direction.y*r;(s||o)&&this._move({type:"move",x:this.drag.x+s,y:this.drag.y+o})}else this.drag.time=t,this.drag.deltaTime=0}};import{Emitter as rt}from"eventti";function de(i,e){if("pointerId"in i)return i.pointerId===e?i:null;if("changedTouches"in i){let t=0;for(;t{let i=!1;try{let e=Object.defineProperty({},"passive",{get:function(){i=!0}});window.addEventListener("testPassive",null,e),window.removeEventListener("testPassive",null,e)}catch{}return i})(),Oe=he&&"ontouchstart"in window,We=he&&!!window.PointerEvent,Ot=!!(he&&navigator.vendor&&navigator.vendor.indexOf("Apple")>-1&&navigator.userAgent&&navigator.userAgent.indexOf("CriOS")==-1&&navigator.userAgent.indexOf("FxiOS")==-1);function me(i={}){let{capture:e=!0,passive:t=!0}=i;return J?{capture:e,passive:t}:{capture:e}}function ue(i){return i==="auto"||i===void 0?We?"pointer":Oe?"touch":"mouse":i}var it={start:"pointerdown",move:"pointermove",cancel:"pointercancel",end:"pointerup"},ot={start:"touchstart",move:"touchmove",cancel:"touchcancel",end:"touchend"},st={start:"mousedown",move:"mousemove",cancel:"",end:"mouseup"},X={pointer:it,touch:ot,mouse:st},Y=class{constructor(e,t={}){let{listenerOptions:n={},sourceEvents:r="auto",startPredicate:s=o=>!("button"in o&&o.button>0)}=t;this.element=e,this.drag=null,this.isDestroyed=!1,this._areWindowListenersBound=!1,this._startPredicate=s,this._listenerOptions=me(n),this._sourceEvents=ue(r),this._emitter=new rt,this._onStart=this._onStart.bind(this),this._onMove=this._onMove.bind(this),this._onCancel=this._onCancel.bind(this),this._onEnd=this._onEnd.bind(this),e.addEventListener(X[this._sourceEvents].start,this._onStart,this._listenerOptions)}_getTrackedPointerEventData(e){return this.drag?de(e,this.drag.pointerId):null}_onStart(e){if(this.isDestroyed||this.drag||!this._startPredicate(e))return;let t=Me(e);if(t===null)return;let n=de(e,t);if(n===null)return;let r={pointerId:t,pointerType:Re(e),x:n.clientX,y:n.clientY};this.drag=r;let s={...r,type:_.start,srcEvent:e,target:n.target};this._emitter.emit(s.type,s),this.drag&&this._bindWindowListeners()}_onMove(e){if(!this.drag)return;let t=this._getTrackedPointerEventData(e);if(!t)return;this.drag.x=t.clientX,this.drag.y=t.clientY;let n={type:_.move,srcEvent:e,target:t.target,...this.drag};this._emitter.emit(n.type,n)}_onCancel(e){if(!this.drag)return;let t=this._getTrackedPointerEventData(e);if(!t)return;this.drag.x=t.clientX,this.drag.y=t.clientY;let n={type:_.cancel,srcEvent:e,target:t.target,...this.drag};this._emitter.emit(n.type,n),this._resetDrag()}_onEnd(e){if(!this.drag)return;let t=this._getTrackedPointerEventData(e);if(!t)return;this.drag.x=t.clientX,this.drag.y=t.clientY;let n={type:_.end,srcEvent:e,target:t.target,...this.drag};this._emitter.emit(n.type,n),this._resetDrag()}_bindWindowListeners(){if(this._areWindowListenersBound)return;let{move:e,end:t,cancel:n}=X[this._sourceEvents];window.addEventListener(e,this._onMove,this._listenerOptions),window.addEventListener(t,this._onEnd,this._listenerOptions),n&&window.addEventListener(n,this._onCancel,this._listenerOptions),this._areWindowListenersBound=!0}_unbindWindowListeners(){if(this._areWindowListenersBound){let{move:e,end:t,cancel:n}=X[this._sourceEvents];window.removeEventListener(e,this._onMove,this._listenerOptions),window.removeEventListener(t,this._onEnd,this._listenerOptions),n&&window.removeEventListener(n,this._onCancel,this._listenerOptions),this._areWindowListenersBound=!1}}_resetDrag(){this.drag=null,this._unbindWindowListeners()}cancel(){if(!this.drag)return;let e={type:_.cancel,srcEvent:null,target:null,...this.drag};this._emitter.emit(e.type,e),this._resetDrag()}updateSettings(e){if(this.isDestroyed)return;let{listenerOptions:t,sourceEvents:n,startPredicate:r}=e,s=ue(n),o=me(t);r&&this._startPredicate!==r&&(this._startPredicate=r),(t&&(this._listenerOptions.capture!==o.capture||this._listenerOptions.passive===o.passive)||n&&this._sourceEvents!==s)&&(this.element.removeEventListener(X[this._sourceEvents].start,this._onStart,this._listenerOptions),this._unbindWindowListeners(),this.cancel(),n&&(this._sourceEvents=s),t&&o&&(this._listenerOptions=o),this.element.addEventListener(X[this._sourceEvents].start,this._onStart,this._listenerOptions))}on(e,t,n){return this._emitter.on(e,t,n)}off(e,t){this._emitter.off(e,t)}destroy(){this.isDestroyed||(this.isDestroyed=!0,this.cancel(),this._emitter.emit(_.destroy,{type:_.destroy}),this._emitter.off(),this.element.removeEventListener(X[this._sourceEvents].start,this._onStart,this._listenerOptions))}};var Xe=class extends W{constructor(t={}){super();let{moveDistance:n=25,startPredicate:r=l=>{if((l.key==="Enter"||l.key===" ")&&document.activeElement&&document.activeElement!==document.body){let{left:a,top:d}=document.activeElement.getBoundingClientRect();return{x:a,y:d}}return null},movePredicate:s=(l,a,d)=>{if(!a.drag)return null;switch(l.key){case"ArrowLeft":return{x:a.drag.x-d.x,y:a.drag.y};case"ArrowRight":return{x:a.drag.x+d.x,y:a.drag.y};case"ArrowUp":return{x:a.drag.x,y:a.drag.y-d.y};case"ArrowDown":return{x:a.drag.x,y:a.drag.y+d.y};default:return null}},cancelPredicate:o=(l,a)=>a.drag&&l.key==="Escape"?{x:a.drag.x,y:a.drag.y}:null,endPredicate:c=(l,a)=>a.drag&&(l.key==="Enter"||l.key===" ")?{x:a.drag.x,y:a.drag.y}:null}=t;this._moveDistance=typeof n=="number"?{x:n,y:n}:{...n},this._startPredicate=r,this._movePredicate=s,this._cancelPredicate=o,this._endPredicate=c,this.cancel=this.cancel.bind(this),this._onKeyDown=this._onKeyDown.bind(this),document.addEventListener("keydown",this._onKeyDown),window.addEventListener("blur",this.cancel),window.addEventListener("visibilitychange",this.cancel)}_onKeyDown(t){if(!this.drag){let o=this._startPredicate(t,this,this._moveDistance);o&&(t.preventDefault(),this._start({type:"start",x:o.x,y:o.y,srcEvent:t}));return}let n=this._cancelPredicate(t,this,this._moveDistance);if(n){t.preventDefault(),this._cancel({type:"cancel",x:n.x,y:n.y,srcEvent:t});return}let r=this._endPredicate(t,this,this._moveDistance);if(r){t.preventDefault(),this._end({type:"end",x:r.x,y:r.y,srcEvent:t});return}let s=this._movePredicate(t,this,this._moveDistance);if(s){t.preventDefault(),this._move({type:"move",x:s.x,y:s.y,srcEvent:t});return}}updateSettings(t={}){t.moveDistance!==void 0&&(typeof t.moveDistance=="number"?(this._moveDistance.x=t.moveDistance,this._moveDistance.y=t.moveDistance):(this._moveDistance.x=t.moveDistance.x,this._moveDistance.y=t.moveDistance.y)),t.startPredicate!==void 0&&(this._startPredicate=t.startPredicate),t.movePredicate!==void 0&&(this._movePredicate=t.movePredicate),t.cancelPredicate!==void 0&&(this._cancelPredicate=t.cancelPredicate),t.endPredicate!==void 0&&(this._endPredicate=t.endPredicate)}destroy(){this.isDestroyed||(super.destroy(),document.removeEventListener("keydown",this._onKeyDown),window.removeEventListener("blur",this.cancel),window.removeEventListener("visibilitychange",this.cancel))}};var at=["start","cancel","end","moveLeft","moveRight","moveUp","moveDown"];function Q(i,e){if(!i.size||!e.size)return 1/0;let t=1/0;for(let n of i){let r=e.get(n);r!==void 0&&r{if(document.activeElement){let{left:y,top:g}=document.activeElement.getBoundingClientRect();return{x:y,y:g}}return null},computeSpeed:r=()=>500,startKeys:s=[" ","Enter"],moveLeftKeys:o=["ArrowLeft"],moveRightKeys:c=["ArrowRight"],moveUpKeys:l=["ArrowUp"],moveDownKeys:a=["ArrowDown"],cancelKeys:d=["Escape"],endKeys:m=[" ","Enter"]}=t;this._computeSpeed=r,this._startPredicate=n,this._startKeys=new Set(s),this._cancelKeys=new Set(d),this._endKeys=new Set(m),this._moveLeftKeys=new Set(o),this._moveRightKeys=new Set(c),this._moveUpKeys=new Set(l),this._moveDownKeys=new Set(a),this._moveKeys=new Set([...o,...c,...l,...a]),this._moveKeyTimestamps=new Map,this._onKeyDown=this._onKeyDown.bind(this),this._onKeyUp=this._onKeyUp.bind(this),this._onTick=this._onTick.bind(this),this.on("tick",this._onTick),document.addEventListener("keydown",this._onKeyDown),document.addEventListener("keyup",this._onKeyUp),window.addEventListener("blur",this.cancel),window.addEventListener("visibilitychange",this.cancel)}_end(t){this.drag&&(this._moveKeyTimestamps.clear(),this._direction.x=0,this._direction.y=0,super._end(t))}_cancel(t){this.drag&&(this._moveKeyTimestamps.clear(),this._direction.x=0,this._direction.y=0,super._cancel(t))}_updateDirection(){let t=Q(this._moveLeftKeys,this._moveKeyTimestamps),n=Q(this._moveRightKeys,this._moveKeyTimestamps),r=Q(this._moveUpKeys,this._moveKeyTimestamps),s=Q(this._moveDownKeys,this._moveKeyTimestamps),o=t===n?0:t{let o=`${r}Keys`,c=t[o];c!==void 0&&(this[`_${o}`]=new Set(c),s>=3&&(n=!0))}),n){let r=[...this._moveLeftKeys,...this._moveRightKeys,...this._moveUpKeys,...this._moveDownKeys];[...this._moveKeys].every((o,c)=>r[c]===o)||(this._moveKeys=new Set(r),this._moveKeyTimestamps.clear(),this._updateDirection())}}destroy(){this.isDestroyed||(super.destroy(),this.off("tick",this._onTick),document.removeEventListener("keydown",this._onKeyDown),document.removeEventListener("keyup",this._onKeyUp),window.removeEventListener("blur",this.cancel),window.removeEventListener("visibilitychange",this.cancel))}};import{Emitter as lt}from"eventti";import{getOffsetContainer as Ve}from"mezr";var Z=class{constructor(){this.sensor=null,this.isEnded=!1,this.isStarted=!1,this.startEvent=null,this.nextMoveEvent=null,this.prevMoveEvent=null,this.endEvent=null,this.items=[]}};var ee=class{constructor(e,t,n,r,s){this.data={},this.element=e,this.elementContainer=t,this.elementOffsetContainer=n,this.dragContainer=r,this.dragOffsetContainer=s,this.initialTransform="",this.frozenProps=null,this.unfrozenProps=null,this.x=0,this.y=0,this.pX=0,this.pY=0,this._updateDiffX=0,this._updateDiffY=0,this._moveDiffX=0,this._moveDiffY=0,this._containerDiffX=0,this._containerDiffY=0}};import{getOffset as Ne}from"mezr";function pe(i,e,t={left:0,top:0}){if(t.left=0,t.top=0,i===e)return t;let n=Ne([i,"padding"]),r=Ne([e,"padding"]);return t.left=r.left-n.left,t.top=r.top-n.top,t}var qe=new WeakMap;function te(i){let e=qe.get(i)?.deref();return e||(e=window.getComputedStyle(i,null),qe.set(i,new WeakRef(e))),e}var ct="matrix(1, 0, 0, 1, 0, 0)",dt="matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)",Ue=J?{capture:!0,passive:!0}:!0,ze={left:0,top:0},fe={x:0,y:0};function ht(){return{container:null,startPredicate:()=>!0,getElements:()=>null,releaseElements:()=>null,getFrozenProps:()=>null,getStartPosition:()=>({x:0,y:0}),setPosition:({item:i,x:e,y:t})=>{i.element.style.transform=`translate(${e}px, ${t}px) ${i.initialTransform}`},getPositionChange:({event:i,prevEvent:e})=>(fe.x=i.x-e.x,fe.y=i.y-e.y,fe)}}var Be=class{constructor(e,t={}){this.sensors=e,this.settings=this._parseSettings(t),this.plugins={},this.drag=null,this.isDestroyed=!1,this._sensorData=new Map,this._emitter=new lt,this._startId=Symbol(),this._moveId=Symbol(),this._updateId=Symbol(),this._onMove=this._onMove.bind(this),this._onScroll=this._onScroll.bind(this),this._onEnd=this._onEnd.bind(this),this._prepareStart=this._prepareStart.bind(this),this._applyStart=this._applyStart.bind(this),this._prepareMove=this._prepareMove.bind(this),this._applyMove=this._applyMove.bind(this),this._preparePositionUpdate=this._preparePositionUpdate.bind(this),this._applyPositionUpdate=this._applyPositionUpdate.bind(this),this.sensors.forEach(n=>{this._sensorData.set(n,{predicateState:0,predicateEvent:null,onMove:o=>this._onMove(o,n),onEnd:o=>this._onEnd(o,n)});let{onMove:r,onEnd:s}=this._sensorData.get(n);n.on("start",r),n.on("move",r),n.on("cancel",s),n.on("end",s),n.on("destroy",s)})}_parseSettings(e,t=ht()){let{container:n=t.container,startPredicate:r=t.startPredicate,getElements:s=t.getElements,releaseElements:o=t.releaseElements,getFrozenProps:c=t.getFrozenProps,getStartPosition:l=t.getStartPosition,setPosition:a=t.setPosition,getPositionChange:d=t.getPositionChange}=e||{};return{container:n,startPredicate:r,getElements:s,releaseElements:o,getFrozenProps:c,getStartPosition:l,setPosition:a,getPositionChange:d}}_emit(e,...t){this._emitter.emit(e,...t)}_onMove(e,t){let n=this._sensorData.get(t);if(n)switch(n.predicateState){case 0:{n.predicateEvent=e;let r=this.settings.startPredicate({draggable:this,sensor:t,event:e});r===!0?this.resolveStartPredicate(t):r===!1&&this.rejectStartPredicate(t);break}case 1:{this.drag&&(this.drag.nextMoveEvent=e,u.once(v,this._prepareMove,this._moveId),u.once(D,this._applyMove,this._moveId));break}}}_onScroll(){this.updatePosition()}_onEnd(e,t){let n=this._sensorData.get(t);n&&(this.drag?n.predicateState===1&&(this.drag.endEvent=e,this._sensorData.forEach(r=>{r.predicateState=0,r.predicateEvent=null}),this.stop()):(n.predicateState=0,n.predicateEvent=null))}_prepareStart(){let{drag:e}=this;if(!e||!e.startEvent)return;let t=this.settings.getElements({draggable:this,sensor:e.sensor,startEvent:e.startEvent})||[];e.items=t.map(n=>{if(!n.isConnected)throw new Error("Element is not connected");let r=n.parentElement,s=Ve(n);if(!s)throw new Error("Offset container could not be computed for the element!");let o=this.settings.container||r,c=o===r?s:Ve(n,{container:o});if(!c)throw new Error("Drag offset container could not be computed for the element!");let l=new ee(n,r,s,o,c),a=n.getBoundingClientRect();if(l.x=a.left,l.y=a.top,s!==c){let{left:b,top:f}=pe(c,s,ze);l._containerDiffX=b,l._containerDiffY=f}let d=te(n),{transform:m}=d;m&&m!=="none"&&m!==ct&&m!==dt&&(l.initialTransform=m);let{x:y,y:g}=this.settings.getStartPosition({draggable:this,sensor:e.sensor,item:l,style:d});l.pX=y,l.pY=g;let S=this.settings.getFrozenProps({draggable:this,sensor:e.sensor,item:l,style:d});if(Array.isArray(S))if(S.length){let b={};for(let f of S)b[f]=d[f];l.frozenProps=b}else l.frozenProps=null;else l.frozenProps=S;if(l.frozenProps){let b={};for(let f in l.frozenProps)l.frozenProps.hasOwnProperty(f)&&(b[f]=n.style[f]);l.unfrozenProps=b}return l}),this._emit("preparestart",e.startEvent)}_applyStart(){let e=this.drag;if(!e||!e.startEvent)return;let{container:t}=this.settings;for(let n of e.items)t&&n.element.parentElement!==t&&(t.appendChild(n.element),n.pX+=n._containerDiffX,n.pY+=n._containerDiffY),n.frozenProps&&Object.assign(n.element.style,n.frozenProps),this.settings.setPosition({phase:"start",draggable:this,sensor:e.sensor,item:n,x:n.pX,y:n.pY});window.addEventListener("scroll",this._onScroll,Ue),e.isStarted=!0,this._emit("start",e.startEvent)}_prepareMove(){let{drag:e}=this;if(!e||!e.startEvent)return;let t=e.nextMoveEvent,n=e.prevMoveEvent||e.startEvent;if(!(!t||t===n)){for(let r of e.items){let{x:s,y:o}=this.settings.getPositionChange({draggable:this,sensor:e.sensor,item:r,startEvent:e.startEvent,prevEvent:n,event:t});s&&(r.pX=r.pX-r._moveDiffX+s,r.x=r.x-r._moveDiffX+s,r._moveDiffX=s),o&&(r.pY=r.pY-r._moveDiffY+o,r.y=r.y-r._moveDiffY+o,r._moveDiffY=o)}e.prevMoveEvent=t,this._emit("preparemove",t)}}_applyMove(){let{drag:e}=this;if(!(!e||!e.nextMoveEvent)){for(let t of e.items)t._moveDiffX=0,t._moveDiffY=0;for(let t of e.items)this.settings.setPosition({phase:"move",draggable:this,sensor:e.sensor,item:t,x:t.pX,y:t.pY});this._emit("move",e.nextMoveEvent)}}_preparePositionUpdate(){let{drag:e}=this;if(e)for(let t of e.items){if(t.elementOffsetContainer!==t.dragOffsetContainer){let{left:c,top:l}=pe(t.dragOffsetContainer,t.elementOffsetContainer,ze);t._containerDiffX=c,t._containerDiffY=l}let{left:n,top:r}=t.element.getBoundingClientRect(),s=t.x-t._moveDiffX-n;t.pX=t.pX-t._updateDiffX+s,t._updateDiffX=s;let o=t.y-t._moveDiffY-r;t.pY=t.pY-t._updateDiffY+o,t._updateDiffY=o}}_applyPositionUpdate(){let{drag:e}=this;if(e)for(let t of e.items)t._updateDiffX=0,t._updateDiffY=0,this.settings.setPosition({phase:"move",draggable:this,sensor:e.sensor,item:t,x:t.pX,y:t.pY})}on(e,t,n){return this._emitter.on(e,t,n)}off(e,t){this._emitter.off(e,t)}resolveStartPredicate(e,t){let n=this._sensorData.get(e);if(!n)return;let r=t||n.predicateEvent;n.predicateState===0&&r&&(n.predicateState=1,n.predicateEvent=null,this.drag=new Z,this.drag.sensor=e,this.drag.startEvent=r,this._sensorData.forEach((s,o)=>{o!==e&&(s.predicateState=2,s.predicateEvent=null)}),u.once(v,this._prepareStart,this._startId),u.once(D,this._applyStart,this._startId))}rejectStartPredicate(e){let t=this._sensorData.get(e);t?.predicateState===0&&(t.predicateState=2,t.predicateEvent=null)}stop(){let{drag:e}=this;if(!(!e||e.isEnded)){if(e.isEnded=!0,u.off(v,this._startId),u.off(D,this._startId),u.off(v,this._moveId),u.off(D,this._moveId),u.off(v,this._updateId),u.off(D,this._updateId),e.isStarted){window.removeEventListener("scroll",this._onScroll,Ue);let t=[];for(let n of e.items){if(t.push(n.element),n.elementContainer&&n.element.parentElement!==n.elementContainer&&(n.pX-=n._containerDiffX,n.pY-=n._containerDiffY,n._containerDiffX=0,n._containerDiffY=0,n.elementContainer.appendChild(n.element)),n.unfrozenProps)for(let r in n.unfrozenProps)n.element.style[r]=n.unfrozenProps[r]||"";this.settings.setPosition({phase:"end",draggable:this,sensor:e.sensor,item:n,x:n.pX,y:n.pY})}t.length&&this.settings.releaseElements({draggable:this,sensor:e.sensor,elements:t})}this._emit("end",e.endEvent),this.drag=null}}updatePosition(e=!1){this.drag&&(e?(this._preparePositionUpdate(),this._applyPositionUpdate()):(u.once(v,this._preparePositionUpdate,this._updateId),u.once(D,this._applyPositionUpdate,this._updateId)))}updateSettings(e={}){this.settings=this._parseSettings(e,this.settings)}use(e){return e(this)}destroy(){this.isDestroyed||(this.isDestroyed=!0,this.stop(),this._sensorData.forEach(({onMove:e,onEnd:t},n)=>{n.off("start",e),n.off("move",e),n.off("cancel",t),n.off("end",t),n.off("destroy",t)}),this._sensorData.clear(),this._emit("destroy"),this._emitter.off())}};import{Emitter as ut}from"eventti";import{getDistance as pt,getRect as Ge}from"mezr";var B=class{constructor(e,t){this._data=[],this._createObject=e,this._onPut=t}pick(){return this._data.length?this._data.pop():this._createObject()}put(e){this._data.indexOf(e)===-1&&(this._onPut&&this._onPut(e),this._data.push(e))}reset(){this._data.length=0}};import{getIntersection as mt}from"mezr";function He(i,e){let t=mt(i,e);return t?t.width*t.height:0}function ge(i,e){let t=He(i,e);if(!t)return 0;let n=Math.min(i.width,e.width)*Math.min(i.height,e.height);return t/n*100}function w(i){return i instanceof Window}function Se(i){return w(i)||i===document.documentElement||i===document.body?window:i}function N(i){return w(i)?i.pageXOffset:i.scrollLeft}function Ee(i){return w(i)&&(i=document.documentElement),i.scrollWidth-i.clientWidth}function q(i){return w(i)?i.pageYOffset:i.scrollTop}function ve(i){return w(i)&&(i=document.documentElement),i.scrollHeight-i.clientHeight}function _e(i,e){return!(i.right<=e.left||e.right<=i.left||i.bottom<=e.top||e.bottom<=i.top)}var xe={width:0,height:0,left:0,right:0,top:0,bottom:0},Fe={...xe},je=50,I={direction:"none",threshold:0,distance:0,value:0,maxValue:0,duration:0,speed:0,deltaTime:0,isEnding:!1},h={x:1,y:2},M={forward:4,reverse:8},ne={none:0,left:h.x|M.reverse,right:h.x|M.forward},H={none:0,up:h.y|M.reverse,down:h.y|M.forward},p={...ne,...H};function ye(i){switch(i){case ne.none:case H.none:return"none";case ne.left:return"left";case ne.right:return"right";case H.up:return"up";case H.down:return"down";default:throw new Error(`Unknown direction value: ${i}`)}}function $e(i,e,t){let{left:n=0,right:r=0,top:s=0,bottom:o=0}=e;return n=Math.max(0,n),r=Math.max(0,r),s=Math.max(0,s),o=Math.max(0,o),t.width=i.width+n+r,t.height=i.height+s+o,t.left=i.left-n,t.top=i.top-s,t.right=i.right+r,t.bottom=i.bottom+o,t}function re(i,e){return Math.ceil(i)>=Math.floor(e)}function be(i,e){return Math.min(e/2,i)}function De(i,e,t,n){return Math.max(0,t+i*2+n*e-n)/2}var Pe=class{constructor(){this.positionX=0,this.positionY=0,this.directionX=p.none,this.directionY=p.none,this.overlapCheckRequestTime=0}},Te=class{constructor(){this.element=null,this.requestX=null,this.requestY=null,this.scrollLeft=0,this.scrollTop=0}reset(){this.requestX&&(this.requestX.action=null),this.requestY&&(this.requestY.action=null),this.element=null,this.requestX=null,this.requestY=null,this.scrollLeft=0,this.scrollTop=0}addRequest(e){h.x&e.direction?(this.requestX&&this.removeRequest(this.requestX),this.requestX=e):(this.requestY&&this.removeRequest(this.requestY),this.requestY=e),e.action=this}removeRequest(e){this.requestX===e?(this.requestX=null,e.action=null):this.requestY===e&&(this.requestY=null,e.action=null)}computeScrollValues(){this.element&&(this.scrollLeft=this.requestX?this.requestX.value:N(this.element),this.scrollTop=this.requestY?this.requestY.value:q(this.element))}scroll(){this.element&&(this.element.scrollTo?this.element.scrollTo(this.scrollLeft,this.scrollTop):(this.element.scrollLeft=this.scrollLeft,this.element.scrollTop=this.scrollTop))}},we=class{constructor(){this.item=null,this.element=null,this.isActive=!1,this.isEnding=!1,this.direction=0,this.value=NaN,this.maxValue=0,this.threshold=0,this.distance=0,this.deltaTime=0,this.speed=0,this.duration=0,this.action=null}reset(){this.isActive&&this.onStop(),this.item=null,this.element=null,this.isActive=!1,this.isEnding=!1,this.direction=0,this.value=NaN,this.maxValue=0,this.threshold=0,this.distance=0,this.deltaTime=0,this.speed=0,this.duration=0,this.action=null}hasReachedEnd(){return M.forward&this.direction?re(this.value,this.maxValue):this.value<=0}computeCurrentScrollValue(){return this.element?this.value!==this.value?h.x&this.direction?N(this.element):q(this.element):Math.max(0,Math.min(this.value,this.maxValue)):0}computeNextScrollValue(){let e=this.speed*(this.deltaTime/1e3),t=M.forward&this.direction?this.value+e:this.value-e;return Math.max(0,Math.min(t,this.maxValue))}computeSpeed(){if(!this.item||!this.element)return 0;let{speed:e}=this.item;return typeof e=="function"?(I.direction=ye(this.direction),I.threshold=this.threshold,I.distance=this.distance,I.value=this.value,I.maxValue=this.maxValue,I.duration=this.duration,I.speed=this.speed,I.deltaTime=this.deltaTime,I.isEnding=this.isEnding,e(this.element,I)):e}tick(e){return this.isActive||(this.isActive=!0,this.onStart()),this.deltaTime=e,this.value=this.computeCurrentScrollValue(),this.speed=this.computeSpeed(),this.value=this.computeNextScrollValue(),this.duration+=e,this.value}onStart(){if(!this.item||!this.element)return;let{onStart:e}=this.item;typeof e=="function"&&e(this.element,ye(this.direction))}onStop(){if(!this.item||!this.element)return;let{onStop:e}=this.item;typeof e=="function"&&e(this.element,ye(this.direction))}};function Je(i=500,e=.5,t=.25){let n=i*(e>0?1/e:1/0),r=i*(t>0?1/t:1/0);return function(s,o){let c=0;if(!o.isEnding)if(o.threshold>0){let d=o.threshold-Math.max(0,o.distance);c=i/o.threshold*d}else c=i;let l=o.speed;if(l===c)return c;let a=c;return lnew we,n=>n.reset()),this._actionPool=new B(()=>new Te,n=>n.reset()),this._emitter=new ut,this._frameRead=this._frameRead.bind(this),this._frameWrite=this._frameWrite.bind(this)}_frameRead(e){this._isDestroyed||(e&&this._tickTime?(this._tickDeltaTime=e-this._tickTime,this._tickTime=e,this._updateItems(),this._updateRequests(),this._updateActions()):(this._tickTime=e,this._tickDeltaTime=0))}_frameWrite(){this._isDestroyed||this._applyActions()}_startTicking(){this._isTicking||(this._isTicking=!0,u.on(v,this._frameRead),u.on(D,this._frameWrite))}_stopTicking(){this._isTicking&&(this._isTicking=!1,this._tickTime=0,this._tickDeltaTime=0,u.off(v,this._frameRead),u.off(D,this._frameWrite))}_getItemClientRect(e,t={width:0,height:0,left:0,right:0,top:0,bottom:0}){let{clientRect:n}=e;return t.left=n.left,t.top=n.top,t.width=n.width,t.height=n.height,t.right=n.left+n.width,t.bottom=n.top+n.height,t}_requestItemScroll(e,t,n,r,s,o,c){let l=this._requests[t],a=l.get(e);a?(a.element!==n||a.direction!==r)&&a.reset():(a=this._requestPool.pick(),l.set(e,a)),a.item=e,a.element=n,a.direction=r,a.threshold=s,a.distance=o,a.maxValue=c}_cancelItemScroll(e,t){let n=this._requests[t],r=n.get(e);r&&(r.action&&r.action.removeRequest(r),this._requestPool.put(r),n.delete(e))}_checkItemOverlap(e,t,n){let{inertAreaSize:r,targets:s}=e;if(!s.length){t&&this._cancelItemScroll(e,h.x),n&&this._cancelItemScroll(e,h.y);return}let o=this._itemData.get(e),c=o?.directionX,l=o?.directionY;if(!c&&!l){t&&this._cancelItemScroll(e,h.x),n&&this._cancelItemScroll(e,h.y);return}let a=this._getItemClientRect(e,xe),d=null,m=-1/0,y=0,g=-1/0,S=p.none,b=0,f=0,E=null,x=-1/0,V=0,U=-1/0,se=p.none,Ce=0,Le=0,ae=0;for(;ae=m&&F>0&&(R>m||O>g)){let T=0,C=p.none,L=be(Ke,P.width),z=De(L,r,a.width,P.width);c===p.right?(T=P.right+z-a.right,T<=L&&!re(N(k),F)&&(C=p.right)):c===p.left&&(T=a.left-(P.left-z),T<=L&&N(k)>0&&(C=p.left)),C&&(d=k,m=R,y=L,g=O,S=C,b=T,f=F)}if(ce&&R>=x&&j>0&&(R>x||O>U)){let T=0,C=H.none,L=be(Ke,P.height),z=De(L,r,a.height,P.height);l===p.down?(T=P.bottom+z-a.bottom,T<=L&&!re(q(k),j)&&(C=p.down)):l===p.up&&(T=a.top-(P.top-z),T<=L&&q(k)>0&&(C=p.up)),C&&(E=k,x=R,V=L,U=O,se=C,Ce=T,Le=j)}}t&&(d&&S?this._requestItemScroll(e,h.x,d,S,y,b,f):this._cancelItemScroll(e,h.x)),n&&(E&&se?this._requestItemScroll(e,h.y,E,se,V,Ce,Le):this._cancelItemScroll(e,h.y))}_updateScrollRequest(e){let t=e.item,{inertAreaSize:n,smoothStop:r,targets:s}=t,o=this._getItemClientRect(t,xe),c=null,l=0;for(;lf)break;let V=m?N(d):q(d);if(c=M.forward&e.direction?re(V,y):V<=0,c)break;return e.maxValue=y,e.threshold=f,e.distance=x,e.isEnding=!1,!0}return r===!0&&e.speed>0?(c===null&&(c=e.hasReachedEnd()),e.isEnding=!c):e.isEnding=!1,e.isEnding}_updateItems(){for(let e=0;eo?p.right:rc?p.down:s0&&this._tickTime-c>this.settings.overlapCheckInterval,a=!0,d=t.get(s);d&&d.isActive&&(a=!this._updateScrollRequest(d),a&&(l=!0,this._cancelItemScroll(s,h.x)));let m=!0,y=n.get(s);y&&y.isActive&&(m=!this._updateScrollRequest(y),m&&(l=!0,this._cancelItemScroll(s,h.y))),l&&(o.overlapCheckRequestTime=0,this._checkItemOverlap(s,a,m))}}_requestAction(e,t){let n=t===h.x,r=null,s=0;for(;s{let{drag:e}=i,t=e?.items[0];if(t)G.x=t.pX,G.y=t.pY;else{let n=e&&(e.nextMoveEvent||e.startEvent);G.x=n?n.x:0,G.y=n?n.y:0}return G},getClientRect:i=>{let{drag:e}=i,t=e?.items[0];if(t&&t.element){let{left:n,top:r,width:s,height:o}=t.element.getBoundingClientRect();K.left=n,K.top=r,K.width=s,K.height=o}else{let n=e&&(e.nextMoveEvent||e.startEvent);K.left=n?n.x-25:0,K.top=n?n.y-25:0,K.width=n?50:0,K.height=n?50:0}return K},onStart:null,onStop:null}}var Ae=class{constructor(e,t){this._draggableAutoScroll=e,this._draggable=t,this._position={x:0,y:0},this._clientRect={left:0,top:0,width:0,height:0}}_getSettings(){return this._draggableAutoScroll.settings}get targets(){let{targets:e}=this._getSettings();return typeof e=="function"&&(e=e(this._draggable)),e}get position(){let{getPosition:e}=this._getSettings();if(typeof e=="function"){let t=e(this._draggable);this._position.x=t.x,this._position.y=t.y}else this._position.x=0,this._position.y=0;return this._position}get clientRect(){let{getClientRect:e}=this._getSettings();if(typeof e=="function"){let{left:t,top:n,width:r,height:s}=e(this._draggable);this._clientRect.left=t,this._clientRect.top=n,this._clientRect.width=r,this._clientRect.height=s}else this._clientRect.left=0,this._clientRect.top=0,this._clientRect.width=0,this._clientRect.height=0;return this._clientRect}get inertAreaSize(){return this._getSettings().inertAreaSize}get smoothStop(){return this._getSettings().smoothStop}get speed(){return this._getSettings().speed}get onStart(){return this._getSettings().onStart}get onStop(){return this._getSettings().onStop}onPrepareScrollEffect(){let e=this._draggable._updateId;u.off(v,e),u.off(D,e),this._draggable._preparePositionUpdate()}onApplyScrollEffect(){this._draggable._applyPositionUpdate()}},ke=class{constructor(e,t={}){this.name="autoscroll",this.version="0.0.2",this.settings=this._parseSettings(t),this._autoScrollProxy=null,e.on("start",()=>{this._autoScrollProxy||(this._autoScrollProxy=new Ae(this,e),Ie.addItem(this._autoScrollProxy))}),e.on("end",()=>{this._autoScrollProxy&&(Ie.removeItem(this._autoScrollProxy),this._autoScrollProxy=null)})}_parseSettings(e,t=ft()){let{targets:n=t.targets,inertAreaSize:r=t.inertAreaSize,speed:s=t.speed,smoothStop:o=t.smoothStop,getPosition:c=t.getPosition,getClientRect:l=t.getClientRect,onStart:a=t.onStart,onStop:d=t.onStop}=e||{};return{targets:n,inertAreaSize:r,speed:s,smoothStop:o,getPosition:c,getClientRect:l,onStart:a,onStop:d}}updateSettings(e={}){this.settings=this._parseSettings(e,this.settings)}};function dr(i){return e=>{let t=new ke(e,i),n=e;return n.plugins[t.name]=t,n}}var Qe=new Set(["auto","scroll","overlay"]);function oe(i){let e=te(i);return!!(Qe.has(e.overflowY)||Qe.has(e.overflowX))}function Ze(i){return i instanceof Document}function et(i,e=[]){let t=i?.parentNode;for(;t&&!Ze(t);)t instanceof Element?(oe(t)&&e.push(t),t=t.parentNode):t instanceof ShadowRoot?t=t.host:t=t.parentNode;return e.push(window),e}function gt(i){let e=[];return oe(i)&&e.push(i),et(i,e),e}function br(i={}){let e,t=0,n=null,r,{timeout:s=250,fallback:o=()=>!0}=i,c=d=>d.preventDefault(),l=d=>{if(t){if(e){d.cancelable&&d.preventDefault();return}e===void 0&&(d.cancelable&&d.timeStamp-t>s?(e=!0,d.preventDefault()):e=!1)}};return d=>{if(!(d.sensor instanceof Y))return o(d);let{draggable:m,sensor:y,event:g}=d,S=g;if(S.pointerType==="touch"){if(S.type==="start"&&(S.srcEvent.type==="pointerdown"||S.srcEvent.type==="touchstart")){n=S.target;let b=n?gt(n):[];b.forEach(E=>{E.addEventListener("touchmove",l,{passive:!1,capture:!0})});let f=()=>{t&&(m.off("end",f),m.sensors.forEach(E=>{E instanceof Y&&E.off("end",f)}),n?.removeEventListener("contextmenu",c),b.forEach(E=>{E.removeEventListener("touchmove",l,{capture:!0})}),t=0,e=void 0,n=null,r=void window.clearTimeout(r))};e=void 0,t=S.srcEvent.timeStamp,n?.addEventListener("contextmenu",c),m.on("end",f),m.sensors.forEach(E=>{E instanceof Y&&E.off("end",f)}),s>0&&(r=window.setTimeout(()=>{m.resolveStartPredicate(y),e=!0,r=void 0},s))}return e}return S.type==="start"&&!S.srcEvent.button}}export{h as AUTO_SCROLL_AXIS,M as AUTO_SCROLL_AXIS_DIRECTION,p as AUTO_SCROLL_DIRECTION,ie as AutoScroll,$ as BaseMotionSensor,W as BaseSensor,Be as Draggable,ke as DraggableAutoScroll,Ye as KeyboardMotionSensor,Xe as KeyboardSensor,Y as PointerSensor,_ as SensorEventType,Ie as autoScroll,dr as autoScrollPlugin,Je as autoScrollSmoothSpeed,br as createPointerSensorStartPredicate,wt as setTicker,u as ticker,v as tickerReadPhase,D as tickerWritePhase}; diff --git a/dist/dragdoll.umd.js b/dist/dragdoll.umd.js deleted file mode 100644 index 453a1d5..0000000 --- a/dist/dragdoll.umd.js +++ /dev/null @@ -1 +0,0 @@ -!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("eventti"),require("tikki")):"function"==typeof define&&define.amd?define(["exports","eventti","tikki"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).DragDoll={},t.eventti,t.tikki)}(this,(function(t,e,i){"use strict";const s={start:"start",move:"move",cancel:"cancel",end:"end",destroy:"destroy"};class n{constructor(){this.drag=null,this.isDestroyed=!1,this._emitter=new e.Emitter}_createDragData(t){return{x:t.x,y:t.y}}_updateDragData(t){this.drag&&(this.drag.x=t.x,this.drag.y=t.y)}_resetDragData(){this.drag=null}_start(t){this.isDestroyed||this.drag||(this.drag=this._createDragData(t),this._emitter.emit(s.start,t))}_move(t){this.drag&&(this._updateDragData(t),this._emitter.emit(s.move,t))}_end(t){this.drag&&(this._updateDragData(t),this._emitter.emit(s.end,t),this._resetDragData())}_cancel(t){this.drag&&(this._updateDragData(t),this._emitter.emit(s.cancel,t),this._resetDragData())}on(t,e,i){return this._emitter.on(t,e,i)}off(t,e){this._emitter.off(t,e)}cancel(){this.drag&&(this._emitter.emit(s.cancel,{type:s.cancel,x:this.drag.x,y:this.drag.y}),this._resetDragData())}destroy(){this.isDestroyed||(this.isDestroyed=!0,this.cancel(),this._emitter.emit(s.destroy,{type:s.destroy}),this._emitter.off())}}t.tickerReadPhase=Symbol(),t.tickerWritePhase=Symbol(),t.ticker=new i.Ticker({phases:[t.tickerReadPhase,t.tickerWritePhase]});class o extends n{constructor(){super(),this.drag=null,this._direction={x:0,y:0},this._speed=0,this._tick=this._tick.bind(this)}_createDragData(t){return Object.assign(Object.assign({},super._createDragData(t)),{time:0,deltaTime:0})}_start(e){this.isDestroyed||this.drag||(super._start(e),t.ticker.on(t.tickerReadPhase,this._tick))}_end(e){this.drag&&(t.ticker.off(t.tickerReadPhase,this._tick),super._end(e))}_cancel(e){this.drag&&(t.ticker.off(t.tickerReadPhase,this._tick),super._cancel(e))}_tick(t){if(this.drag)if(t&&this.drag.time){this.drag.deltaTime=t-this.drag.time,this.drag.time=t;const e={type:"tick",time:this.drag.time,deltaTime:this.drag.deltaTime};if(this._emitter.emit("tick",e),!this.drag)return;const i=this._speed*(this.drag.deltaTime/1e3),s=this._direction.x*i,n=this._direction.y*i;(s||n)&&this._move({type:"move",x:this.drag.x+s,y:this.drag.y+n})}else this.drag.time=t,this.drag.deltaTime=0}}function r(t,e){if("pointerId"in t)return t.pointerId===e?t:null;if("changedTouches"in t){let i=0;for(;i{let t=!1;try{const e=Object.defineProperty({},"passive",{get:function(){t=!0}});window.addEventListener("testPassive",null,e),window.removeEventListener("testPassive",null,e)}catch(t){}return t})(),l=h&&"ontouchstart"in window,d=h&&!!window.PointerEvent,u=!!(h&&navigator.vendor&&navigator.vendor.indexOf("Apple")>-1&&navigator.userAgent&&-1==navigator.userAgent.indexOf("CriOS")&&-1==navigator.userAgent.indexOf("FxiOS"));function p(t={}){const{capture:e=!0,passive:i=!0}=t;return c?{capture:e,passive:i}:{capture:e}}function m(t){return"auto"===t||void 0===t?d?"pointer":l?"touch":"mouse":t}const _={pointer:{start:"pointerdown",move:"pointermove",cancel:"pointercancel",end:"pointerup"},touch:{start:"touchstart",move:"touchmove",cancel:"touchcancel",end:"touchend"},mouse:{start:"mousedown",move:"mousemove",cancel:"",end:"mouseup"}};class f{constructor(t,i={}){const{listenerOptions:s={},sourceEvents:n="auto",startPredicate:o=(t=>!("button"in t&&t.button>0))}=i;this.element=t,this.drag=null,this.isDestroyed=!1,this._areWindowListenersBound=!1,this._startPredicate=o,this._listenerOptions=p(s),this._sourceEvents=m(n),this._emitter=new e.Emitter,this._onStart=this._onStart.bind(this),this._onMove=this._onMove.bind(this),this._onCancel=this._onCancel.bind(this),this._onEnd=this._onEnd.bind(this),t.addEventListener(_[this._sourceEvents].start,this._onStart,this._listenerOptions)}_getTrackedPointerEventData(t){return this.drag?r(t,this.drag.pointerId):null}_onStart(t){if(this.isDestroyed||this.drag)return;if(!this._startPredicate(t))return;const e=function(t){return"pointerId"in t?t.pointerId:"changedTouches"in t?t.changedTouches[0]?t.changedTouches[0].identifier:null:-1}(t);if(null===e)return;const i=r(t,e);if(null===i)return;const n={pointerId:e,pointerType:a(t),x:i.clientX,y:i.clientY};this.drag=n;const o=Object.assign(Object.assign({},n),{type:s.start,srcEvent:t,target:i.target});this._emitter.emit(o.type,o),this.drag&&this._bindWindowListeners()}_onMove(t){if(!this.drag)return;const e=this._getTrackedPointerEventData(t);if(!e)return;this.drag.x=e.clientX,this.drag.y=e.clientY;const i=Object.assign({type:s.move,srcEvent:t,target:e.target},this.drag);this._emitter.emit(i.type,i)}_onCancel(t){if(!this.drag)return;const e=this._getTrackedPointerEventData(t);if(!e)return;this.drag.x=e.clientX,this.drag.y=e.clientY;const i=Object.assign({type:s.cancel,srcEvent:t,target:e.target},this.drag);this._emitter.emit(i.type,i),this._resetDrag()}_onEnd(t){if(!this.drag)return;const e=this._getTrackedPointerEventData(t);if(!e)return;this.drag.x=e.clientX,this.drag.y=e.clientY;const i=Object.assign({type:s.end,srcEvent:t,target:e.target},this.drag);this._emitter.emit(i.type,i),this._resetDrag()}_bindWindowListeners(){if(this._areWindowListenersBound)return;const{move:t,end:e,cancel:i}=_[this._sourceEvents];window.addEventListener(t,this._onMove,this._listenerOptions),window.addEventListener(e,this._onEnd,this._listenerOptions),i&&window.addEventListener(i,this._onCancel,this._listenerOptions),this._areWindowListenersBound=!0}_unbindWindowListeners(){if(this._areWindowListenersBound){const{move:t,end:e,cancel:i}=_[this._sourceEvents];window.removeEventListener(t,this._onMove,this._listenerOptions),window.removeEventListener(e,this._onEnd,this._listenerOptions),i&&window.removeEventListener(i,this._onCancel,this._listenerOptions),this._areWindowListenersBound=!1}}_resetDrag(){this.drag=null,this._unbindWindowListeners()}cancel(){if(!this.drag)return;const t=Object.assign({type:s.cancel,srcEvent:null,target:null},this.drag);this._emitter.emit(t.type,t),this._resetDrag()}updateSettings(t){if(this.isDestroyed)return;const{listenerOptions:e,sourceEvents:i,startPredicate:s}=t,n=m(i),o=p(e);s&&this._startPredicate!==s&&(this._startPredicate=s),(e&&(this._listenerOptions.capture!==o.capture||this._listenerOptions.passive===o.passive)||i&&this._sourceEvents!==n)&&(this.element.removeEventListener(_[this._sourceEvents].start,this._onStart,this._listenerOptions),this._unbindWindowListeners(),this.cancel(),i&&(this._sourceEvents=n),e&&o&&(this._listenerOptions=o),this.element.addEventListener(_[this._sourceEvents].start,this._onStart,this._listenerOptions))}on(t,e,i){return this._emitter.on(t,e,i)}off(t,e){this._emitter.off(t,e)}destroy(){this.isDestroyed||(this.isDestroyed=!0,this.cancel(),this._emitter.emit(s.destroy,{type:s.destroy}),this._emitter.off(),this.element.removeEventListener(_[this._sourceEvents].start,this._onStart,this._listenerOptions))}}const g=["start","cancel","end","moveLeft","moveRight","moveUp","moveDown"];function v(t,e){if(!t.size||!e.size)return 1/0;let i=1/0;for(const s of t){const t=e.get(s);void 0!==t&&t-1||o.indexOf("layout")>-1))return!0;if(!u){const e=E(t,"filter");if(e&&"none"!==e)return!0;const i=E(t,"will-change");if(i&&(i.indexOf("transform")>-1||i.indexOf("perspective")>-1))return!0}return!1}function w(t){let e=t||document;for(;e&&e!==document&&!S(t);)e=e.parentElement||document;return e}function D(t,e){return parseFloat(E(t,e))||0}function k(t,e={left:0,top:0}){if(e.left=0,e.top=0,t===document)return e;if(e.left=window.pageXOffset||0,e.top=window.pageYOffset||0,"self"in t&&t.self===window.self)return e;const{left:i,top:s}=t.getBoundingClientRect();return e.left+=i,e.top+=s,e.left+=D(t,"border-left-width"),e.top+=D(t,"border-top-width"),e}const x={left:0,top:0},P={left:0,top:0};function b(t,e,i={left:0,top:0}){return i.left=0,i.top=0,t===e||(k(t,x),k(e,P),i.left=P.left-x.left,i.top=P.top-x.top),i}const T=!c||{capture:!0,passive:!0},R={left:0,top:0},I={x:0,y:0};var q;!function(t){t[t.PENDING=0]="PENDING",t[t.RESOLVED=1]="RESOLVED",t[t.REJECTED=2]="REJECTED"}(q||(q={}));class L{constructor(t,e,i,s,n){this.element=t,this.rootParent=e,this.rootContainingBlock=i,this.dragParent=s,this.dragContainingBlock=n,this.x=0,this.y=0,this.pX=0,this.pY=0,this._updateDiffX=0,this._updateDiffY=0,this._moveDiffX=0,this._moveDiffY=0,this._containerDiffX=0,this._containerDiffY=0,this._transform=""}}class M{constructor(){this.sensor=null,this.isEnded=!1,this.isStarted=!1,this.startEvent=null,this.nextMoveEvent=null,this.prevMoveEvent=null,this.endEvent=null,this.items=[]}}class O{constructor(t,e){this._data=[],this._createObject=t,this._onPut=e}pick(){return this._data.length?this._data.pop():this._createObject()}put(t){-1===this._data.indexOf(t)&&(this._onPut&&this._onPut(t),this._data.push(t))}reset(){this._data.length=0}}function X(t,e){return!(t.right<=e.left||e.right<=t.left||t.bottom<=e.top||e.bottom<=t.top)}function C(t,e){const i=function(t,e){return X(t,e)?(Math.min(t.right,e.right)-Math.max(t.left,e.left))*(Math.min(t.bottom,e.bottom)-Math.max(t.top,e.top)):0}(t,e);if(!i)return 0;return i/(Math.min(t.width,e.width)*Math.min(t.height,e.height))*100}function K(t){return t===window}function Y(t,e={width:0,height:0,left:0,right:0,top:0,bottom:0}){if(K(t))e.width=document.documentElement.clientWidth,e.height=document.documentElement.clientHeight,e.left=0,e.right=e.width,e.top=0,e.bottom=e.height;else{const{left:i,top:s}=t.getBoundingClientRect(),n=t.clientLeft||D(t,"border-left-width"),o=t.clientTop||D(t,"border-top-width");e.width=t.clientWidth,e.height=t.clientHeight,e.left=i+n,e.right=e.left+e.width,e.top=s+o,e.bottom=e.top+e.height}return e}function A(t,e,i,s){return Math.sqrt(Math.pow(i-t,2)+Math.pow(s-e,2))}function W(t){return K(t)||t===document.documentElement||t===document.body?window:t}function N(t){return K(t)?t.pageXOffset:t.scrollLeft}function U(t){return K(t)&&(t=document.documentElement),t.scrollWidth-t.clientWidth}function V(t){return K(t)?t.pageYOffset:t.scrollTop}function B(t){return K(t)&&(t=document.documentElement),t.scrollHeight-t.clientHeight}const j={width:0,height:0,left:0,right:0,top:0,bottom:0},z=Object.assign({},j),G=Object.assign({},j),$={direction:"none",threshold:0,distance:0,value:0,maxValue:0,duration:0,speed:0,deltaTime:0,isEnding:!1},H={x:1,y:2},J={forward:4,reverse:8},F={none:0,left:H.x|J.reverse,right:H.x|J.forward},Q={none:0,up:H.y|J.reverse,down:H.y|J.forward},Z=Object.assign(Object.assign({},F),Q);function tt(t){switch(t){case F.none:case Q.none:return"none";case F.left:return"left";case F.right:return"right";case Q.up:return"up";case Q.down:return"down";default:throw new Error(`Unknown direction value: ${t}`)}}function et(t,e,i){let{left:s=0,right:n=0,top:o=0,bottom:r=0}=e;return s=Math.max(0,s),n=Math.max(0,n),o=Math.max(0,o),r=Math.max(0,r),i.width=t.width+s+n,i.height=t.height+o+r,i.left=t.left-s,i.top=t.top-o,i.right=t.right+n,i.bottom=t.bottom+r,i}function it(t,e){return Math.ceil(t)>=Math.floor(e)}function st(t,e){return Math.min(e/2,t)}function nt(t,e,i,s){return Math.max(0,i+2*t+s*e-s)/2}class ot{constructor(){this.positionX=0,this.positionY=0,this.directionX=Z.none,this.directionY=Z.none,this.overlapCheckRequestTime=0}}class rt{constructor(){this.element=null,this.requestX=null,this.requestY=null,this.scrollLeft=0,this.scrollTop=0}reset(){this.requestX&&(this.requestX.action=null),this.requestY&&(this.requestY.action=null),this.element=null,this.requestX=null,this.requestY=null,this.scrollLeft=0,this.scrollTop=0}addRequest(t){H.x&t.direction?(this.requestX&&this.removeRequest(this.requestX),this.requestX=t):(this.requestY&&this.removeRequest(this.requestY),this.requestY=t),t.action=this}removeRequest(t){this.requestX===t?(this.requestX=null,t.action=null):this.requestY===t&&(this.requestY=null,t.action=null)}computeScrollValues(){this.element&&(this.scrollLeft=this.requestX?this.requestX.value:N(this.element),this.scrollTop=this.requestY?this.requestY.value:V(this.element))}scroll(){this.element&&(this.element.scrollTo?this.element.scrollTo(this.scrollLeft,this.scrollTop):(this.element.scrollLeft=this.scrollLeft,this.element.scrollTop=this.scrollTop))}}class at{constructor(){this.item=null,this.element=null,this.isActive=!1,this.isEnding=!1,this.direction=0,this.value=NaN,this.maxValue=0,this.threshold=0,this.distance=0,this.deltaTime=0,this.speed=0,this.duration=0,this.action=null}reset(){this.isActive&&this.onStop(),this.item=null,this.element=null,this.isActive=!1,this.isEnding=!1,this.direction=0,this.value=NaN,this.maxValue=0,this.threshold=0,this.distance=0,this.deltaTime=0,this.speed=0,this.duration=0,this.action=null}hasReachedEnd(){return J.forward&this.direction?it(this.value,this.maxValue):this.value<=0}computeCurrentScrollValue(){return this.element?this.value!=this.value?H.x&this.direction?N(this.element):V(this.element):Math.max(0,Math.min(this.value,this.maxValue)):0}computeNextScrollValue(){const t=this.speed*(this.deltaTime/1e3),e=J.forward&this.direction?this.value+t:this.value-t;return Math.max(0,Math.min(e,this.maxValue))}computeSpeed(){if(!this.item||!this.element)return 0;const{speed:t}=this.item;return"function"==typeof t?($.direction=tt(this.direction),$.threshold=this.threshold,$.distance=this.distance,$.value=this.value,$.maxValue=this.maxValue,$.duration=this.duration,$.speed=this.speed,$.deltaTime=this.deltaTime,$.isEnding=this.isEnding,t(this.element,$)):t}tick(t){return this.isActive||(this.isActive=!0,this.onStart()),this.deltaTime=t,this.value=this.computeCurrentScrollValue(),this.speed=this.computeSpeed(),this.value=this.computeNextScrollValue(),this.duration+=t,this.value}onStart(){if(!this.item||!this.element)return;const{onStart:t}=this.item;"function"==typeof t&&t(this.element,tt(this.direction))}onStop(){if(!this.item||!this.element)return;const{onStop:t}=this.item;"function"==typeof t&&t(this.element,tt(this.direction))}}function ht(t=500,e=.5,i=.25){const s=t*(e>0?1/e:1/0),n=t*(i>0?1/i:1/0);return function(e,i){let o=0;if(!i.isEnding)if(i.threshold>0){const e=i.threshold-Math.max(0,i.distance);o=t/i.threshold*e}else o=t;const r=i.speed;if(r===o)return o;let a=o;return rnew at),(t=>t.reset())),this._actionPool=new O((()=>new rt),(t=>t.reset())),this._emitter=new e.Emitter,this._frameRead=this._frameRead.bind(this),this._frameWrite=this._frameWrite.bind(this)}_frameRead(t){this._isDestroyed||(t&&this._tickTime?(this._tickDeltaTime=t-this._tickTime,this._tickTime=t,this._updateItems(),this._updateRequests(),this._updateActions()):(this._tickTime=t,this._tickDeltaTime=0))}_frameWrite(){this._isDestroyed||this._applyActions()}_startTicking(){this._isTicking||(this._isTicking=!0,t.ticker.on(t.tickerReadPhase,this._frameRead),t.ticker.on(t.tickerWritePhase,this._frameWrite))}_stopTicking(){this._isTicking&&(this._isTicking=!1,this._tickTime=0,this._tickDeltaTime=0,t.ticker.off(t.tickerReadPhase,this._frameRead),t.ticker.off(t.tickerWritePhase,this._frameWrite))}_getItemClientRect(t,e={width:0,height:0,left:0,right:0,top:0,bottom:0}){const{clientRect:i}=t;return e.left=i.left,e.top=i.top,e.width=i.width,e.height=i.height,e.right=i.left+i.width,e.bottom=i.top+i.height,e}_requestItemScroll(t,e,i,s,n,o,r){const a=this._requests[e];let h=a.get(t);h?h.element===i&&h.direction===s||h.reset():(h=this._requestPool.pick(),a.set(t,h)),h.item=t,h.element=i,h.direction=s,h.threshold=n,h.distance=o,h.maxValue=r}_cancelItemScroll(t,e){const i=this._requests[e],s=i.get(t);s&&(s.action&&s.action.removeRequest(s),this._requestPool.put(s),i.delete(t))}_checkItemOverlap(t,e,i){const{inertAreaSize:s,targets:n}=t;if(!n.length)return e&&this._cancelItemScroll(t,H.x),void(i&&this._cancelItemScroll(t,H.y));const o=this._itemData.get(t),r=o.directionX,a=o.directionY;if(!r&&!a)return e&&this._cancelItemScroll(t,H.x),void(i&&this._cancelItemScroll(t,H.y));const h=this._getItemClientRect(t,j);let c=null,l=-1/0,d=0,u=-1/0,p=Z.none,m=0,_=0,f=null,g=-1/0,v=0,y=-1/0,E=Z.none,S=0,w=0,D=0;for(;Dx.bottom?A(k.right,k.top,x.left,x.bottom):x.left-k.right:k.left>x.right?k.bottomx.bottom?A(k.left,k.top,x.right,x.bottom):k.left-x.right:k.bottom=l&&I>0&&(T>l||M>u)){let t=0,e=Z.none;const i=st(o,L.width),n=nt(i,s,h.width,L.width);r===Z.right?(t=L.right+n-h.right,t<=i&&!it(N(R),I)&&(e=Z.right)):r===Z.left&&(t=h.left-(L.left-n),t<=i&&N(R)>0&&(e=Z.left)),e&&(c=R,l=T,d=i,u=M,p=e,m=t,_=I)}if(b&&T>=g&&q>0&&(T>g||M>y)){let t=0,e=Q.none;const i=st(o,L.height),n=nt(i,s,h.height,L.height);a===Z.down?(t=L.bottom+n-h.bottom,t<=i&&!it(V(R),q)&&(e=Z.down)):a===Z.up&&(t=h.top-(L.top-n),t<=i&&V(R)>0&&(e=Z.up)),e&&(f=R,g=T,v=i,y=M,E=e,S=t,w=q)}}var k,x;e&&(c&&p?this._requestItemScroll(t,H.x,c,p,d,m,_):this._cancelItemScroll(t,H.x)),i&&(f&&E?this._requestItemScroll(t,H.y,f,E,v,S,w):this._cancelItemScroll(t,H.y))}_updateScrollRequest(t){const e=t.item,{inertAreaSize:i,smoothStop:s,targets:n}=e,o=this._getItemClientRect(e,j);let r=null,a=0;for(;ad)break;const m=h?N(s):V(s);if(r=J.forward&t.direction?it(m,c):m<=0,r)break;return t.maxValue=c,t.threshold=d,t.distance=p,t.isEnding=!1,!0}return!0===s&&t.speed>0?(null===r&&(r=t.hasReachedEnd()),t.isEnding=!r):t.isEnding=!1,t.isEnding}_updateItems(){for(let t=0;to?Z.right:sr?Z.down:n0&&this._tickTime-r>this.settings.overlapCheckInterval,h=!0;const c=e.get(n);c&&c.isActive&&(h=!this._updateScrollRequest(c),h&&(a=!0,this._cancelItemScroll(n,H.x)));let l=!0;const d=i.get(n);d&&d.isActive&&(l=!this._updateScrollRequest(d),l&&(a=!0,this._cancelItemScroll(n,H.y))),a&&(o.overlapCheckRequestTime=0,this._checkItemOverlap(n,h,l))}}_requestAction(t,e){const i=e===H.x;let s=null,n=0;for(;n{this._autoScrollProxy||(this._autoScrollProxy=new pt(this,t),lt.addItem(this._autoScrollProxy))})),t.on("beforeend",(()=>{this._autoScrollProxy&&(lt.removeItem(this._autoScrollProxy),this._autoScrollProxy=null)}))}_parseSettings(t,e=function(){return{targets:[],inertAreaSize:.2,speed:ht(),smoothStop:!1,getPosition:t=>{const{drag:e}=t,i=null==e?void 0:e.items[0];if(i)dt.x=i.pX,dt.y=i.pY;else{const t=e&&(e.nextMoveEvent||e.startEvent);dt.x=t?t.x:0,dt.y=t?t.y:0}return dt},getClientRect:t=>{const{drag:e}=t,i=null==e?void 0:e.items[0];if(i&&i.element){const{left:t,top:e,width:s,height:n}=i.element.getBoundingClientRect();ut.left=t,ut.top=e,ut.width=s,ut.height=n}else{const t=e&&(e.nextMoveEvent||e.startEvent);ut.left=t?t.x-25:0,ut.top=t?t.y-25:0,ut.width=t?50:0,ut.height=t?50:0}return ut},onStart:null,onStop:null}}()){const{targets:i=e.targets,inertAreaSize:s=e.inertAreaSize,speed:n=e.speed,smoothStop:o=e.smoothStop,getPosition:r=e.getPosition,getClientRect:a=e.getClientRect,onStart:h=e.onStart,onStop:c=e.onStop}=t||{};return{targets:i,inertAreaSize:s,speed:n,smoothStop:o,getPosition:r,getClientRect:a,onStart:h,onStop:c}}updateSettings(t={}){this.settings=this._parseSettings(t,this.settings)}}const _t=new Set(["auto","scroll","overlay"]);function ft(t){return!!(_t.has(E(t,"overflow"))||_t.has(E(t,"overflow-x"))||_t.has(E(t,"overflow-y")))}function gt(t){const e=[];return ft(t)&&e.push(t),function(t,e=[]){let i=null;for(;t&&(i=t.parentNode,i&&!(i instanceof Document));)ft(t="host"in i?i.host:i)&&e.push(t);e.push(window)}(t,e),e}t.AUTO_SCROLL_AXIS=H,t.AUTO_SCROLL_AXIS_DIRECTION=J,t.AUTO_SCROLL_DIRECTION=Z,t.AutoScroll=ct,t.BaseMotionSensor=o,t.BaseSensor=n,t.Draggable=class{constructor(t,i={}){this.sensors=t,this.settings=this._parseSettings(i),this.plugins={},this.drag=null,this.isDestroyed=!1,this._sensorData=new Map,this._emitter=new e.Emitter,this._startId=Symbol(),this._moveId=Symbol(),this._updateId=Symbol(),this._onMove=this._onMove.bind(this),this._onScroll=this._onScroll.bind(this),this._onEnd=this._onEnd.bind(this),this._prepareStart=this._prepareStart.bind(this),this._applyStart=this._applyStart.bind(this),this._prepareMove=this._prepareMove.bind(this),this._applyMove=this._applyMove.bind(this),this._preparePositionUpdate=this._preparePositionUpdate.bind(this),this._applyPositionUpdate=this._applyPositionUpdate.bind(this),this.sensors.forEach((t=>{this._sensorData.set(t,{predicateState:q.PENDING,predicateEvent:null,onMove:e=>this._onMove(e,t),onEnd:e=>this._onEnd(e,t)});const{onMove:e,onEnd:i}=this._sensorData.get(t);t.on("start",e),t.on("move",e),t.on("cancel",i),t.on("end",i),t.on("destroy",i)}))}_parseSettings(t,e=function(){return{container:null,startPredicate:()=>!0,getElements:()=>null,releaseElements:()=>{},getStartPosition:({item:t})=>{const e=E(t.element,"transform");return t._transform=e&&"none"!==e&&"matrix(1, 0, 0, 1, 0, 0)"!==e&&"matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)"!==e?e:"",{x:0,y:0}},setPosition:({item:t,x:e,y:i})=>{t.element.style.transform=`translate(${e}px, ${i}px) ${t._transform}`},getPositionChange:({event:t,prevEvent:e})=>(I.x=t.x-e.x,I.y=t.y-e.y,I)}}()){const{container:i=e.container,startPredicate:s=e.startPredicate,getElements:n=e.getElements,releaseElements:o=e.releaseElements,getStartPosition:r=e.getStartPosition,setPosition:a=e.setPosition,getPositionChange:h=e.getPositionChange}=t||{};return{container:i,startPredicate:s,getElements:n,releaseElements:o,getStartPosition:r,setPosition:a,getPositionChange:h}}_emit(t,...e){this._emitter.emit(t,...e)}_onMove(e,i){const s=this._sensorData.get(i);if(s)switch(s.predicateState){case q.PENDING:{s.predicateEvent=e;const t=this.settings.startPredicate({draggable:this,sensor:i,event:e});!0===t?this.resolveStartPredicate(i):!1===t&&this.rejectStartPredicate(i);break}case q.RESOLVED:this.drag&&(this.drag.nextMoveEvent=e,t.ticker.once(t.tickerReadPhase,this._prepareMove,this._moveId),t.ticker.once(t.tickerWritePhase,this._applyMove,this._moveId))}}_onScroll(){this.updatePosition()}_onEnd(t,e){const i=this._sensorData.get(e);i&&(this.drag?i.predicateState===q.RESOLVED&&(this.drag.endEvent=t,this._sensorData.forEach((t=>{t.predicateState=q.PENDING,t.predicateEvent=null})),this.stop()):(i.predicateState=q.PENDING,i.predicateEvent=null))}_prepareStart(){const{drag:t}=this;if(!t||!t.startEvent)return;const e=this.settings.getElements({draggable:this,sensor:t.sensor,startEvent:t.startEvent})||[];t.items=e.map((e=>{if(!e.isConnected)throw new Error("Element is not connected");const i=e.parentNode,s=w(i),n=this.settings.container||i,o=n===i?s:w(n),r=new L(e,i,s,n,o),a=e.getBoundingClientRect();if(r.x=a.left,r.y=a.top,s!==o){const{left:t,top:e}=b(o,s,R);r._containerDiffX=t,r._containerDiffY=e}const{x:h,y:c}=this.settings.getStartPosition({draggable:this,sensor:t.sensor,item:r});return r.pX=h,r.pY=c,r}))}_applyStart(){const t=this.drag;if(!t||!t.startEvent)return;if(this._emit("beforestart",t.startEvent),this.drag!==t)return;const{container:e}=this.settings;if(e)for(const i of t.items)i.element&&(i.element.parentNode!==e&&(e.appendChild(i.element),i.pX+=i._containerDiffX,i.pY+=i._containerDiffY),this.settings.setPosition({phase:"start",draggable:this,sensor:t.sensor,item:i,x:i.pX,y:i.pY}));window.addEventListener("scroll",this._onScroll,T),t.isStarted=!0,this._emit("start",t.startEvent)}_prepareMove(){const{drag:t}=this;if(!t||!t.startEvent)return;const e=t.nextMoveEvent,i=t.prevMoveEvent||t.startEvent;if(e&&e!==i){for(const s of t.items){if(!s.element)continue;const{x:n,y:o}=this.settings.getPositionChange({draggable:this,sensor:t.sensor,item:s,startEvent:t.startEvent,prevEvent:i,event:e});n&&(s.pX=s.pX-s._moveDiffX+n,s.x=s.x-s._moveDiffX+n,s._moveDiffX=n),o&&(s.pY=s.pY-s._moveDiffY+o,s.y=s.y-s._moveDiffY+o,s._moveDiffY=o)}t.prevMoveEvent=e}}_applyMove(){const{drag:t}=this;if(t&&t.nextMoveEvent){for(const e of t.items)e._moveDiffX=0,e._moveDiffY=0;if(this._emit("beforemove",t.nextMoveEvent),this.drag===t){for(const e of t.items)e.element&&this.settings.setPosition({phase:"move",draggable:this,sensor:t.sensor,item:e,x:e.pX,y:e.pY});this._emit("move",t.nextMoveEvent)}}}_preparePositionUpdate(){const{drag:t}=this;if(t)for(const e of t.items){if(!e.element)continue;if(e.rootContainingBlock!==e.dragContainingBlock){const{left:t,top:i}=b(e.dragContainingBlock,e.rootContainingBlock,R);e._containerDiffX=t,e._containerDiffY=i}const{left:t,top:i}=e.element.getBoundingClientRect(),s=e.x-e._moveDiffX-t;e.pX=e.pX-e._updateDiffX+s,e._updateDiffX=s;const n=e.y-e._moveDiffY-i;e.pY=e.pY-e._updateDiffY+n,e._updateDiffY=n}}_applyPositionUpdate(){const{drag:t}=this;if(t)for(const e of t.items)e.element&&(e._updateDiffX=0,e._updateDiffY=0,this.settings.setPosition({phase:"move",draggable:this,sensor:t.sensor,item:e,x:e.pX,y:e.pY}))}on(t,e,i){return this._emitter.on(t,e,i)}off(t,e){this._emitter.off(t,e)}resolveStartPredicate(e,i){const s=this._sensorData.get(e);if(!s)return;const n=i||s.predicateEvent;s.predicateState===q.PENDING&&n&&(s.predicateState=q.RESOLVED,s.predicateEvent=null,this.drag=new M,this.drag.sensor=e,this.drag.startEvent=n,this._sensorData.forEach(((t,i)=>{i!==e&&(t.predicateState=q.REJECTED,t.predicateEvent=null)})),t.ticker.once(t.tickerReadPhase,this._prepareStart,this._startId),t.ticker.once(t.tickerWritePhase,this._applyStart,this._startId))}rejectStartPredicate(t){const e=this._sensorData.get(t);(null==e?void 0:e.predicateState)===q.PENDING&&(e.predicateState=q.REJECTED,e.predicateEvent=null)}stop(){const{drag:e}=this;if(e&&!e.isEnded){if(e.isEnded=!0,this._emit("beforeend",e.endEvent),t.ticker.off(t.tickerReadPhase,this._startId),t.ticker.off(t.tickerWritePhase,this._startId),t.ticker.off(t.tickerReadPhase,this._moveId),t.ticker.off(t.tickerWritePhase,this._moveId),t.ticker.off(t.tickerReadPhase,this._updateId),t.ticker.off(t.tickerWritePhase,this._updateId),e.isStarted){window.removeEventListener("scroll",this._onScroll,T);const t=[];for(const i of e.items)i.element&&(t.push(i.element),i.rootParent&&i.element.parentNode!==i.rootParent&&(i.pX-=i._containerDiffX,i.pY-=i._containerDiffY,i._containerDiffX=0,i._containerDiffY=0,i.rootParent.appendChild(i.element)),this.settings.setPosition({phase:"end",draggable:this,sensor:e.sensor,item:i,x:i.pX,y:i.pY}));t.length&&this.settings.releaseElements({draggable:this,sensor:e.sensor,elements:t})}this._emit("end",e.endEvent),this.drag=null}}updatePosition(e=!1){this.drag&&(e?(this._preparePositionUpdate(),this._applyPositionUpdate()):(t.ticker.once(t.tickerReadPhase,this._preparePositionUpdate,this._updateId),t.ticker.once(t.tickerWritePhase,this._applyPositionUpdate,this._updateId)))}updateSettings(t={}){this.settings=this._parseSettings(t,this.settings)}use(t){return t(this)}destroy(){this.isDestroyed||(this.isDestroyed=!0,this.stop(),this._sensorData.forEach((({onMove:t,onEnd:e},i)=>{i.off("start",t),i.off("move",t),i.off("cancel",e),i.off("end",e),i.off("destroy",e)})),this._sensorData.clear(),this._emit("destroy"),this._emitter.off())}},t.DraggableAutoScroll=mt,t.KeyboardMotionSensor=class extends o{constructor(t={}){super();const{startPredicate:e=(()=>{if(document.activeElement){const{left:t,top:e}=document.activeElement.getBoundingClientRect();return{x:t,y:e}}return null}),computeSpeed:i=(()=>500),startKeys:s=[" ","Space","Enter"],moveLeftKeys:n=["ArrowLeft"],moveRightKeys:o=["ArrowRight"],moveUpKeys:r=["ArrowUp"],moveDownKeys:a=["ArrowDown"],cancelKeys:h=["Escape"],endKeys:c=[" ","Space","Enter"]}=t;this._computeSpeed=i,this._startPredicate=e,this._startKeys=new Set(s),this._cancelKeys=new Set(h),this._endKeys=new Set(c),this._moveLeftKeys=new Set(n),this._moveRightKeys=new Set(o),this._moveUpKeys=new Set(r),this._moveDownKeys=new Set(a),this._moveKeys=new Set([...n,...o,...r,...a]),this._moveKeyTimestamps=new Map,this._onKeyDown=this._onKeyDown.bind(this),this._onKeyUp=this._onKeyUp.bind(this),this._onTick=this._onTick.bind(this),this.on("tick",this._onTick),document.addEventListener("keydown",this._onKeyDown),document.addEventListener("keyup",this._onKeyUp),window.addEventListener("blur",this.cancel),window.addEventListener("visibilitychange",this.cancel)}_end(t){this.drag&&(this._moveKeyTimestamps.clear(),super._end(t))}_cancel(t){this.drag&&(this._moveKeyTimestamps.clear(),super._cancel(t))}_updateDirection(){const t=v(this._moveLeftKeys,this._moveKeyTimestamps),e=v(this._moveRightKeys,this._moveKeyTimestamps),i=v(this._moveUpKeys,this._moveKeyTimestamps),s=v(this._moveDownKeys,this._moveKeyTimestamps);let n=t===e?0:t{const n=`${i}Keys`,o=t[n];void 0!==o&&(this[`_${n}`]=new Set(o),s>=3&&(e=!0))})),e){const t=[...this._moveLeftKeys,...this._moveRightKeys,...this._moveUpKeys,...this._moveDownKeys];[...this._moveKeys].every(((e,i)=>t[i]===e))||(this._moveKeys=new Set(t),this._moveKeyTimestamps.clear(),this._updateDirection())}}destroy(){this.isDestroyed||(super.destroy(),this.off("tick",this._onTick),document.removeEventListener("keydown",this._onKeyDown),document.removeEventListener("keyup",this._onKeyUp),window.removeEventListener("blur",this.cancel),window.removeEventListener("visibilitychange",this.cancel))}},t.KeyboardSensor=class extends n{constructor(t={}){super();const{moveDistance:e=25,startPredicate:i=(t=>{if(("Enter"===t.key||"Space"===t.key||" "===t.key)&&document.activeElement&&document.activeElement!==document.body){const{left:t,top:e}=document.activeElement.getBoundingClientRect();return{x:t,y:e}}return null}),movePredicate:s=((t,e,i)=>{if(!e.drag)return null;switch(t.key){case"ArrowLeft":return{x:e.drag.x-i,y:e.drag.y};case"ArrowRight":return{x:e.drag.x+i,y:e.drag.y};case"ArrowUp":return{x:e.drag.x,y:e.drag.y-i};case"ArrowDown":return{x:e.drag.x,y:e.drag.y+i};default:return null}}),cancelPredicate:n=((t,e)=>e.drag&&"Escape"===t.key?{x:e.drag.x,y:e.drag.y}:null),endPredicate:o=((t,e)=>!e.drag||"Enter"!==t.key&&"Space"!==t.key&&" "!==t.key?null:{x:e.drag.x,y:e.drag.y})}=t;this._moveDistance=e,this._startPredicate=i,this._movePredicate=s,this._cancelPredicate=n,this._endPredicate=o,this.cancel=this.cancel.bind(this),this._onKeyDown=this._onKeyDown.bind(this),document.addEventListener("keydown",this._onKeyDown),window.addEventListener("blur",this.cancel),window.addEventListener("visibilitychange",this.cancel)}_onKeyDown(t){if(!this.drag){const e=this._startPredicate(t,this,this._moveDistance);return void(e&&(t.preventDefault(),this._start({type:"start",x:e.x,y:e.y,srcEvent:t})))}const e=this._cancelPredicate(t,this,this._moveDistance);if(e)return t.preventDefault(),void this._cancel({type:"cancel",x:e.x,y:e.y,srcEvent:t});const i=this._endPredicate(t,this,this._moveDistance);if(i)return t.preventDefault(),void this._end({type:"end",x:i.x,y:i.y,srcEvent:t});const s=this._movePredicate(t,this,this._moveDistance);return s?(t.preventDefault(),void this._move({type:"move",x:s.x,y:s.y,srcEvent:t})):void 0}updateSettings(t={}){void 0!==t.moveDistance&&(this._moveDistance=t.moveDistance),void 0!==t.startPredicate&&(this._startPredicate=t.startPredicate),void 0!==t.movePredicate&&(this._movePredicate=t.movePredicate),void 0!==t.cancelPredicate&&(this._cancelPredicate=t.cancelPredicate),void 0!==t.endPredicate&&(this._endPredicate=t.endPredicate)}destroy(){this.isDestroyed||(super.destroy(),document.removeEventListener("keydown",this._onKeyDown),window.removeEventListener("blur",this.cancel),window.removeEventListener("visibilitychange",this.cancel))}},t.PointerSensor=f,t.SensorEventType=s,t.autoScroll=lt,t.autoScrollPlugin=function(t){return e=>{const i=new mt(e,t),s=e;return s.plugins[i.name]=i,s}},t.autoScrollSmoothSpeed=ht,t.createPointerSensorStartPredicate=function(t={}){let e,i,s=0,n=null;const{timeout:o=250,fallback:r=(()=>!0)}=t,a=t=>t.preventDefault(),h=t=>{s&&(e?t.cancelable&&t.preventDefault():void 0===e&&(t.cancelable&&t.timeStamp-s>o?(e=!0,t.preventDefault()):e=!1))};return t=>{if(!(t.sensor instanceof f))return r(t);const{draggable:c,sensor:l,event:d}=t,u=d;if("touch"===u.pointerType){if("start"===u.type&&("pointerdown"===u.srcEvent.type||"touchstart"===u.srcEvent.type)){n=u.target;const t=n?gt(n):[];t.forEach((t=>{t.addEventListener("touchmove",h,{passive:!1,capture:!0})}));const r=()=>{s&&(c.off("beforeend",r),c.sensors.forEach((t=>{t instanceof f&&t.off("end",r)})),null==n||n.removeEventListener("contextmenu",a),t.forEach((t=>{t.removeEventListener("touchmove",h,{capture:!0})})),s=0,e=void 0,n=null,i=void window.clearTimeout(i))};e=void 0,s=u.srcEvent.timeStamp,null==n||n.addEventListener("contextmenu",a),c.on("beforeend",r),c.sensors.forEach((t=>{t instanceof f&&t.off("end",r)})),o>0&&(i=window.setTimeout((()=>{c.resolveStartPredicate(l),e=!0,i=void 0}),o))}return e}return"start"===u.type&&!u.srcEvent.button}},t.setTicker=function(e,i,s){t.tickerReadPhase=i,t.tickerWritePhase=s,t.ticker=e}})); \ No newline at end of file diff --git a/docs/.vitepress/config.js b/docs/.vitepress/config.js index ac3d84e..05bb384 100644 --- a/docs/.vitepress/config.js +++ b/docs/.vitepress/config.js @@ -7,6 +7,9 @@ export default { description: 'Modular and extensible TypeScript drag & drop system.', appearance: true, head: [['link', { rel: 'icon', type: 'image/svg+xml', href: '/dragdoll-icon.svg' }]], + markdown: { + lineNumbers: true, + }, lastUpdated: true, themeConfig: { siteTitle: false, diff --git a/docs/.vitepress/theme/custom.css b/docs/.vitepress/theme/custom.css index 45cab1d..dca92f5 100644 --- a/docs/.vitepress/theme/custom.css +++ b/docs/.vitepress/theme/custom.css @@ -1,12 +1,8 @@ :root { - --vp-c-brand: #ff5555; - --vp-c-brand-light: #ff5555; - --vp-c-brand-lighter: #fe6868; - --vp-c-green-dark: #d52929; - --vp-button-brand-bg: #ff5555; -} -.VPImage.logo { - height: 32px; + --vp-c-brand-1: #ff5555; + --vp-c-brand-2: #ff5555; + --vp-c-brand-3: #ff5555; + --vp-nav-logo-height: 32px; } .VPFeatures .VPFeature { position: relative; diff --git a/docs/docs/base-motion-sensor.md b/docs/docs/base-motion-sensor.md index da92ed4..4fac527 100644 --- a/docs/docs/base-motion-sensor.md +++ b/docs/docs/base-motion-sensor.md @@ -159,9 +159,9 @@ type on = ( } | { type: 'destroy'; - } + }, ) => void, - listenerId?: string | number | symbol + listenerId?: string | number | symbol, ) => string | number | symbol; // Usage @@ -178,7 +178,7 @@ Adds a listener to a sensor event. Returns a listener id, which can be used to r // Type type off = ( eventName: 'start' | 'move' | 'cancel' | 'end' | 'destroy' | 'tick', - target: Function | string | number | symbol + target: Function | string | number | symbol, ) => void; // Usage diff --git a/docs/docs/base-sensor.md b/docs/docs/base-sensor.md index 01ec154..7e044c8 100644 --- a/docs/docs/base-sensor.md +++ b/docs/docs/base-sensor.md @@ -57,9 +57,9 @@ type on = ( } | { type: 'destroy'; - } + }, ) => void, - listenerId?: string | number | symbol + listenerId?: string | number | symbol, ) => string | number | symbol; // Usage @@ -76,7 +76,7 @@ Adds a listener to a sensor event. Returns a listener id, which can be used to r // Type type off = ( eventName: 'start' | 'move' | 'cancel' | 'end' | 'destroy', - target: Function | string | number | symbol + target: Function | string | number | symbol, ) => void; // Usage diff --git a/docs/docs/draggable-auto-scroll-plugin.md b/docs/docs/draggable-auto-scroll-plugin.md index 37310a3..38b96db 100644 --- a/docs/docs/draggable-auto-scroll-plugin.md +++ b/docs/docs/draggable-auto-scroll-plugin.md @@ -34,7 +34,7 @@ const draggable = new Draggable([pointerSensor, keyboardSensor], { threshold: 100, }, ], - }) + }), ); // Update settings later if need be. @@ -58,7 +58,7 @@ import { autoScrollPlugin } from 'dragdoll'; draggable.use( autoScrollPlugin({ /* Provide options here... */ - }) + }), ); ``` @@ -140,9 +140,9 @@ Defaults to `[]`. type inertAreaSize = number; ``` -Defines the size of the minimum area in the center of the target element that will be guaranteed not trigger autoscrolling regardless of autoscroll target's threshold size and the dragged item's size. This value is a percentage of the target element's size (width and/or height depending on the scroll axes), and should be something between `0` and `1`. So in practice, if you set this to e.g `0.5` the inert area would be 50% of the scrollable element's width and/or height. +Defines the size of the minimum area in the center of the target element that will be guaranteed not trigger autoscrolling regardless of autoscroll target's threshold size and the dragged item's size. This value is a percentage of the target element's size (width and/or height depending on the scroll axes), and should be something between `0` and `1`. For example, if you set this to `0.5` the inert area would be 50% of the scrollable element's width and/or height. -The main reason an inert area is needed in first place is to balance the autoscrolling UX when having different sized target elements, and especially really small ones. Without this there would be a good chance that the smaller target elements would not have a neutral zone at all and would always autoscroll to some direction. However, if you completely want to disable this feature just the value to `0`. +The main reason an inert area is needed in first place is to balance the autoscrolling UX when having different sized target elements, and especially really small ones. Without this there would be a good chance that the smaller target elements would not have a neutral zone at all and would always autoscroll to some direction. However, if you completely want to disable this feature just set the value to `0`. Defaults to `0.2`. diff --git a/docs/docs/draggable.md b/docs/docs/draggable.md index 6c05cdf..b75b75d 100644 --- a/docs/docs/draggable.md +++ b/docs/docs/draggable.md @@ -93,6 +93,23 @@ A clean up function that should handle disposing the dragged elements, if necess Default is `() => {}`. +### getFrozenProps + +```ts +type getFrozenProps: (data: { + draggable: Draggable; + sensor: S[number]; + item: DraggableDragItem; + style: CSSStyleDeclaration; + }) => string[] | {[key: string]: string} | null; +``` + +A function that should return the an array of CSS properties that should be frozen during the drag. By "frozen" we mean that the current computed value of the property is stored and applied to the element's inline styles during the drag. This is usually only needed if you have a drag container and the dragged element has percentage based values for some of it's properties. The frozen properties are automatically unfrozen (restored to the original values) when drag ends. + +You can also return an object with key-value pairs where the key is the CSS property you want to freeze and the value is the explicit value you want it to be frozen to. This is useful if you want to freeze a property to a specific value instead of the current computed value. + +By default nothing is frozen. + ### getStartPosition ```ts @@ -239,7 +256,7 @@ Is the Draggable instance destroyed or not? ```ts // Type type on = ( - eventName: 'beforestart' | 'start' | 'beforemove' | 'move' | 'beforeend' | 'end' | 'destroy', + eventName: 'preparestart' | 'start' | 'preparemove' | 'move' | 'end' | 'destroy', listener: (e: SensorEvent | null | undefined) => void, listenerId?: string | number | symbol, ) => string | number | symbol; @@ -263,7 +280,7 @@ The method returns a listener id, which can be used to remove this specific list ```ts // Type type off = ( - eventName: 'beforestart' | 'start' | 'beforemove' | 'move' | 'beforeend' | 'end' | 'destroy', + eventName: 'preparestart' | 'start' | 'preparemove' | 'move' | 'end' | 'destroy', target: Function | string | number | symbol, ) => void; @@ -367,11 +384,10 @@ Let's build an example plugin, which logs draggable events based on options we p import { Draggable, KeyboardSensor, Sensor } from 'dragdoll'; const DRAGGABLE_EVENTS = [ - 'beforestart', + 'preparestart', 'start', - 'beforemove', + 'preparemove', 'move', - 'beforeend', 'end', 'destroy', ] as const; diff --git a/docs/docs/examples.md b/docs/docs/examples.md index 2ce3e9d..7f06149 100644 --- a/docs/docs/examples.md +++ b/docs/docs/examples.md @@ -1,3 +1,145 @@ # Examples -TODO +## Draggable - Basic + + + +```ts +import { + Draggable, + PointerSensor, + KeyboardMotionSensor, + createPointerSensorStartPredicate, +} from 'dragdoll'; + +const element = document.querySelector('.draggable') as HTMLElement; +const pointerSensor = new PointerSensor(element); +const keyboardSensor = new KeyboardMotionSensor(); +const draggable = new Draggable([pointerSensor, keyboardSensor], { + getElements: () => [element], + startPredicate: createPointerSensorStartPredicate(), +}); + +draggable.on('start', () => { + element.classList.add('dragging'); +}); + +draggable.on('end', () => { + element.classList.remove('dragging'); +}); +``` + +## Draggable - Autoscroll + + + +```ts +import { + Draggable, + PointerSensor, + KeyboardMotionSensor, + createPointerSensorStartPredicate, + autoScrollPlugin, +} from 'dragdoll'; + +const element = document.querySelector('.draggable') as HTMLElement; +const container = document.querySelector('.drag-container') as HTMLElement; +const pointerSensor = new PointerSensor(element); +const keyboardSensor = new KeyboardMotionSensor(); +const draggable = new Draggable([pointerSensor, keyboardSensor], { + container, + getElements: () => [element], + getFrozenProps: () => ['left', 'top'], + startPredicate: createPointerSensorStartPredicate(), +}).use( + autoScrollPlugin({ + targets: [ + { + element: window, + axis: 'y', + padding: { top: Infinity, bottom: Infinity }, + }, + ], + }), +); + +draggable.on('start', () => { + element.classList.add('dragging'); +}); + +draggable.on('end', () => { + element.classList.remove('dragging'); +}); +``` + +## Draggable - Snap To Grid + + + +```ts +import { + Draggable, + PointerSensor, + KeyboardSensor, + createPointerSensorStartPredicate, +} from 'dragdoll'; + +const GRID_WIDTH = 40; +const GRID_HEIGHT = 40; + +const element = document.querySelector('.draggable') as HTMLElement; +const pointerSensor = new PointerSensor(element); +const keyboardSensor = new KeyboardSensor({ + moveDistance: { x: GRID_WIDTH, y: GRID_HEIGHT }, +}); +const draggable = new Draggable([pointerSensor, keyboardSensor], { + getElements: () => [element], + startPredicate: createPointerSensorStartPredicate(), + getPositionChange: ({ startEvent, event, item }) => { + let { prevX = startEvent.x, prevY = startEvent.y } = item.data; + + let changeX = event.x - prevX; + let changeXAbs = Math.abs(changeX); + if (changeXAbs >= GRID_WIDTH) { + const overshoot = changeXAbs % GRID_WIDTH; + if (changeX > 0) { + changeX -= overshoot; + item.data.prevX = event.x - overshoot; + } else { + changeX += overshoot; + item.data.prevX = event.x + overshoot; + } + } else { + changeX = 0; + } + + let changeY = event.y - prevY; + let changeYAbs = Math.abs(changeY); + if (changeYAbs >= GRID_HEIGHT) { + const overshoot = changeYAbs % GRID_HEIGHT; + if (changeY > 0) { + changeY -= overshoot; + item.data.prevY = event.y - overshoot; + } else { + changeY += overshoot; + item.data.prevY = event.y + overshoot; + } + } else { + changeY = 0; + } + + return { + x: changeX, + y: changeY, + }; + }, +}); + +draggable.on('start', () => { + element.classList.add('dragging'); +}); + +draggable.on('end', () => { + element.classList.remove('dragging'); +}); +``` diff --git a/docs/docs/getting-started.md b/docs/docs/getting-started.md index a81af93..ab23b0c 100644 --- a/docs/docs/getting-started.md +++ b/docs/docs/getting-started.md @@ -13,13 +13,24 @@ $ npm install dragdoll eventti tikki ### Browser ```html - - - + + + + + ``` -Access the library via `window.DragDoll` in browser context. - ## Usage ```ts diff --git a/docs/docs/keyboard-motion-sensor.md b/docs/docs/keyboard-motion-sensor.md index 6941dff..0164a0f 100644 --- a/docs/docs/keyboard-motion-sensor.md +++ b/docs/docs/keyboard-motion-sensor.md @@ -43,7 +43,7 @@ The constuctor accepts one argument, an optional [Settings](#settings) object, w ```ts type startPredicate = ( e: KeyboardEvent, - sensor: KeyboardMotionSensor + sensor: KeyboardMotionSensor, ) => { x: number; y: number } | null | undefined; ``` @@ -77,7 +77,7 @@ Default: `() => 500`. type startKeys = string[]; ``` -Default: `[' ', 'Space', 'Enter']`. +Default: `[' ', 'Enter']`. ### moveLeftKeys @@ -125,7 +125,7 @@ Default: `['Escape']`. type endKeys = string[]; ``` -Default: `[' ', 'Space', 'Enter']`. +Default: `[' ', 'Enter']`. ## Methods diff --git a/docs/docs/keyboard-sensor.md b/docs/docs/keyboard-sensor.md index 8836ab6..a97a6be 100644 --- a/docs/docs/keyboard-sensor.md +++ b/docs/docs/keyboard-sensor.md @@ -41,10 +41,10 @@ The constuctor accepts one argument, an optional [Settings](#settings) object, w ### moveDistance ```ts -type moveDistance = number; +type moveDistance = number | { x: number; y: number }; ``` -The number of pixels the `x` and/or `y` values are shifted per `"move"` event. +The number of pixels the `x` and/or `y` values are shifted per `"move"` event. You can define a single number to shift both `x` and `y` values by the same amount or an object to shift them by different amounts. Defaults to `25`. @@ -54,7 +54,7 @@ Defaults to `25`. type startPredicate = ( e: KeyboardEvent, sensor: KeyboardSensor, - moveDistance: number + moveDistance: { x: number; y: number }, ) => { x: number; y: number } | null | undefined; ``` @@ -66,7 +66,7 @@ Start predicate function which should return drag start coordinates (client `x` type movePredicate = ( e: KeyboardEvent, sensor: KeyboardSensor, - moveDistance: number + moveDistance: { x: number; y: number }, ) => { x: number; y: number } | null | undefined; ``` @@ -78,7 +78,7 @@ Move predicate function which should return drag's next coordinates (client `x` type endPredicate = ( e: KeyboardEvent, sensor: KeyboardSensor, - moveDistance: number + moveDistance: { x: number; y: number }, ) => { x: number; y: number } | null | undefined; ``` @@ -90,7 +90,7 @@ End predicate function which should return drag's end coordinates (client `x` an type cancelPredicate = ( e: KeyboardEvent, sensor: KeyboardSensor, - moveDistance: number + moveDistance: { x: number; y: number }, ) => { x: number; y: number } | null | undefined; ``` diff --git a/docs/docs/pointer-sensor.md b/docs/docs/pointer-sensor.md index 4ffae20..8c766af 100644 --- a/docs/docs/pointer-sensor.md +++ b/docs/docs/pointer-sensor.md @@ -135,9 +135,9 @@ type on = ( } | { type: 'destroy'; - } + }, ) => void, - listenerId?: string | number | symbol + listenerId?: string | number | symbol, ) => string | number | symbol; // Usage @@ -154,7 +154,7 @@ Adds a listener to a sensor event. Returns a listener id, which can be used to r // Type type off = ( eventName: 'start' | 'move' | 'cancel' | 'end' | 'destroy', - target: Function | string | number | symbol + target: Function | string | number | symbol, ) => void; // Usage diff --git a/docs/docs/sensor.md b/docs/docs/sensor.md index 9c51138..f4081af 100644 --- a/docs/docs/sensor.md +++ b/docs/docs/sensor.md @@ -28,8 +28,8 @@ type on = ( } | { type: 'destroy'; - } - ) => void + }, + ) => void, ) => void; ``` diff --git a/docs/public/examples/001-draggable-basic/index.00df1a98.css b/docs/public/examples/001-draggable-basic/index.00df1a98.css new file mode 100644 index 0000000..1d40315 --- /dev/null +++ b/docs/public/examples/001-draggable-basic/index.00df1a98.css @@ -0,0 +1,2 @@ +.draggable{position:absolute;top:50%;left:50%;transform:translate(-50%)translateY(-50%)} +/*# sourceMappingURL=index.00df1a98.css.map */ diff --git a/docs/public/examples/001-draggable-basic/index.00df1a98.css.map b/docs/public/examples/001-draggable-basic/index.00df1a98.css.map new file mode 100644 index 0000000..a21c8b5 --- /dev/null +++ b/docs/public/examples/001-draggable-basic/index.00df1a98.css.map @@ -0,0 +1 @@ +{"mappings":"ACAA","sources":["index.00df1a98.css","examples/001-draggable-basic/index.css"],"sourcesContent":[".draggable {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translateX(-50%)translateY(-50%);\n}\n\n/*# sourceMappingURL=index.00df1a98.css.map */\n",".draggable {\n position: absolute;\n left: 50%;\n top: 50%;\n transform: translateX(-50%) translateY(-50%);\n}"],"names":[],"version":3,"file":"index.00df1a98.css.map"} \ No newline at end of file diff --git a/docs/public/examples/001-draggable-basic/index.386d6a51.css b/docs/public/examples/001-draggable-basic/index.386d6a51.css new file mode 100644 index 0000000..6131ded --- /dev/null +++ b/docs/public/examples/001-draggable-basic/index.386d6a51.css @@ -0,0 +1,2 @@ +:root{--bg-color:#161618;--color:#fffff5db;--theme-color:#f55;--card-color:#fff;--card-bgColor:var(--theme-color);--card-color--focus:var(--card-color);--card-bgColor--focus:#db55ff;--card-color--drag:var(--card-color);--card-bgColor--drag:#55ff9c}*{box-sizing:border-box}html{background:var(--bg-color);color:var(--color);background-image:linear-gradient(90deg,#ffffff1a 1px,#0000 1px),linear-gradient(#ffffff1a 1px,#0000 1px);background-size:40px 40px;height:100%}body{margin:0}.card{background-color:var(--card-bgColor);color:var(--card-color);border-radius:8px;width:100px;height:100px}@media (hover:hover) and (pointer:fine){.card:hover,.card:focus-visible{background-color:var(--card-bgColor--focus);color:var(--card-bgColor--focus)}.card:focus-visible{outline-offset:4px;outline:1px solid var(--card-bgColor--focus)}}.card.draggable{cursor:grab}.card.dragging{cursor:grabbing;background-color:var(--card-bgColor--drag);color:var(--card-bgColor--drag)}@media (hover:hover) and (pointer:fine){.card.dragging:focus-visible{outline:1px solid var(--card-bgColor--drag)}} +/*# sourceMappingURL=index.386d6a51.css.map */ diff --git a/docs/public/examples/001-draggable-basic/index.386d6a51.css.map b/docs/public/examples/001-draggable-basic/index.386d6a51.css.map new file mode 100644 index 0000000..6886b94 --- /dev/null +++ b/docs/public/examples/001-draggable-basic/index.386d6a51.css.map @@ -0,0 +1 @@ +{"mappings":"ACEA,wPAcA,wBAGA,kMAQA,cAMA,8GAOA,wCACE,6GAKA,qFAKF,4BAGA,0GAKA,wCACE","sources":["index.386d6a51.css","examples/assets/base.css"],"sourcesContent":[":root {\n --bg-color: #161618;\n --color: #fffff5db;\n --theme-color: #f55;\n --card-color: #fff;\n --card-bgColor: var(--theme-color);\n --card-color--focus: var(--card-color);\n --card-bgColor--focus: #db55ff;\n --card-color--drag: var(--card-color);\n --card-bgColor--drag: #55ff9c;\n}\n\n* {\n box-sizing: border-box;\n}\n\nhtml {\n background: var(--bg-color);\n color: var(--color);\n background-image: linear-gradient(to right, #ffffff1a 1px, #0000 1px), linear-gradient(#ffffff1a 1px, #0000 1px);\n background-size: 40px 40px;\n height: 100%;\n}\n\nbody {\n margin: 0;\n}\n\n.card {\n background-color: var(--card-bgColor);\n color: var(--card-color);\n border-radius: 8px;\n width: 100px;\n height: 100px;\n}\n\n@media (hover: hover) and (pointer: fine) {\n .card:hover, .card:focus-visible {\n background-color: var(--card-bgColor--focus);\n color: var(--card-bgColor--focus);\n }\n\n .card:focus-visible {\n outline-offset: 4px;\n outline: 1px solid var(--card-bgColor--focus);\n }\n}\n\n.card.draggable {\n cursor: grab;\n}\n\n.card.dragging {\n cursor: grabbing;\n background-color: var(--card-bgColor--drag);\n color: var(--card-bgColor--drag);\n}\n\n@media (hover: hover) and (pointer: fine) {\n .card.dragging:focus-visible {\n outline: 1px solid var(--card-bgColor--drag);\n }\n}\n\n/*# sourceMappingURL=index.386d6a51.css.map */\n","/* VARIABLES */\n\n:root {\n --bg-color: #161618;\n --color: rgba(255, 255, 245, 0.86);\n --theme-color: #ff5555;\n --card-color: #fff;\n --card-bgColor: var(--theme-color);\n --card-color--focus: var(--card-color);\n --card-bgColor--focus: #db55ff;\n --card-color--drag: var(--card-color);\n --card-bgColor--drag: #55ff9c;\n}\n\n/* BASE */\n\n* {\n box-sizing: border-box;\n}\nhtml {\n height: 100%;\n background: var(--bg-color);\n color: var(--color);\n background-size: 40px 40px;\n background-image: linear-gradient(to right, rgba(255, 255, 255, 0.1) 1px, transparent 1px),\n linear-gradient(to bottom, rgba(255, 255, 255, 0.1) 1px, transparent 1px);\n}\nbody {\n margin: 0;\n}\n\n/* CARD */\n\n.card {\n width: 100px;\n height: 100px;\n background-color: var(--card-bgColor);\n color: var(--card-color);\n border-radius: 8px;\n}\n@media (hover: hover) and (pointer: fine) {\n .card:hover,\n .card:focus-visible {\n background-color: var(--card-bgColor--focus);\n color: var(--card-bgColor--focus);\n }\n .card:focus-visible {\n outline-offset: 4px;\n outline: 1px solid var(--card-bgColor--focus);\n }\n}\n.card.draggable {\n cursor: grab;\n}\n.card.dragging {\n cursor: grabbing;\n background-color: var(--card-bgColor--drag);\n color: var(--card-bgColor--drag);\n}\n@media (hover: hover) and (pointer: fine) {\n .card.dragging:focus-visible {\n outline: 1px solid var(--card-bgColor--drag);\n }\n}\n"],"names":[],"version":3,"file":"index.386d6a51.css.map"} \ No newline at end of file diff --git a/docs/public/examples/001-draggable-basic/index.fbc6ca0e.js b/docs/public/examples/001-draggable-basic/index.fbc6ca0e.js new file mode 100644 index 0000000..d53808f --- /dev/null +++ b/docs/public/examples/001-draggable-basic/index.fbc6ca0e.js @@ -0,0 +1,6 @@ +function t(t,i){let s=t.get(i);return s||(s=new e,t.set(i,s)),s}class e{constructor(){this.idMap=new Map,this.fnMap=new Map,this.onceList=new Set,this.emitList=null}add(t,e,i,s,n){if(!n&&this.fnMap.has(t))throw Error("Emitter: tried to add an existing event listener to an event!");if(this.idMap.has(i))switch(s){case"throw":throw Error("Emitter: tried to add an existing event listener id to an event!");case"ignore":return i;default:this.delId(i,"update"===s)}let r=this.fnMap.get(t);return r||(r=new Set,this.fnMap.set(t,r)),r.add(i),this.idMap.set(i,t),e&&this.onceList.add(i),this.emitList&&this.emitList.push(t),i}delId(t,e=!1){let i=this.idMap.get(t);if(!i)return;let s=this.fnMap.get(i);e||this.idMap.delete(t),this.onceList.delete(t),s.delete(t),s.size||this.fnMap.delete(i),this.emitList=null}delFn(t){let e=this.fnMap.get(t);e&&(e.forEach(t=>{this.onceList.delete(t),this.idMap.delete(t)}),this.fnMap.delete(t),this.emitList=null)}}class i{constructor(t={}){let{idDedupeMode:e="replace",allowDuplicateListeners:i=!0}=t;this.idDedupeMode=e,this.allowDuplicateListeners=i,this._events=new Map}_getListeners(t){let e=this._events.get(t);if(!e)return null;let{idMap:i,onceList:s}=e;if(!i.size)return null;let n=e.emitList||[...i.values()];if(s.size){if(s.size===i.size)this._events.delete(t);else for(let t of s)e.delId(t)}else e.emitList=n;return n}on(e,i,s=Symbol()){return t(this._events,e).add(i,!1,s,this.idDedupeMode,this.allowDuplicateListeners)}once(e,i,s=Symbol()){return t(this._events,e).add(i,!0,s,this.idDedupeMode,this.allowDuplicateListeners)}off(t,e){if(void 0===t)return void this._events.clear();if(void 0===e)return void this._events.delete(t);let i=this._events.get(t);i&&("function"==typeof e?i.delFn(e):i.delId(e),i.idMap.size||this._events.delete(t))}emit(t,...e){let i=this._getListeners(t);if(!i)return;let s=0,n=i.length;for(;s{t+=this.listenerCount(i)}),t}return(null===(e=this._events.get(t))||void 0===e?void 0:e.idMap.size)||0}}(q=L||(L={}))[q.PAUSED=1]="PAUSED",q[q.ON_DEMAND=2]="ON_DEMAND",q[q.CONTINUOUS=3]="CONTINUOUS";const s=new WeakMap;function n(t,e){if(e)return window.getComputedStyle(t,e);let i=s.get(t)?.deref();return i||(i=window.getComputedStyle(t,null),s.set(t,new WeakRef(i))),i}const r=!!("undefined"!=typeof window&&void 0!==window.document&&navigator.vendor&&navigator.vendor.indexOf("Apple")>-1&&navigator.userAgent&&-1==navigator.userAgent.indexOf("CriOS")&&-1==navigator.userAgent.indexOf("FxiOS")),o={content:"content",padding:"padding",scrollbar:"scrollbar",border:"border",margin:"margin"},a={[o.content]:!1,[o.padding]:!1,[o.scrollbar]:!0,[o.border]:!0,[o.margin]:!0},l=new Set(["auto","scroll"]),h=(()=>{try{return window.navigator.userAgentData.brands.some(({brand:t})=>"Chromium"===t)}catch(t){return!1}})();function d(t){switch(n(t).display){case"none":return null;case"inline":case"contents":return!1;default:return!0}}function c(t){let e=n(t);if(!r){let{filter:t}=e;if(t&&"none"!==t)return!0;let{backdropFilter:i}=e;if(i&&"none"!==i)return!0;let{willChange:s}=e;if(s&&(s.indexOf("filter")>-1||s.indexOf("backdrop-filter")>-1))return!0}let i=d(t);if(!i)return i;let{transform:s}=e;if(s&&"none"!==s)return!0;let{perspective:o}=e;if(o&&"none"!==o)return!0;let{contentVisibility:a}=e;if(a&&"auto"===a)return!0;let{contain:l}=e;if(l&&("strict"===l||"content"===l||l.indexOf("paint")>-1||l.indexOf("layout")>-1))return!0;let{willChange:h}=e;return!(!h||!(h.indexOf("transform")>-1||h.indexOf("perspective")>-1||h.indexOf("contain")>-1))||!!(r&&h&&h.indexOf("filter")>-1)}function u(t){return t instanceof HTMLHtmlElement}function p(t,e={}){if(u(t))return t.ownerDocument.defaultView;let i=e.position||n(t).position,{skipDisplayNone:s,container:r}=e;switch(i){case"static":case"relative":case"sticky":case"-webkit-sticky":{let e=r||t.parentElement;for(;e;){let t=d(e);if(t)return e;if(null===t&&!s)return null;e=e.parentElement}return t.ownerDocument.documentElement}case"absolute":case"fixed":{let e="fixed"===i,a=r||t.parentElement;for(;a;){var o;let t=e?c(a):"static"!==n(o=a).position||c(o);if(!0===t)return a;if(null===t&&!s)return null;a=a.parentElement}return t.ownerDocument.defaultView}default:return null}}function m(t,e,i,s){return Math.sqrt(Math.pow(i-t,2)+Math.pow(s-e,2))}function f(t){return t instanceof Window}function _(t){return t instanceof Document}const g=new Map;let v=null,y=null,w=null;function D(t,e,i){if(i<=0)return 0;if(h){let i=n(t,"::-webkit-scrollbar"),s="x"===e?i.height:i.width,r=parseFloat(s);if(!Number.isNaN(r)&&!Number.isInteger(r))return function(t,e){let i=t.split("."),s=g.get(i[1]);return void 0===s&&(v||(v=document.createElement("style")),v.innerHTML=` + #mezr-scrollbar-test::-webkit-scrollbar { + width: ${t} !important; + } + `,y&&w||(y=document.createElement("div"),w=document.createElement("div"),y.appendChild(w),y.id="mezr-scrollbar-test",y.style.cssText="\n all: unset !important;\n position: fixed !important;\n top: -200px !important;\n left: 0px !important;\n width: 100px !important;\n height: 100px !important;\n overflow: scroll !important;\n pointer-events: none !important;\n visibility: hidden !important;\n ",w.style.cssText="\n all: unset !important;\n position: absolute !important;\n inset: 0 !important;\n "),document.body.appendChild(v),document.body.appendChild(y),s=y.getBoundingClientRect().width-w.getBoundingClientRect().width-e,g.set(i[1],s),document.body.removeChild(y),document.body.removeChild(v)),e+s}(s,r)}return i}function E(t,e=o.border){return f(t)?function(t,e=!1){if(e)return t.innerWidth;let{innerWidth:i,document:s}=t,{documentElement:n}=s,{clientWidth:r}=n;return i-D(n,"y",i-r)}(t,a[e]):_(t)?function({documentElement:t}){return Math.max(t.scrollWidth,t.clientWidth,t.getBoundingClientRect().width)}(t):function(t,e=o.border){let{width:i}=t.getBoundingClientRect();if(e===o.border)return i;let s=n(t);return e===o.margin?i+=Math.max(0,parseFloat(s.marginLeft)||0)+Math.max(0,parseFloat(s.marginRight)||0):(i-=parseFloat(s.borderLeftWidth)||0,i-=parseFloat(s.borderRightWidth)||0,e===o.scrollbar||(!u(t)&&l.has(s.overflowY)&&(i-=D(t,"y",Math.round(i)-t.clientWidth)),e===o.padding||(i-=parseFloat(s.paddingLeft)||0,i-=parseFloat(s.paddingRight)||0)),i)}(t,e)}function x(t,e=o.border){return f(t)?function(t,e=!1){if(e)return t.innerHeight;let{innerHeight:i,document:s}=t,{documentElement:n}=s,{clientHeight:r}=n;return i-D(n,"x",i-r)}(t,a[e]):_(t)?function({documentElement:t}){return Math.max(t.scrollHeight,t.clientHeight,t.getBoundingClientRect().height)}(t):function(t,e=o.border){let{height:i}=t.getBoundingClientRect();if(e===o.border)return i;let s=n(t);return e===o.margin?i+=Math.max(0,parseFloat(s.marginTop)||0)+Math.max(0,parseFloat(s.marginBottom)||0):(i-=parseFloat(s.borderTopWidth)||0,i-=parseFloat(s.borderBottomWidth)||0,e===o.scrollbar||(!u(t)&&l.has(s.overflowX)&&(i-=D(t,"x",Math.round(i)-t.clientHeight)),e===o.padding||(i-=parseFloat(s.paddingTop)||0,i-=parseFloat(s.paddingBottom)||0)),i)}(t,e)}function S(t){return t?.constructor===Object}function b(t,e=o.border){let i={left:0,top:0};if(_(t))return i;if(f(t))return i.left+=t.scrollX||0,i.top+=t.scrollY||0,i;let s=t.ownerDocument.defaultView;s&&(i.left+=s.scrollX||0,i.top+=s.scrollY||0);let r=t.getBoundingClientRect();if(i.left+=r.left,i.top+=r.top,e===o.border)return i;let a=n(t);return e===o.margin?(i.left-=Math.max(0,parseFloat(a.marginLeft)||0),i.top-=Math.max(0,parseFloat(a.marginTop)||0)):(i.left+=parseFloat(a.borderLeftWidth)||0,i.top+=parseFloat(a.borderTopWidth)||0,e===o.scrollbar||e===o.padding||(i.left+=parseFloat(a.paddingLeft)||0,i.top+=parseFloat(a.paddingTop)||0)),i}function k(t,e){let i=S(t)?{left:t.left,top:t.top}:Array.isArray(t)?b(...t):b(t);if(e&&!_(e)){let t=S(e)?e:Array.isArray(e)?b(e[0],e[1]):b(e);i.left-=t.left,i.top-=t.top}return i}function T(t,e){let i=0,s=0;S(t)?(i=t.width,s=t.height):Array.isArray(t)?(i=E(...t),s=x(...t)):(i=E(t),s=x(t));let n=k(t,e);return{width:i,height:s,...n,right:n.left+i,bottom:n.top+s}}function M(t){return S(t)?t:T(t)}function P(t,e={}){let{display:i}=n(t);if("none"===i||"contents"===i)return null;let s=e.position||n(t).position,{skipDisplayNone:r,container:o}=e;switch(s){case"relative":return t;case"fixed":return p(t,{container:o,position:s,skipDisplayNone:r});case"absolute":{let e=p(t,{container:o,position:s,skipDisplayNone:r});return f(e)?t.ownerDocument:e}default:return null}}var q,L,C={start:"start",move:"move",cancel:"cancel",end:"end",destroy:"destroy"},I=class{constructor(){this.drag=null,this.isDestroyed=!1,this._emitter=new i}_createDragData(t){return{x:t.x,y:t.y}}_updateDragData(t){this.drag&&(this.drag.x=t.x,this.drag.y=t.y)}_resetDragData(){this.drag=null}_start(t){this.isDestroyed||this.drag||(this.drag=this._createDragData(t),this._emitter.emit(C.start,t))}_move(t){this.drag&&(this._updateDragData(t),this._emitter.emit(C.move,t))}_end(t){this.drag&&(this._updateDragData(t),this._emitter.emit(C.end,t),this._resetDragData())}_cancel(t){this.drag&&(this._updateDragData(t),this._emitter.emit(C.cancel,t),this._resetDragData())}on(t,e,i){return this._emitter.on(t,e,i)}off(t,e){this._emitter.off(t,e)}cancel(){this.drag&&(this._emitter.emit(C.cancel,{type:C.cancel,x:this.drag.x,y:this.drag.y}),this._resetDragData())}destroy(){this.isDestroyed||(this.isDestroyed=!0,this.cancel(),this._emitter.emit(C.destroy,{type:C.destroy}),this._emitter.off())}},O=Symbol(),X=Symbol(),Y=new class{constructor(t={}){let{phases:e=[],autoTick:s=L.ON_DEMAND,allowDuplicateListeners:n=!0,idDedupeMode:r="replace",requestFrame:o=function(t=60){if("function"==typeof requestAnimationFrame&&"function"==typeof cancelAnimationFrame)return t=>{let e=requestAnimationFrame(t);return()=>cancelAnimationFrame(e)};{let e=1e3/t,i="undefined"==typeof performance?()=>Date.now():()=>performance.now();return t=>{let s=setTimeout(()=>t(i()),e);return()=>clearTimeout(s)}}}()}=t;this.phases=e,this._autoTick=s,this._requestFrame=o,this._cancelFrame=null,this._queue=[],this._emitter=new i({allowDuplicateListeners:n,idDedupeMode:r}),this.tick=this.tick.bind(this)}get requestFrame(){return this._requestFrame}set requestFrame(t){this._requestFrame=t,this._kickstart()}get autoTick(){return this._autoTick}set autoTick(t){this._autoTick=t,this._kickstart()}get allowDuplicateListeners(){return this._emitter.allowDuplicateListeners}set allowDuplicateListeners(t){this._emitter.allowDuplicateListeners=t}get idDedupeMode(){return this._emitter.idDedupeMode}set idDedupeMode(t){this._emitter.idDedupeMode=t}tick(...t){let e,i,s,n,r,o;this._cancelFrame=null;let{_queue:a}=this;if(a.length)throw Error("Ticker: Can't tick before the previous tick has finished!");this._request();let{phases:l,_emitter:h}=this;for(e=0,s=l.length;e=L.ON_DEMAND&&(this._cancelFrame=this._requestFrame(this.tick))}_cancel(){this._cancelFrame&&(this._cancelFrame(),this._cancelFrame=null)}_kickstart(){this._autoTick===L.ON_DEMAND?this._emitter.listenerCount()&&this._request():this._autoTick===L.CONTINUOUS?this._request():this._cancel()}}({phases:[O,X]}),A=class extends I{constructor(){super(),this.drag=null,this._direction={x:0,y:0},this._speed=0,this._tick=this._tick.bind(this)}_createDragData(t){return{...super._createDragData(t),time:0,deltaTime:0}}_start(t){this.isDestroyed||this.drag||(super._start(t),Y.on(O,this._tick))}_end(t){this.drag&&(Y.off(O,this._tick),super._end(t))}_cancel(t){this.drag&&(Y.off(O,this._tick),super._cancel(t))}_tick(t){if(this.drag){if(t&&this.drag.time){this.drag.deltaTime=t-this.drag.time,this.drag.time=t;let e={type:"tick",time:this.drag.time,deltaTime:this.drag.deltaTime};if(this._emitter.emit("tick",e),!this.drag)return;let i=this._speed*(this.drag.deltaTime/1e3),s=this._direction.x*i,n=this._direction.y*i;(s||n)&&this._move({type:"move",x:this.drag.x+s,y:this.drag.y+n})}else this.drag.time=t,this.drag.deltaTime=0}}};function K(t,e){if("pointerId"in t)return t.pointerId===e?t:null;if("changedTouches"in t){let i=0;for(;itypeof window&&"u">typeof window.document,F=(()=>{let t=!1;try{let e=Object.defineProperty({},"passive",{get:function(){t=!0}});window.addEventListener("testPassive",null,e),window.removeEventListener("testPassive",null,e)}catch{}return t})(),N=R&&"ontouchstart"in window,W=R&&!!window.PointerEvent;function z(t={}){let{capture:e=!0,passive:i=!0}=t;return F?{capture:e,passive:i}:{capture:e}}function U(t){return"auto"===t||void 0===t?W?"pointer":N?"touch":"mouse":t}R&&navigator.vendor&&navigator.vendor.indexOf("Apple")>-1&&navigator.userAgent&&-1==navigator.userAgent.indexOf("CriOS")&&navigator.userAgent.indexOf("FxiOS");var V={pointer:{start:"pointerdown",move:"pointermove",cancel:"pointercancel",end:"pointerup"},touch:{start:"touchstart",move:"touchmove",cancel:"touchcancel",end:"touchend"},mouse:{start:"mousedown",move:"mousemove",cancel:"",end:"mouseup"}},B=class{constructor(t,e={}){let{listenerOptions:s={},sourceEvents:n="auto",startPredicate:r=t=>!("button"in t&&t.button>0)}=e;this.element=t,this.drag=null,this.isDestroyed=!1,this._areWindowListenersBound=!1,this._startPredicate=r,this._listenerOptions=z(s),this._sourceEvents=U(n),this._emitter=new i,this._onStart=this._onStart.bind(this),this._onMove=this._onMove.bind(this),this._onCancel=this._onCancel.bind(this),this._onEnd=this._onEnd.bind(this),t.addEventListener(V[this._sourceEvents].start,this._onStart,this._listenerOptions)}_getTrackedPointerEventData(t){return this.drag?K(t,this.drag.pointerId):null}_onStart(t){if(this.isDestroyed||this.drag||!this._startPredicate(t))return;let e="pointerId"in t?t.pointerId:"changedTouches"in t?t.changedTouches[0]?t.changedTouches[0].identifier:null:-1;if(null===e)return;let i=K(t,e);if(null===i)return;let s={pointerId:e,pointerType:"pointerType"in t?t.pointerType:"touches"in t?"touch":"mouse",x:i.clientX,y:i.clientY};this.drag=s;let n={...s,type:C.start,srcEvent:t,target:i.target};this._emitter.emit(n.type,n),this.drag&&this._bindWindowListeners()}_onMove(t){if(!this.drag)return;let e=this._getTrackedPointerEventData(t);if(!e)return;this.drag.x=e.clientX,this.drag.y=e.clientY;let i={type:C.move,srcEvent:t,target:e.target,...this.drag};this._emitter.emit(i.type,i)}_onCancel(t){if(!this.drag)return;let e=this._getTrackedPointerEventData(t);if(!e)return;this.drag.x=e.clientX,this.drag.y=e.clientY;let i={type:C.cancel,srcEvent:t,target:e.target,...this.drag};this._emitter.emit(i.type,i),this._resetDrag()}_onEnd(t){if(!this.drag)return;let e=this._getTrackedPointerEventData(t);if(!e)return;this.drag.x=e.clientX,this.drag.y=e.clientY;let i={type:C.end,srcEvent:t,target:e.target,...this.drag};this._emitter.emit(i.type,i),this._resetDrag()}_bindWindowListeners(){if(this._areWindowListenersBound)return;let{move:t,end:e,cancel:i}=V[this._sourceEvents];window.addEventListener(t,this._onMove,this._listenerOptions),window.addEventListener(e,this._onEnd,this._listenerOptions),i&&window.addEventListener(i,this._onCancel,this._listenerOptions),this._areWindowListenersBound=!0}_unbindWindowListeners(){if(this._areWindowListenersBound){let{move:t,end:e,cancel:i}=V[this._sourceEvents];window.removeEventListener(t,this._onMove,this._listenerOptions),window.removeEventListener(e,this._onEnd,this._listenerOptions),i&&window.removeEventListener(i,this._onCancel,this._listenerOptions),this._areWindowListenersBound=!1}}_resetDrag(){this.drag=null,this._unbindWindowListeners()}cancel(){if(!this.drag)return;let t={type:C.cancel,srcEvent:null,target:null,...this.drag};this._emitter.emit(t.type,t),this._resetDrag()}updateSettings(t){if(this.isDestroyed)return;let{listenerOptions:e,sourceEvents:i,startPredicate:s}=t,n=U(i),r=z(e);s&&this._startPredicate!==s&&(this._startPredicate=s),(e&&(this._listenerOptions.capture!==r.capture||this._listenerOptions.passive===r.passive)||i&&this._sourceEvents!==n)&&(this.element.removeEventListener(V[this._sourceEvents].start,this._onStart,this._listenerOptions),this._unbindWindowListeners(),this.cancel(),i&&(this._sourceEvents=n),e&&r&&(this._listenerOptions=r),this.element.addEventListener(V[this._sourceEvents].start,this._onStart,this._listenerOptions))}on(t,e,i){return this._emitter.on(t,e,i)}off(t,e){this._emitter.off(t,e)}destroy(){this.isDestroyed||(this.isDestroyed=!0,this.cancel(),this._emitter.emit(C.destroy,{type:C.destroy}),this._emitter.off(),this.element.removeEventListener(V[this._sourceEvents].start,this._onStart,this._listenerOptions))}},H=["start","cancel","end","moveLeft","moveRight","moveUp","moveDown"];function j(t,e){if(!t.size||!e.size)return 1/0;let i=1/0;for(let s of t){let t=e.get(s);void 0!==t&&t{if(document.activeElement){let{left:t,top:e}=document.activeElement.getBoundingClientRect();return{x:t,y:e}}return null},computeSpeed:i=()=>500,startKeys:s=[" ","Enter"],moveLeftKeys:n=["ArrowLeft"],moveRightKeys:r=["ArrowRight"],moveUpKeys:o=["ArrowUp"],moveDownKeys:a=["ArrowDown"],cancelKeys:l=["Escape"],endKeys:h=[" ","Enter"]}=t;this._computeSpeed=i,this._startPredicate=e,this._startKeys=new Set(s),this._cancelKeys=new Set(l),this._endKeys=new Set(h),this._moveLeftKeys=new Set(n),this._moveRightKeys=new Set(r),this._moveUpKeys=new Set(o),this._moveDownKeys=new Set(a),this._moveKeys=new Set([...n,...r,...o,...a]),this._moveKeyTimestamps=new Map,this._onKeyDown=this._onKeyDown.bind(this),this._onKeyUp=this._onKeyUp.bind(this),this._onTick=this._onTick.bind(this),this.on("tick",this._onTick),document.addEventListener("keydown",this._onKeyDown),document.addEventListener("keyup",this._onKeyUp),window.addEventListener("blur",this.cancel),window.addEventListener("visibilitychange",this.cancel)}_end(t){this.drag&&(this._moveKeyTimestamps.clear(),this._direction.x=0,this._direction.y=0,super._end(t))}_cancel(t){this.drag&&(this._moveKeyTimestamps.clear(),this._direction.x=0,this._direction.y=0,super._cancel(t))}_updateDirection(){let t=j(this._moveLeftKeys,this._moveKeyTimestamps),e=j(this._moveRightKeys,this._moveKeyTimestamps),i=j(this._moveUpKeys,this._moveKeyTimestamps),s=j(this._moveDownKeys,this._moveKeyTimestamps),n=t===e?0:t{let n=`${i}Keys`,r=t[n];void 0!==r&&(this[`_${n}`]=new Set(r),s>=3&&(e=!0))}),e){let t=[...this._moveLeftKeys,...this._moveRightKeys,...this._moveUpKeys,...this._moveDownKeys];[...this._moveKeys].every((e,i)=>t[i]===e)||(this._moveKeys=new Set(t),this._moveKeyTimestamps.clear(),this._updateDirection())}}destroy(){this.isDestroyed||(super.destroy(),this.off("tick",this._onTick),document.removeEventListener("keydown",this._onKeyDown),document.removeEventListener("keyup",this._onKeyUp),window.removeEventListener("blur",this.cancel),window.removeEventListener("visibilitychange",this.cancel))}},G=class{constructor(){this.sensor=null,this.isEnded=!1,this.isStarted=!1,this.startEvent=null,this.nextMoveEvent=null,this.prevMoveEvent=null,this.endEvent=null,this.items=[]}},J=class{constructor(t,e,i,s,n){this.data={},this.element=t,this.elementContainer=e,this.elementOffsetContainer=i,this.dragContainer=s,this.dragOffsetContainer=n,this.initialTransform="",this.frozenProps=null,this.unfrozenProps=null,this.x=0,this.y=0,this.pX=0,this.pY=0,this._updateDiffX=0,this._updateDiffY=0,this._moveDiffX=0,this._moveDiffY=0,this._containerDiffX=0,this._containerDiffY=0}};function Q(t,e,i={left:0,top:0}){if(i.left=0,i.top=0,t===e)return i;let s=k([t,"padding"]),n=k([e,"padding"]);return i.left=n.left-s.left,i.top=n.top-s.top,i}var Z=new WeakMap;function tt(t){let e=Z.get(t)?.deref();return e||(e=window.getComputedStyle(t,null),Z.set(t,new WeakRef(e))),e}var te=!F||{capture:!0,passive:!0},ti={left:0,top:0},ts={x:0,y:0};function tn(){return{container:null,startPredicate:()=>!0,getElements:()=>null,releaseElements:()=>null,getFrozenProps:()=>null,getStartPosition:()=>({x:0,y:0}),setPosition:({item:t,x:e,y:i})=>{t.element.style.transform=`translate(${e}px, ${i}px) ${t.initialTransform}`},getPositionChange:({event:t,prevEvent:e})=>(ts.x=t.x-e.x,ts.y=t.y-e.y,ts)}}var tr=class{constructor(t,e={}){this.sensors=t,this.settings=this._parseSettings(e),this.plugins={},this.drag=null,this.isDestroyed=!1,this._sensorData=new Map,this._emitter=new i,this._startId=Symbol(),this._moveId=Symbol(),this._updateId=Symbol(),this._onMove=this._onMove.bind(this),this._onScroll=this._onScroll.bind(this),this._onEnd=this._onEnd.bind(this),this._prepareStart=this._prepareStart.bind(this),this._applyStart=this._applyStart.bind(this),this._prepareMove=this._prepareMove.bind(this),this._applyMove=this._applyMove.bind(this),this._preparePositionUpdate=this._preparePositionUpdate.bind(this),this._applyPositionUpdate=this._applyPositionUpdate.bind(this),this.sensors.forEach(t=>{this._sensorData.set(t,{predicateState:0,predicateEvent:null,onMove:e=>this._onMove(e,t),onEnd:e=>this._onEnd(e,t)});let{onMove:e,onEnd:i}=this._sensorData.get(t);t.on("start",e),t.on("move",e),t.on("cancel",i),t.on("end",i),t.on("destroy",i)})}_parseSettings(t,e=tn()){let{container:i=e.container,startPredicate:s=e.startPredicate,getElements:n=e.getElements,releaseElements:r=e.releaseElements,getFrozenProps:o=e.getFrozenProps,getStartPosition:a=e.getStartPosition,setPosition:l=e.setPosition,getPositionChange:h=e.getPositionChange}=t||{};return{container:i,startPredicate:s,getElements:n,releaseElements:r,getFrozenProps:o,getStartPosition:a,setPosition:l,getPositionChange:h}}_emit(t,...e){this._emitter.emit(t,...e)}_onMove(t,e){let i=this._sensorData.get(e);if(i)switch(i.predicateState){case 0:{i.predicateEvent=t;let s=this.settings.startPredicate({draggable:this,sensor:e,event:t});!0===s?this.resolveStartPredicate(e):!1===s&&this.rejectStartPredicate(e);break}case 1:this.drag&&(this.drag.nextMoveEvent=t,Y.once(O,this._prepareMove,this._moveId),Y.once(X,this._applyMove,this._moveId))}}_onScroll(){this.updatePosition()}_onEnd(t,e){let i=this._sensorData.get(e);i&&(this.drag?1===i.predicateState&&(this.drag.endEvent=t,this._sensorData.forEach(t=>{t.predicateState=0,t.predicateEvent=null}),this.stop()):(i.predicateState=0,i.predicateEvent=null))}_prepareStart(){let{drag:t}=this;if(!t||!t.startEvent)return;let e=this.settings.getElements({draggable:this,sensor:t.sensor,startEvent:t.startEvent})||[];t.items=e.map(e=>{if(!e.isConnected)throw Error("Element is not connected");let i=e.parentElement,s=P(e);if(!s)throw Error("Offset container could not be computed for the element!");let n=this.settings.container||i,r=n===i?s:P(e,{container:n});if(!r)throw Error("Drag offset container could not be computed for the element!");let o=new J(e,i,s,n,r),a=e.getBoundingClientRect();if(o.x=a.left,o.y=a.top,s!==r){let{left:t,top:e}=Q(r,s,ti);o._containerDiffX=t,o._containerDiffY=e}let l=tt(e),{transform:h}=l;h&&"none"!==h&&"matrix(1, 0, 0, 1, 0, 0)"!==h&&"matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)"!==h&&(o.initialTransform=h);let{x:d,y:c}=this.settings.getStartPosition({draggable:this,sensor:t.sensor,item:o,style:l});o.pX=d,o.pY=c;let u=this.settings.getFrozenProps({draggable:this,sensor:t.sensor,item:o,style:l});if(Array.isArray(u)){if(u.length){let t={};for(let e of u)t[e]=l[e];o.frozenProps=t}else o.frozenProps=null}else o.frozenProps=u;if(o.frozenProps){let t={};for(let i in o.frozenProps)o.frozenProps.hasOwnProperty(i)&&(t[i]=e.style[i]);o.unfrozenProps=t}return o}),this._emit("preparestart",t.startEvent)}_applyStart(){let t=this.drag;if(!t||!t.startEvent)return;let{container:e}=this.settings;for(let i of t.items)e&&i.element.parentElement!==e&&(e.appendChild(i.element),i.pX+=i._containerDiffX,i.pY+=i._containerDiffY),i.frozenProps&&Object.assign(i.element.style,i.frozenProps),this.settings.setPosition({phase:"start",draggable:this,sensor:t.sensor,item:i,x:i.pX,y:i.pY});window.addEventListener("scroll",this._onScroll,te),t.isStarted=!0,this._emit("start",t.startEvent)}_prepareMove(){let{drag:t}=this;if(!t||!t.startEvent)return;let e=t.nextMoveEvent,i=t.prevMoveEvent||t.startEvent;if(!(!e||e===i)){for(let s of t.items){let{x:n,y:r}=this.settings.getPositionChange({draggable:this,sensor:t.sensor,item:s,startEvent:t.startEvent,prevEvent:i,event:e});n&&(s.pX=s.pX-s._moveDiffX+n,s.x=s.x-s._moveDiffX+n,s._moveDiffX=n),r&&(s.pY=s.pY-s._moveDiffY+r,s.y=s.y-s._moveDiffY+r,s._moveDiffY=r)}t.prevMoveEvent=e,this._emit("preparemove",e)}}_applyMove(){let{drag:t}=this;if(!(!t||!t.nextMoveEvent)){for(let e of t.items)e._moveDiffX=0,e._moveDiffY=0;for(let e of t.items)this.settings.setPosition({phase:"move",draggable:this,sensor:t.sensor,item:e,x:e.pX,y:e.pY});this._emit("move",t.nextMoveEvent)}}_preparePositionUpdate(){let{drag:t}=this;if(t)for(let e of t.items){if(e.elementOffsetContainer!==e.dragOffsetContainer){let{left:t,top:i}=Q(e.dragOffsetContainer,e.elementOffsetContainer,ti);e._containerDiffX=t,e._containerDiffY=i}let{left:t,top:i}=e.element.getBoundingClientRect(),s=e.x-e._moveDiffX-t;e.pX=e.pX-e._updateDiffX+s,e._updateDiffX=s;let n=e.y-e._moveDiffY-i;e.pY=e.pY-e._updateDiffY+n,e._updateDiffY=n}}_applyPositionUpdate(){let{drag:t}=this;if(t)for(let e of t.items)e._updateDiffX=0,e._updateDiffY=0,this.settings.setPosition({phase:"move",draggable:this,sensor:t.sensor,item:e,x:e.pX,y:e.pY})}on(t,e,i){return this._emitter.on(t,e,i)}off(t,e){this._emitter.off(t,e)}resolveStartPredicate(t,e){let i=this._sensorData.get(t);if(!i)return;let s=e||i.predicateEvent;0===i.predicateState&&s&&(i.predicateState=1,i.predicateEvent=null,this.drag=new G,this.drag.sensor=t,this.drag.startEvent=s,this._sensorData.forEach((e,i)=>{i!==t&&(e.predicateState=2,e.predicateEvent=null)}),Y.once(O,this._prepareStart,this._startId),Y.once(X,this._applyStart,this._startId))}rejectStartPredicate(t){let e=this._sensorData.get(t);e?.predicateState===0&&(e.predicateState=2,e.predicateEvent=null)}stop(){let{drag:t}=this;if(!(!t||t.isEnded)){if(t.isEnded=!0,Y.off(O,this._startId),Y.off(X,this._startId),Y.off(O,this._moveId),Y.off(X,this._moveId),Y.off(O,this._updateId),Y.off(X,this._updateId),t.isStarted){window.removeEventListener("scroll",this._onScroll,te);let e=[];for(let i of t.items){if(e.push(i.element),i.elementContainer&&i.element.parentElement!==i.elementContainer&&(i.pX-=i._containerDiffX,i.pY-=i._containerDiffY,i._containerDiffX=0,i._containerDiffY=0,i.elementContainer.appendChild(i.element)),i.unfrozenProps)for(let t in i.unfrozenProps)i.element.style[t]=i.unfrozenProps[t]||"";this.settings.setPosition({phase:"end",draggable:this,sensor:t.sensor,item:i,x:i.pX,y:i.pY})}e.length&&this.settings.releaseElements({draggable:this,sensor:t.sensor,elements:e})}this._emit("end",t.endEvent),this.drag=null}}updatePosition(t=!1){this.drag&&(t?(this._preparePositionUpdate(),this._applyPositionUpdate()):(Y.once(O,this._preparePositionUpdate,this._updateId),Y.once(X,this._applyPositionUpdate,this._updateId)))}updateSettings(t={}){this.settings=this._parseSettings(t,this.settings)}use(t){return t(this)}destroy(){this.isDestroyed||(this.isDestroyed=!0,this.stop(),this._sensorData.forEach(({onMove:t,onEnd:e},i)=>{i.off("start",t),i.off("move",t),i.off("cancel",e),i.off("end",e),i.off("destroy",e)}),this._sensorData.clear(),this._emit("destroy"),this._emitter.off())}},to=class{constructor(t,e){this._data=[],this._createObject=t,this._onPut=e}pick(){return this._data.length?this._data.pop():this._createObject()}put(t){-1===this._data.indexOf(t)&&(this._onPut&&this._onPut(t),this._data.push(t))}reset(){this._data.length=0}};function ta(t,e){let i;let s=(i=function(t,...e){let i={...M(t),right:0,bottom:0};for(let t of e){let e=M(t),s=Math.max(i.left,e.left),n=Math.min(i.left+i.width,e.left+e.width);if(n<=s)return null;let r=Math.max(i.top,e.top),o=Math.min(i.top+i.height,e.height+e.top);if(o<=r)return null;i.left=s,i.top=r,i.width=n-s,i.height=o-r}return i.right=i.left+i.width,i.bottom=i.top+i.height,i}(t,e))?i.width*i.height:0;return s?s/(Math.min(t.width,e.width)*Math.min(t.height,e.height))*100:0}function tl(t){return t instanceof Window}function th(t){return tl(t)||t===document.documentElement||t===document.body?window:t}function td(t){return tl(t)?t.pageXOffset:t.scrollLeft}function tc(t){return tl(t)&&(t=document.documentElement),t.scrollWidth-t.clientWidth}function tu(t){return tl(t)?t.pageYOffset:t.scrollTop}function tp(t){return tl(t)&&(t=document.documentElement),t.scrollHeight-t.clientHeight}function tm(t,e){return!(t.right<=e.left||e.right<=t.left||t.bottom<=e.top||e.bottom<=t.top)}var tf={width:0,height:0,left:0,right:0,top:0,bottom:0},t_={...tf},tg={direction:"none",threshold:0,distance:0,value:0,maxValue:0,duration:0,speed:0,deltaTime:0,isEnding:!1},tv={x:1,y:2},ty={forward:4,reverse:8},tw={none:0,left:tv.x|ty.reverse,right:tv.x|ty.forward},tD={none:0,up:tv.y|ty.reverse,down:tv.y|ty.forward},tE={...tw,...tD};function tx(t){switch(t){case tw.none:case tD.none:return"none";case tw.left:return"left";case tw.right:return"right";case tD.up:return"up";case tD.down:return"down";default:throw Error(`Unknown direction value: ${t}`)}}function tS(t,e,i){let{left:s=0,right:n=0,top:r=0,bottom:o=0}=e;return s=Math.max(0,s),n=Math.max(0,n),r=Math.max(0,r),o=Math.max(0,o),i.width=t.width+s+n,i.height=t.height+r+o,i.left=t.left-s,i.top=t.top-r,i.right=t.right+n,i.bottom=t.bottom+o,i}function tb(t,e){return Math.ceil(t)>=Math.floor(e)}function tk(t,e){return Math.min(e/2,t)}function tT(t,e,i,s){return Math.max(0,i+2*t+s*e-s)/2}var tM=class{constructor(){this.positionX=0,this.positionY=0,this.directionX=tE.none,this.directionY=tE.none,this.overlapCheckRequestTime=0}},tP=class{constructor(){this.element=null,this.requestX=null,this.requestY=null,this.scrollLeft=0,this.scrollTop=0}reset(){this.requestX&&(this.requestX.action=null),this.requestY&&(this.requestY.action=null),this.element=null,this.requestX=null,this.requestY=null,this.scrollLeft=0,this.scrollTop=0}addRequest(t){tv.x&t.direction?(this.requestX&&this.removeRequest(this.requestX),this.requestX=t):(this.requestY&&this.removeRequest(this.requestY),this.requestY=t),t.action=this}removeRequest(t){this.requestX===t?(this.requestX=null,t.action=null):this.requestY===t&&(this.requestY=null,t.action=null)}computeScrollValues(){this.element&&(this.scrollLeft=this.requestX?this.requestX.value:td(this.element),this.scrollTop=this.requestY?this.requestY.value:tu(this.element))}scroll(){this.element&&(this.element.scrollTo?this.element.scrollTo(this.scrollLeft,this.scrollTop):(this.element.scrollLeft=this.scrollLeft,this.element.scrollTop=this.scrollTop))}},tq=class{constructor(){this.item=null,this.element=null,this.isActive=!1,this.isEnding=!1,this.direction=0,this.value=NaN,this.maxValue=0,this.threshold=0,this.distance=0,this.deltaTime=0,this.speed=0,this.duration=0,this.action=null}reset(){this.isActive&&this.onStop(),this.item=null,this.element=null,this.isActive=!1,this.isEnding=!1,this.direction=0,this.value=NaN,this.maxValue=0,this.threshold=0,this.distance=0,this.deltaTime=0,this.speed=0,this.duration=0,this.action=null}hasReachedEnd(){return ty.forward&this.direction?tb(this.value,this.maxValue):this.value<=0}computeCurrentScrollValue(){return this.element?this.value!=this.value?tv.x&this.direction?td(this.element):tu(this.element):Math.max(0,Math.min(this.value,this.maxValue)):0}computeNextScrollValue(){let t=this.speed*(this.deltaTime/1e3);return Math.max(0,Math.min(ty.forward&this.direction?this.value+t:this.value-t,this.maxValue))}computeSpeed(){if(!this.item||!this.element)return 0;let{speed:t}=this.item;return"function"==typeof t?(tg.direction=tx(this.direction),tg.threshold=this.threshold,tg.distance=this.distance,tg.value=this.value,tg.maxValue=this.maxValue,tg.duration=this.duration,tg.speed=this.speed,tg.deltaTime=this.deltaTime,tg.isEnding=this.isEnding,t(this.element,tg)):t}tick(t){return this.isActive||(this.isActive=!0,this.onStart()),this.deltaTime=t,this.value=this.computeCurrentScrollValue(),this.speed=this.computeSpeed(),this.value=this.computeNextScrollValue(),this.duration+=t,this.value}onStart(){if(!this.item||!this.element)return;let{onStart:t}=this.item;"function"==typeof t&&t(this.element,tx(this.direction))}onStop(){if(!this.item||!this.element)return;let{onStop:t}=this.item;"function"==typeof t&&t(this.element,tx(this.direction))}};new class{constructor(t={}){let{overlapCheckInterval:e=150}=t;this.items=[],this.settings={overlapCheckInterval:e},this._actions=[],this._isDestroyed=!1,this._isTicking=!1,this._tickTime=0,this._tickDeltaTime=0,this._requests={[tv.x]:new Map,[tv.y]:new Map},this._itemData=new Map,this._requestPool=new to(()=>new tq,t=>t.reset()),this._actionPool=new to(()=>new tP,t=>t.reset()),this._emitter=new i,this._frameRead=this._frameRead.bind(this),this._frameWrite=this._frameWrite.bind(this)}_frameRead(t){this._isDestroyed||(t&&this._tickTime?(this._tickDeltaTime=t-this._tickTime,this._tickTime=t,this._updateItems(),this._updateRequests(),this._updateActions()):(this._tickTime=t,this._tickDeltaTime=0))}_frameWrite(){this._isDestroyed||this._applyActions()}_startTicking(){this._isTicking||(this._isTicking=!0,Y.on(O,this._frameRead),Y.on(X,this._frameWrite))}_stopTicking(){this._isTicking&&(this._isTicking=!1,this._tickTime=0,this._tickDeltaTime=0,Y.off(O,this._frameRead),Y.off(X,this._frameWrite))}_getItemClientRect(t,e={width:0,height:0,left:0,right:0,top:0,bottom:0}){let{clientRect:i}=t;return e.left=i.left,e.top=i.top,e.width=i.width,e.height=i.height,e.right=i.left+i.width,e.bottom=i.top+i.height,e}_requestItemScroll(t,e,i,s,n,r,o){let a=this._requests[e],l=a.get(t);l?(l.element!==i||l.direction!==s)&&l.reset():(l=this._requestPool.pick(),a.set(t,l)),l.item=t,l.element=i,l.direction=s,l.threshold=n,l.distance=r,l.maxValue=o}_cancelItemScroll(t,e){let i=this._requests[e],s=i.get(t);s&&(s.action&&s.action.removeRequest(s),this._requestPool.put(s),i.delete(t))}_checkItemOverlap(t,e,i){let{inertAreaSize:s,targets:n}=t;if(!n.length){e&&this._cancelItemScroll(t,tv.x),i&&this._cancelItemScroll(t,tv.y);return}let r=this._itemData.get(t),o=r?.directionX,a=r?.directionY;if(!o&&!a){e&&this._cancelItemScroll(t,tv.x),i&&this._cancelItemScroll(t,tv.y);return}let l=this._getItemClientRect(t,tf),h=null,d=-1/0,c=0,u=-1/0,p=tE.none,f=0,_=0,g=null,v=-1/0,y=0,w=-1/0,D=tE.none,E=0,x=0,S=0;for(;S=r?m(i,t.top,e.left,r):e.left-i:t.left>=n?s<=e.top?m(t.left,s,n,e.top):t.top>=r?m(t.left,t.top,n,r):t.left-n:s<=e.top?e.top-s:t.top-r}(M(l),M(I))||0)}if(b&&P>=d&&L>0&&(P>d||O>u)){let t=0,e=tE.none,i=tk(r,I.width),n=tT(i,s,l.width,I.width);o===tE.right?(t=I.right+n-l.right)<=i&&!tb(td(q),L)&&(e=tE.right):o===tE.left&&(t=l.left-(I.left-n))<=i&&td(q)>0&&(e=tE.left),e&&(h=q,d=P,c=i,u=O,p=e,f=t,_=L)}if(k&&P>=v&&C>0&&(P>v||O>w)){let t=0,e=tD.none,i=tk(r,I.height),n=tT(i,s,l.height,I.height);a===tE.down?(t=I.bottom+n-l.bottom)<=i&&!tb(tu(q),C)&&(e=tE.down):a===tE.up&&(t=l.top-(I.top-n))<=i&&tu(q)>0&&(e=tE.up),e&&(g=q,v=P,y=i,w=O,D=e,E=t,x=C)}}e&&(h&&p?this._requestItemScroll(t,tv.x,h,p,c,f,_):this._cancelItemScroll(t,tv.x)),i&&(g&&D?this._requestItemScroll(t,tv.y,g,D,y,E,x):this._cancelItemScroll(t,tv.y))}_updateScrollRequest(t){let e=t.item,{inertAreaSize:i,smoothStop:s,targets:n}=e,r=this._getItemClientRect(e,tf),o=null,a=0;for(;ac)break;let m=l?td(s):tu(s);if(o=ty.forward&t.direction?tb(m,h):m<=0)break;return t.maxValue=h,t.threshold=c,t.distance=p,t.isEnding=!1,!0}return!0===s&&t.speed>0?(null===o&&(o=t.hasReachedEnd()),t.isEnding=!o):t.isEnding=!1,t.isEnding}_updateItems(){for(let t=0;tr?tE.right:so?tE.down:n0&&this._tickTime-o>this.settings.overlapCheckInterval,l=!0,h=e.get(n);h&&h.isActive&&(l=!this._updateScrollRequest(h))&&(a=!0,this._cancelItemScroll(n,tv.x));let d=!0,c=i.get(n);c&&c.isActive&&(d=!this._updateScrollRequest(c))&&(a=!0,this._cancelItemScroll(n,tv.y)),a&&(r.overlapCheckRequestTime=0,this._checkItemOverlap(n,l,d))}}_requestAction(t,e){let i=e===tv.x,s=null,n=0;for(;n[tI],startPredicate:function(t={}){let e,i=0,s=null,n,{timeout:r=250,fallback:o=()=>!0}=t,a=t=>t.preventDefault(),l=t=>{if(i){if(e){t.cancelable&&t.preventDefault();return}void 0===e&&(t.cancelable&&t.timeStamp-i>r?(e=!0,t.preventDefault()):e=!1)}};return t=>{if(!(t.sensor instanceof B))return o(t);let{draggable:h,sensor:d,event:c}=t;if("touch"===c.pointerType){if("start"===c.type&&("pointerdown"===c.srcEvent.type||"touchstart"===c.srcEvent.type)){var u;let t;let o=(s=c.target)?(t=[],tC(u=s)&&t.push(u),function(t,e=[]){let i=t?.parentNode;for(;i&&!(i instanceof Document);)i instanceof Element?(tC(i)&&e.push(i),i=i.parentNode):i=i instanceof ShadowRoot?i.host:i.parentNode;e.push(window)}(u,t),t):[];o.forEach(t=>{t.addEventListener("touchmove",l,{passive:!1,capture:!0})});let p=()=>{i&&(h.off("end",p),h.sensors.forEach(t=>{t instanceof B&&t.off("end",p)}),s?.removeEventListener("contextmenu",a),o.forEach(t=>{t.removeEventListener("touchmove",l,{capture:!0})}),i=0,e=void 0,s=null,n=void window.clearTimeout(n))};e=void 0,i=c.srcEvent.timeStamp,s?.addEventListener("contextmenu",a),h.on("end",p),h.sensors.forEach(t=>{t instanceof B&&t.off("end",p)}),r>0&&(n=window.setTimeout(()=>{h.resolveStartPredicate(d),e=!0,n=void 0},r))}return e}return"start"===c.type&&!c.srcEvent.button}}()});tO.on("start",()=>{tI.classList.add("dragging")}),tO.on("end",()=>{tI.classList.remove("dragging")}); +//# sourceMappingURL=index.fbc6ca0e.js.map diff --git a/docs/public/examples/001-draggable-basic/index.fbc6ca0e.js.map b/docs/public/examples/001-draggable-basic/index.fbc6ca0e.js.map new file mode 100644 index 0000000..767a2f3 --- /dev/null +++ b/docs/public/examples/001-draggable-basic/index.fbc6ca0e.js.map @@ -0,0 +1 @@ +{"mappings":"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","sources":["","examples/001-draggable-basic/index.ts","dist/dragdoll.js","node_modules/eventti/dist/eventti.js","node_modules/tikki/dist/tikki.js","node_modules/mezr/dist/esm/index.js","node_modules/mezr/dist/esm/getContainingBlock.js","node_modules/mezr/dist/esm/utils/getStyle.js","node_modules/mezr/dist/esm/utils/isContainingBlockForFixedElement.js","node_modules/mezr/dist/esm/utils/constants.js","node_modules/mezr/dist/esm/utils/isBlockElement.js","node_modules/mezr/dist/esm/utils/isContainingBlockForAbsoluteElement.js","node_modules/mezr/dist/esm/utils/isDocumentElement.js","node_modules/mezr/dist/esm/getDistance.js","node_modules/mezr/dist/esm/utils/getDistanceBetweenRects.js","node_modules/mezr/dist/esm/utils/isIntersecting.js","node_modules/mezr/dist/esm/utils/getDistanceBetweenPoints.js","node_modules/mezr/dist/esm/utils/getNormalizedRect.js","node_modules/mezr/dist/esm/getRect.js","node_modules/mezr/dist/esm/getWidth.js","node_modules/mezr/dist/esm/utils/isWindow.js","node_modules/mezr/dist/esm/utils/isDocument.js","node_modules/mezr/dist/esm/utils/getWindowWidth.js","node_modules/mezr/dist/esm/utils/getPreciseScrollbarSize.js","node_modules/mezr/dist/esm/utils/getDocumentWidth.js","node_modules/mezr/dist/esm/utils/getElementWidth.js","node_modules/mezr/dist/esm/getHeight.js","node_modules/mezr/dist/esm/utils/getWindowHeight.js","node_modules/mezr/dist/esm/utils/getDocumentHeight.js","node_modules/mezr/dist/esm/utils/getElementHeight.js","node_modules/mezr/dist/esm/getOffset.js","node_modules/mezr/dist/esm/utils/isRectObject.js","node_modules/mezr/dist/esm/utils/getOffsetFromDocument.js","node_modules/mezr/dist/esm/getIntersection.js","node_modules/mezr/dist/esm/getOffsetContainer.js","node_modules/mezr/dist/esm/getOverflow.js"],"sourcesContent":["function $882b296db6123935$var$getOrCreateEventData(e, t) {\n let i = e.get(t);\n return i || (i = new $882b296db6123935$var$EventData, e.set(t, i)), i;\n}\nclass $882b296db6123935$var$EventData {\n constructor(){\n this.idMap = new Map, this.fnMap = new Map, this.onceList = new Set, this.emitList = null;\n }\n add(e, t, i, s, n) {\n if (!n && this.fnMap.has(e)) throw new Error(\"Emitter: tried to add an existing event listener to an event!\");\n if (this.idMap.has(i)) switch(s){\n case \"throw\":\n throw new Error(\"Emitter: tried to add an existing event listener id to an event!\");\n case \"ignore\":\n return i;\n default:\n this.delId(i, \"update\" === s);\n }\n let r = this.fnMap.get(e);\n return r || (r = new Set, this.fnMap.set(e, r)), r.add(i), this.idMap.set(i, e), t && this.onceList.add(i), this.emitList && this.emitList.push(e), i;\n }\n delId(e, t = !1) {\n const i = this.idMap.get(e);\n if (!i) return;\n const s = this.fnMap.get(i);\n t || this.idMap.delete(e), this.onceList.delete(e), s.delete(e), s.size || this.fnMap.delete(i), this.emitList = null;\n }\n delFn(e) {\n const t = this.fnMap.get(e);\n t && (t.forEach((e)=>{\n this.onceList.delete(e), this.idMap.delete(e);\n }), this.fnMap.delete(e), this.emitList = null);\n }\n}\nclass $882b296db6123935$export$4293555f241ae35a {\n constructor(e = {}){\n const { idDedupeMode: t = \"replace\", allowDuplicateListeners: i = !0 } = e;\n this.idDedupeMode = t, this.allowDuplicateListeners = i, this._events = new Map;\n }\n _getListeners(e) {\n const t = this._events.get(e);\n if (!t) return null;\n const { idMap: i, onceList: s } = t;\n if (!i.size) return null;\n const n = t.emitList || [\n ...i.values()\n ];\n if (s.size) {\n if (s.size === i.size) this._events.delete(e);\n else for (const e of s)t.delId(e);\n } else t.emitList = n;\n return n;\n }\n on(e, t, i = Symbol()) {\n return $882b296db6123935$var$getOrCreateEventData(this._events, e).add(t, !1, i, this.idDedupeMode, this.allowDuplicateListeners);\n }\n once(e, t, i = Symbol()) {\n return $882b296db6123935$var$getOrCreateEventData(this._events, e).add(t, !0, i, this.idDedupeMode, this.allowDuplicateListeners);\n }\n off(e, t) {\n if (void 0 === e) return void this._events.clear();\n if (void 0 === t) return void this._events.delete(e);\n const i = this._events.get(e);\n i && (\"function\" == typeof t ? i.delFn(t) : i.delId(t), i.idMap.size || this._events.delete(e));\n }\n emit(e, ...t) {\n const i = this._getListeners(e);\n if (!i) return;\n let s = 0, n = i.length;\n for(; s < n; s++)i[s](...t);\n }\n listenerCount(e) {\n var t;\n if (void 0 === e) {\n let e = 0;\n return this._events.forEach((t, i)=>{\n e += this.listenerCount(i);\n }), e;\n }\n return (null === (t = this._events.get(e)) || void 0 === t ? void 0 : t.idMap.size) || 0;\n }\n}\n\n\n\nfunction $df4a713e26511813$export$789135d3cf084551(e = 60) {\n if (\"function\" == typeof requestAnimationFrame && \"function\" == typeof cancelAnimationFrame) return (e)=>{\n const t = requestAnimationFrame(e);\n return ()=>cancelAnimationFrame(t);\n };\n {\n const t = 1e3 / e, i = \"undefined\" == typeof performance ? ()=>Date.now() : ()=>performance.now();\n return (e)=>{\n const r = setTimeout(()=>e(i()), t);\n return ()=>clearTimeout(r);\n };\n }\n}\nvar $df4a713e26511813$export$ef9b1dc363f184d9;\n!function(e) {\n e[e.PAUSED = 1] = \"PAUSED\", e[e.ON_DEMAND = 2] = \"ON_DEMAND\", e[e.CONTINUOUS = 3] = \"CONTINUOUS\";\n}($df4a713e26511813$export$ef9b1dc363f184d9 || ($df4a713e26511813$export$ef9b1dc363f184d9 = {}));\nclass $df4a713e26511813$export$39c54bcc89dcee11 {\n constructor(e = {}){\n const { phases: t = [], autoTick: i = $df4a713e26511813$export$ef9b1dc363f184d9.ON_DEMAND, allowDuplicateListeners: r = !0, idDedupeMode: s = \"replace\", requestFrame: n = $df4a713e26511813$export$789135d3cf084551() } = e;\n this.phases = t, this._autoTick = i, this._requestFrame = n, this._cancelFrame = null, this._queue = [], this._emitter = new (0, $882b296db6123935$export$4293555f241ae35a)({\n allowDuplicateListeners: r,\n idDedupeMode: s\n }), this.tick = this.tick.bind(this);\n }\n get requestFrame() {\n return this._requestFrame;\n }\n set requestFrame(e) {\n this._requestFrame = e, this._kickstart();\n }\n get autoTick() {\n return this._autoTick;\n }\n set autoTick(e) {\n this._autoTick = e, this._kickstart();\n }\n get allowDuplicateListeners() {\n return this._emitter.allowDuplicateListeners;\n }\n set allowDuplicateListeners(e) {\n this._emitter.allowDuplicateListeners = e;\n }\n get idDedupeMode() {\n return this._emitter.idDedupeMode;\n }\n set idDedupeMode(e) {\n this._emitter.idDedupeMode = e;\n }\n tick(...e) {\n this._cancelFrame = null;\n const { _queue: t } = this;\n if (t.length) throw new Error(\"Ticker: Can't tick before the previous tick has finished!\");\n this._request();\n const { phases: i, _emitter: r } = this;\n let s, n, a, c, u, o;\n for(s = 0, a = i.length; s < a; s++)o = r._getListeners(i[s]), o && t.push(o);\n for(s = 0, a = t.length; s < a; s++)for(u = t[s], n = 0, c = u.length; n < c; n++)u[n](...e);\n t.length = 0, this._autoTick !== $df4a713e26511813$export$ef9b1dc363f184d9.ON_DEMAND || r.listenerCount() || this._cancel();\n }\n on(e, t, i) {\n const r = this._emitter.on(e, t, i);\n return this._request(), r;\n }\n once(e, t, i) {\n const r = this._emitter.once(e, t, i);\n return this._request(), r;\n }\n off(e, t) {\n return this._emitter.off(e, t);\n }\n listenerCount(e) {\n return this._emitter.listenerCount(e);\n }\n _request() {\n this._requestFrame && !this._cancelFrame && this._autoTick >= $df4a713e26511813$export$ef9b1dc363f184d9.ON_DEMAND && (this._cancelFrame = this._requestFrame(this.tick));\n }\n _cancel() {\n this._cancelFrame && (this._cancelFrame(), this._cancelFrame = null);\n }\n _kickstart() {\n this._autoTick === $df4a713e26511813$export$ef9b1dc363f184d9.ON_DEMAND ? this._emitter.listenerCount() && this._request() : this._autoTick === $df4a713e26511813$export$ef9b1dc363f184d9.CONTINUOUS ? this._request() : this._cancel();\n }\n}\nfunction $df4a713e26511813$export$4d497fac909c98f0(e) {\n return (t)=>{\n const i = e.requestAnimationFrame(t);\n return ()=>e.cancelAnimationFrame(i);\n };\n}\n\n\nconst $45554ebda029bd05$var$STYLE_DECLARATION_CACHE = new WeakMap;\nfunction $45554ebda029bd05$export$3d2f074408bd1b82(e, t) {\n if (t) return window.getComputedStyle(e, t);\n let C = $45554ebda029bd05$var$STYLE_DECLARATION_CACHE.get(e)?.deref();\n return C || (C = window.getComputedStyle(e, null), $45554ebda029bd05$var$STYLE_DECLARATION_CACHE.set(e, new WeakRef(C))), C;\n}\n\n\nconst $70e6b31ea6202e28$export$e44ffb50cc242ec5 = \"undefined\" != typeof window && void 0 !== window.document;\nconst $70e6b31ea6202e28$export$af54264dae9065e6 = !!($70e6b31ea6202e28$export$e44ffb50cc242ec5 && navigator.vendor && navigator.vendor.indexOf(\"Apple\") > -1 && navigator.userAgent && -1 == navigator.userAgent.indexOf(\"CriOS\") && -1 == navigator.userAgent.indexOf(\"FxiOS\"));\nconst $70e6b31ea6202e28$export$11fd24d838ebde87 = {\n content: \"content\",\n padding: \"padding\",\n scrollbar: \"scrollbar\",\n border: \"border\",\n margin: \"margin\"\n};\nconst $70e6b31ea6202e28$export$76e909bcfd8ba196 = {\n [$70e6b31ea6202e28$export$11fd24d838ebde87.content]: !1,\n [$70e6b31ea6202e28$export$11fd24d838ebde87.padding]: !1,\n [$70e6b31ea6202e28$export$11fd24d838ebde87.scrollbar]: !0,\n [$70e6b31ea6202e28$export$11fd24d838ebde87.border]: !0,\n [$70e6b31ea6202e28$export$11fd24d838ebde87.margin]: !0\n};\nconst $70e6b31ea6202e28$export$d2ad2856e215d28e = new Set([\n \"auto\",\n \"scroll\"\n]);\nconst $70e6b31ea6202e28$export$cd414719242f618c = (()=>{\n try {\n return window.navigator.userAgentData.brands.some(({ brand: n })=>\"Chromium\" === n);\n } catch (n) {\n return !1;\n }\n})();\n\n\n\n\nfunction $ac4a87157cb8fded$export$fab73c3646bf1f5e(e) {\n switch((0, $45554ebda029bd05$export$3d2f074408bd1b82)(e).display){\n case \"none\":\n return null;\n case \"inline\":\n case \"contents\":\n return !1;\n default:\n return !0;\n }\n}\n\n\nfunction $19cb8cdbc5921691$export$e5ce114ae0e5f4e8(n) {\n const t = (0, $45554ebda029bd05$export$3d2f074408bd1b82)(n);\n if (!(0, $70e6b31ea6202e28$export$af54264dae9065e6)) {\n const { filter: n } = t;\n if (n && \"none\" !== n) return !0;\n const { backdropFilter: e } = t;\n if (e && \"none\" !== e) return !0;\n const { willChange: i } = t;\n if (i && (i.indexOf(\"filter\") > -1 || i.indexOf(\"backdrop-filter\") > -1)) return !0;\n }\n const e = (0, $ac4a87157cb8fded$export$fab73c3646bf1f5e)(n);\n if (!e) return e;\n const { transform: i } = t;\n if (i && \"none\" !== i) return !0;\n const { perspective: r } = t;\n if (r && \"none\" !== r) return !0;\n const { contentVisibility: o } = t;\n if (o && \"auto\" === o) return !0;\n const { contain: f } = t;\n if (f && (\"strict\" === f || \"content\" === f || f.indexOf(\"paint\") > -1 || f.indexOf(\"layout\") > -1)) return !0;\n const { willChange: c } = t;\n return !(!c || !(c.indexOf(\"transform\") > -1 || c.indexOf(\"perspective\") > -1 || c.indexOf(\"contain\") > -1)) || !!((0, $70e6b31ea6202e28$export$af54264dae9065e6) && c && c.indexOf(\"filter\") > -1);\n}\n\n\n\n\nfunction $ea1829f02863f9a1$export$996cb64f2dabb66f(t) {\n return \"static\" !== (0, $45554ebda029bd05$export$3d2f074408bd1b82)(t).position || (0, $19cb8cdbc5921691$export$e5ce114ae0e5f4e8)(t);\n}\n\n\n\nfunction $8d1ba90c23ec3360$export$d8a62a489b442872(e) {\n return e instanceof HTMLHtmlElement;\n}\n\n\nfunction $1f38751365ebdabf$export$940d8225183e1404(e, t = {}) {\n if ((0, $8d1ba90c23ec3360$export$d8a62a489b442872)(e)) return e.ownerDocument.defaultView;\n const n = t.position || (0, $45554ebda029bd05$export$3d2f074408bd1b82)(e).position, { skipDisplayNone: i, container: o } = t;\n switch(n){\n case \"static\":\n case \"relative\":\n case \"sticky\":\n case \"-webkit-sticky\":\n {\n let t = o || e.parentElement;\n for(; t;){\n const e = (0, $ac4a87157cb8fded$export$fab73c3646bf1f5e)(t);\n if (e) return t;\n if (null === e && !i) return null;\n t = t.parentElement;\n }\n return e.ownerDocument.documentElement;\n }\n case \"absolute\":\n case \"fixed\":\n {\n const t = \"fixed\" === n;\n let l = o || e.parentElement;\n for(; l;){\n const e = t ? (0, $19cb8cdbc5921691$export$e5ce114ae0e5f4e8)(l) : (0, $ea1829f02863f9a1$export$996cb64f2dabb66f)(l);\n if (!0 === e) return l;\n if (null === e && !i) return null;\n l = l.parentElement;\n }\n return e.ownerDocument.defaultView;\n }\n default:\n return null;\n }\n}\n\n\nfunction $15174ae68f2a890f$export$8d3dd0be5eb9f11f(t, e) {\n return !(t.left + t.width <= e.left || e.left + e.width <= t.left || t.top + t.height <= e.top || e.top + e.height <= t.top);\n}\n\n\nfunction $6473c4721ef9a7f0$export$53137579a3174918(t, e, n, o) {\n return Math.sqrt(Math.pow(n - t, 2) + Math.pow(o - e, 2));\n}\n\n\nfunction $1565a77b3ba33365$export$2d670be792dba464(t, e) {\n if ((0, $15174ae68f2a890f$export$8d3dd0be5eb9f11f)(t, e)) return null;\n const n = t.left + t.width, i = t.top + t.height, o = e.left + e.width, s = e.top + e.height;\n return n <= e.left ? i <= e.top ? (0, $6473c4721ef9a7f0$export$53137579a3174918)(n, i, e.left, e.top) : t.top >= s ? (0, $6473c4721ef9a7f0$export$53137579a3174918)(n, t.top, e.left, s) : e.left - n : t.left >= o ? i <= e.top ? (0, $6473c4721ef9a7f0$export$53137579a3174918)(t.left, i, o, e.top) : t.top >= s ? (0, $6473c4721ef9a7f0$export$53137579a3174918)(t.left, t.top, o, s) : t.left - o : i <= e.top ? e.top - i : t.top - s;\n}\n\n\n\nfunction $0dd5d633d9254ede$export$5a096129d439f843(n) {\n return n instanceof Window;\n}\n\n\nfunction $88986006632f0ab8$export$62858bae88b53fd0(n) {\n return n instanceof Document;\n}\n\n\n\n\nconst $9a36d0396b9b09d4$var$SUBPIXEL_OFFSET = new Map;\nlet $9a36d0396b9b09d4$var$testStyleElement = null, $9a36d0396b9b09d4$var$testParentElement = null, $9a36d0396b9b09d4$var$testChildElement = null;\nfunction $9a36d0396b9b09d4$var$getSubpixelScrollbarSize(t, e) {\n const n = t.split(\".\");\n let l = $9a36d0396b9b09d4$var$SUBPIXEL_OFFSET.get(n[1]);\n if (void 0 === l) {\n $9a36d0396b9b09d4$var$testStyleElement || ($9a36d0396b9b09d4$var$testStyleElement = document.createElement(\"style\")), $9a36d0396b9b09d4$var$testStyleElement.innerHTML = `\\n #mezr-scrollbar-test::-webkit-scrollbar {\\n width: ${t} !important;\\n }\\n `, $9a36d0396b9b09d4$var$testParentElement && $9a36d0396b9b09d4$var$testChildElement || ($9a36d0396b9b09d4$var$testParentElement = document.createElement(\"div\"), $9a36d0396b9b09d4$var$testChildElement = document.createElement(\"div\"), $9a36d0396b9b09d4$var$testParentElement.appendChild($9a36d0396b9b09d4$var$testChildElement), $9a36d0396b9b09d4$var$testParentElement.id = \"mezr-scrollbar-test\", $9a36d0396b9b09d4$var$testParentElement.style.cssText = \"\\n all: unset !important;\\n position: fixed !important;\\n top: -200px !important;\\n left: 0px !important;\\n width: 100px !important;\\n height: 100px !important;\\n overflow: scroll !important;\\n pointer-events: none !important;\\n visibility: hidden !important;\\n \", $9a36d0396b9b09d4$var$testChildElement.style.cssText = \"\\n all: unset !important;\\n position: absolute !important;\\n inset: 0 !important;\\n \"), document.body.appendChild($9a36d0396b9b09d4$var$testStyleElement), document.body.appendChild($9a36d0396b9b09d4$var$testParentElement);\n l = $9a36d0396b9b09d4$var$testParentElement.getBoundingClientRect().width - $9a36d0396b9b09d4$var$testChildElement.getBoundingClientRect().width - e, $9a36d0396b9b09d4$var$SUBPIXEL_OFFSET.set(n[1], l), document.body.removeChild($9a36d0396b9b09d4$var$testParentElement), document.body.removeChild($9a36d0396b9b09d4$var$testStyleElement);\n }\n return e + l;\n}\nfunction $9a36d0396b9b09d4$export$5ad86f4734d24a64(t, e, n) {\n if (n <= 0) return 0;\n if (0, $70e6b31ea6202e28$export$cd414719242f618c) {\n const n = (0, $45554ebda029bd05$export$3d2f074408bd1b82)(t, \"::-webkit-scrollbar\"), l = \"x\" === e ? n.height : n.width, i = parseFloat(l);\n if (!Number.isNaN(i) && !Number.isInteger(i)) return $9a36d0396b9b09d4$var$getSubpixelScrollbarSize(l, i);\n }\n return n;\n}\n\n\nfunction $9bae4574eed9d865$export$91cf85d6c980faa0(e, r = !1) {\n if (r) return e.innerWidth;\n const { innerWidth: t, document: i } = e, { documentElement: n } = i, { clientWidth: c } = n;\n return t - (0, $9a36d0396b9b09d4$export$5ad86f4734d24a64)(n, \"y\", t - c);\n}\n\n\nfunction $50cb9a0c1dee19de$export$a76b7f4aaec6cdf4({ documentElement: t }) {\n return Math.max(t.scrollWidth, t.clientWidth, t.getBoundingClientRect().width);\n}\n\n\n\n\n\n\nfunction $f1039b87670ca1f4$export$742d7f6cc44470f1(t, e = (0, $70e6b31ea6202e28$export$11fd24d838ebde87).border) {\n let { width: r } = t.getBoundingClientRect();\n if (e === (0, $70e6b31ea6202e28$export$11fd24d838ebde87).border) return r;\n const o = (0, $45554ebda029bd05$export$3d2f074408bd1b82)(t);\n return e === (0, $70e6b31ea6202e28$export$11fd24d838ebde87).margin ? (r += Math.max(0, parseFloat(o.marginLeft) || 0), r += Math.max(0, parseFloat(o.marginRight) || 0), r) : (r -= parseFloat(o.borderLeftWidth) || 0, r -= parseFloat(o.borderRightWidth) || 0, e === (0, $70e6b31ea6202e28$export$11fd24d838ebde87).scrollbar ? r : (!(0, $8d1ba90c23ec3360$export$d8a62a489b442872)(t) && (0, $70e6b31ea6202e28$export$d2ad2856e215d28e).has(o.overflowY) && (r -= (0, $9a36d0396b9b09d4$export$5ad86f4734d24a64)(t, \"y\", Math.round(r) - t.clientWidth)), e === (0, $70e6b31ea6202e28$export$11fd24d838ebde87).padding || (r -= parseFloat(o.paddingLeft) || 0, r -= parseFloat(o.paddingRight) || 0), r));\n}\n\n\nfunction $2e59c48b8f000a71$export$3c49c185de0c2bfc(t, i = (0, $70e6b31ea6202e28$export$11fd24d838ebde87).border) {\n return (0, $0dd5d633d9254ede$export$5a096129d439f843)(t) ? (0, $9bae4574eed9d865$export$91cf85d6c980faa0)(t, (0, $70e6b31ea6202e28$export$76e909bcfd8ba196)[i]) : (0, $88986006632f0ab8$export$62858bae88b53fd0)(t) ? (0, $50cb9a0c1dee19de$export$a76b7f4aaec6cdf4)(t) : (0, $f1039b87670ca1f4$export$742d7f6cc44470f1)(t, i);\n}\n\n\n\n\n\n\nfunction $421143bc1c1515a1$export$a3648dbc3769cbf4(e, r = !1) {\n if (r) return e.innerHeight;\n const { innerHeight: t, document: i } = e, { documentElement: n } = i, { clientHeight: c } = n;\n return t - (0, $9a36d0396b9b09d4$export$5ad86f4734d24a64)(n, \"x\", t - c);\n}\n\n\nfunction $8e302b6d23f55757$export$5806f5d4b3eb6a6a({ documentElement: t }) {\n return Math.max(t.scrollHeight, t.clientHeight, t.getBoundingClientRect().height);\n}\n\n\n\n\n\n\nfunction $598de259e69a6df4$export$8e0f1520ce23a388(t, e = (0, $70e6b31ea6202e28$export$11fd24d838ebde87).border) {\n let { height: r } = t.getBoundingClientRect();\n if (e === (0, $70e6b31ea6202e28$export$11fd24d838ebde87).border) return r;\n const o = (0, $45554ebda029bd05$export$3d2f074408bd1b82)(t);\n return e === (0, $70e6b31ea6202e28$export$11fd24d838ebde87).margin ? (r += Math.max(0, parseFloat(o.marginTop) || 0), r += Math.max(0, parseFloat(o.marginBottom) || 0), r) : (r -= parseFloat(o.borderTopWidth) || 0, r -= parseFloat(o.borderBottomWidth) || 0, e === (0, $70e6b31ea6202e28$export$11fd24d838ebde87).scrollbar ? r : (!(0, $8d1ba90c23ec3360$export$d8a62a489b442872)(t) && (0, $70e6b31ea6202e28$export$d2ad2856e215d28e).has(o.overflowX) && (r -= (0, $9a36d0396b9b09d4$export$5ad86f4734d24a64)(t, \"x\", Math.round(r) - t.clientHeight)), e === (0, $70e6b31ea6202e28$export$11fd24d838ebde87).padding || (r -= parseFloat(o.paddingTop) || 0, r -= parseFloat(o.paddingBottom) || 0), r));\n}\n\n\nfunction $646cecfa59ec4923$export$c08559766941f856(t, e = (0, $70e6b31ea6202e28$export$11fd24d838ebde87).border) {\n return (0, $0dd5d633d9254ede$export$5a096129d439f843)(t) ? (0, $421143bc1c1515a1$export$a3648dbc3769cbf4)(t, (0, $70e6b31ea6202e28$export$76e909bcfd8ba196)[e]) : (0, $88986006632f0ab8$export$62858bae88b53fd0)(t) ? (0, $8e302b6d23f55757$export$5806f5d4b3eb6a6a)(t) : (0, $598de259e69a6df4$export$8e0f1520ce23a388)(t, e);\n}\n\n\nfunction $4de8edd731addea8$export$ff047630cae37d8e(t) {\n return t?.constructor === Object;\n}\n\n\n\n\n\n\n\nfunction $faeeed2de97ac6f7$export$9f1480883798e819(t, o = (0, $70e6b31ea6202e28$export$11fd24d838ebde87).border) {\n const e = {\n left: 0,\n top: 0\n };\n if ((0, $88986006632f0ab8$export$62858bae88b53fd0)(t)) return e;\n if ((0, $0dd5d633d9254ede$export$5a096129d439f843)(t)) return e.left += t.scrollX || 0, e.top += t.scrollY || 0, e;\n const r = t.ownerDocument.defaultView;\n r && (e.left += r.scrollX || 0, e.top += r.scrollY || 0);\n const n = t.getBoundingClientRect();\n if (e.left += n.left, e.top += n.top, o === (0, $70e6b31ea6202e28$export$11fd24d838ebde87).border) return e;\n const l = (0, $45554ebda029bd05$export$3d2f074408bd1b82)(t);\n return o === (0, $70e6b31ea6202e28$export$11fd24d838ebde87).margin ? (e.left -= Math.max(0, parseFloat(l.marginLeft) || 0), e.top -= Math.max(0, parseFloat(l.marginTop) || 0), e) : (e.left += parseFloat(l.borderLeftWidth) || 0, e.top += parseFloat(l.borderTopWidth) || 0, o === (0, $70e6b31ea6202e28$export$11fd24d838ebde87).scrollbar || o === (0, $70e6b31ea6202e28$export$11fd24d838ebde87).padding || (e.left += parseFloat(l.paddingLeft) || 0, e.top += parseFloat(l.paddingTop) || 0), e);\n}\n\n\nfunction $d927f435c3d7e8ab$export$622cea445a1c5b7d(t, e) {\n const o = (0, $4de8edd731addea8$export$ff047630cae37d8e)(t) ? {\n left: t.left,\n top: t.top\n } : Array.isArray(t) ? (0, $faeeed2de97ac6f7$export$9f1480883798e819)(...t) : (0, $faeeed2de97ac6f7$export$9f1480883798e819)(t);\n if (e && !(0, $88986006632f0ab8$export$62858bae88b53fd0)(e)) {\n const t = (0, $4de8edd731addea8$export$ff047630cae37d8e)(e) ? e : Array.isArray(e) ? (0, $faeeed2de97ac6f7$export$9f1480883798e819)(e[0], e[1]) : (0, $faeeed2de97ac6f7$export$9f1480883798e819)(e);\n o.left -= t.left, o.top -= t.top;\n }\n return o;\n}\n\n\n\nfunction $4fec7741c67a29fc$export$4b834cebd9e5cebe(t, e) {\n let i = 0, g = 0;\n (0, $4de8edd731addea8$export$ff047630cae37d8e)(t) ? (i = t.width, g = t.height) : Array.isArray(t) ? (i = (0, $2e59c48b8f000a71$export$3c49c185de0c2bfc)(...t), g = (0, $646cecfa59ec4923$export$c08559766941f856)(...t)) : (i = (0, $2e59c48b8f000a71$export$3c49c185de0c2bfc)(t), g = (0, $646cecfa59ec4923$export$c08559766941f856)(t));\n const r = (0, $d927f435c3d7e8ab$export$622cea445a1c5b7d)(t, e);\n return {\n width: i,\n height: g,\n ...r,\n right: r.left + i,\n bottom: r.top + g\n };\n}\n\n\n\nfunction $3fe9db1ad94d3e7c$export$e4e616e82e79ab9d(t) {\n return (0, $4de8edd731addea8$export$ff047630cae37d8e)(t) ? t : (0, $4fec7741c67a29fc$export$4b834cebd9e5cebe)(t);\n}\n\n\nfunction $2a599c00d4ed99d6$export$79376507b09a66f(e, t) {\n const c = (0, $3fe9db1ad94d3e7c$export$e4e616e82e79ab9d)(e), i = (0, $3fe9db1ad94d3e7c$export$e4e616e82e79ab9d)(t);\n return (0, $1565a77b3ba33365$export$2d670be792dba464)(c, i);\n}\n\n\n\n\nfunction $e931ad6985aacff5$export$72209efa88586d42(t, ...e) {\n const o = {\n ...(0, $3fe9db1ad94d3e7c$export$e4e616e82e79ab9d)(t),\n right: 0,\n bottom: 0\n };\n for (const t of e){\n const e = (0, $3fe9db1ad94d3e7c$export$e4e616e82e79ab9d)(t), i = Math.max(o.left, e.left), h = Math.min(o.left + o.width, e.left + e.width);\n if (h <= i) return null;\n const r = Math.max(o.top, e.top), l = Math.min(o.top + o.height, e.height + e.top);\n if (l <= r) return null;\n o.left = i, o.top = r, o.width = h - i, o.height = l - r;\n }\n return o.right = o.left + o.width, o.bottom = o.top + o.height, o;\n}\n\n\n\n\n\n\nfunction $4effe6f7501c7f59$export$243d7fadef466e38(n, t = {}) {\n const i = (0, $45554ebda029bd05$export$3d2f074408bd1b82)(n), { display: o } = i;\n if (\"none\" === o || \"contents\" === o) return null;\n const e = t.position || (0, $45554ebda029bd05$export$3d2f074408bd1b82)(n).position, { skipDisplayNone: s, container: r } = t;\n switch(e){\n case \"relative\":\n return n;\n case \"fixed\":\n return (0, $1f38751365ebdabf$export$940d8225183e1404)(n, {\n container: r,\n position: e,\n skipDisplayNone: s\n });\n case \"absolute\":\n {\n const t = (0, $1f38751365ebdabf$export$940d8225183e1404)(n, {\n container: r,\n position: e,\n skipDisplayNone: s\n });\n return (0, $0dd5d633d9254ede$export$5a096129d439f843)(t) ? n.ownerDocument : t;\n }\n default:\n return null;\n }\n}\n\n\n\nfunction $28b6730affddb905$export$f63a1e5ecde5e3c4(t, e) {\n const o = (0, $3fe9db1ad94d3e7c$export$e4e616e82e79ab9d)(t), i = (0, $3fe9db1ad94d3e7c$export$e4e616e82e79ab9d)(e);\n return {\n left: i.left - o.left,\n right: o.left + o.width - (i.left + i.width),\n top: i.top - o.top,\n bottom: o.top + o.height - (i.top + i.height)\n };\n}\n\n\n\n\n\n\nvar $ac6f441b4b448e14$export$61fde4a8bbe7f5d5 = {\n start: \"start\",\n move: \"move\",\n cancel: \"cancel\",\n end: \"end\",\n destroy: \"destroy\"\n};\nvar $ac6f441b4b448e14$export$2176a6ff266bf511 = class {\n constructor(){\n this.drag = null, this.isDestroyed = !1, this._emitter = new (0, $882b296db6123935$export$4293555f241ae35a);\n }\n _createDragData(e) {\n return {\n x: e.x,\n y: e.y\n };\n }\n _updateDragData(e) {\n this.drag && (this.drag.x = e.x, this.drag.y = e.y);\n }\n _resetDragData() {\n this.drag = null;\n }\n _start(e) {\n this.isDestroyed || this.drag || (this.drag = this._createDragData(e), this._emitter.emit($ac6f441b4b448e14$export$61fde4a8bbe7f5d5.start, e));\n }\n _move(e) {\n this.drag && (this._updateDragData(e), this._emitter.emit($ac6f441b4b448e14$export$61fde4a8bbe7f5d5.move, e));\n }\n _end(e) {\n this.drag && (this._updateDragData(e), this._emitter.emit($ac6f441b4b448e14$export$61fde4a8bbe7f5d5.end, e), this._resetDragData());\n }\n _cancel(e) {\n this.drag && (this._updateDragData(e), this._emitter.emit($ac6f441b4b448e14$export$61fde4a8bbe7f5d5.cancel, e), this._resetDragData());\n }\n on(e, t, n) {\n return this._emitter.on(e, t, n);\n }\n off(e, t) {\n this._emitter.off(e, t);\n }\n cancel() {\n this.drag && (this._emitter.emit($ac6f441b4b448e14$export$61fde4a8bbe7f5d5.cancel, {\n type: $ac6f441b4b448e14$export$61fde4a8bbe7f5d5.cancel,\n x: this.drag.x,\n y: this.drag.y\n }), this._resetDragData());\n }\n destroy() {\n this.isDestroyed || (this.isDestroyed = !0, this.cancel(), this._emitter.emit($ac6f441b4b448e14$export$61fde4a8bbe7f5d5.destroy, {\n type: $ac6f441b4b448e14$export$61fde4a8bbe7f5d5.destroy\n }), this._emitter.off());\n }\n};\nvar $ac6f441b4b448e14$export$9138efc7ba4fca22 = Symbol(), $ac6f441b4b448e14$export$5fd1e257088db342 = Symbol(), $ac6f441b4b448e14$export$e94d57566be028aa = new (0, $df4a713e26511813$export$39c54bcc89dcee11)({\n phases: [\n $ac6f441b4b448e14$export$9138efc7ba4fca22,\n $ac6f441b4b448e14$export$5fd1e257088db342\n ]\n});\nfunction $ac6f441b4b448e14$export$9bc58717d06262f5(i, e, t) {\n $ac6f441b4b448e14$export$9138efc7ba4fca22 = e, $ac6f441b4b448e14$export$5fd1e257088db342 = t, $ac6f441b4b448e14$export$e94d57566be028aa = i;\n}\nvar $ac6f441b4b448e14$export$2f0ad9ba2f0800d = class extends $ac6f441b4b448e14$export$2176a6ff266bf511 {\n constructor(){\n super();\n this.drag = null, this._direction = {\n x: 0,\n y: 0\n }, this._speed = 0, this._tick = this._tick.bind(this);\n }\n _createDragData(t) {\n return {\n ...super._createDragData(t),\n time: 0,\n deltaTime: 0\n };\n }\n _start(t) {\n this.isDestroyed || this.drag || (super._start(t), $ac6f441b4b448e14$export$e94d57566be028aa.on($ac6f441b4b448e14$export$9138efc7ba4fca22, this._tick));\n }\n _end(t) {\n this.drag && ($ac6f441b4b448e14$export$e94d57566be028aa.off($ac6f441b4b448e14$export$9138efc7ba4fca22, this._tick), super._end(t));\n }\n _cancel(t) {\n this.drag && ($ac6f441b4b448e14$export$e94d57566be028aa.off($ac6f441b4b448e14$export$9138efc7ba4fca22, this._tick), super._cancel(t));\n }\n _tick(t) {\n if (this.drag) {\n if (t && this.drag.time) {\n this.drag.deltaTime = t - this.drag.time, this.drag.time = t;\n let n = {\n type: \"tick\",\n time: this.drag.time,\n deltaTime: this.drag.deltaTime\n };\n if (this._emitter.emit(\"tick\", n), !this.drag) return;\n let r = this._speed * (this.drag.deltaTime / 1e3), s = this._direction.x * r, o = this._direction.y * r;\n (s || o) && this._move({\n type: \"move\",\n x: this.drag.x + s,\n y: this.drag.y + o\n });\n } else this.drag.time = t, this.drag.deltaTime = 0;\n }\n }\n};\nfunction $ac6f441b4b448e14$var$de(i, e) {\n if (\"pointerId\" in i) return i.pointerId === e ? i : null;\n if (\"changedTouches\" in i) {\n let t = 0;\n for(; t < i.changedTouches.length; t++)if (i.changedTouches[t].identifier === e) return i.changedTouches[t];\n return null;\n }\n return i;\n}\nfunction $ac6f441b4b448e14$var$Re(i) {\n return \"pointerType\" in i ? i.pointerType : \"touches\" in i ? \"touch\" : \"mouse\";\n}\nfunction $ac6f441b4b448e14$var$Me(i) {\n return \"pointerId\" in i ? i.pointerId : \"changedTouches\" in i ? i.changedTouches[0] ? i.changedTouches[0].identifier : null : -1;\n}\nvar $ac6f441b4b448e14$var$he = typeof window < \"u\" && typeof window.document < \"u\", $ac6f441b4b448e14$var$J = (()=>{\n let i = !1;\n try {\n let e = Object.defineProperty({}, \"passive\", {\n get: function() {\n i = !0;\n }\n });\n window.addEventListener(\"testPassive\", null, e), window.removeEventListener(\"testPassive\", null, e);\n } catch {}\n return i;\n})(), $ac6f441b4b448e14$var$Oe = $ac6f441b4b448e14$var$he && \"ontouchstart\" in window, $ac6f441b4b448e14$var$We = $ac6f441b4b448e14$var$he && !!window.PointerEvent, $ac6f441b4b448e14$var$Ot = !!($ac6f441b4b448e14$var$he && navigator.vendor && navigator.vendor.indexOf(\"Apple\") > -1 && navigator.userAgent && navigator.userAgent.indexOf(\"CriOS\") == -1 && navigator.userAgent.indexOf(\"FxiOS\") == -1);\nfunction $ac6f441b4b448e14$var$me(i = {}) {\n let { capture: e = !0, passive: t = !0 } = i;\n return $ac6f441b4b448e14$var$J ? {\n capture: e,\n passive: t\n } : {\n capture: e\n };\n}\nfunction $ac6f441b4b448e14$var$ue(i) {\n return i === \"auto\" || i === void 0 ? $ac6f441b4b448e14$var$We ? \"pointer\" : $ac6f441b4b448e14$var$Oe ? \"touch\" : \"mouse\" : i;\n}\nvar $ac6f441b4b448e14$var$it = {\n start: \"pointerdown\",\n move: \"pointermove\",\n cancel: \"pointercancel\",\n end: \"pointerup\"\n}, $ac6f441b4b448e14$var$ot = {\n start: \"touchstart\",\n move: \"touchmove\",\n cancel: \"touchcancel\",\n end: \"touchend\"\n}, $ac6f441b4b448e14$var$st = {\n start: \"mousedown\",\n move: \"mousemove\",\n cancel: \"\",\n end: \"mouseup\"\n}, $ac6f441b4b448e14$var$X = {\n pointer: $ac6f441b4b448e14$var$it,\n touch: $ac6f441b4b448e14$var$ot,\n mouse: $ac6f441b4b448e14$var$st\n}, $ac6f441b4b448e14$export$b26af955418d6638 = class {\n constructor(e, t = {}){\n let { listenerOptions: n = {}, sourceEvents: r = \"auto\", startPredicate: s = (o)=>!(\"button\" in o && o.button > 0) } = t;\n this.element = e, this.drag = null, this.isDestroyed = !1, this._areWindowListenersBound = !1, this._startPredicate = s, this._listenerOptions = $ac6f441b4b448e14$var$me(n), this._sourceEvents = $ac6f441b4b448e14$var$ue(r), this._emitter = new (0, $882b296db6123935$export$4293555f241ae35a), this._onStart = this._onStart.bind(this), this._onMove = this._onMove.bind(this), this._onCancel = this._onCancel.bind(this), this._onEnd = this._onEnd.bind(this), e.addEventListener($ac6f441b4b448e14$var$X[this._sourceEvents].start, this._onStart, this._listenerOptions);\n }\n _getTrackedPointerEventData(e) {\n return this.drag ? $ac6f441b4b448e14$var$de(e, this.drag.pointerId) : null;\n }\n _onStart(e) {\n if (this.isDestroyed || this.drag || !this._startPredicate(e)) return;\n let t = $ac6f441b4b448e14$var$Me(e);\n if (t === null) return;\n let n = $ac6f441b4b448e14$var$de(e, t);\n if (n === null) return;\n let r = {\n pointerId: t,\n pointerType: $ac6f441b4b448e14$var$Re(e),\n x: n.clientX,\n y: n.clientY\n };\n this.drag = r;\n let s = {\n ...r,\n type: $ac6f441b4b448e14$export$61fde4a8bbe7f5d5.start,\n srcEvent: e,\n target: n.target\n };\n this._emitter.emit(s.type, s), this.drag && this._bindWindowListeners();\n }\n _onMove(e) {\n if (!this.drag) return;\n let t = this._getTrackedPointerEventData(e);\n if (!t) return;\n this.drag.x = t.clientX, this.drag.y = t.clientY;\n let n = {\n type: $ac6f441b4b448e14$export$61fde4a8bbe7f5d5.move,\n srcEvent: e,\n target: t.target,\n ...this.drag\n };\n this._emitter.emit(n.type, n);\n }\n _onCancel(e) {\n if (!this.drag) return;\n let t = this._getTrackedPointerEventData(e);\n if (!t) return;\n this.drag.x = t.clientX, this.drag.y = t.clientY;\n let n = {\n type: $ac6f441b4b448e14$export$61fde4a8bbe7f5d5.cancel,\n srcEvent: e,\n target: t.target,\n ...this.drag\n };\n this._emitter.emit(n.type, n), this._resetDrag();\n }\n _onEnd(e) {\n if (!this.drag) return;\n let t = this._getTrackedPointerEventData(e);\n if (!t) return;\n this.drag.x = t.clientX, this.drag.y = t.clientY;\n let n = {\n type: $ac6f441b4b448e14$export$61fde4a8bbe7f5d5.end,\n srcEvent: e,\n target: t.target,\n ...this.drag\n };\n this._emitter.emit(n.type, n), this._resetDrag();\n }\n _bindWindowListeners() {\n if (this._areWindowListenersBound) return;\n let { move: e, end: t, cancel: n } = $ac6f441b4b448e14$var$X[this._sourceEvents];\n window.addEventListener(e, this._onMove, this._listenerOptions), window.addEventListener(t, this._onEnd, this._listenerOptions), n && window.addEventListener(n, this._onCancel, this._listenerOptions), this._areWindowListenersBound = !0;\n }\n _unbindWindowListeners() {\n if (this._areWindowListenersBound) {\n let { move: e, end: t, cancel: n } = $ac6f441b4b448e14$var$X[this._sourceEvents];\n window.removeEventListener(e, this._onMove, this._listenerOptions), window.removeEventListener(t, this._onEnd, this._listenerOptions), n && window.removeEventListener(n, this._onCancel, this._listenerOptions), this._areWindowListenersBound = !1;\n }\n }\n _resetDrag() {\n this.drag = null, this._unbindWindowListeners();\n }\n cancel() {\n if (!this.drag) return;\n let e = {\n type: $ac6f441b4b448e14$export$61fde4a8bbe7f5d5.cancel,\n srcEvent: null,\n target: null,\n ...this.drag\n };\n this._emitter.emit(e.type, e), this._resetDrag();\n }\n updateSettings(e) {\n if (this.isDestroyed) return;\n let { listenerOptions: t, sourceEvents: n, startPredicate: r } = e, s = $ac6f441b4b448e14$var$ue(n), o = $ac6f441b4b448e14$var$me(t);\n r && this._startPredicate !== r && (this._startPredicate = r), (t && (this._listenerOptions.capture !== o.capture || this._listenerOptions.passive === o.passive) || n && this._sourceEvents !== s) && (this.element.removeEventListener($ac6f441b4b448e14$var$X[this._sourceEvents].start, this._onStart, this._listenerOptions), this._unbindWindowListeners(), this.cancel(), n && (this._sourceEvents = s), t && o && (this._listenerOptions = o), this.element.addEventListener($ac6f441b4b448e14$var$X[this._sourceEvents].start, this._onStart, this._listenerOptions));\n }\n on(e, t, n) {\n return this._emitter.on(e, t, n);\n }\n off(e, t) {\n this._emitter.off(e, t);\n }\n destroy() {\n this.isDestroyed || (this.isDestroyed = !0, this.cancel(), this._emitter.emit($ac6f441b4b448e14$export$61fde4a8bbe7f5d5.destroy, {\n type: $ac6f441b4b448e14$export$61fde4a8bbe7f5d5.destroy\n }), this._emitter.off(), this.element.removeEventListener($ac6f441b4b448e14$var$X[this._sourceEvents].start, this._onStart, this._listenerOptions));\n }\n};\nvar $ac6f441b4b448e14$export$44d67f2a438aeba9 = class extends $ac6f441b4b448e14$export$2176a6ff266bf511 {\n constructor(t = {}){\n super();\n let { moveDistance: n = 25, startPredicate: r = (l)=>{\n if ((l.key === \"Enter\" || l.key === \" \") && document.activeElement && document.activeElement !== document.body) {\n let { left: a, top: d } = document.activeElement.getBoundingClientRect();\n return {\n x: a,\n y: d\n };\n }\n return null;\n }, movePredicate: s = (l, a, d)=>{\n if (!a.drag) return null;\n switch(l.key){\n case \"ArrowLeft\":\n return {\n x: a.drag.x - d.x,\n y: a.drag.y\n };\n case \"ArrowRight\":\n return {\n x: a.drag.x + d.x,\n y: a.drag.y\n };\n case \"ArrowUp\":\n return {\n x: a.drag.x,\n y: a.drag.y - d.y\n };\n case \"ArrowDown\":\n return {\n x: a.drag.x,\n y: a.drag.y + d.y\n };\n default:\n return null;\n }\n }, cancelPredicate: o = (l, a)=>a.drag && l.key === \"Escape\" ? {\n x: a.drag.x,\n y: a.drag.y\n } : null, endPredicate: c = (l, a)=>a.drag && (l.key === \"Enter\" || l.key === \" \") ? {\n x: a.drag.x,\n y: a.drag.y\n } : null } = t;\n this._moveDistance = typeof n == \"number\" ? {\n x: n,\n y: n\n } : {\n ...n\n }, this._startPredicate = r, this._movePredicate = s, this._cancelPredicate = o, this._endPredicate = c, this.cancel = this.cancel.bind(this), this._onKeyDown = this._onKeyDown.bind(this), document.addEventListener(\"keydown\", this._onKeyDown), window.addEventListener(\"blur\", this.cancel), window.addEventListener(\"visibilitychange\", this.cancel);\n }\n _onKeyDown(t) {\n if (!this.drag) {\n let o = this._startPredicate(t, this, this._moveDistance);\n o && (t.preventDefault(), this._start({\n type: \"start\",\n x: o.x,\n y: o.y,\n srcEvent: t\n }));\n return;\n }\n let n = this._cancelPredicate(t, this, this._moveDistance);\n if (n) {\n t.preventDefault(), this._cancel({\n type: \"cancel\",\n x: n.x,\n y: n.y,\n srcEvent: t\n });\n return;\n }\n let r = this._endPredicate(t, this, this._moveDistance);\n if (r) {\n t.preventDefault(), this._end({\n type: \"end\",\n x: r.x,\n y: r.y,\n srcEvent: t\n });\n return;\n }\n let s = this._movePredicate(t, this, this._moveDistance);\n if (s) {\n t.preventDefault(), this._move({\n type: \"move\",\n x: s.x,\n y: s.y,\n srcEvent: t\n });\n return;\n }\n }\n updateSettings(t = {}) {\n t.moveDistance !== void 0 && (typeof t.moveDistance == \"number\" ? (this._moveDistance.x = t.moveDistance, this._moveDistance.y = t.moveDistance) : (this._moveDistance.x = t.moveDistance.x, this._moveDistance.y = t.moveDistance.y)), t.startPredicate !== void 0 && (this._startPredicate = t.startPredicate), t.movePredicate !== void 0 && (this._movePredicate = t.movePredicate), t.cancelPredicate !== void 0 && (this._cancelPredicate = t.cancelPredicate), t.endPredicate !== void 0 && (this._endPredicate = t.endPredicate);\n }\n destroy() {\n this.isDestroyed || (super.destroy(), document.removeEventListener(\"keydown\", this._onKeyDown), window.removeEventListener(\"blur\", this.cancel), window.removeEventListener(\"visibilitychange\", this.cancel));\n }\n};\nvar $ac6f441b4b448e14$var$at = [\n \"start\",\n \"cancel\",\n \"end\",\n \"moveLeft\",\n \"moveRight\",\n \"moveUp\",\n \"moveDown\"\n];\nfunction $ac6f441b4b448e14$var$Q(i, e) {\n if (!i.size || !e.size) return 1 / 0;\n let t = 1 / 0;\n for (let n of i){\n let r = e.get(n);\n r !== void 0 && r < t && (t = r);\n }\n return t;\n}\nvar $ac6f441b4b448e14$export$436f6efcc297171 = class extends $ac6f441b4b448e14$export$2f0ad9ba2f0800d {\n constructor(t = {}){\n super();\n let { startPredicate: n = ()=>{\n if (document.activeElement) {\n let { left: y, top: g } = document.activeElement.getBoundingClientRect();\n return {\n x: y,\n y: g\n };\n }\n return null;\n }, computeSpeed: r = ()=>500, startKeys: s = [\n \" \",\n \"Enter\"\n ], moveLeftKeys: o = [\n \"ArrowLeft\"\n ], moveRightKeys: c = [\n \"ArrowRight\"\n ], moveUpKeys: l = [\n \"ArrowUp\"\n ], moveDownKeys: a = [\n \"ArrowDown\"\n ], cancelKeys: d = [\n \"Escape\"\n ], endKeys: m = [\n \" \",\n \"Enter\"\n ] } = t;\n this._computeSpeed = r, this._startPredicate = n, this._startKeys = new Set(s), this._cancelKeys = new Set(d), this._endKeys = new Set(m), this._moveLeftKeys = new Set(o), this._moveRightKeys = new Set(c), this._moveUpKeys = new Set(l), this._moveDownKeys = new Set(a), this._moveKeys = new Set([\n ...o,\n ...c,\n ...l,\n ...a\n ]), this._moveKeyTimestamps = new Map, this._onKeyDown = this._onKeyDown.bind(this), this._onKeyUp = this._onKeyUp.bind(this), this._onTick = this._onTick.bind(this), this.on(\"tick\", this._onTick), document.addEventListener(\"keydown\", this._onKeyDown), document.addEventListener(\"keyup\", this._onKeyUp), window.addEventListener(\"blur\", this.cancel), window.addEventListener(\"visibilitychange\", this.cancel);\n }\n _end(t) {\n this.drag && (this._moveKeyTimestamps.clear(), this._direction.x = 0, this._direction.y = 0, super._end(t));\n }\n _cancel(t) {\n this.drag && (this._moveKeyTimestamps.clear(), this._direction.x = 0, this._direction.y = 0, super._cancel(t));\n }\n _updateDirection() {\n let t = $ac6f441b4b448e14$var$Q(this._moveLeftKeys, this._moveKeyTimestamps), n = $ac6f441b4b448e14$var$Q(this._moveRightKeys, this._moveKeyTimestamps), r = $ac6f441b4b448e14$var$Q(this._moveUpKeys, this._moveKeyTimestamps), s = $ac6f441b4b448e14$var$Q(this._moveDownKeys, this._moveKeyTimestamps), o = t === n ? 0 : t < n ? -1 : 1, c = r === s ? 0 : r < s ? -1 : 1;\n if (!(o === 0 || c === 0)) {\n let l = 1 / (Math.sqrt(o * o + c * c) || 1);\n o *= l, c *= l;\n }\n this._direction.x = o, this._direction.y = c;\n }\n _onTick() {\n this._speed = this._computeSpeed(this);\n }\n _onKeyUp(t) {\n this._moveKeyTimestamps.get(t.key) && (this._moveKeyTimestamps.delete(t.key), this._updateDirection());\n }\n _onKeyDown(t) {\n if (!this.drag) {\n if (this._startKeys.has(t.key)) {\n let n = this._startPredicate(t, this);\n n && (t.preventDefault(), this._start({\n type: \"start\",\n x: n.x,\n y: n.y\n }));\n }\n return;\n }\n if (this._cancelKeys.has(t.key)) {\n t.preventDefault(), this._cancel({\n type: \"cancel\",\n x: this.drag.x,\n y: this.drag.y\n });\n return;\n }\n if (this._endKeys.has(t.key)) {\n t.preventDefault(), this._end({\n type: \"end\",\n x: this.drag.x,\n y: this.drag.y\n });\n return;\n }\n if (this._moveKeys.has(t.key)) {\n t.preventDefault(), this._moveKeyTimestamps.get(t.key) || (this._moveKeyTimestamps.set(t.key, Date.now()), this._updateDirection());\n return;\n }\n }\n updateSettings(t = {}) {\n let n = !1;\n if (t.startPredicate !== void 0 && (this._startPredicate = t.startPredicate), t.computeSpeed !== void 0 && (this._computeSpeed = t.computeSpeed), $ac6f441b4b448e14$var$at.forEach((r, s)=>{\n let o = `${r}Keys`, c = t[o];\n c !== void 0 && (this[`_${o}`] = new Set(c), s >= 3 && (n = !0));\n }), n) {\n let r = [\n ...this._moveLeftKeys,\n ...this._moveRightKeys,\n ...this._moveUpKeys,\n ...this._moveDownKeys\n ];\n [\n ...this._moveKeys\n ].every((o, c)=>r[c] === o) || (this._moveKeys = new Set(r), this._moveKeyTimestamps.clear(), this._updateDirection());\n }\n }\n destroy() {\n this.isDestroyed || (super.destroy(), this.off(\"tick\", this._onTick), document.removeEventListener(\"keydown\", this._onKeyDown), document.removeEventListener(\"keyup\", this._onKeyUp), window.removeEventListener(\"blur\", this.cancel), window.removeEventListener(\"visibilitychange\", this.cancel));\n }\n};\nvar $ac6f441b4b448e14$var$Z = class {\n constructor(){\n this.sensor = null, this.isEnded = !1, this.isStarted = !1, this.startEvent = null, this.nextMoveEvent = null, this.prevMoveEvent = null, this.endEvent = null, this.items = [];\n }\n};\nvar $ac6f441b4b448e14$var$ee = class {\n constructor(e, t, n, r, s){\n this.data = {}, this.element = e, this.elementContainer = t, this.elementOffsetContainer = n, this.dragContainer = r, this.dragOffsetContainer = s, this.initialTransform = \"\", this.frozenProps = null, this.unfrozenProps = null, this.x = 0, this.y = 0, this.pX = 0, this.pY = 0, this._updateDiffX = 0, this._updateDiffY = 0, this._moveDiffX = 0, this._moveDiffY = 0, this._containerDiffX = 0, this._containerDiffY = 0;\n }\n};\nfunction $ac6f441b4b448e14$var$pe(i, e, t = {\n left: 0,\n top: 0\n}) {\n if (t.left = 0, t.top = 0, i === e) return t;\n let n = (0, $d927f435c3d7e8ab$export$622cea445a1c5b7d)([\n i,\n \"padding\"\n ]), r = (0, $d927f435c3d7e8ab$export$622cea445a1c5b7d)([\n e,\n \"padding\"\n ]);\n return t.left = r.left - n.left, t.top = r.top - n.top, t;\n}\nvar $ac6f441b4b448e14$var$qe = new WeakMap;\nfunction $ac6f441b4b448e14$var$te(i) {\n let e = $ac6f441b4b448e14$var$qe.get(i)?.deref();\n return e || (e = window.getComputedStyle(i, null), $ac6f441b4b448e14$var$qe.set(i, new WeakRef(e))), e;\n}\nvar $ac6f441b4b448e14$var$ct = \"matrix(1, 0, 0, 1, 0, 0)\", $ac6f441b4b448e14$var$dt = \"matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)\", $ac6f441b4b448e14$var$Ue = $ac6f441b4b448e14$var$J ? {\n capture: !0,\n passive: !0\n} : !0, $ac6f441b4b448e14$var$ze = {\n left: 0,\n top: 0\n}, $ac6f441b4b448e14$var$fe = {\n x: 0,\n y: 0\n};\nfunction $ac6f441b4b448e14$var$ht() {\n return {\n container: null,\n startPredicate: ()=>!0,\n getElements: ()=>null,\n releaseElements: ()=>null,\n getFrozenProps: ()=>null,\n getStartPosition: ()=>({\n x: 0,\n y: 0\n }),\n setPosition: ({ item: i, x: e, y: t })=>{\n i.element.style.transform = `translate(${e}px, ${t}px) ${i.initialTransform}`;\n },\n getPositionChange: ({ event: i, prevEvent: e })=>($ac6f441b4b448e14$var$fe.x = i.x - e.x, $ac6f441b4b448e14$var$fe.y = i.y - e.y, $ac6f441b4b448e14$var$fe)\n };\n}\nvar $ac6f441b4b448e14$export$f2a139e5d18b9882 = class {\n constructor(e, t = {}){\n this.sensors = e, this.settings = this._parseSettings(t), this.plugins = {}, this.drag = null, this.isDestroyed = !1, this._sensorData = new Map, this._emitter = new (0, $882b296db6123935$export$4293555f241ae35a), this._startId = Symbol(), this._moveId = Symbol(), this._updateId = Symbol(), this._onMove = this._onMove.bind(this), this._onScroll = this._onScroll.bind(this), this._onEnd = this._onEnd.bind(this), this._prepareStart = this._prepareStart.bind(this), this._applyStart = this._applyStart.bind(this), this._prepareMove = this._prepareMove.bind(this), this._applyMove = this._applyMove.bind(this), this._preparePositionUpdate = this._preparePositionUpdate.bind(this), this._applyPositionUpdate = this._applyPositionUpdate.bind(this), this.sensors.forEach((n)=>{\n this._sensorData.set(n, {\n predicateState: 0,\n predicateEvent: null,\n onMove: (o)=>this._onMove(o, n),\n onEnd: (o)=>this._onEnd(o, n)\n });\n let { onMove: r, onEnd: s } = this._sensorData.get(n);\n n.on(\"start\", r), n.on(\"move\", r), n.on(\"cancel\", s), n.on(\"end\", s), n.on(\"destroy\", s);\n });\n }\n _parseSettings(e, t = $ac6f441b4b448e14$var$ht()) {\n let { container: n = t.container, startPredicate: r = t.startPredicate, getElements: s = t.getElements, releaseElements: o = t.releaseElements, getFrozenProps: c = t.getFrozenProps, getStartPosition: l = t.getStartPosition, setPosition: a = t.setPosition, getPositionChange: d = t.getPositionChange } = e || {};\n return {\n container: n,\n startPredicate: r,\n getElements: s,\n releaseElements: o,\n getFrozenProps: c,\n getStartPosition: l,\n setPosition: a,\n getPositionChange: d\n };\n }\n _emit(e, ...t) {\n this._emitter.emit(e, ...t);\n }\n _onMove(e, t) {\n let n = this._sensorData.get(t);\n if (n) switch(n.predicateState){\n case 0:\n {\n n.predicateEvent = e;\n let r = this.settings.startPredicate({\n draggable: this,\n sensor: t,\n event: e\n });\n r === !0 ? this.resolveStartPredicate(t) : r === !1 && this.rejectStartPredicate(t);\n break;\n }\n case 1:\n this.drag && (this.drag.nextMoveEvent = e, $ac6f441b4b448e14$export$e94d57566be028aa.once($ac6f441b4b448e14$export$9138efc7ba4fca22, this._prepareMove, this._moveId), $ac6f441b4b448e14$export$e94d57566be028aa.once($ac6f441b4b448e14$export$5fd1e257088db342, this._applyMove, this._moveId));\n break;\n }\n }\n _onScroll() {\n this.updatePosition();\n }\n _onEnd(e, t) {\n let n = this._sensorData.get(t);\n n && (this.drag ? n.predicateState === 1 && (this.drag.endEvent = e, this._sensorData.forEach((r)=>{\n r.predicateState = 0, r.predicateEvent = null;\n }), this.stop()) : (n.predicateState = 0, n.predicateEvent = null));\n }\n _prepareStart() {\n let { drag: e } = this;\n if (!e || !e.startEvent) return;\n let t = this.settings.getElements({\n draggable: this,\n sensor: e.sensor,\n startEvent: e.startEvent\n }) || [];\n e.items = t.map((n)=>{\n if (!n.isConnected) throw new Error(\"Element is not connected\");\n let r = n.parentElement, s = (0, $4effe6f7501c7f59$export$243d7fadef466e38)(n);\n if (!s) throw new Error(\"Offset container could not be computed for the element!\");\n let o = this.settings.container || r, c = o === r ? s : (0, $4effe6f7501c7f59$export$243d7fadef466e38)(n, {\n container: o\n });\n if (!c) throw new Error(\"Drag offset container could not be computed for the element!\");\n let l = new $ac6f441b4b448e14$var$ee(n, r, s, o, c), a = n.getBoundingClientRect();\n if (l.x = a.left, l.y = a.top, s !== c) {\n let { left: b, top: f } = $ac6f441b4b448e14$var$pe(c, s, $ac6f441b4b448e14$var$ze);\n l._containerDiffX = b, l._containerDiffY = f;\n }\n let d = $ac6f441b4b448e14$var$te(n), { transform: m } = d;\n m && m !== \"none\" && m !== $ac6f441b4b448e14$var$ct && m !== $ac6f441b4b448e14$var$dt && (l.initialTransform = m);\n let { x: y, y: g } = this.settings.getStartPosition({\n draggable: this,\n sensor: e.sensor,\n item: l,\n style: d\n });\n l.pX = y, l.pY = g;\n let S = this.settings.getFrozenProps({\n draggable: this,\n sensor: e.sensor,\n item: l,\n style: d\n });\n if (Array.isArray(S)) {\n if (S.length) {\n let b = {};\n for (let f of S)b[f] = d[f];\n l.frozenProps = b;\n } else l.frozenProps = null;\n } else l.frozenProps = S;\n if (l.frozenProps) {\n let b = {};\n for(let f in l.frozenProps)l.frozenProps.hasOwnProperty(f) && (b[f] = n.style[f]);\n l.unfrozenProps = b;\n }\n return l;\n }), this._emit(\"preparestart\", e.startEvent);\n }\n _applyStart() {\n let e = this.drag;\n if (!e || !e.startEvent) return;\n let { container: t } = this.settings;\n for (let n of e.items)t && n.element.parentElement !== t && (t.appendChild(n.element), n.pX += n._containerDiffX, n.pY += n._containerDiffY), n.frozenProps && Object.assign(n.element.style, n.frozenProps), this.settings.setPosition({\n phase: \"start\",\n draggable: this,\n sensor: e.sensor,\n item: n,\n x: n.pX,\n y: n.pY\n });\n window.addEventListener(\"scroll\", this._onScroll, $ac6f441b4b448e14$var$Ue), e.isStarted = !0, this._emit(\"start\", e.startEvent);\n }\n _prepareMove() {\n let { drag: e } = this;\n if (!e || !e.startEvent) return;\n let t = e.nextMoveEvent, n = e.prevMoveEvent || e.startEvent;\n if (!(!t || t === n)) {\n for (let r of e.items){\n let { x: s, y: o } = this.settings.getPositionChange({\n draggable: this,\n sensor: e.sensor,\n item: r,\n startEvent: e.startEvent,\n prevEvent: n,\n event: t\n });\n s && (r.pX = r.pX - r._moveDiffX + s, r.x = r.x - r._moveDiffX + s, r._moveDiffX = s), o && (r.pY = r.pY - r._moveDiffY + o, r.y = r.y - r._moveDiffY + o, r._moveDiffY = o);\n }\n e.prevMoveEvent = t, this._emit(\"preparemove\", t);\n }\n }\n _applyMove() {\n let { drag: e } = this;\n if (!(!e || !e.nextMoveEvent)) {\n for (let t of e.items)t._moveDiffX = 0, t._moveDiffY = 0;\n for (let t of e.items)this.settings.setPosition({\n phase: \"move\",\n draggable: this,\n sensor: e.sensor,\n item: t,\n x: t.pX,\n y: t.pY\n });\n this._emit(\"move\", e.nextMoveEvent);\n }\n }\n _preparePositionUpdate() {\n let { drag: e } = this;\n if (e) for (let t of e.items){\n if (t.elementOffsetContainer !== t.dragOffsetContainer) {\n let { left: c, top: l } = $ac6f441b4b448e14$var$pe(t.dragOffsetContainer, t.elementOffsetContainer, $ac6f441b4b448e14$var$ze);\n t._containerDiffX = c, t._containerDiffY = l;\n }\n let { left: n, top: r } = t.element.getBoundingClientRect(), s = t.x - t._moveDiffX - n;\n t.pX = t.pX - t._updateDiffX + s, t._updateDiffX = s;\n let o = t.y - t._moveDiffY - r;\n t.pY = t.pY - t._updateDiffY + o, t._updateDiffY = o;\n }\n }\n _applyPositionUpdate() {\n let { drag: e } = this;\n if (e) for (let t of e.items)t._updateDiffX = 0, t._updateDiffY = 0, this.settings.setPosition({\n phase: \"move\",\n draggable: this,\n sensor: e.sensor,\n item: t,\n x: t.pX,\n y: t.pY\n });\n }\n on(e, t, n) {\n return this._emitter.on(e, t, n);\n }\n off(e, t) {\n this._emitter.off(e, t);\n }\n resolveStartPredicate(e, t) {\n let n = this._sensorData.get(e);\n if (!n) return;\n let r = t || n.predicateEvent;\n n.predicateState === 0 && r && (n.predicateState = 1, n.predicateEvent = null, this.drag = new $ac6f441b4b448e14$var$Z, this.drag.sensor = e, this.drag.startEvent = r, this._sensorData.forEach((s, o)=>{\n o !== e && (s.predicateState = 2, s.predicateEvent = null);\n }), $ac6f441b4b448e14$export$e94d57566be028aa.once($ac6f441b4b448e14$export$9138efc7ba4fca22, this._prepareStart, this._startId), $ac6f441b4b448e14$export$e94d57566be028aa.once($ac6f441b4b448e14$export$5fd1e257088db342, this._applyStart, this._startId));\n }\n rejectStartPredicate(e) {\n let t = this._sensorData.get(e);\n t?.predicateState === 0 && (t.predicateState = 2, t.predicateEvent = null);\n }\n stop() {\n let { drag: e } = this;\n if (!(!e || e.isEnded)) {\n if (e.isEnded = !0, $ac6f441b4b448e14$export$e94d57566be028aa.off($ac6f441b4b448e14$export$9138efc7ba4fca22, this._startId), $ac6f441b4b448e14$export$e94d57566be028aa.off($ac6f441b4b448e14$export$5fd1e257088db342, this._startId), $ac6f441b4b448e14$export$e94d57566be028aa.off($ac6f441b4b448e14$export$9138efc7ba4fca22, this._moveId), $ac6f441b4b448e14$export$e94d57566be028aa.off($ac6f441b4b448e14$export$5fd1e257088db342, this._moveId), $ac6f441b4b448e14$export$e94d57566be028aa.off($ac6f441b4b448e14$export$9138efc7ba4fca22, this._updateId), $ac6f441b4b448e14$export$e94d57566be028aa.off($ac6f441b4b448e14$export$5fd1e257088db342, this._updateId), e.isStarted) {\n window.removeEventListener(\"scroll\", this._onScroll, $ac6f441b4b448e14$var$Ue);\n let t = [];\n for (let n of e.items){\n if (t.push(n.element), n.elementContainer && n.element.parentElement !== n.elementContainer && (n.pX -= n._containerDiffX, n.pY -= n._containerDiffY, n._containerDiffX = 0, n._containerDiffY = 0, n.elementContainer.appendChild(n.element)), n.unfrozenProps) for(let r in n.unfrozenProps)n.element.style[r] = n.unfrozenProps[r] || \"\";\n this.settings.setPosition({\n phase: \"end\",\n draggable: this,\n sensor: e.sensor,\n item: n,\n x: n.pX,\n y: n.pY\n });\n }\n t.length && this.settings.releaseElements({\n draggable: this,\n sensor: e.sensor,\n elements: t\n });\n }\n this._emit(\"end\", e.endEvent), this.drag = null;\n }\n }\n updatePosition(e = !1) {\n this.drag && (e ? (this._preparePositionUpdate(), this._applyPositionUpdate()) : ($ac6f441b4b448e14$export$e94d57566be028aa.once($ac6f441b4b448e14$export$9138efc7ba4fca22, this._preparePositionUpdate, this._updateId), $ac6f441b4b448e14$export$e94d57566be028aa.once($ac6f441b4b448e14$export$5fd1e257088db342, this._applyPositionUpdate, this._updateId)));\n }\n updateSettings(e = {}) {\n this.settings = this._parseSettings(e, this.settings);\n }\n use(e) {\n return e(this);\n }\n destroy() {\n this.isDestroyed || (this.isDestroyed = !0, this.stop(), this._sensorData.forEach(({ onMove: e, onEnd: t }, n)=>{\n n.off(\"start\", e), n.off(\"move\", e), n.off(\"cancel\", t), n.off(\"end\", t), n.off(\"destroy\", t);\n }), this._sensorData.clear(), this._emit(\"destroy\"), this._emitter.off());\n }\n};\nvar $ac6f441b4b448e14$var$B = class {\n constructor(e, t){\n this._data = [], this._createObject = e, this._onPut = t;\n }\n pick() {\n return this._data.length ? this._data.pop() : this._createObject();\n }\n put(e) {\n this._data.indexOf(e) === -1 && (this._onPut && this._onPut(e), this._data.push(e));\n }\n reset() {\n this._data.length = 0;\n }\n};\nfunction $ac6f441b4b448e14$var$He(i, e) {\n let t = (0, $e931ad6985aacff5$export$72209efa88586d42)(i, e);\n return t ? t.width * t.height : 0;\n}\nfunction $ac6f441b4b448e14$var$ge(i, e) {\n let t = $ac6f441b4b448e14$var$He(i, e);\n if (!t) return 0;\n let n = Math.min(i.width, e.width) * Math.min(i.height, e.height);\n return t / n * 100;\n}\nfunction $ac6f441b4b448e14$var$w(i) {\n return i instanceof Window;\n}\nfunction $ac6f441b4b448e14$var$Se(i) {\n return $ac6f441b4b448e14$var$w(i) || i === document.documentElement || i === document.body ? window : i;\n}\nfunction $ac6f441b4b448e14$var$N(i) {\n return $ac6f441b4b448e14$var$w(i) ? i.pageXOffset : i.scrollLeft;\n}\nfunction $ac6f441b4b448e14$var$Ee(i) {\n return $ac6f441b4b448e14$var$w(i) && (i = document.documentElement), i.scrollWidth - i.clientWidth;\n}\nfunction $ac6f441b4b448e14$var$q(i) {\n return $ac6f441b4b448e14$var$w(i) ? i.pageYOffset : i.scrollTop;\n}\nfunction $ac6f441b4b448e14$var$ve(i) {\n return $ac6f441b4b448e14$var$w(i) && (i = document.documentElement), i.scrollHeight - i.clientHeight;\n}\nfunction $ac6f441b4b448e14$var$_e(i, e) {\n return !(i.right <= e.left || e.right <= i.left || i.bottom <= e.top || e.bottom <= i.top);\n}\nvar $ac6f441b4b448e14$var$xe = {\n width: 0,\n height: 0,\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n}, $ac6f441b4b448e14$var$Fe = {\n ...$ac6f441b4b448e14$var$xe\n}, $ac6f441b4b448e14$var$je = 50, $ac6f441b4b448e14$var$I = {\n direction: \"none\",\n threshold: 0,\n distance: 0,\n value: 0,\n maxValue: 0,\n duration: 0,\n speed: 0,\n deltaTime: 0,\n isEnding: !1\n}, $ac6f441b4b448e14$export$5bbd74ab6c855dff = {\n x: 1,\n y: 2\n}, $ac6f441b4b448e14$export$3eeb7a7b68c92567 = {\n forward: 4,\n reverse: 8\n}, $ac6f441b4b448e14$var$ne = {\n none: 0,\n left: $ac6f441b4b448e14$export$5bbd74ab6c855dff.x | $ac6f441b4b448e14$export$3eeb7a7b68c92567.reverse,\n right: $ac6f441b4b448e14$export$5bbd74ab6c855dff.x | $ac6f441b4b448e14$export$3eeb7a7b68c92567.forward\n}, $ac6f441b4b448e14$var$H = {\n none: 0,\n up: $ac6f441b4b448e14$export$5bbd74ab6c855dff.y | $ac6f441b4b448e14$export$3eeb7a7b68c92567.reverse,\n down: $ac6f441b4b448e14$export$5bbd74ab6c855dff.y | $ac6f441b4b448e14$export$3eeb7a7b68c92567.forward\n}, $ac6f441b4b448e14$export$c9fbd1f9176bc8ed = {\n ...$ac6f441b4b448e14$var$ne,\n ...$ac6f441b4b448e14$var$H\n};\nfunction $ac6f441b4b448e14$var$ye(i) {\n switch(i){\n case $ac6f441b4b448e14$var$ne.none:\n case $ac6f441b4b448e14$var$H.none:\n return \"none\";\n case $ac6f441b4b448e14$var$ne.left:\n return \"left\";\n case $ac6f441b4b448e14$var$ne.right:\n return \"right\";\n case $ac6f441b4b448e14$var$H.up:\n return \"up\";\n case $ac6f441b4b448e14$var$H.down:\n return \"down\";\n default:\n throw new Error(`Unknown direction value: ${i}`);\n }\n}\nfunction $ac6f441b4b448e14$var$$e(i, e, t) {\n let { left: n = 0, right: r = 0, top: s = 0, bottom: o = 0 } = e;\n return n = Math.max(0, n), r = Math.max(0, r), s = Math.max(0, s), o = Math.max(0, o), t.width = i.width + n + r, t.height = i.height + s + o, t.left = i.left - n, t.top = i.top - s, t.right = i.right + r, t.bottom = i.bottom + o, t;\n}\nfunction $ac6f441b4b448e14$var$re(i, e) {\n return Math.ceil(i) >= Math.floor(e);\n}\nfunction $ac6f441b4b448e14$var$be(i, e) {\n return Math.min(e / 2, i);\n}\nfunction $ac6f441b4b448e14$var$De(i, e, t, n) {\n return Math.max(0, t + i * 2 + n * e - n) / 2;\n}\nvar $ac6f441b4b448e14$var$Pe = class {\n constructor(){\n this.positionX = 0, this.positionY = 0, this.directionX = $ac6f441b4b448e14$export$c9fbd1f9176bc8ed.none, this.directionY = $ac6f441b4b448e14$export$c9fbd1f9176bc8ed.none, this.overlapCheckRequestTime = 0;\n }\n}, $ac6f441b4b448e14$var$Te = class {\n constructor(){\n this.element = null, this.requestX = null, this.requestY = null, this.scrollLeft = 0, this.scrollTop = 0;\n }\n reset() {\n this.requestX && (this.requestX.action = null), this.requestY && (this.requestY.action = null), this.element = null, this.requestX = null, this.requestY = null, this.scrollLeft = 0, this.scrollTop = 0;\n }\n addRequest(e) {\n $ac6f441b4b448e14$export$5bbd74ab6c855dff.x & e.direction ? (this.requestX && this.removeRequest(this.requestX), this.requestX = e) : (this.requestY && this.removeRequest(this.requestY), this.requestY = e), e.action = this;\n }\n removeRequest(e) {\n this.requestX === e ? (this.requestX = null, e.action = null) : this.requestY === e && (this.requestY = null, e.action = null);\n }\n computeScrollValues() {\n this.element && (this.scrollLeft = this.requestX ? this.requestX.value : $ac6f441b4b448e14$var$N(this.element), this.scrollTop = this.requestY ? this.requestY.value : $ac6f441b4b448e14$var$q(this.element));\n }\n scroll() {\n this.element && (this.element.scrollTo ? this.element.scrollTo(this.scrollLeft, this.scrollTop) : (this.element.scrollLeft = this.scrollLeft, this.element.scrollTop = this.scrollTop));\n }\n}, $ac6f441b4b448e14$var$we = class {\n constructor(){\n this.item = null, this.element = null, this.isActive = !1, this.isEnding = !1, this.direction = 0, this.value = NaN, this.maxValue = 0, this.threshold = 0, this.distance = 0, this.deltaTime = 0, this.speed = 0, this.duration = 0, this.action = null;\n }\n reset() {\n this.isActive && this.onStop(), this.item = null, this.element = null, this.isActive = !1, this.isEnding = !1, this.direction = 0, this.value = NaN, this.maxValue = 0, this.threshold = 0, this.distance = 0, this.deltaTime = 0, this.speed = 0, this.duration = 0, this.action = null;\n }\n hasReachedEnd() {\n return $ac6f441b4b448e14$export$3eeb7a7b68c92567.forward & this.direction ? $ac6f441b4b448e14$var$re(this.value, this.maxValue) : this.value <= 0;\n }\n computeCurrentScrollValue() {\n return this.element ? this.value !== this.value ? $ac6f441b4b448e14$export$5bbd74ab6c855dff.x & this.direction ? $ac6f441b4b448e14$var$N(this.element) : $ac6f441b4b448e14$var$q(this.element) : Math.max(0, Math.min(this.value, this.maxValue)) : 0;\n }\n computeNextScrollValue() {\n let e = this.speed * (this.deltaTime / 1e3), t = $ac6f441b4b448e14$export$3eeb7a7b68c92567.forward & this.direction ? this.value + e : this.value - e;\n return Math.max(0, Math.min(t, this.maxValue));\n }\n computeSpeed() {\n if (!this.item || !this.element) return 0;\n let { speed: e } = this.item;\n return typeof e == \"function\" ? ($ac6f441b4b448e14$var$I.direction = $ac6f441b4b448e14$var$ye(this.direction), $ac6f441b4b448e14$var$I.threshold = this.threshold, $ac6f441b4b448e14$var$I.distance = this.distance, $ac6f441b4b448e14$var$I.value = this.value, $ac6f441b4b448e14$var$I.maxValue = this.maxValue, $ac6f441b4b448e14$var$I.duration = this.duration, $ac6f441b4b448e14$var$I.speed = this.speed, $ac6f441b4b448e14$var$I.deltaTime = this.deltaTime, $ac6f441b4b448e14$var$I.isEnding = this.isEnding, e(this.element, $ac6f441b4b448e14$var$I)) : e;\n }\n tick(e) {\n return this.isActive || (this.isActive = !0, this.onStart()), this.deltaTime = e, this.value = this.computeCurrentScrollValue(), this.speed = this.computeSpeed(), this.value = this.computeNextScrollValue(), this.duration += e, this.value;\n }\n onStart() {\n if (!this.item || !this.element) return;\n let { onStart: e } = this.item;\n typeof e == \"function\" && e(this.element, $ac6f441b4b448e14$var$ye(this.direction));\n }\n onStop() {\n if (!this.item || !this.element) return;\n let { onStop: e } = this.item;\n typeof e == \"function\" && e(this.element, $ac6f441b4b448e14$var$ye(this.direction));\n }\n};\nfunction $ac6f441b4b448e14$export$55a384729d91296b(i = 500, e = .5, t = .25) {\n let n = i * (e > 0 ? 1 / e : 1 / 0), r = i * (t > 0 ? 1 / t : 1 / 0);\n return function(s, o) {\n let c = 0;\n if (!o.isEnding) {\n if (o.threshold > 0) {\n let d = o.threshold - Math.max(0, o.distance);\n c = i / o.threshold * d;\n } else c = i;\n }\n let l = o.speed;\n if (l === c) return c;\n let a = c;\n return l < c ? (a = l + n * (o.deltaTime / 1e3), Math.min(c, a)) : (a = l - r * (o.deltaTime / 1e3), Math.max(c, a));\n };\n}\nvar $ac6f441b4b448e14$export$3fb39aee5567f02e = class {\n constructor(e = {}){\n let { overlapCheckInterval: t = 150 } = e;\n this.items = [], this.settings = {\n overlapCheckInterval: t\n }, this._actions = [], this._isDestroyed = !1, this._isTicking = !1, this._tickTime = 0, this._tickDeltaTime = 0, this._requests = {\n [$ac6f441b4b448e14$export$5bbd74ab6c855dff.x]: new Map,\n [$ac6f441b4b448e14$export$5bbd74ab6c855dff.y]: new Map\n }, this._itemData = new Map, this._requestPool = new $ac6f441b4b448e14$var$B(()=>new $ac6f441b4b448e14$var$we, (n)=>n.reset()), this._actionPool = new $ac6f441b4b448e14$var$B(()=>new $ac6f441b4b448e14$var$Te, (n)=>n.reset()), this._emitter = new (0, $882b296db6123935$export$4293555f241ae35a), this._frameRead = this._frameRead.bind(this), this._frameWrite = this._frameWrite.bind(this);\n }\n _frameRead(e) {\n this._isDestroyed || (e && this._tickTime ? (this._tickDeltaTime = e - this._tickTime, this._tickTime = e, this._updateItems(), this._updateRequests(), this._updateActions()) : (this._tickTime = e, this._tickDeltaTime = 0));\n }\n _frameWrite() {\n this._isDestroyed || this._applyActions();\n }\n _startTicking() {\n this._isTicking || (this._isTicking = !0, $ac6f441b4b448e14$export$e94d57566be028aa.on($ac6f441b4b448e14$export$9138efc7ba4fca22, this._frameRead), $ac6f441b4b448e14$export$e94d57566be028aa.on($ac6f441b4b448e14$export$5fd1e257088db342, this._frameWrite));\n }\n _stopTicking() {\n this._isTicking && (this._isTicking = !1, this._tickTime = 0, this._tickDeltaTime = 0, $ac6f441b4b448e14$export$e94d57566be028aa.off($ac6f441b4b448e14$export$9138efc7ba4fca22, this._frameRead), $ac6f441b4b448e14$export$e94d57566be028aa.off($ac6f441b4b448e14$export$5fd1e257088db342, this._frameWrite));\n }\n _getItemClientRect(e, t = {\n width: 0,\n height: 0,\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n }) {\n let { clientRect: n } = e;\n return t.left = n.left, t.top = n.top, t.width = n.width, t.height = n.height, t.right = n.left + n.width, t.bottom = n.top + n.height, t;\n }\n _requestItemScroll(e, t, n, r, s, o, c) {\n let l = this._requests[t], a = l.get(e);\n a ? (a.element !== n || a.direction !== r) && a.reset() : (a = this._requestPool.pick(), l.set(e, a)), a.item = e, a.element = n, a.direction = r, a.threshold = s, a.distance = o, a.maxValue = c;\n }\n _cancelItemScroll(e, t) {\n let n = this._requests[t], r = n.get(e);\n r && (r.action && r.action.removeRequest(r), this._requestPool.put(r), n.delete(e));\n }\n _checkItemOverlap(e, t, n) {\n let { inertAreaSize: r, targets: s } = e;\n if (!s.length) {\n t && this._cancelItemScroll(e, $ac6f441b4b448e14$export$5bbd74ab6c855dff.x), n && this._cancelItemScroll(e, $ac6f441b4b448e14$export$5bbd74ab6c855dff.y);\n return;\n }\n let o = this._itemData.get(e), c = o?.directionX, l = o?.directionY;\n if (!c && !l) {\n t && this._cancelItemScroll(e, $ac6f441b4b448e14$export$5bbd74ab6c855dff.x), n && this._cancelItemScroll(e, $ac6f441b4b448e14$export$5bbd74ab6c855dff.y);\n return;\n }\n let a = this._getItemClientRect(e, $ac6f441b4b448e14$var$xe), d = null, m = -1 / 0, y = 0, g = -1 / 0, S = $ac6f441b4b448e14$export$c9fbd1f9176bc8ed.none, b = 0, f = 0, E = null, x = -1 / 0, V = 0, U = -1 / 0, se = $ac6f441b4b448e14$export$c9fbd1f9176bc8ed.none, Ce = 0, Le = 0, ae = 0;\n for(; ae < s.length; ae++){\n let A = s[ae], Ke = typeof A.threshold == \"number\" ? A.threshold : $ac6f441b4b448e14$var$je, le = !!(t && c && A.axis !== \"y\"), ce = !!(n && l && A.axis !== \"x\"), R = A.priority || 0;\n if ((!le || R < m) && (!ce || R < x)) continue;\n let k = $ac6f441b4b448e14$var$Se(A.element || A), F = le ? $ac6f441b4b448e14$var$Ee(k) : -1, j = ce ? $ac6f441b4b448e14$var$ve(k) : -1;\n if (F <= 0 && j <= 0) continue;\n let P = (0, $4fec7741c67a29fc$export$4b834cebd9e5cebe)([\n k,\n \"padding\"\n ], window), O = $ac6f441b4b448e14$var$ge(a, P) || -1 / 0;\n if (O === -1 / 0) {\n if (A.padding && $ac6f441b4b448e14$var$_e(a, $ac6f441b4b448e14$var$$e(P, A.padding, $ac6f441b4b448e14$var$Fe))) O = -((0, $2a599c00d4ed99d6$export$79376507b09a66f)(a, P) || 0);\n else continue;\n }\n if (le && R >= m && F > 0 && (R > m || O > g)) {\n let T = 0, C = $ac6f441b4b448e14$export$c9fbd1f9176bc8ed.none, L = $ac6f441b4b448e14$var$be(Ke, P.width), z = $ac6f441b4b448e14$var$De(L, r, a.width, P.width);\n c === $ac6f441b4b448e14$export$c9fbd1f9176bc8ed.right ? (T = P.right + z - a.right, T <= L && !$ac6f441b4b448e14$var$re($ac6f441b4b448e14$var$N(k), F) && (C = $ac6f441b4b448e14$export$c9fbd1f9176bc8ed.right)) : c === $ac6f441b4b448e14$export$c9fbd1f9176bc8ed.left && (T = a.left - (P.left - z), T <= L && $ac6f441b4b448e14$var$N(k) > 0 && (C = $ac6f441b4b448e14$export$c9fbd1f9176bc8ed.left)), C && (d = k, m = R, y = L, g = O, S = C, b = T, f = F);\n }\n if (ce && R >= x && j > 0 && (R > x || O > U)) {\n let T = 0, C = $ac6f441b4b448e14$var$H.none, L = $ac6f441b4b448e14$var$be(Ke, P.height), z = $ac6f441b4b448e14$var$De(L, r, a.height, P.height);\n l === $ac6f441b4b448e14$export$c9fbd1f9176bc8ed.down ? (T = P.bottom + z - a.bottom, T <= L && !$ac6f441b4b448e14$var$re($ac6f441b4b448e14$var$q(k), j) && (C = $ac6f441b4b448e14$export$c9fbd1f9176bc8ed.down)) : l === $ac6f441b4b448e14$export$c9fbd1f9176bc8ed.up && (T = a.top - (P.top - z), T <= L && $ac6f441b4b448e14$var$q(k) > 0 && (C = $ac6f441b4b448e14$export$c9fbd1f9176bc8ed.up)), C && (E = k, x = R, V = L, U = O, se = C, Ce = T, Le = j);\n }\n }\n t && (d && S ? this._requestItemScroll(e, $ac6f441b4b448e14$export$5bbd74ab6c855dff.x, d, S, y, b, f) : this._cancelItemScroll(e, $ac6f441b4b448e14$export$5bbd74ab6c855dff.x)), n && (E && se ? this._requestItemScroll(e, $ac6f441b4b448e14$export$5bbd74ab6c855dff.y, E, se, V, Ce, Le) : this._cancelItemScroll(e, $ac6f441b4b448e14$export$5bbd74ab6c855dff.y));\n }\n _updateScrollRequest(e) {\n let t = e.item, { inertAreaSize: n, smoothStop: r, targets: s } = t, o = this._getItemClientRect(t, $ac6f441b4b448e14$var$xe), c = null, l = 0;\n for(; l < s.length; l++){\n let a = s[l], d = $ac6f441b4b448e14$var$Se(a.element || a);\n if (d !== e.element) continue;\n let m = !!($ac6f441b4b448e14$export$5bbd74ab6c855dff.x & e.direction);\n if (m) {\n if (a.axis === \"y\") continue;\n } else if (a.axis === \"x\") continue;\n let y = m ? $ac6f441b4b448e14$var$Ee(d) : $ac6f441b4b448e14$var$ve(d);\n if (y <= 0) break;\n let g = (0, $4fec7741c67a29fc$export$4b834cebd9e5cebe)([\n d,\n \"padding\"\n ], window);\n if (($ac6f441b4b448e14$var$ge(o, g) || -1 / 0) === -1 / 0) {\n let U = a.scrollPadding || a.padding;\n if (!(U && $ac6f441b4b448e14$var$_e(o, $ac6f441b4b448e14$var$$e(g, U, $ac6f441b4b448e14$var$Fe)))) break;\n }\n let b = typeof a.threshold == \"number\" ? a.threshold : $ac6f441b4b448e14$var$je, f = $ac6f441b4b448e14$var$be(b, m ? g.width : g.height), E = $ac6f441b4b448e14$var$De(f, n, m ? o.width : o.height, m ? g.width : g.height), x = 0;\n if (e.direction === $ac6f441b4b448e14$export$c9fbd1f9176bc8ed.left ? x = o.left - (g.left - E) : e.direction === $ac6f441b4b448e14$export$c9fbd1f9176bc8ed.right ? x = g.right + E - o.right : e.direction === $ac6f441b4b448e14$export$c9fbd1f9176bc8ed.up ? x = o.top - (g.top - E) : x = g.bottom + E - o.bottom, x > f) break;\n let V = m ? $ac6f441b4b448e14$var$N(d) : $ac6f441b4b448e14$var$q(d);\n if (c = $ac6f441b4b448e14$export$3eeb7a7b68c92567.forward & e.direction ? $ac6f441b4b448e14$var$re(V, y) : V <= 0, c) break;\n return e.maxValue = y, e.threshold = f, e.distance = x, e.isEnding = !1, !0;\n }\n return r === !0 && e.speed > 0 ? (c === null && (c = e.hasReachedEnd()), e.isEnding = !c) : e.isEnding = !1, e.isEnding;\n }\n _updateItems() {\n for(let e = 0; e < this.items.length; e++){\n let t = this.items[e], n = this._itemData.get(t), { x: r, y: s } = t.position, o = n.positionX, c = n.positionY;\n r === o && s === c || (n.directionX = r > o ? $ac6f441b4b448e14$export$c9fbd1f9176bc8ed.right : r < o ? $ac6f441b4b448e14$export$c9fbd1f9176bc8ed.left : n.directionX, n.directionY = s > c ? $ac6f441b4b448e14$export$c9fbd1f9176bc8ed.down : s < c ? $ac6f441b4b448e14$export$c9fbd1f9176bc8ed.up : n.directionY, n.positionX = r, n.positionY = s, n.overlapCheckRequestTime === 0 && (n.overlapCheckRequestTime = this._tickTime));\n }\n }\n _updateRequests() {\n let e = this.items, t = this._requests[$ac6f441b4b448e14$export$5bbd74ab6c855dff.x], n = this._requests[$ac6f441b4b448e14$export$5bbd74ab6c855dff.y], r = 0;\n for(; r < e.length; r++){\n let s = e[r], o = this._itemData.get(s), c = o.overlapCheckRequestTime, l = c > 0 && this._tickTime - c > this.settings.overlapCheckInterval, a = !0, d = t.get(s);\n d && d.isActive && (a = !this._updateScrollRequest(d), a && (l = !0, this._cancelItemScroll(s, $ac6f441b4b448e14$export$5bbd74ab6c855dff.x)));\n let m = !0, y = n.get(s);\n y && y.isActive && (m = !this._updateScrollRequest(y), m && (l = !0, this._cancelItemScroll(s, $ac6f441b4b448e14$export$5bbd74ab6c855dff.y))), l && (o.overlapCheckRequestTime = 0, this._checkItemOverlap(s, a, m));\n }\n }\n _requestAction(e, t) {\n let n = t === $ac6f441b4b448e14$export$5bbd74ab6c855dff.x, r = null, s = 0;\n for(; s < this._actions.length; s++){\n if (r = this._actions[s], e.element !== r.element) {\n r = null;\n continue;\n }\n if (n ? r.requestX : r.requestY) {\n this._cancelItemScroll(e.item, t);\n return;\n }\n break;\n }\n r || (r = this._actionPool.pick()), r.element = e.element, r.addRequest(e), e.tick(this._tickDeltaTime), this._actions.push(r);\n }\n _updateActions() {\n let e = 0;\n for(e = 0; e < this.items.length; e++){\n let t = this.items[e], n = this._requests[$ac6f441b4b448e14$export$5bbd74ab6c855dff.x].get(t), r = this._requests[$ac6f441b4b448e14$export$5bbd74ab6c855dff.y].get(t);\n n && this._requestAction(n, $ac6f441b4b448e14$export$5bbd74ab6c855dff.x), r && this._requestAction(r, $ac6f441b4b448e14$export$5bbd74ab6c855dff.y);\n }\n for(e = 0; e < this._actions.length; e++)this._actions[e].computeScrollValues();\n }\n _applyActions() {\n if (!this._actions.length) return;\n this._emitter.emit(\"beforescroll\");\n let e = 0;\n for(e = 0; e < this._actions.length; e++)this._actions[e].scroll(), this._actionPool.put(this._actions[e]);\n this._actions.length = 0;\n let t;\n for(e = 0; e < this.items.length; e++)t = this.items[e], t.onPrepareScrollEffect && t.onPrepareScrollEffect();\n for(e = 0; e < this.items.length; e++)t = this.items[e], t.onApplyScrollEffect && t.onApplyScrollEffect();\n this._emitter.emit(\"afterscroll\");\n }\n on(e, t) {\n return this._emitter.on(e, t);\n }\n off(e, t) {\n this._emitter.off(e, t);\n }\n addItem(e) {\n if (this._isDestroyed || this._itemData.has(e)) return;\n let { x: t, y: n } = e.position, r = new $ac6f441b4b448e14$var$Pe;\n r.positionX = t, r.positionY = n, r.directionX = $ac6f441b4b448e14$export$c9fbd1f9176bc8ed.none, r.directionY = $ac6f441b4b448e14$export$c9fbd1f9176bc8ed.none, r.overlapCheckRequestTime = this._tickTime, this._itemData.set(e, r), this.items.push(e), this._isTicking || this._startTicking();\n }\n removeItem(e) {\n if (this._isDestroyed) return;\n let t = this.items.indexOf(e);\n t !== -1 && (this._requests[$ac6f441b4b448e14$export$5bbd74ab6c855dff.x].get(e) && (this._cancelItemScroll(e, $ac6f441b4b448e14$export$5bbd74ab6c855dff.x), this._requests[$ac6f441b4b448e14$export$5bbd74ab6c855dff.x].delete(e)), this._requests[$ac6f441b4b448e14$export$5bbd74ab6c855dff.y].get(e) && (this._cancelItemScroll(e, $ac6f441b4b448e14$export$5bbd74ab6c855dff.y), this._requests[$ac6f441b4b448e14$export$5bbd74ab6c855dff.y].delete(e)), this._itemData.delete(e), this.items.splice(t, 1), this._isTicking && !this.items.length && this._stopTicking());\n }\n isDestroyed() {\n return this._isDestroyed;\n }\n isItemScrollingX(e) {\n return !!this._requests[$ac6f441b4b448e14$export$5bbd74ab6c855dff.x].get(e)?.isActive;\n }\n isItemScrollingY(e) {\n return !!this._requests[$ac6f441b4b448e14$export$5bbd74ab6c855dff.y].get(e)?.isActive;\n }\n isItemScrolling(e) {\n return this.isItemScrollingX(e) || this.isItemScrollingY(e);\n }\n updateSettings(e = {}) {\n let { overlapCheckInterval: t = this.settings.overlapCheckInterval } = e;\n this.settings.overlapCheckInterval = t;\n }\n destroy() {\n if (this._isDestroyed) return;\n let e = this.items.slice(0), t = 0;\n for(; t < e.length; t++)this.removeItem(e[t]);\n this._actions.length = 0, this._requestPool.reset(), this._actionPool.reset(), this._emitter.off(), this._isDestroyed = !0;\n }\n};\nvar $ac6f441b4b448e14$export$d976747ecb966cea = new $ac6f441b4b448e14$export$3fb39aee5567f02e;\nvar $ac6f441b4b448e14$var$G = {\n x: 0,\n y: 0\n}, $ac6f441b4b448e14$var$K = {\n left: 0,\n top: 0,\n width: 0,\n height: 0\n};\nfunction $ac6f441b4b448e14$var$ft() {\n return {\n targets: [],\n inertAreaSize: .2,\n speed: $ac6f441b4b448e14$export$55a384729d91296b(),\n smoothStop: !1,\n getPosition: (i)=>{\n let { drag: e } = i, t = e?.items[0];\n if (t) $ac6f441b4b448e14$var$G.x = t.pX, $ac6f441b4b448e14$var$G.y = t.pY;\n else {\n let n = e && (e.nextMoveEvent || e.startEvent);\n $ac6f441b4b448e14$var$G.x = n ? n.x : 0, $ac6f441b4b448e14$var$G.y = n ? n.y : 0;\n }\n return $ac6f441b4b448e14$var$G;\n },\n getClientRect: (i)=>{\n let { drag: e } = i, t = e?.items[0];\n if (t && t.element) {\n let { left: n, top: r, width: s, height: o } = t.element.getBoundingClientRect();\n $ac6f441b4b448e14$var$K.left = n, $ac6f441b4b448e14$var$K.top = r, $ac6f441b4b448e14$var$K.width = s, $ac6f441b4b448e14$var$K.height = o;\n } else {\n let n = e && (e.nextMoveEvent || e.startEvent);\n $ac6f441b4b448e14$var$K.left = n ? n.x - 25 : 0, $ac6f441b4b448e14$var$K.top = n ? n.y - 25 : 0, $ac6f441b4b448e14$var$K.width = n ? 50 : 0, $ac6f441b4b448e14$var$K.height = n ? 50 : 0;\n }\n return $ac6f441b4b448e14$var$K;\n },\n onStart: null,\n onStop: null\n };\n}\nvar $ac6f441b4b448e14$var$Ae = class {\n constructor(e, t){\n this._draggableAutoScroll = e, this._draggable = t, this._position = {\n x: 0,\n y: 0\n }, this._clientRect = {\n left: 0,\n top: 0,\n width: 0,\n height: 0\n };\n }\n _getSettings() {\n return this._draggableAutoScroll.settings;\n }\n get targets() {\n let { targets: e } = this._getSettings();\n return typeof e == \"function\" && (e = e(this._draggable)), e;\n }\n get position() {\n let { getPosition: e } = this._getSettings();\n if (typeof e == \"function\") {\n let t = e(this._draggable);\n this._position.x = t.x, this._position.y = t.y;\n } else this._position.x = 0, this._position.y = 0;\n return this._position;\n }\n get clientRect() {\n let { getClientRect: e } = this._getSettings();\n if (typeof e == \"function\") {\n let { left: t, top: n, width: r, height: s } = e(this._draggable);\n this._clientRect.left = t, this._clientRect.top = n, this._clientRect.width = r, this._clientRect.height = s;\n } else this._clientRect.left = 0, this._clientRect.top = 0, this._clientRect.width = 0, this._clientRect.height = 0;\n return this._clientRect;\n }\n get inertAreaSize() {\n return this._getSettings().inertAreaSize;\n }\n get smoothStop() {\n return this._getSettings().smoothStop;\n }\n get speed() {\n return this._getSettings().speed;\n }\n get onStart() {\n return this._getSettings().onStart;\n }\n get onStop() {\n return this._getSettings().onStop;\n }\n onPrepareScrollEffect() {\n let e = this._draggable._updateId;\n $ac6f441b4b448e14$export$e94d57566be028aa.off($ac6f441b4b448e14$export$9138efc7ba4fca22, e), $ac6f441b4b448e14$export$e94d57566be028aa.off($ac6f441b4b448e14$export$5fd1e257088db342, e), this._draggable._preparePositionUpdate();\n }\n onApplyScrollEffect() {\n this._draggable._applyPositionUpdate();\n }\n}, $ac6f441b4b448e14$export$5059276ad4233de3 = class {\n constructor(e, t = {}){\n this.name = \"autoscroll\", this.version = \"0.0.2\", this.settings = this._parseSettings(t), this._autoScrollProxy = null, e.on(\"start\", ()=>{\n this._autoScrollProxy || (this._autoScrollProxy = new $ac6f441b4b448e14$var$Ae(this, e), $ac6f441b4b448e14$export$d976747ecb966cea.addItem(this._autoScrollProxy));\n }), e.on(\"end\", ()=>{\n this._autoScrollProxy && ($ac6f441b4b448e14$export$d976747ecb966cea.removeItem(this._autoScrollProxy), this._autoScrollProxy = null);\n });\n }\n _parseSettings(e, t = $ac6f441b4b448e14$var$ft()) {\n let { targets: n = t.targets, inertAreaSize: r = t.inertAreaSize, speed: s = t.speed, smoothStop: o = t.smoothStop, getPosition: c = t.getPosition, getClientRect: l = t.getClientRect, onStart: a = t.onStart, onStop: d = t.onStop } = e || {};\n return {\n targets: n,\n inertAreaSize: r,\n speed: s,\n smoothStop: o,\n getPosition: c,\n getClientRect: l,\n onStart: a,\n onStop: d\n };\n }\n updateSettings(e = {}) {\n this.settings = this._parseSettings(e, this.settings);\n }\n};\nfunction $ac6f441b4b448e14$export$c0f5c18ade842ccd(i) {\n return (e)=>{\n let t = new $ac6f441b4b448e14$export$5059276ad4233de3(e, i), n = e;\n return n.plugins[t.name] = t, n;\n };\n}\nvar $ac6f441b4b448e14$var$Qe = new Set([\n \"auto\",\n \"scroll\",\n \"overlay\"\n]);\nfunction $ac6f441b4b448e14$var$oe(i) {\n let e = $ac6f441b4b448e14$var$te(i);\n return !!($ac6f441b4b448e14$var$Qe.has(e.overflowY) || $ac6f441b4b448e14$var$Qe.has(e.overflowX));\n}\nfunction $ac6f441b4b448e14$var$Ze(i) {\n return i instanceof Document;\n}\nfunction $ac6f441b4b448e14$var$et(i, e = []) {\n let t = i?.parentNode;\n for(; t && !$ac6f441b4b448e14$var$Ze(t);)t instanceof Element ? ($ac6f441b4b448e14$var$oe(t) && e.push(t), t = t.parentNode) : t instanceof ShadowRoot ? t = t.host : t = t.parentNode;\n return e.push(window), e;\n}\nfunction $ac6f441b4b448e14$var$gt(i) {\n let e = [];\n return $ac6f441b4b448e14$var$oe(i) && e.push(i), $ac6f441b4b448e14$var$et(i, e), e;\n}\nfunction $ac6f441b4b448e14$export$88d83dc4a35d804f(i = {}) {\n let e, t = 0, n = null, r, { timeout: s = 250, fallback: o = ()=>!0 } = i, c = (d)=>d.preventDefault(), l = (d)=>{\n if (t) {\n if (e) {\n d.cancelable && d.preventDefault();\n return;\n }\n e === void 0 && (d.cancelable && d.timeStamp - t > s ? (e = !0, d.preventDefault()) : e = !1);\n }\n };\n return (d)=>{\n if (!(d.sensor instanceof $ac6f441b4b448e14$export$b26af955418d6638)) return o(d);\n let { draggable: m, sensor: y, event: g } = d, S = g;\n if (S.pointerType === \"touch\") {\n if (S.type === \"start\" && (S.srcEvent.type === \"pointerdown\" || S.srcEvent.type === \"touchstart\")) {\n n = S.target;\n let b = n ? $ac6f441b4b448e14$var$gt(n) : [];\n b.forEach((E)=>{\n E.addEventListener(\"touchmove\", l, {\n passive: !1,\n capture: !0\n });\n });\n let f = ()=>{\n t && (m.off(\"end\", f), m.sensors.forEach((E)=>{\n E instanceof $ac6f441b4b448e14$export$b26af955418d6638 && E.off(\"end\", f);\n }), n?.removeEventListener(\"contextmenu\", c), b.forEach((E)=>{\n E.removeEventListener(\"touchmove\", l, {\n capture: !0\n });\n }), t = 0, e = void 0, n = null, r = void window.clearTimeout(r));\n };\n e = void 0, t = S.srcEvent.timeStamp, n?.addEventListener(\"contextmenu\", c), m.on(\"end\", f), m.sensors.forEach((E)=>{\n E instanceof $ac6f441b4b448e14$export$b26af955418d6638 && E.off(\"end\", f);\n }), s > 0 && (r = window.setTimeout(()=>{\n m.resolveStartPredicate(y), e = !0, r = void 0;\n }, s));\n }\n return e;\n }\n return S.type === \"start\" && !S.srcEvent.button;\n };\n}\n\n\nconst $0d81635c11b16eab$var$element = document.querySelector(\".draggable\");\nconst $0d81635c11b16eab$var$pointerSensor = new (0, $ac6f441b4b448e14$export$b26af955418d6638)($0d81635c11b16eab$var$element);\nconst $0d81635c11b16eab$var$keyboardSensor = new (0, $ac6f441b4b448e14$export$436f6efcc297171)();\nconst $0d81635c11b16eab$var$draggable = new (0, $ac6f441b4b448e14$export$f2a139e5d18b9882)([\n $0d81635c11b16eab$var$pointerSensor,\n $0d81635c11b16eab$var$keyboardSensor\n], {\n getElements: ()=>[\n $0d81635c11b16eab$var$element\n ],\n startPredicate: (0, $ac6f441b4b448e14$export$88d83dc4a35d804f)()\n});\n$0d81635c11b16eab$var$draggable.on(\"start\", ()=>{\n $0d81635c11b16eab$var$element.classList.add(\"dragging\");\n});\n$0d81635c11b16eab$var$draggable.on(\"end\", ()=>{\n $0d81635c11b16eab$var$element.classList.remove(\"dragging\");\n});\n\n\n//# sourceMappingURL=index.fbc6ca0e.js.map\n","import {\n Draggable,\n PointerSensor,\n KeyboardMotionSensor,\n createPointerSensorStartPredicate,\n} from '../../dist/dragdoll';\n\nconst element = document.querySelector('.draggable') as HTMLElement;\nconst pointerSensor = new PointerSensor(element);\nconst keyboardSensor = new KeyboardMotionSensor();\nconst draggable = new Draggable([pointerSensor, keyboardSensor], {\n getElements: () => [element],\n startPredicate: createPointerSensorStartPredicate(),\n});\n\ndraggable.on('start', () => {\n element.classList.add('dragging');\n});\n\ndraggable.on('end', () => {\n element.classList.remove('dragging');\n});\n","var _={start:\"start\",move:\"move\",cancel:\"cancel\",end:\"end\",destroy:\"destroy\"};import{Emitter as tt}from\"eventti\";var W=class{constructor(){this.drag=null,this.isDestroyed=!1,this._emitter=new tt}_createDragData(e){return{x:e.x,y:e.y}}_updateDragData(e){this.drag&&(this.drag.x=e.x,this.drag.y=e.y)}_resetDragData(){this.drag=null}_start(e){this.isDestroyed||this.drag||(this.drag=this._createDragData(e),this._emitter.emit(_.start,e))}_move(e){this.drag&&(this._updateDragData(e),this._emitter.emit(_.move,e))}_end(e){this.drag&&(this._updateDragData(e),this._emitter.emit(_.end,e),this._resetDragData())}_cancel(e){this.drag&&(this._updateDragData(e),this._emitter.emit(_.cancel,e),this._resetDragData())}on(e,t,n){return this._emitter.on(e,t,n)}off(e,t){this._emitter.off(e,t)}cancel(){this.drag&&(this._emitter.emit(_.cancel,{type:_.cancel,x:this.drag.x,y:this.drag.y}),this._resetDragData())}destroy(){this.isDestroyed||(this.isDestroyed=!0,this.cancel(),this._emitter.emit(_.destroy,{type:_.destroy}),this._emitter.off())}};import{Ticker as nt}from\"tikki\";var v=Symbol(),D=Symbol(),u=new nt({phases:[v,D]});function wt(i,e,t){v=e,D=t,u=i}var $=class extends W{constructor(){super();this.drag=null,this._direction={x:0,y:0},this._speed=0,this._tick=this._tick.bind(this)}_createDragData(t){return{...super._createDragData(t),time:0,deltaTime:0}}_start(t){this.isDestroyed||this.drag||(super._start(t),u.on(v,this._tick))}_end(t){this.drag&&(u.off(v,this._tick),super._end(t))}_cancel(t){this.drag&&(u.off(v,this._tick),super._cancel(t))}_tick(t){if(this.drag)if(t&&this.drag.time){this.drag.deltaTime=t-this.drag.time,this.drag.time=t;let n={type:\"tick\",time:this.drag.time,deltaTime:this.drag.deltaTime};if(this._emitter.emit(\"tick\",n),!this.drag)return;let r=this._speed*(this.drag.deltaTime/1e3),s=this._direction.x*r,o=this._direction.y*r;(s||o)&&this._move({type:\"move\",x:this.drag.x+s,y:this.drag.y+o})}else this.drag.time=t,this.drag.deltaTime=0}};import{Emitter as rt}from\"eventti\";function de(i,e){if(\"pointerId\"in i)return i.pointerId===e?i:null;if(\"changedTouches\"in i){let t=0;for(;t{let i=!1;try{let e=Object.defineProperty({},\"passive\",{get:function(){i=!0}});window.addEventListener(\"testPassive\",null,e),window.removeEventListener(\"testPassive\",null,e)}catch{}return i})(),Oe=he&&\"ontouchstart\"in window,We=he&&!!window.PointerEvent,Ot=!!(he&&navigator.vendor&&navigator.vendor.indexOf(\"Apple\")>-1&&navigator.userAgent&&navigator.userAgent.indexOf(\"CriOS\")==-1&&navigator.userAgent.indexOf(\"FxiOS\")==-1);function me(i={}){let{capture:e=!0,passive:t=!0}=i;return J?{capture:e,passive:t}:{capture:e}}function ue(i){return i===\"auto\"||i===void 0?We?\"pointer\":Oe?\"touch\":\"mouse\":i}var it={start:\"pointerdown\",move:\"pointermove\",cancel:\"pointercancel\",end:\"pointerup\"},ot={start:\"touchstart\",move:\"touchmove\",cancel:\"touchcancel\",end:\"touchend\"},st={start:\"mousedown\",move:\"mousemove\",cancel:\"\",end:\"mouseup\"},X={pointer:it,touch:ot,mouse:st},Y=class{constructor(e,t={}){let{listenerOptions:n={},sourceEvents:r=\"auto\",startPredicate:s=o=>!(\"button\"in o&&o.button>0)}=t;this.element=e,this.drag=null,this.isDestroyed=!1,this._areWindowListenersBound=!1,this._startPredicate=s,this._listenerOptions=me(n),this._sourceEvents=ue(r),this._emitter=new rt,this._onStart=this._onStart.bind(this),this._onMove=this._onMove.bind(this),this._onCancel=this._onCancel.bind(this),this._onEnd=this._onEnd.bind(this),e.addEventListener(X[this._sourceEvents].start,this._onStart,this._listenerOptions)}_getTrackedPointerEventData(e){return this.drag?de(e,this.drag.pointerId):null}_onStart(e){if(this.isDestroyed||this.drag||!this._startPredicate(e))return;let t=Me(e);if(t===null)return;let n=de(e,t);if(n===null)return;let r={pointerId:t,pointerType:Re(e),x:n.clientX,y:n.clientY};this.drag=r;let s={...r,type:_.start,srcEvent:e,target:n.target};this._emitter.emit(s.type,s),this.drag&&this._bindWindowListeners()}_onMove(e){if(!this.drag)return;let t=this._getTrackedPointerEventData(e);if(!t)return;this.drag.x=t.clientX,this.drag.y=t.clientY;let n={type:_.move,srcEvent:e,target:t.target,...this.drag};this._emitter.emit(n.type,n)}_onCancel(e){if(!this.drag)return;let t=this._getTrackedPointerEventData(e);if(!t)return;this.drag.x=t.clientX,this.drag.y=t.clientY;let n={type:_.cancel,srcEvent:e,target:t.target,...this.drag};this._emitter.emit(n.type,n),this._resetDrag()}_onEnd(e){if(!this.drag)return;let t=this._getTrackedPointerEventData(e);if(!t)return;this.drag.x=t.clientX,this.drag.y=t.clientY;let n={type:_.end,srcEvent:e,target:t.target,...this.drag};this._emitter.emit(n.type,n),this._resetDrag()}_bindWindowListeners(){if(this._areWindowListenersBound)return;let{move:e,end:t,cancel:n}=X[this._sourceEvents];window.addEventListener(e,this._onMove,this._listenerOptions),window.addEventListener(t,this._onEnd,this._listenerOptions),n&&window.addEventListener(n,this._onCancel,this._listenerOptions),this._areWindowListenersBound=!0}_unbindWindowListeners(){if(this._areWindowListenersBound){let{move:e,end:t,cancel:n}=X[this._sourceEvents];window.removeEventListener(e,this._onMove,this._listenerOptions),window.removeEventListener(t,this._onEnd,this._listenerOptions),n&&window.removeEventListener(n,this._onCancel,this._listenerOptions),this._areWindowListenersBound=!1}}_resetDrag(){this.drag=null,this._unbindWindowListeners()}cancel(){if(!this.drag)return;let e={type:_.cancel,srcEvent:null,target:null,...this.drag};this._emitter.emit(e.type,e),this._resetDrag()}updateSettings(e){if(this.isDestroyed)return;let{listenerOptions:t,sourceEvents:n,startPredicate:r}=e,s=ue(n),o=me(t);r&&this._startPredicate!==r&&(this._startPredicate=r),(t&&(this._listenerOptions.capture!==o.capture||this._listenerOptions.passive===o.passive)||n&&this._sourceEvents!==s)&&(this.element.removeEventListener(X[this._sourceEvents].start,this._onStart,this._listenerOptions),this._unbindWindowListeners(),this.cancel(),n&&(this._sourceEvents=s),t&&o&&(this._listenerOptions=o),this.element.addEventListener(X[this._sourceEvents].start,this._onStart,this._listenerOptions))}on(e,t,n){return this._emitter.on(e,t,n)}off(e,t){this._emitter.off(e,t)}destroy(){this.isDestroyed||(this.isDestroyed=!0,this.cancel(),this._emitter.emit(_.destroy,{type:_.destroy}),this._emitter.off(),this.element.removeEventListener(X[this._sourceEvents].start,this._onStart,this._listenerOptions))}};var Xe=class extends W{constructor(t={}){super();let{moveDistance:n=25,startPredicate:r=l=>{if((l.key===\"Enter\"||l.key===\" \")&&document.activeElement&&document.activeElement!==document.body){let{left:a,top:d}=document.activeElement.getBoundingClientRect();return{x:a,y:d}}return null},movePredicate:s=(l,a,d)=>{if(!a.drag)return null;switch(l.key){case\"ArrowLeft\":return{x:a.drag.x-d.x,y:a.drag.y};case\"ArrowRight\":return{x:a.drag.x+d.x,y:a.drag.y};case\"ArrowUp\":return{x:a.drag.x,y:a.drag.y-d.y};case\"ArrowDown\":return{x:a.drag.x,y:a.drag.y+d.y};default:return null}},cancelPredicate:o=(l,a)=>a.drag&&l.key===\"Escape\"?{x:a.drag.x,y:a.drag.y}:null,endPredicate:c=(l,a)=>a.drag&&(l.key===\"Enter\"||l.key===\" \")?{x:a.drag.x,y:a.drag.y}:null}=t;this._moveDistance=typeof n==\"number\"?{x:n,y:n}:{...n},this._startPredicate=r,this._movePredicate=s,this._cancelPredicate=o,this._endPredicate=c,this.cancel=this.cancel.bind(this),this._onKeyDown=this._onKeyDown.bind(this),document.addEventListener(\"keydown\",this._onKeyDown),window.addEventListener(\"blur\",this.cancel),window.addEventListener(\"visibilitychange\",this.cancel)}_onKeyDown(t){if(!this.drag){let o=this._startPredicate(t,this,this._moveDistance);o&&(t.preventDefault(),this._start({type:\"start\",x:o.x,y:o.y,srcEvent:t}));return}let n=this._cancelPredicate(t,this,this._moveDistance);if(n){t.preventDefault(),this._cancel({type:\"cancel\",x:n.x,y:n.y,srcEvent:t});return}let r=this._endPredicate(t,this,this._moveDistance);if(r){t.preventDefault(),this._end({type:\"end\",x:r.x,y:r.y,srcEvent:t});return}let s=this._movePredicate(t,this,this._moveDistance);if(s){t.preventDefault(),this._move({type:\"move\",x:s.x,y:s.y,srcEvent:t});return}}updateSettings(t={}){t.moveDistance!==void 0&&(typeof t.moveDistance==\"number\"?(this._moveDistance.x=t.moveDistance,this._moveDistance.y=t.moveDistance):(this._moveDistance.x=t.moveDistance.x,this._moveDistance.y=t.moveDistance.y)),t.startPredicate!==void 0&&(this._startPredicate=t.startPredicate),t.movePredicate!==void 0&&(this._movePredicate=t.movePredicate),t.cancelPredicate!==void 0&&(this._cancelPredicate=t.cancelPredicate),t.endPredicate!==void 0&&(this._endPredicate=t.endPredicate)}destroy(){this.isDestroyed||(super.destroy(),document.removeEventListener(\"keydown\",this._onKeyDown),window.removeEventListener(\"blur\",this.cancel),window.removeEventListener(\"visibilitychange\",this.cancel))}};var at=[\"start\",\"cancel\",\"end\",\"moveLeft\",\"moveRight\",\"moveUp\",\"moveDown\"];function Q(i,e){if(!i.size||!e.size)return 1/0;let t=1/0;for(let n of i){let r=e.get(n);r!==void 0&&r{if(document.activeElement){let{left:y,top:g}=document.activeElement.getBoundingClientRect();return{x:y,y:g}}return null},computeSpeed:r=()=>500,startKeys:s=[\" \",\"Enter\"],moveLeftKeys:o=[\"ArrowLeft\"],moveRightKeys:c=[\"ArrowRight\"],moveUpKeys:l=[\"ArrowUp\"],moveDownKeys:a=[\"ArrowDown\"],cancelKeys:d=[\"Escape\"],endKeys:m=[\" \",\"Enter\"]}=t;this._computeSpeed=r,this._startPredicate=n,this._startKeys=new Set(s),this._cancelKeys=new Set(d),this._endKeys=new Set(m),this._moveLeftKeys=new Set(o),this._moveRightKeys=new Set(c),this._moveUpKeys=new Set(l),this._moveDownKeys=new Set(a),this._moveKeys=new Set([...o,...c,...l,...a]),this._moveKeyTimestamps=new Map,this._onKeyDown=this._onKeyDown.bind(this),this._onKeyUp=this._onKeyUp.bind(this),this._onTick=this._onTick.bind(this),this.on(\"tick\",this._onTick),document.addEventListener(\"keydown\",this._onKeyDown),document.addEventListener(\"keyup\",this._onKeyUp),window.addEventListener(\"blur\",this.cancel),window.addEventListener(\"visibilitychange\",this.cancel)}_end(t){this.drag&&(this._moveKeyTimestamps.clear(),this._direction.x=0,this._direction.y=0,super._end(t))}_cancel(t){this.drag&&(this._moveKeyTimestamps.clear(),this._direction.x=0,this._direction.y=0,super._cancel(t))}_updateDirection(){let t=Q(this._moveLeftKeys,this._moveKeyTimestamps),n=Q(this._moveRightKeys,this._moveKeyTimestamps),r=Q(this._moveUpKeys,this._moveKeyTimestamps),s=Q(this._moveDownKeys,this._moveKeyTimestamps),o=t===n?0:t{let o=`${r}Keys`,c=t[o];c!==void 0&&(this[`_${o}`]=new Set(c),s>=3&&(n=!0))}),n){let r=[...this._moveLeftKeys,...this._moveRightKeys,...this._moveUpKeys,...this._moveDownKeys];[...this._moveKeys].every((o,c)=>r[c]===o)||(this._moveKeys=new Set(r),this._moveKeyTimestamps.clear(),this._updateDirection())}}destroy(){this.isDestroyed||(super.destroy(),this.off(\"tick\",this._onTick),document.removeEventListener(\"keydown\",this._onKeyDown),document.removeEventListener(\"keyup\",this._onKeyUp),window.removeEventListener(\"blur\",this.cancel),window.removeEventListener(\"visibilitychange\",this.cancel))}};import{Emitter as lt}from\"eventti\";import{getOffsetContainer as Ve}from\"mezr\";var Z=class{constructor(){this.sensor=null,this.isEnded=!1,this.isStarted=!1,this.startEvent=null,this.nextMoveEvent=null,this.prevMoveEvent=null,this.endEvent=null,this.items=[]}};var ee=class{constructor(e,t,n,r,s){this.data={},this.element=e,this.elementContainer=t,this.elementOffsetContainer=n,this.dragContainer=r,this.dragOffsetContainer=s,this.initialTransform=\"\",this.frozenProps=null,this.unfrozenProps=null,this.x=0,this.y=0,this.pX=0,this.pY=0,this._updateDiffX=0,this._updateDiffY=0,this._moveDiffX=0,this._moveDiffY=0,this._containerDiffX=0,this._containerDiffY=0}};import{getOffset as Ne}from\"mezr\";function pe(i,e,t={left:0,top:0}){if(t.left=0,t.top=0,i===e)return t;let n=Ne([i,\"padding\"]),r=Ne([e,\"padding\"]);return t.left=r.left-n.left,t.top=r.top-n.top,t}var qe=new WeakMap;function te(i){let e=qe.get(i)?.deref();return e||(e=window.getComputedStyle(i,null),qe.set(i,new WeakRef(e))),e}var ct=\"matrix(1, 0, 0, 1, 0, 0)\",dt=\"matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)\",Ue=J?{capture:!0,passive:!0}:!0,ze={left:0,top:0},fe={x:0,y:0};function ht(){return{container:null,startPredicate:()=>!0,getElements:()=>null,releaseElements:()=>null,getFrozenProps:()=>null,getStartPosition:()=>({x:0,y:0}),setPosition:({item:i,x:e,y:t})=>{i.element.style.transform=`translate(${e}px, ${t}px) ${i.initialTransform}`},getPositionChange:({event:i,prevEvent:e})=>(fe.x=i.x-e.x,fe.y=i.y-e.y,fe)}}var Be=class{constructor(e,t={}){this.sensors=e,this.settings=this._parseSettings(t),this.plugins={},this.drag=null,this.isDestroyed=!1,this._sensorData=new Map,this._emitter=new lt,this._startId=Symbol(),this._moveId=Symbol(),this._updateId=Symbol(),this._onMove=this._onMove.bind(this),this._onScroll=this._onScroll.bind(this),this._onEnd=this._onEnd.bind(this),this._prepareStart=this._prepareStart.bind(this),this._applyStart=this._applyStart.bind(this),this._prepareMove=this._prepareMove.bind(this),this._applyMove=this._applyMove.bind(this),this._preparePositionUpdate=this._preparePositionUpdate.bind(this),this._applyPositionUpdate=this._applyPositionUpdate.bind(this),this.sensors.forEach(n=>{this._sensorData.set(n,{predicateState:0,predicateEvent:null,onMove:o=>this._onMove(o,n),onEnd:o=>this._onEnd(o,n)});let{onMove:r,onEnd:s}=this._sensorData.get(n);n.on(\"start\",r),n.on(\"move\",r),n.on(\"cancel\",s),n.on(\"end\",s),n.on(\"destroy\",s)})}_parseSettings(e,t=ht()){let{container:n=t.container,startPredicate:r=t.startPredicate,getElements:s=t.getElements,releaseElements:o=t.releaseElements,getFrozenProps:c=t.getFrozenProps,getStartPosition:l=t.getStartPosition,setPosition:a=t.setPosition,getPositionChange:d=t.getPositionChange}=e||{};return{container:n,startPredicate:r,getElements:s,releaseElements:o,getFrozenProps:c,getStartPosition:l,setPosition:a,getPositionChange:d}}_emit(e,...t){this._emitter.emit(e,...t)}_onMove(e,t){let n=this._sensorData.get(t);if(n)switch(n.predicateState){case 0:{n.predicateEvent=e;let r=this.settings.startPredicate({draggable:this,sensor:t,event:e});r===!0?this.resolveStartPredicate(t):r===!1&&this.rejectStartPredicate(t);break}case 1:{this.drag&&(this.drag.nextMoveEvent=e,u.once(v,this._prepareMove,this._moveId),u.once(D,this._applyMove,this._moveId));break}}}_onScroll(){this.updatePosition()}_onEnd(e,t){let n=this._sensorData.get(t);n&&(this.drag?n.predicateState===1&&(this.drag.endEvent=e,this._sensorData.forEach(r=>{r.predicateState=0,r.predicateEvent=null}),this.stop()):(n.predicateState=0,n.predicateEvent=null))}_prepareStart(){let{drag:e}=this;if(!e||!e.startEvent)return;let t=this.settings.getElements({draggable:this,sensor:e.sensor,startEvent:e.startEvent})||[];e.items=t.map(n=>{if(!n.isConnected)throw new Error(\"Element is not connected\");let r=n.parentElement,s=Ve(n);if(!s)throw new Error(\"Offset container could not be computed for the element!\");let o=this.settings.container||r,c=o===r?s:Ve(n,{container:o});if(!c)throw new Error(\"Drag offset container could not be computed for the element!\");let l=new ee(n,r,s,o,c),a=n.getBoundingClientRect();if(l.x=a.left,l.y=a.top,s!==c){let{left:b,top:f}=pe(c,s,ze);l._containerDiffX=b,l._containerDiffY=f}let d=te(n),{transform:m}=d;m&&m!==\"none\"&&m!==ct&&m!==dt&&(l.initialTransform=m);let{x:y,y:g}=this.settings.getStartPosition({draggable:this,sensor:e.sensor,item:l,style:d});l.pX=y,l.pY=g;let S=this.settings.getFrozenProps({draggable:this,sensor:e.sensor,item:l,style:d});if(Array.isArray(S))if(S.length){let b={};for(let f of S)b[f]=d[f];l.frozenProps=b}else l.frozenProps=null;else l.frozenProps=S;if(l.frozenProps){let b={};for(let f in l.frozenProps)l.frozenProps.hasOwnProperty(f)&&(b[f]=n.style[f]);l.unfrozenProps=b}return l}),this._emit(\"preparestart\",e.startEvent)}_applyStart(){let e=this.drag;if(!e||!e.startEvent)return;let{container:t}=this.settings;for(let n of e.items)t&&n.element.parentElement!==t&&(t.appendChild(n.element),n.pX+=n._containerDiffX,n.pY+=n._containerDiffY),n.frozenProps&&Object.assign(n.element.style,n.frozenProps),this.settings.setPosition({phase:\"start\",draggable:this,sensor:e.sensor,item:n,x:n.pX,y:n.pY});window.addEventListener(\"scroll\",this._onScroll,Ue),e.isStarted=!0,this._emit(\"start\",e.startEvent)}_prepareMove(){let{drag:e}=this;if(!e||!e.startEvent)return;let t=e.nextMoveEvent,n=e.prevMoveEvent||e.startEvent;if(!(!t||t===n)){for(let r of e.items){let{x:s,y:o}=this.settings.getPositionChange({draggable:this,sensor:e.sensor,item:r,startEvent:e.startEvent,prevEvent:n,event:t});s&&(r.pX=r.pX-r._moveDiffX+s,r.x=r.x-r._moveDiffX+s,r._moveDiffX=s),o&&(r.pY=r.pY-r._moveDiffY+o,r.y=r.y-r._moveDiffY+o,r._moveDiffY=o)}e.prevMoveEvent=t,this._emit(\"preparemove\",t)}}_applyMove(){let{drag:e}=this;if(!(!e||!e.nextMoveEvent)){for(let t of e.items)t._moveDiffX=0,t._moveDiffY=0;for(let t of e.items)this.settings.setPosition({phase:\"move\",draggable:this,sensor:e.sensor,item:t,x:t.pX,y:t.pY});this._emit(\"move\",e.nextMoveEvent)}}_preparePositionUpdate(){let{drag:e}=this;if(e)for(let t of e.items){if(t.elementOffsetContainer!==t.dragOffsetContainer){let{left:c,top:l}=pe(t.dragOffsetContainer,t.elementOffsetContainer,ze);t._containerDiffX=c,t._containerDiffY=l}let{left:n,top:r}=t.element.getBoundingClientRect(),s=t.x-t._moveDiffX-n;t.pX=t.pX-t._updateDiffX+s,t._updateDiffX=s;let o=t.y-t._moveDiffY-r;t.pY=t.pY-t._updateDiffY+o,t._updateDiffY=o}}_applyPositionUpdate(){let{drag:e}=this;if(e)for(let t of e.items)t._updateDiffX=0,t._updateDiffY=0,this.settings.setPosition({phase:\"move\",draggable:this,sensor:e.sensor,item:t,x:t.pX,y:t.pY})}on(e,t,n){return this._emitter.on(e,t,n)}off(e,t){this._emitter.off(e,t)}resolveStartPredicate(e,t){let n=this._sensorData.get(e);if(!n)return;let r=t||n.predicateEvent;n.predicateState===0&&r&&(n.predicateState=1,n.predicateEvent=null,this.drag=new Z,this.drag.sensor=e,this.drag.startEvent=r,this._sensorData.forEach((s,o)=>{o!==e&&(s.predicateState=2,s.predicateEvent=null)}),u.once(v,this._prepareStart,this._startId),u.once(D,this._applyStart,this._startId))}rejectStartPredicate(e){let t=this._sensorData.get(e);t?.predicateState===0&&(t.predicateState=2,t.predicateEvent=null)}stop(){let{drag:e}=this;if(!(!e||e.isEnded)){if(e.isEnded=!0,u.off(v,this._startId),u.off(D,this._startId),u.off(v,this._moveId),u.off(D,this._moveId),u.off(v,this._updateId),u.off(D,this._updateId),e.isStarted){window.removeEventListener(\"scroll\",this._onScroll,Ue);let t=[];for(let n of e.items){if(t.push(n.element),n.elementContainer&&n.element.parentElement!==n.elementContainer&&(n.pX-=n._containerDiffX,n.pY-=n._containerDiffY,n._containerDiffX=0,n._containerDiffY=0,n.elementContainer.appendChild(n.element)),n.unfrozenProps)for(let r in n.unfrozenProps)n.element.style[r]=n.unfrozenProps[r]||\"\";this.settings.setPosition({phase:\"end\",draggable:this,sensor:e.sensor,item:n,x:n.pX,y:n.pY})}t.length&&this.settings.releaseElements({draggable:this,sensor:e.sensor,elements:t})}this._emit(\"end\",e.endEvent),this.drag=null}}updatePosition(e=!1){this.drag&&(e?(this._preparePositionUpdate(),this._applyPositionUpdate()):(u.once(v,this._preparePositionUpdate,this._updateId),u.once(D,this._applyPositionUpdate,this._updateId)))}updateSettings(e={}){this.settings=this._parseSettings(e,this.settings)}use(e){return e(this)}destroy(){this.isDestroyed||(this.isDestroyed=!0,this.stop(),this._sensorData.forEach(({onMove:e,onEnd:t},n)=>{n.off(\"start\",e),n.off(\"move\",e),n.off(\"cancel\",t),n.off(\"end\",t),n.off(\"destroy\",t)}),this._sensorData.clear(),this._emit(\"destroy\"),this._emitter.off())}};import{Emitter as ut}from\"eventti\";import{getDistance as pt,getRect as Ge}from\"mezr\";var B=class{constructor(e,t){this._data=[],this._createObject=e,this._onPut=t}pick(){return this._data.length?this._data.pop():this._createObject()}put(e){this._data.indexOf(e)===-1&&(this._onPut&&this._onPut(e),this._data.push(e))}reset(){this._data.length=0}};import{getIntersection as mt}from\"mezr\";function He(i,e){let t=mt(i,e);return t?t.width*t.height:0}function ge(i,e){let t=He(i,e);if(!t)return 0;let n=Math.min(i.width,e.width)*Math.min(i.height,e.height);return t/n*100}function w(i){return i instanceof Window}function Se(i){return w(i)||i===document.documentElement||i===document.body?window:i}function N(i){return w(i)?i.pageXOffset:i.scrollLeft}function Ee(i){return w(i)&&(i=document.documentElement),i.scrollWidth-i.clientWidth}function q(i){return w(i)?i.pageYOffset:i.scrollTop}function ve(i){return w(i)&&(i=document.documentElement),i.scrollHeight-i.clientHeight}function _e(i,e){return!(i.right<=e.left||e.right<=i.left||i.bottom<=e.top||e.bottom<=i.top)}var xe={width:0,height:0,left:0,right:0,top:0,bottom:0},Fe={...xe},je=50,I={direction:\"none\",threshold:0,distance:0,value:0,maxValue:0,duration:0,speed:0,deltaTime:0,isEnding:!1},h={x:1,y:2},M={forward:4,reverse:8},ne={none:0,left:h.x|M.reverse,right:h.x|M.forward},H={none:0,up:h.y|M.reverse,down:h.y|M.forward},p={...ne,...H};function ye(i){switch(i){case ne.none:case H.none:return\"none\";case ne.left:return\"left\";case ne.right:return\"right\";case H.up:return\"up\";case H.down:return\"down\";default:throw new Error(`Unknown direction value: ${i}`)}}function $e(i,e,t){let{left:n=0,right:r=0,top:s=0,bottom:o=0}=e;return n=Math.max(0,n),r=Math.max(0,r),s=Math.max(0,s),o=Math.max(0,o),t.width=i.width+n+r,t.height=i.height+s+o,t.left=i.left-n,t.top=i.top-s,t.right=i.right+r,t.bottom=i.bottom+o,t}function re(i,e){return Math.ceil(i)>=Math.floor(e)}function be(i,e){return Math.min(e/2,i)}function De(i,e,t,n){return Math.max(0,t+i*2+n*e-n)/2}var Pe=class{constructor(){this.positionX=0,this.positionY=0,this.directionX=p.none,this.directionY=p.none,this.overlapCheckRequestTime=0}},Te=class{constructor(){this.element=null,this.requestX=null,this.requestY=null,this.scrollLeft=0,this.scrollTop=0}reset(){this.requestX&&(this.requestX.action=null),this.requestY&&(this.requestY.action=null),this.element=null,this.requestX=null,this.requestY=null,this.scrollLeft=0,this.scrollTop=0}addRequest(e){h.x&e.direction?(this.requestX&&this.removeRequest(this.requestX),this.requestX=e):(this.requestY&&this.removeRequest(this.requestY),this.requestY=e),e.action=this}removeRequest(e){this.requestX===e?(this.requestX=null,e.action=null):this.requestY===e&&(this.requestY=null,e.action=null)}computeScrollValues(){this.element&&(this.scrollLeft=this.requestX?this.requestX.value:N(this.element),this.scrollTop=this.requestY?this.requestY.value:q(this.element))}scroll(){this.element&&(this.element.scrollTo?this.element.scrollTo(this.scrollLeft,this.scrollTop):(this.element.scrollLeft=this.scrollLeft,this.element.scrollTop=this.scrollTop))}},we=class{constructor(){this.item=null,this.element=null,this.isActive=!1,this.isEnding=!1,this.direction=0,this.value=NaN,this.maxValue=0,this.threshold=0,this.distance=0,this.deltaTime=0,this.speed=0,this.duration=0,this.action=null}reset(){this.isActive&&this.onStop(),this.item=null,this.element=null,this.isActive=!1,this.isEnding=!1,this.direction=0,this.value=NaN,this.maxValue=0,this.threshold=0,this.distance=0,this.deltaTime=0,this.speed=0,this.duration=0,this.action=null}hasReachedEnd(){return M.forward&this.direction?re(this.value,this.maxValue):this.value<=0}computeCurrentScrollValue(){return this.element?this.value!==this.value?h.x&this.direction?N(this.element):q(this.element):Math.max(0,Math.min(this.value,this.maxValue)):0}computeNextScrollValue(){let e=this.speed*(this.deltaTime/1e3),t=M.forward&this.direction?this.value+e:this.value-e;return Math.max(0,Math.min(t,this.maxValue))}computeSpeed(){if(!this.item||!this.element)return 0;let{speed:e}=this.item;return typeof e==\"function\"?(I.direction=ye(this.direction),I.threshold=this.threshold,I.distance=this.distance,I.value=this.value,I.maxValue=this.maxValue,I.duration=this.duration,I.speed=this.speed,I.deltaTime=this.deltaTime,I.isEnding=this.isEnding,e(this.element,I)):e}tick(e){return this.isActive||(this.isActive=!0,this.onStart()),this.deltaTime=e,this.value=this.computeCurrentScrollValue(),this.speed=this.computeSpeed(),this.value=this.computeNextScrollValue(),this.duration+=e,this.value}onStart(){if(!this.item||!this.element)return;let{onStart:e}=this.item;typeof e==\"function\"&&e(this.element,ye(this.direction))}onStop(){if(!this.item||!this.element)return;let{onStop:e}=this.item;typeof e==\"function\"&&e(this.element,ye(this.direction))}};function Je(i=500,e=.5,t=.25){let n=i*(e>0?1/e:1/0),r=i*(t>0?1/t:1/0);return function(s,o){let c=0;if(!o.isEnding)if(o.threshold>0){let d=o.threshold-Math.max(0,o.distance);c=i/o.threshold*d}else c=i;let l=o.speed;if(l===c)return c;let a=c;return lnew we,n=>n.reset()),this._actionPool=new B(()=>new Te,n=>n.reset()),this._emitter=new ut,this._frameRead=this._frameRead.bind(this),this._frameWrite=this._frameWrite.bind(this)}_frameRead(e){this._isDestroyed||(e&&this._tickTime?(this._tickDeltaTime=e-this._tickTime,this._tickTime=e,this._updateItems(),this._updateRequests(),this._updateActions()):(this._tickTime=e,this._tickDeltaTime=0))}_frameWrite(){this._isDestroyed||this._applyActions()}_startTicking(){this._isTicking||(this._isTicking=!0,u.on(v,this._frameRead),u.on(D,this._frameWrite))}_stopTicking(){this._isTicking&&(this._isTicking=!1,this._tickTime=0,this._tickDeltaTime=0,u.off(v,this._frameRead),u.off(D,this._frameWrite))}_getItemClientRect(e,t={width:0,height:0,left:0,right:0,top:0,bottom:0}){let{clientRect:n}=e;return t.left=n.left,t.top=n.top,t.width=n.width,t.height=n.height,t.right=n.left+n.width,t.bottom=n.top+n.height,t}_requestItemScroll(e,t,n,r,s,o,c){let l=this._requests[t],a=l.get(e);a?(a.element!==n||a.direction!==r)&&a.reset():(a=this._requestPool.pick(),l.set(e,a)),a.item=e,a.element=n,a.direction=r,a.threshold=s,a.distance=o,a.maxValue=c}_cancelItemScroll(e,t){let n=this._requests[t],r=n.get(e);r&&(r.action&&r.action.removeRequest(r),this._requestPool.put(r),n.delete(e))}_checkItemOverlap(e,t,n){let{inertAreaSize:r,targets:s}=e;if(!s.length){t&&this._cancelItemScroll(e,h.x),n&&this._cancelItemScroll(e,h.y);return}let o=this._itemData.get(e),c=o?.directionX,l=o?.directionY;if(!c&&!l){t&&this._cancelItemScroll(e,h.x),n&&this._cancelItemScroll(e,h.y);return}let a=this._getItemClientRect(e,xe),d=null,m=-1/0,y=0,g=-1/0,S=p.none,b=0,f=0,E=null,x=-1/0,V=0,U=-1/0,se=p.none,Ce=0,Le=0,ae=0;for(;ae=m&&F>0&&(R>m||O>g)){let T=0,C=p.none,L=be(Ke,P.width),z=De(L,r,a.width,P.width);c===p.right?(T=P.right+z-a.right,T<=L&&!re(N(k),F)&&(C=p.right)):c===p.left&&(T=a.left-(P.left-z),T<=L&&N(k)>0&&(C=p.left)),C&&(d=k,m=R,y=L,g=O,S=C,b=T,f=F)}if(ce&&R>=x&&j>0&&(R>x||O>U)){let T=0,C=H.none,L=be(Ke,P.height),z=De(L,r,a.height,P.height);l===p.down?(T=P.bottom+z-a.bottom,T<=L&&!re(q(k),j)&&(C=p.down)):l===p.up&&(T=a.top-(P.top-z),T<=L&&q(k)>0&&(C=p.up)),C&&(E=k,x=R,V=L,U=O,se=C,Ce=T,Le=j)}}t&&(d&&S?this._requestItemScroll(e,h.x,d,S,y,b,f):this._cancelItemScroll(e,h.x)),n&&(E&&se?this._requestItemScroll(e,h.y,E,se,V,Ce,Le):this._cancelItemScroll(e,h.y))}_updateScrollRequest(e){let t=e.item,{inertAreaSize:n,smoothStop:r,targets:s}=t,o=this._getItemClientRect(t,xe),c=null,l=0;for(;lf)break;let V=m?N(d):q(d);if(c=M.forward&e.direction?re(V,y):V<=0,c)break;return e.maxValue=y,e.threshold=f,e.distance=x,e.isEnding=!1,!0}return r===!0&&e.speed>0?(c===null&&(c=e.hasReachedEnd()),e.isEnding=!c):e.isEnding=!1,e.isEnding}_updateItems(){for(let e=0;eo?p.right:rc?p.down:s0&&this._tickTime-c>this.settings.overlapCheckInterval,a=!0,d=t.get(s);d&&d.isActive&&(a=!this._updateScrollRequest(d),a&&(l=!0,this._cancelItemScroll(s,h.x)));let m=!0,y=n.get(s);y&&y.isActive&&(m=!this._updateScrollRequest(y),m&&(l=!0,this._cancelItemScroll(s,h.y))),l&&(o.overlapCheckRequestTime=0,this._checkItemOverlap(s,a,m))}}_requestAction(e,t){let n=t===h.x,r=null,s=0;for(;s{let{drag:e}=i,t=e?.items[0];if(t)G.x=t.pX,G.y=t.pY;else{let n=e&&(e.nextMoveEvent||e.startEvent);G.x=n?n.x:0,G.y=n?n.y:0}return G},getClientRect:i=>{let{drag:e}=i,t=e?.items[0];if(t&&t.element){let{left:n,top:r,width:s,height:o}=t.element.getBoundingClientRect();K.left=n,K.top=r,K.width=s,K.height=o}else{let n=e&&(e.nextMoveEvent||e.startEvent);K.left=n?n.x-25:0,K.top=n?n.y-25:0,K.width=n?50:0,K.height=n?50:0}return K},onStart:null,onStop:null}}var Ae=class{constructor(e,t){this._draggableAutoScroll=e,this._draggable=t,this._position={x:0,y:0},this._clientRect={left:0,top:0,width:0,height:0}}_getSettings(){return this._draggableAutoScroll.settings}get targets(){let{targets:e}=this._getSettings();return typeof e==\"function\"&&(e=e(this._draggable)),e}get position(){let{getPosition:e}=this._getSettings();if(typeof e==\"function\"){let t=e(this._draggable);this._position.x=t.x,this._position.y=t.y}else this._position.x=0,this._position.y=0;return this._position}get clientRect(){let{getClientRect:e}=this._getSettings();if(typeof e==\"function\"){let{left:t,top:n,width:r,height:s}=e(this._draggable);this._clientRect.left=t,this._clientRect.top=n,this._clientRect.width=r,this._clientRect.height=s}else this._clientRect.left=0,this._clientRect.top=0,this._clientRect.width=0,this._clientRect.height=0;return this._clientRect}get inertAreaSize(){return this._getSettings().inertAreaSize}get smoothStop(){return this._getSettings().smoothStop}get speed(){return this._getSettings().speed}get onStart(){return this._getSettings().onStart}get onStop(){return this._getSettings().onStop}onPrepareScrollEffect(){let e=this._draggable._updateId;u.off(v,e),u.off(D,e),this._draggable._preparePositionUpdate()}onApplyScrollEffect(){this._draggable._applyPositionUpdate()}},ke=class{constructor(e,t={}){this.name=\"autoscroll\",this.version=\"0.0.2\",this.settings=this._parseSettings(t),this._autoScrollProxy=null,e.on(\"start\",()=>{this._autoScrollProxy||(this._autoScrollProxy=new Ae(this,e),Ie.addItem(this._autoScrollProxy))}),e.on(\"end\",()=>{this._autoScrollProxy&&(Ie.removeItem(this._autoScrollProxy),this._autoScrollProxy=null)})}_parseSettings(e,t=ft()){let{targets:n=t.targets,inertAreaSize:r=t.inertAreaSize,speed:s=t.speed,smoothStop:o=t.smoothStop,getPosition:c=t.getPosition,getClientRect:l=t.getClientRect,onStart:a=t.onStart,onStop:d=t.onStop}=e||{};return{targets:n,inertAreaSize:r,speed:s,smoothStop:o,getPosition:c,getClientRect:l,onStart:a,onStop:d}}updateSettings(e={}){this.settings=this._parseSettings(e,this.settings)}};function dr(i){return e=>{let t=new ke(e,i),n=e;return n.plugins[t.name]=t,n}}var Qe=new Set([\"auto\",\"scroll\",\"overlay\"]);function oe(i){let e=te(i);return!!(Qe.has(e.overflowY)||Qe.has(e.overflowX))}function Ze(i){return i instanceof Document}function et(i,e=[]){let t=i?.parentNode;for(;t&&!Ze(t);)t instanceof Element?(oe(t)&&e.push(t),t=t.parentNode):t instanceof ShadowRoot?t=t.host:t=t.parentNode;return e.push(window),e}function gt(i){let e=[];return oe(i)&&e.push(i),et(i,e),e}function br(i={}){let e,t=0,n=null,r,{timeout:s=250,fallback:o=()=>!0}=i,c=d=>d.preventDefault(),l=d=>{if(t){if(e){d.cancelable&&d.preventDefault();return}e===void 0&&(d.cancelable&&d.timeStamp-t>s?(e=!0,d.preventDefault()):e=!1)}};return d=>{if(!(d.sensor instanceof Y))return o(d);let{draggable:m,sensor:y,event:g}=d,S=g;if(S.pointerType===\"touch\"){if(S.type===\"start\"&&(S.srcEvent.type===\"pointerdown\"||S.srcEvent.type===\"touchstart\")){n=S.target;let b=n?gt(n):[];b.forEach(E=>{E.addEventListener(\"touchmove\",l,{passive:!1,capture:!0})});let f=()=>{t&&(m.off(\"end\",f),m.sensors.forEach(E=>{E instanceof Y&&E.off(\"end\",f)}),n?.removeEventListener(\"contextmenu\",c),b.forEach(E=>{E.removeEventListener(\"touchmove\",l,{capture:!0})}),t=0,e=void 0,n=null,r=void window.clearTimeout(r))};e=void 0,t=S.srcEvent.timeStamp,n?.addEventListener(\"contextmenu\",c),m.on(\"end\",f),m.sensors.forEach(E=>{E instanceof Y&&E.off(\"end\",f)}),s>0&&(r=window.setTimeout(()=>{m.resolveStartPredicate(y),e=!0,r=void 0},s))}return e}return S.type===\"start\"&&!S.srcEvent.button}}export{h as AUTO_SCROLL_AXIS,M as AUTO_SCROLL_AXIS_DIRECTION,p as AUTO_SCROLL_DIRECTION,ie as AutoScroll,$ as BaseMotionSensor,W as BaseSensor,Be as Draggable,ke as DraggableAutoScroll,Ye as KeyboardMotionSensor,Xe as KeyboardSensor,Y as PointerSensor,_ as SensorEventType,Ie as autoScroll,dr as autoScrollPlugin,Je as autoScrollSmoothSpeed,br as createPointerSensorStartPredicate,wt as setTicker,u as ticker,v as tickerReadPhase,D as tickerWritePhase};\n","function getOrCreateEventData(e,t){let i=e.get(t);return i||(i=new EventData,e.set(t,i)),i}class EventData{constructor(){this.idMap=new Map,this.fnMap=new Map,this.onceList=new Set,this.emitList=null}add(e,t,i,s,n){if(!n&&this.fnMap.has(e))throw new Error(\"Emitter: tried to add an existing event listener to an event!\");if(this.idMap.has(i))switch(s){case\"throw\":throw new Error(\"Emitter: tried to add an existing event listener id to an event!\");case\"ignore\":return i;default:this.delId(i,\"update\"===s)}let r=this.fnMap.get(e);return r||(r=new Set,this.fnMap.set(e,r)),r.add(i),this.idMap.set(i,e),t&&this.onceList.add(i),this.emitList&&this.emitList.push(e),i}delId(e,t=!1){const i=this.idMap.get(e);if(!i)return;const s=this.fnMap.get(i);t||this.idMap.delete(e),this.onceList.delete(e),s.delete(e),s.size||this.fnMap.delete(i),this.emitList=null}delFn(e){const t=this.fnMap.get(e);t&&(t.forEach((e=>{this.onceList.delete(e),this.idMap.delete(e)})),this.fnMap.delete(e),this.emitList=null)}}class Emitter{constructor(e={}){const{idDedupeMode:t=\"replace\",allowDuplicateListeners:i=!0}=e;this.idDedupeMode=t,this.allowDuplicateListeners=i,this._events=new Map}_getListeners(e){const t=this._events.get(e);if(!t)return null;const{idMap:i,onceList:s}=t;if(!i.size)return null;const n=t.emitList||[...i.values()];if(s.size)if(s.size===i.size)this._events.delete(e);else for(const e of s)t.delId(e);else t.emitList=n;return n}on(e,t,i=Symbol()){return getOrCreateEventData(this._events,e).add(t,!1,i,this.idDedupeMode,this.allowDuplicateListeners)}once(e,t,i=Symbol()){return getOrCreateEventData(this._events,e).add(t,!0,i,this.idDedupeMode,this.allowDuplicateListeners)}off(e,t){if(void 0===e)return void this._events.clear();if(void 0===t)return void this._events.delete(e);const i=this._events.get(e);i&&(\"function\"==typeof t?i.delFn(t):i.delId(t),i.idMap.size||this._events.delete(e))}emit(e,...t){const i=this._getListeners(e);if(!i)return;let s=0,n=i.length;for(;s{e+=this.listenerCount(i)})),e}return(null===(t=this._events.get(e))||void 0===t?void 0:t.idMap.size)||0}}export{Emitter};","import{Emitter}from\"eventti\";function createRequestFrame(e=60){if(\"function\"==typeof requestAnimationFrame&&\"function\"==typeof cancelAnimationFrame)return e=>{const t=requestAnimationFrame(e);return()=>cancelAnimationFrame(t)};{const t=1e3/e,i=\"undefined\"==typeof performance?()=>Date.now():()=>performance.now();return e=>{const r=setTimeout((()=>e(i())),t);return()=>clearTimeout(r)}}}var AutoTickState;!function(e){e[e.PAUSED=1]=\"PAUSED\",e[e.ON_DEMAND=2]=\"ON_DEMAND\",e[e.CONTINUOUS=3]=\"CONTINUOUS\"}(AutoTickState||(AutoTickState={}));class Ticker{constructor(e={}){const{phases:t=[],autoTick:i=AutoTickState.ON_DEMAND,allowDuplicateListeners:r=!0,idDedupeMode:s=\"replace\",requestFrame:n=createRequestFrame()}=e;this.phases=t,this._autoTick=i,this._requestFrame=n,this._cancelFrame=null,this._queue=[],this._emitter=new Emitter({allowDuplicateListeners:r,idDedupeMode:s}),this.tick=this.tick.bind(this)}get requestFrame(){return this._requestFrame}set requestFrame(e){this._requestFrame=e,this._kickstart()}get autoTick(){return this._autoTick}set autoTick(e){this._autoTick=e,this._kickstart()}get allowDuplicateListeners(){return this._emitter.allowDuplicateListeners}set allowDuplicateListeners(e){this._emitter.allowDuplicateListeners=e}get idDedupeMode(){return this._emitter.idDedupeMode}set idDedupeMode(e){this._emitter.idDedupeMode=e}tick(...e){this._cancelFrame=null;const{_queue:t}=this;if(t.length)throw new Error(\"Ticker: Can't tick before the previous tick has finished!\");this._request();const{phases:i,_emitter:r}=this;let s,n,a,c,u,o;for(s=0,a=i.length;s=AutoTickState.ON_DEMAND&&(this._cancelFrame=this._requestFrame(this.tick))}_cancel(){this._cancelFrame&&(this._cancelFrame(),this._cancelFrame=null)}_kickstart(){this._autoTick===AutoTickState.ON_DEMAND?this._emitter.listenerCount()&&this._request():this._autoTick===AutoTickState.CONTINUOUS?this._request():this._cancel()}}function createXrRequestFrame(e){return t=>{const i=e.requestAnimationFrame(t);return()=>e.cancelAnimationFrame(i)}}export{AutoTickState,Ticker,createRequestFrame,createXrRequestFrame};","export*from\"./getContainingBlock.js\";export*from\"./getDistance.js\";export*from\"./getHeight.js\";export*from\"./getIntersection.js\";export*from\"./getOffset.js\";export*from\"./getOffsetContainer.js\";export*from\"./getOverflow.js\";export*from\"./getRect.js\";export*from\"./getWidth.js\";","import{getStyle}from\"./utils/getStyle.js\";import{isContainingBlockForFixedElement}from\"./utils/isContainingBlockForFixedElement.js\";import{isContainingBlockForAbsoluteElement}from\"./utils/isContainingBlockForAbsoluteElement.js\";import{isBlockElement}from\"./utils/isBlockElement.js\";import{isDocumentElement}from\"./utils/isDocumentElement.js\";export function getContainingBlock(e,t={}){if(isDocumentElement(e))return e.ownerDocument.defaultView;const n=t.position||getStyle(e).position,{skipDisplayNone:i,container:o}=t;switch(n){case\"static\":case\"relative\":case\"sticky\":case\"-webkit-sticky\":{let t=o||e.parentElement;for(;t;){const e=isBlockElement(t);if(e)return t;if(null===e&&!i)return null;t=t.parentElement}return e.ownerDocument.documentElement}case\"absolute\":case\"fixed\":{const t=\"fixed\"===n;let l=o||e.parentElement;for(;l;){const e=t?isContainingBlockForFixedElement(l):isContainingBlockForAbsoluteElement(l);if(!0===e)return l;if(null===e&&!i)return null;l=l.parentElement}return e.ownerDocument.defaultView}default:return null}}","const STYLE_DECLARATION_CACHE=new WeakMap;export function getStyle(e,t){if(t)return window.getComputedStyle(e,t);let C=STYLE_DECLARATION_CACHE.get(e)?.deref();return C||(C=window.getComputedStyle(e,null),STYLE_DECLARATION_CACHE.set(e,new WeakRef(C))),C}","import{IS_SAFARI}from\"./constants.js\";import{getStyle}from\"./getStyle.js\";import{isBlockElement}from\"./isBlockElement.js\";export function isContainingBlockForFixedElement(n){const t=getStyle(n);if(!IS_SAFARI){const{filter:n}=t;if(n&&\"none\"!==n)return!0;const{backdropFilter:e}=t;if(e&&\"none\"!==e)return!0;const{willChange:i}=t;if(i&&(i.indexOf(\"filter\")>-1||i.indexOf(\"backdrop-filter\")>-1))return!0}const e=isBlockElement(n);if(!e)return e;const{transform:i}=t;if(i&&\"none\"!==i)return!0;const{perspective:r}=t;if(r&&\"none\"!==r)return!0;const{contentVisibility:o}=t;if(o&&\"auto\"===o)return!0;const{contain:f}=t;if(f&&(\"strict\"===f||\"content\"===f||f.indexOf(\"paint\")>-1||f.indexOf(\"layout\")>-1))return!0;const{willChange:c}=t;return!(!c||!(c.indexOf(\"transform\")>-1||c.indexOf(\"perspective\")>-1||c.indexOf(\"contain\")>-1))||!!(IS_SAFARI&&c&&c.indexOf(\"filter\")>-1)}","export const IS_BROWSER=\"undefined\"!=typeof window&&void 0!==window.document;export const IS_SAFARI=!!(IS_BROWSER&&navigator.vendor&&navigator.vendor.indexOf(\"Apple\")>-1&&navigator.userAgent&&-1==navigator.userAgent.indexOf(\"CriOS\")&&-1==navigator.userAgent.indexOf(\"FxiOS\"));export const BOX_EDGE={content:\"content\",padding:\"padding\",scrollbar:\"scrollbar\",border:\"border\",margin:\"margin\"};export const INCLUDE_WINDOW_SCROLLBAR={[BOX_EDGE.content]:!1,[BOX_EDGE.padding]:!1,[BOX_EDGE.scrollbar]:!0,[BOX_EDGE.border]:!0,[BOX_EDGE.margin]:!0};export const SCROLLABLE_OVERFLOWS=new Set([\"auto\",\"scroll\"]);export const IS_CHROMIUM=(()=>{try{return window.navigator.userAgentData.brands.some((({brand:n})=>\"Chromium\"===n))}catch(n){return!1}})();","import{getStyle}from\"./getStyle.js\";export function isBlockElement(e){switch(getStyle(e).display){case\"none\":return null;case\"inline\":case\"contents\":return!1;default:return!0}}","import{getStyle}from\"./getStyle.js\";import{isContainingBlockForFixedElement}from\"./isContainingBlockForFixedElement.js\";export function isContainingBlockForAbsoluteElement(t){return\"static\"!==getStyle(t).position||isContainingBlockForFixedElement(t)}","export function isDocumentElement(e){return e instanceof HTMLHtmlElement}","import{getDistanceBetweenRects}from\"./utils/getDistanceBetweenRects.js\";import{getNormalizedRect}from\"./utils/getNormalizedRect.js\";export function getDistance(e,t){const c=getNormalizedRect(e),i=getNormalizedRect(t);return getDistanceBetweenRects(c,i)}","import{isIntersecting}from\"./isIntersecting.js\";import{getDistanceBetweenPoints}from\"./getDistanceBetweenPoints.js\";export function getDistanceBetweenRects(t,e){if(isIntersecting(t,e))return null;const n=t.left+t.width,i=t.top+t.height,o=e.left+e.width,s=e.top+e.height;return n<=e.left?i<=e.top?getDistanceBetweenPoints(n,i,e.left,e.top):t.top>=s?getDistanceBetweenPoints(n,t.top,e.left,s):e.left-n:t.left>=o?i<=e.top?getDistanceBetweenPoints(t.left,i,o,e.top):t.top>=s?getDistanceBetweenPoints(t.left,t.top,o,s):t.left-o:i<=e.top?e.top-i:t.top-s}","export function isIntersecting(t,e){return!(t.left+t.width<=e.left||e.left+e.width<=t.left||t.top+t.height<=e.top||e.top+e.height<=t.top)}","export function getDistanceBetweenPoints(t,e,n,o){return Math.sqrt(Math.pow(n-t,2)+Math.pow(o-e,2))}","import{getRect}from\"../getRect.js\";import{isRectObject}from\"./isRectObject.js\";export function getNormalizedRect(t){return isRectObject(t)?t:getRect(t)}","import{getWidth}from\"./getWidth.js\";import{getHeight}from\"./getHeight.js\";import{getOffset}from\"./getOffset.js\";import{isRectObject}from\"./utils/isRectObject.js\";export function getRect(t,e){let i=0,g=0;isRectObject(t)?(i=t.width,g=t.height):Array.isArray(t)?(i=getWidth(...t),g=getHeight(...t)):(i=getWidth(t),g=getHeight(t));const r=getOffset(t,e);return{width:i,height:g,...r,right:r.left+i,bottom:r.top+g}}","import{INCLUDE_WINDOW_SCROLLBAR,BOX_EDGE}from\"./utils/constants.js\";import{isWindow}from\"./utils/isWindow.js\";import{isDocument}from\"./utils/isDocument.js\";import{getWindowWidth}from\"./utils/getWindowWidth.js\";import{getDocumentWidth}from\"./utils/getDocumentWidth.js\";import{getElementWidth}from\"./utils/getElementWidth.js\";export function getWidth(t,i=BOX_EDGE.border){return isWindow(t)?getWindowWidth(t,INCLUDE_WINDOW_SCROLLBAR[i]):isDocument(t)?getDocumentWidth(t):getElementWidth(t,i)}","export function isWindow(n){return n instanceof Window}","export function isDocument(n){return n instanceof Document}","import{getPreciseScrollbarSize}from\"./getPreciseScrollbarSize.js\";export function getWindowWidth(e,r=!1){if(r)return e.innerWidth;const{innerWidth:t,document:i}=e,{documentElement:n}=i,{clientWidth:c}=n;return t-getPreciseScrollbarSize(n,\"y\",t-c)}","import{IS_CHROMIUM}from\"./constants.js\";import{getStyle}from\"./getStyle.js\";const SUBPIXEL_OFFSET=new Map;let testStyleElement=null,testParentElement=null,testChildElement=null;function getSubpixelScrollbarSize(t,e){const n=t.split(\".\");let l=SUBPIXEL_OFFSET.get(n[1]);if(void 0===l){testStyleElement||(testStyleElement=document.createElement(\"style\")),testStyleElement.innerHTML=`\\n #mezr-scrollbar-test::-webkit-scrollbar {\\n width: ${t} !important;\\n }\\n `,testParentElement&&testChildElement||(testParentElement=document.createElement(\"div\"),testChildElement=document.createElement(\"div\"),testParentElement.appendChild(testChildElement),testParentElement.id=\"mezr-scrollbar-test\",testParentElement.style.cssText=\"\\n all: unset !important;\\n position: fixed !important;\\n top: -200px !important;\\n left: 0px !important;\\n width: 100px !important;\\n height: 100px !important;\\n overflow: scroll !important;\\n pointer-events: none !important;\\n visibility: hidden !important;\\n \",testChildElement.style.cssText=\"\\n all: unset !important;\\n position: absolute !important;\\n inset: 0 !important;\\n \"),document.body.appendChild(testStyleElement),document.body.appendChild(testParentElement);l=testParentElement.getBoundingClientRect().width-testChildElement.getBoundingClientRect().width-e,SUBPIXEL_OFFSET.set(n[1],l),document.body.removeChild(testParentElement),document.body.removeChild(testStyleElement)}return e+l}export function getPreciseScrollbarSize(t,e,n){if(n<=0)return 0;if(IS_CHROMIUM){const n=getStyle(t,\"::-webkit-scrollbar\"),l=\"x\"===e?n.height:n.width,i=parseFloat(l);if(!Number.isNaN(i)&&!Number.isInteger(i))return getSubpixelScrollbarSize(l,i)}return n}","export function getDocumentWidth({documentElement:t}){return Math.max(t.scrollWidth,t.clientWidth,t.getBoundingClientRect().width)}","import{BOX_EDGE,SCROLLABLE_OVERFLOWS}from\"./constants.js\";import{getStyle}from\"./getStyle.js\";import{getPreciseScrollbarSize}from\"./getPreciseScrollbarSize.js\";import{isDocumentElement}from\"./isDocumentElement.js\";export function getElementWidth(t,e=BOX_EDGE.border){let{width:r}=t.getBoundingClientRect();if(e===BOX_EDGE.border)return r;const o=getStyle(t);return e===BOX_EDGE.margin?(r+=Math.max(0,parseFloat(o.marginLeft)||0),r+=Math.max(0,parseFloat(o.marginRight)||0),r):(r-=parseFloat(o.borderLeftWidth)||0,r-=parseFloat(o.borderRightWidth)||0,e===BOX_EDGE.scrollbar?r:(!isDocumentElement(t)&&SCROLLABLE_OVERFLOWS.has(o.overflowY)&&(r-=getPreciseScrollbarSize(t,\"y\",Math.round(r)-t.clientWidth)),e===BOX_EDGE.padding||(r-=parseFloat(o.paddingLeft)||0,r-=parseFloat(o.paddingRight)||0),r))}","import{INCLUDE_WINDOW_SCROLLBAR,BOX_EDGE}from\"./utils/constants.js\";import{isWindow}from\"./utils/isWindow.js\";import{isDocument}from\"./utils/isDocument.js\";import{getWindowHeight}from\"./utils/getWindowHeight.js\";import{getDocumentHeight}from\"./utils/getDocumentHeight.js\";import{getElementHeight}from\"./utils/getElementHeight.js\";export function getHeight(t,e=BOX_EDGE.border){return isWindow(t)?getWindowHeight(t,INCLUDE_WINDOW_SCROLLBAR[e]):isDocument(t)?getDocumentHeight(t):getElementHeight(t,e)}","import{getPreciseScrollbarSize}from\"./getPreciseScrollbarSize.js\";export function getWindowHeight(e,r=!1){if(r)return e.innerHeight;const{innerHeight:t,document:i}=e,{documentElement:n}=i,{clientHeight:c}=n;return t-getPreciseScrollbarSize(n,\"x\",t-c)}","export function getDocumentHeight({documentElement:t}){return Math.max(t.scrollHeight,t.clientHeight,t.getBoundingClientRect().height)}","import{BOX_EDGE,SCROLLABLE_OVERFLOWS}from\"./constants.js\";import{getStyle}from\"./getStyle.js\";import{getPreciseScrollbarSize}from\"./getPreciseScrollbarSize.js\";import{isDocumentElement}from\"./isDocumentElement.js\";export function getElementHeight(t,e=BOX_EDGE.border){let{height:r}=t.getBoundingClientRect();if(e===BOX_EDGE.border)return r;const o=getStyle(t);return e===BOX_EDGE.margin?(r+=Math.max(0,parseFloat(o.marginTop)||0),r+=Math.max(0,parseFloat(o.marginBottom)||0),r):(r-=parseFloat(o.borderTopWidth)||0,r-=parseFloat(o.borderBottomWidth)||0,e===BOX_EDGE.scrollbar?r:(!isDocumentElement(t)&&SCROLLABLE_OVERFLOWS.has(o.overflowX)&&(r-=getPreciseScrollbarSize(t,\"x\",Math.round(r)-t.clientHeight)),e===BOX_EDGE.padding||(r-=parseFloat(o.paddingTop)||0,r-=parseFloat(o.paddingBottom)||0),r))}","import{isRectObject}from\"./utils/isRectObject.js\";import{isDocument}from\"./utils/isDocument.js\";import{getOffsetFromDocument}from\"./utils/getOffsetFromDocument.js\";export function getOffset(t,e){const o=isRectObject(t)?{left:t.left,top:t.top}:Array.isArray(t)?getOffsetFromDocument(...t):getOffsetFromDocument(t);if(e&&!isDocument(e)){const t=isRectObject(e)?e:Array.isArray(e)?getOffsetFromDocument(e[0],e[1]):getOffsetFromDocument(e);o.left-=t.left,o.top-=t.top}return o}","export function isRectObject(t){return t?.constructor===Object}","import{BOX_EDGE}from\"./constants.js\";import{getStyle}from\"./getStyle.js\";import{isDocument}from\"./isDocument.js\";import{isWindow}from\"./isWindow.js\";export function getOffsetFromDocument(t,o=BOX_EDGE.border){const e={left:0,top:0};if(isDocument(t))return e;if(isWindow(t))return e.left+=t.scrollX||0,e.top+=t.scrollY||0,e;const r=t.ownerDocument.defaultView;r&&(e.left+=r.scrollX||0,e.top+=r.scrollY||0);const n=t.getBoundingClientRect();if(e.left+=n.left,e.top+=n.top,o===BOX_EDGE.border)return e;const l=getStyle(t);return o===BOX_EDGE.margin?(e.left-=Math.max(0,parseFloat(l.marginLeft)||0),e.top-=Math.max(0,parseFloat(l.marginTop)||0),e):(e.left+=parseFloat(l.borderLeftWidth)||0,e.top+=parseFloat(l.borderTopWidth)||0,o===BOX_EDGE.scrollbar||o===BOX_EDGE.padding||(e.left+=parseFloat(l.paddingLeft)||0,e.top+=parseFloat(l.paddingTop)||0),e)}","import{getNormalizedRect}from\"./utils/getNormalizedRect.js\";export function getIntersection(t,...e){const o={...getNormalizedRect(t),right:0,bottom:0};for(const t of e){const e=getNormalizedRect(t),i=Math.max(o.left,e.left),h=Math.min(o.left+o.width,e.left+e.width);if(h<=i)return null;const r=Math.max(o.top,e.top),l=Math.min(o.top+o.height,e.height+e.top);if(l<=r)return null;o.left=i,o.top=r,o.width=h-i,o.height=l-r}return o.right=o.left+o.width,o.bottom=o.top+o.height,o}","import{getStyle}from\"./utils/getStyle.js\";import{getContainingBlock}from\"./getContainingBlock.js\";import{isWindow}from\"./utils/isWindow.js\";export function getOffsetContainer(n,t={}){const i=getStyle(n),{display:o}=i;if(\"none\"===o||\"contents\"===o)return null;const e=t.position||getStyle(n).position,{skipDisplayNone:s,container:r}=t;switch(e){case\"relative\":return n;case\"fixed\":return getContainingBlock(n,{container:r,position:e,skipDisplayNone:s});case\"absolute\":{const t=getContainingBlock(n,{container:r,position:e,skipDisplayNone:s});return isWindow(t)?n.ownerDocument:t}default:return null}}","import{getNormalizedRect}from\"./utils/getNormalizedRect.js\";export function getOverflow(t,e){const o=getNormalizedRect(t),i=getNormalizedRect(e);return{left:i.left-o.left,right:o.left+o.width-(i.left+i.width),top:i.top-o.top,bottom:o.top+o.height-(i.top+i.height)}}"],"names":["$882b296db6123935$var$getOrCreateEventData","e","t","i","get","$882b296db6123935$var$EventData","set","constructor","idMap","Map","fnMap","onceList","Set","emitList","add","s","n","has","Error","delId","r","push","delete","size","delFn","forEach","$882b296db6123935$export$4293555f241ae35a","idDedupeMode","allowDuplicateListeners","_events","_getListeners","values","on","Symbol","once","off","clear","emit","length","listenerCount","$df4a713e26511813$export$ef9b1dc363f184d9","PAUSED","ON_DEMAND","CONTINUOUS","$45554ebda029bd05$var$STYLE_DECLARATION_CACHE","WeakMap","$45554ebda029bd05$export$3d2f074408bd1b82","window","getComputedStyle","C","deref","WeakRef","$70e6b31ea6202e28$export$af54264dae9065e6","$70e6b31ea6202e28$export$e44ffb50cc242ec5","document","navigator","vendor","indexOf","userAgent","$70e6b31ea6202e28$export$11fd24d838ebde87","content","padding","scrollbar","border","margin","$70e6b31ea6202e28$export$76e909bcfd8ba196","$70e6b31ea6202e28$export$d2ad2856e215d28e","$70e6b31ea6202e28$export$cd414719242f618c","userAgentData","brands","some","brand","$ac4a87157cb8fded$export$fab73c3646bf1f5e","display","$19cb8cdbc5921691$export$e5ce114ae0e5f4e8","filter","backdropFilter","willChange","transform","perspective","contentVisibility","o","contain","f","c","$8d1ba90c23ec3360$export$d8a62a489b442872","HTMLHtmlElement","$1f38751365ebdabf$export$940d8225183e1404","ownerDocument","defaultView","position","skipDisplayNone","container","parentElement","documentElement","l","$6473c4721ef9a7f0$export$53137579a3174918","Math","sqrt","pow","$0dd5d633d9254ede$export$5a096129d439f843","Window","$88986006632f0ab8$export$62858bae88b53fd0","Document","$9a36d0396b9b09d4$var$SUBPIXEL_OFFSET","$9a36d0396b9b09d4$var$testStyleElement","$9a36d0396b9b09d4$var$testParentElement","$9a36d0396b9b09d4$var$testChildElement","$9a36d0396b9b09d4$export$5ad86f4734d24a64","height","width","parseFloat","Number","isNaN","isInteger","$9a36d0396b9b09d4$var$getSubpixelScrollbarSize","split","createElement","innerHTML","appendChild","id","style","cssText","body","getBoundingClientRect","removeChild","$2e59c48b8f000a71$export$3c49c185de0c2bfc","innerWidth","clientWidth","max","scrollWidth","marginLeft","marginRight","borderLeftWidth","borderRightWidth","overflowY","round","paddingLeft","paddingRight","$646cecfa59ec4923$export$c08559766941f856","innerHeight","clientHeight","scrollHeight","marginTop","marginBottom","borderTopWidth","borderBottomWidth","overflowX","paddingTop","paddingBottom","$4de8edd731addea8$export$ff047630cae37d8e","Object","$faeeed2de97ac6f7$export$9f1480883798e819","left","top","scrollX","scrollY","$d927f435c3d7e8ab$export$622cea445a1c5b7d","Array","isArray","$4fec7741c67a29fc$export$4b834cebd9e5cebe","g","right","bottom","$3fe9db1ad94d3e7c$export$e4e616e82e79ab9d","$4effe6f7501c7f59$export$243d7fadef466e38","$ac6f441b4b448e14$export$61fde4a8bbe7f5d5","start","move","cancel","end","destroy","$ac6f441b4b448e14$export$2176a6ff266bf511","drag","isDestroyed","_emitter","_createDragData","x","y","_updateDragData","_resetDragData","_start","_move","_end","_cancel","type","$ac6f441b4b448e14$export$9138efc7ba4fca22","$ac6f441b4b448e14$export$5fd1e257088db342","$ac6f441b4b448e14$export$e94d57566be028aa","phases","autoTick","requestFrame","$df4a713e26511813$export$789135d3cf084551","requestAnimationFrame","cancelAnimationFrame","performance","Date","now","setTimeout","clearTimeout","_autoTick","_requestFrame","_cancelFrame","_queue","tick","bind","_kickstart","a","u","_request","$ac6f441b4b448e14$export$2f0ad9ba2f0800d","_direction","_speed","_tick","time","deltaTime","$ac6f441b4b448e14$var$de","pointerId","changedTouches","identifier","$ac6f441b4b448e14$var$he","$ac6f441b4b448e14$var$J","defineProperty","addEventListener","removeEventListener","$ac6f441b4b448e14$var$Oe","$ac6f441b4b448e14$var$We","PointerEvent","$ac6f441b4b448e14$var$me","capture","passive","$ac6f441b4b448e14$var$ue","$ac6f441b4b448e14$var$X","pointer","touch","mouse","$ac6f441b4b448e14$export$b26af955418d6638","listenerOptions","sourceEvents","startPredicate","button","element","_areWindowListenersBound","_startPredicate","_listenerOptions","_sourceEvents","_onStart","_onMove","_onCancel","_onEnd","_getTrackedPointerEventData","pointerType","clientX","clientY","srcEvent","target","_bindWindowListeners","_resetDrag","_unbindWindowListeners","updateSettings","$ac6f441b4b448e14$var$at","$ac6f441b4b448e14$var$Q","$ac6f441b4b448e14$export$436f6efcc297171","activeElement","computeSpeed","startKeys","moveLeftKeys","moveRightKeys","moveUpKeys","moveDownKeys","cancelKeys","d","endKeys","m","_computeSpeed","_startKeys","_cancelKeys","_endKeys","_moveLeftKeys","_moveRightKeys","_moveUpKeys","_moveDownKeys","_moveKeys","_moveKeyTimestamps","_onKeyDown","_onKeyUp","_onTick","_updateDirection","key","preventDefault","every","$ac6f441b4b448e14$var$Z","sensor","isEnded","isStarted","startEvent","nextMoveEvent","prevMoveEvent","endEvent","items","$ac6f441b4b448e14$var$ee","data","elementContainer","elementOffsetContainer","dragContainer","dragOffsetContainer","initialTransform","frozenProps","unfrozenProps","pX","pY","_updateDiffX","_updateDiffY","_moveDiffX","_moveDiffY","_containerDiffX","_containerDiffY","$ac6f441b4b448e14$var$pe","$ac6f441b4b448e14$var$qe","$ac6f441b4b448e14$var$te","$ac6f441b4b448e14$var$Ue","$ac6f441b4b448e14$var$ze","$ac6f441b4b448e14$var$fe","$ac6f441b4b448e14$var$ht","getElements","releaseElements","getFrozenProps","getStartPosition","setPosition","item","getPositionChange","event","prevEvent","$ac6f441b4b448e14$export$f2a139e5d18b9882","sensors","settings","_parseSettings","plugins","_sensorData","_startId","_moveId","_updateId","_onScroll","_prepareStart","_applyStart","_prepareMove","_applyMove","_preparePositionUpdate","_applyPositionUpdate","predicateState","predicateEvent","onMove","onEnd","_emit","draggable","resolveStartPredicate","rejectStartPredicate","updatePosition","stop","map","isConnected","b","S","hasOwnProperty","assign","phase","elements","use","$ac6f441b4b448e14$var$B","_data","_createObject","_onPut","pick","pop","put","reset","$ac6f441b4b448e14$var$ge","h","min","$ac6f441b4b448e14$var$w","$ac6f441b4b448e14$var$Se","$ac6f441b4b448e14$var$N","pageXOffset","scrollLeft","$ac6f441b4b448e14$var$Ee","$ac6f441b4b448e14$var$q","pageYOffset","scrollTop","$ac6f441b4b448e14$var$ve","$ac6f441b4b448e14$var$_e","$ac6f441b4b448e14$var$xe","$ac6f441b4b448e14$var$Fe","$ac6f441b4b448e14$var$I","direction","threshold","distance","value","maxValue","duration","speed","isEnding","$ac6f441b4b448e14$export$5bbd74ab6c855dff","$ac6f441b4b448e14$export$3eeb7a7b68c92567","forward","reverse","$ac6f441b4b448e14$var$ne","none","$ac6f441b4b448e14$var$H","up","down","$ac6f441b4b448e14$export$c9fbd1f9176bc8ed","$ac6f441b4b448e14$var$ye","$ac6f441b4b448e14$var$$e","$ac6f441b4b448e14$var$re","ceil","floor","$ac6f441b4b448e14$var$be","$ac6f441b4b448e14$var$De","$ac6f441b4b448e14$var$Pe","positionX","positionY","directionX","directionY","overlapCheckRequestTime","$ac6f441b4b448e14$var$Te","requestX","requestY","action","addRequest","removeRequest","computeScrollValues","scroll","scrollTo","$ac6f441b4b448e14$var$we","isActive","NaN","onStop","hasReachedEnd","computeCurrentScrollValue","computeNextScrollValue","onStart","overlapCheckInterval","_actions","_isDestroyed","_isTicking","_tickTime","_tickDeltaTime","_requests","_itemData","_requestPool","_actionPool","_frameRead","_frameWrite","_updateItems","_updateRequests","_updateActions","_applyActions","_startTicking","_stopTicking","_getItemClientRect","clientRect","_requestItemScroll","_cancelItemScroll","_checkItemOverlap","inertAreaSize","targets","E","V","U","se","Ce","Le","ae","A","Ke","le","axis","ce","R","priority","k","F","j","P","O","T","L","z","_updateScrollRequest","smoothStop","scrollPadding","_requestAction","onPrepareScrollEffect","onApplyScrollEffect","addItem","removeItem","splice","isItemScrollingX","isItemScrollingY","isItemScrolling","slice","$ac6f441b4b448e14$var$Qe","$ac6f441b4b448e14$var$oe","$0d81635c11b16eab$var$element","querySelector","$0d81635c11b16eab$var$draggable","timeout","fallback","cancelable","timeStamp","$ac6f441b4b448e14$var$et","parentNode","Element","ShadowRoot","host","classList","remove"],"version":3,"file":"index.fbc6ca0e.js.map"} \ No newline at end of file diff --git a/docs/public/examples/001-draggable-basic/index.html b/docs/public/examples/001-draggable-basic/index.html new file mode 100644 index 0000000..0eee058 --- /dev/null +++ b/docs/public/examples/001-draggable-basic/index.html @@ -0,0 +1 @@ +Draggable - Basic
\ No newline at end of file diff --git a/docs/public/examples/002-draggable-autoscroll/index.12396756.js b/docs/public/examples/002-draggable-autoscroll/index.12396756.js new file mode 100644 index 0000000..faddad4 --- /dev/null +++ b/docs/public/examples/002-draggable-autoscroll/index.12396756.js @@ -0,0 +1,6 @@ +function t(t,i){let s=t.get(i);return s||(s=new e,t.set(i,s)),s}class e{constructor(){this.idMap=new Map,this.fnMap=new Map,this.onceList=new Set,this.emitList=null}add(t,e,i,s,n){if(!n&&this.fnMap.has(t))throw Error("Emitter: tried to add an existing event listener to an event!");if(this.idMap.has(i))switch(s){case"throw":throw Error("Emitter: tried to add an existing event listener id to an event!");case"ignore":return i;default:this.delId(i,"update"===s)}let r=this.fnMap.get(t);return r||(r=new Set,this.fnMap.set(t,r)),r.add(i),this.idMap.set(i,t),e&&this.onceList.add(i),this.emitList&&this.emitList.push(t),i}delId(t,e=!1){let i=this.idMap.get(t);if(!i)return;let s=this.fnMap.get(i);e||this.idMap.delete(t),this.onceList.delete(t),s.delete(t),s.size||this.fnMap.delete(i),this.emitList=null}delFn(t){let e=this.fnMap.get(t);e&&(e.forEach(t=>{this.onceList.delete(t),this.idMap.delete(t)}),this.fnMap.delete(t),this.emitList=null)}}class i{constructor(t={}){let{idDedupeMode:e="replace",allowDuplicateListeners:i=!0}=t;this.idDedupeMode=e,this.allowDuplicateListeners=i,this._events=new Map}_getListeners(t){let e=this._events.get(t);if(!e)return null;let{idMap:i,onceList:s}=e;if(!i.size)return null;let n=e.emitList||[...i.values()];if(s.size){if(s.size===i.size)this._events.delete(t);else for(let t of s)e.delId(t)}else e.emitList=n;return n}on(e,i,s=Symbol()){return t(this._events,e).add(i,!1,s,this.idDedupeMode,this.allowDuplicateListeners)}once(e,i,s=Symbol()){return t(this._events,e).add(i,!0,s,this.idDedupeMode,this.allowDuplicateListeners)}off(t,e){if(void 0===t)return void this._events.clear();if(void 0===e)return void this._events.delete(t);let i=this._events.get(t);i&&("function"==typeof e?i.delFn(e):i.delId(e),i.idMap.size||this._events.delete(t))}emit(t,...e){let i=this._getListeners(t);if(!i)return;let s=0,n=i.length;for(;s{t+=this.listenerCount(i)}),t}return(null===(e=this._events.get(t))||void 0===e?void 0:e.idMap.size)||0}}(L=C||(C={}))[L.PAUSED=1]="PAUSED",L[L.ON_DEMAND=2]="ON_DEMAND",L[L.CONTINUOUS=3]="CONTINUOUS";const s=new WeakMap;function n(t,e){if(e)return window.getComputedStyle(t,e);let i=s.get(t)?.deref();return i||(i=window.getComputedStyle(t,null),s.set(t,new WeakRef(i))),i}const r=!!("undefined"!=typeof window&&void 0!==window.document&&navigator.vendor&&navigator.vendor.indexOf("Apple")>-1&&navigator.userAgent&&-1==navigator.userAgent.indexOf("CriOS")&&-1==navigator.userAgent.indexOf("FxiOS")),o={content:"content",padding:"padding",scrollbar:"scrollbar",border:"border",margin:"margin"},a={[o.content]:!1,[o.padding]:!1,[o.scrollbar]:!0,[o.border]:!0,[o.margin]:!0},l=new Set(["auto","scroll"]),h=(()=>{try{return window.navigator.userAgentData.brands.some(({brand:t})=>"Chromium"===t)}catch(t){return!1}})();function d(t){switch(n(t).display){case"none":return null;case"inline":case"contents":return!1;default:return!0}}function c(t){let e=n(t);if(!r){let{filter:t}=e;if(t&&"none"!==t)return!0;let{backdropFilter:i}=e;if(i&&"none"!==i)return!0;let{willChange:s}=e;if(s&&(s.indexOf("filter")>-1||s.indexOf("backdrop-filter")>-1))return!0}let i=d(t);if(!i)return i;let{transform:s}=e;if(s&&"none"!==s)return!0;let{perspective:o}=e;if(o&&"none"!==o)return!0;let{contentVisibility:a}=e;if(a&&"auto"===a)return!0;let{contain:l}=e;if(l&&("strict"===l||"content"===l||l.indexOf("paint")>-1||l.indexOf("layout")>-1))return!0;let{willChange:h}=e;return!(!h||!(h.indexOf("transform")>-1||h.indexOf("perspective")>-1||h.indexOf("contain")>-1))||!!(r&&h&&h.indexOf("filter")>-1)}function u(t){return t instanceof HTMLHtmlElement}function p(t,e={}){if(u(t))return t.ownerDocument.defaultView;let i=e.position||n(t).position,{skipDisplayNone:s,container:r}=e;switch(i){case"static":case"relative":case"sticky":case"-webkit-sticky":{let e=r||t.parentElement;for(;e;){let t=d(e);if(t)return e;if(null===t&&!s)return null;e=e.parentElement}return t.ownerDocument.documentElement}case"absolute":case"fixed":{let e="fixed"===i,a=r||t.parentElement;for(;a;){var o;let t=e?c(a):"static"!==n(o=a).position||c(o);if(!0===t)return a;if(null===t&&!s)return null;a=a.parentElement}return t.ownerDocument.defaultView}default:return null}}function f(t,e,i,s){return Math.sqrt(Math.pow(i-t,2)+Math.pow(s-e,2))}function m(t){return t instanceof Window}function _(t){return t instanceof Document}const g=new Map;let v=null,y=null,w=null;function E(t,e,i){if(i<=0)return 0;if(h){let i=n(t,"::-webkit-scrollbar"),s="x"===e?i.height:i.width,r=parseFloat(s);if(!Number.isNaN(r)&&!Number.isInteger(r))return function(t,e){let i=t.split("."),s=g.get(i[1]);return void 0===s&&(v||(v=document.createElement("style")),v.innerHTML=` + #mezr-scrollbar-test::-webkit-scrollbar { + width: ${t} !important; + } + `,y&&w||(y=document.createElement("div"),w=document.createElement("div"),y.appendChild(w),y.id="mezr-scrollbar-test",y.style.cssText="\n all: unset !important;\n position: fixed !important;\n top: -200px !important;\n left: 0px !important;\n width: 100px !important;\n height: 100px !important;\n overflow: scroll !important;\n pointer-events: none !important;\n visibility: hidden !important;\n ",w.style.cssText="\n all: unset !important;\n position: absolute !important;\n inset: 0 !important;\n "),document.body.appendChild(v),document.body.appendChild(y),s=y.getBoundingClientRect().width-w.getBoundingClientRect().width-e,g.set(i[1],s),document.body.removeChild(y),document.body.removeChild(v)),e+s}(s,r)}return i}function S(t,e=o.border){return m(t)?function(t,e=!1){if(e)return t.innerWidth;let{innerWidth:i,document:s}=t,{documentElement:n}=s,{clientWidth:r}=n;return i-E(n,"y",i-r)}(t,a[e]):_(t)?function({documentElement:t}){return Math.max(t.scrollWidth,t.clientWidth,t.getBoundingClientRect().width)}(t):function(t,e=o.border){let{width:i}=t.getBoundingClientRect();if(e===o.border)return i;let s=n(t);return e===o.margin?i+=Math.max(0,parseFloat(s.marginLeft)||0)+Math.max(0,parseFloat(s.marginRight)||0):(i-=parseFloat(s.borderLeftWidth)||0,i-=parseFloat(s.borderRightWidth)||0,e===o.scrollbar||(!u(t)&&l.has(s.overflowY)&&(i-=E(t,"y",Math.round(i)-t.clientWidth)),e===o.padding||(i-=parseFloat(s.paddingLeft)||0,i-=parseFloat(s.paddingRight)||0)),i)}(t,e)}function D(t,e=o.border){return m(t)?function(t,e=!1){if(e)return t.innerHeight;let{innerHeight:i,document:s}=t,{documentElement:n}=s,{clientHeight:r}=n;return i-E(n,"x",i-r)}(t,a[e]):_(t)?function({documentElement:t}){return Math.max(t.scrollHeight,t.clientHeight,t.getBoundingClientRect().height)}(t):function(t,e=o.border){let{height:i}=t.getBoundingClientRect();if(e===o.border)return i;let s=n(t);return e===o.margin?i+=Math.max(0,parseFloat(s.marginTop)||0)+Math.max(0,parseFloat(s.marginBottom)||0):(i-=parseFloat(s.borderTopWidth)||0,i-=parseFloat(s.borderBottomWidth)||0,e===o.scrollbar||(!u(t)&&l.has(s.overflowX)&&(i-=E(t,"x",Math.round(i)-t.clientHeight)),e===o.padding||(i-=parseFloat(s.paddingTop)||0,i-=parseFloat(s.paddingBottom)||0)),i)}(t,e)}function x(t){return t?.constructor===Object}function b(t,e=o.border){let i={left:0,top:0};if(_(t))return i;if(m(t))return i.left+=t.scrollX||0,i.top+=t.scrollY||0,i;let s=t.ownerDocument.defaultView;s&&(i.left+=s.scrollX||0,i.top+=s.scrollY||0);let r=t.getBoundingClientRect();if(i.left+=r.left,i.top+=r.top,e===o.border)return i;let a=n(t);return e===o.margin?(i.left-=Math.max(0,parseFloat(a.marginLeft)||0),i.top-=Math.max(0,parseFloat(a.marginTop)||0)):(i.left+=parseFloat(a.borderLeftWidth)||0,i.top+=parseFloat(a.borderTopWidth)||0,e===o.scrollbar||e===o.padding||(i.left+=parseFloat(a.paddingLeft)||0,i.top+=parseFloat(a.paddingTop)||0)),i}function k(t,e){let i=x(t)?{left:t.left,top:t.top}:Array.isArray(t)?b(...t):b(t);if(e&&!_(e)){let t=x(e)?e:Array.isArray(e)?b(e[0],e[1]):b(e);i.left-=t.left,i.top-=t.top}return i}function T(t,e){let i=0,s=0;x(t)?(i=t.width,s=t.height):Array.isArray(t)?(i=S(...t),s=D(...t)):(i=S(t),s=D(t));let n=k(t,e);return{width:i,height:s,...n,right:n.left+i,bottom:n.top+s}}function P(t){return x(t)?t:T(t)}function M(t,e={}){let{display:i}=n(t);if("none"===i||"contents"===i)return null;let s=e.position||n(t).position,{skipDisplayNone:r,container:o}=e;switch(s){case"relative":return t;case"fixed":return p(t,{container:o,position:s,skipDisplayNone:r});case"absolute":{let e=p(t,{container:o,position:s,skipDisplayNone:r});return m(e)?t.ownerDocument:e}default:return null}}var q,L,C,I={start:"start",move:"move",cancel:"cancel",end:"end",destroy:"destroy"},R=class{constructor(){this.drag=null,this.isDestroyed=!1,this._emitter=new i}_createDragData(t){return{x:t.x,y:t.y}}_updateDragData(t){this.drag&&(this.drag.x=t.x,this.drag.y=t.y)}_resetDragData(){this.drag=null}_start(t){this.isDestroyed||this.drag||(this.drag=this._createDragData(t),this._emitter.emit(I.start,t))}_move(t){this.drag&&(this._updateDragData(t),this._emitter.emit(I.move,t))}_end(t){this.drag&&(this._updateDragData(t),this._emitter.emit(I.end,t),this._resetDragData())}_cancel(t){this.drag&&(this._updateDragData(t),this._emitter.emit(I.cancel,t),this._resetDragData())}on(t,e,i){return this._emitter.on(t,e,i)}off(t,e){this._emitter.off(t,e)}cancel(){this.drag&&(this._emitter.emit(I.cancel,{type:I.cancel,x:this.drag.x,y:this.drag.y}),this._resetDragData())}destroy(){this.isDestroyed||(this.isDestroyed=!0,this.cancel(),this._emitter.emit(I.destroy,{type:I.destroy}),this._emitter.off())}},O=Symbol(),A=Symbol(),X=new class{constructor(t={}){let{phases:e=[],autoTick:s=C.ON_DEMAND,allowDuplicateListeners:n=!0,idDedupeMode:r="replace",requestFrame:o=function(t=60){if("function"==typeof requestAnimationFrame&&"function"==typeof cancelAnimationFrame)return t=>{let e=requestAnimationFrame(t);return()=>cancelAnimationFrame(e)};{let e=1e3/t,i="undefined"==typeof performance?()=>Date.now():()=>performance.now();return t=>{let s=setTimeout(()=>t(i()),e);return()=>clearTimeout(s)}}}()}=t;this.phases=e,this._autoTick=s,this._requestFrame=o,this._cancelFrame=null,this._queue=[],this._emitter=new i({allowDuplicateListeners:n,idDedupeMode:r}),this.tick=this.tick.bind(this)}get requestFrame(){return this._requestFrame}set requestFrame(t){this._requestFrame=t,this._kickstart()}get autoTick(){return this._autoTick}set autoTick(t){this._autoTick=t,this._kickstart()}get allowDuplicateListeners(){return this._emitter.allowDuplicateListeners}set allowDuplicateListeners(t){this._emitter.allowDuplicateListeners=t}get idDedupeMode(){return this._emitter.idDedupeMode}set idDedupeMode(t){this._emitter.idDedupeMode=t}tick(...t){let e,i,s,n,r,o;this._cancelFrame=null;let{_queue:a}=this;if(a.length)throw Error("Ticker: Can't tick before the previous tick has finished!");this._request();let{phases:l,_emitter:h}=this;for(e=0,s=l.length;e=C.ON_DEMAND&&(this._cancelFrame=this._requestFrame(this.tick))}_cancel(){this._cancelFrame&&(this._cancelFrame(),this._cancelFrame=null)}_kickstart(){this._autoTick===C.ON_DEMAND?this._emitter.listenerCount()&&this._request():this._autoTick===C.CONTINUOUS?this._request():this._cancel()}}({phases:[O,A]}),Y=class extends R{constructor(){super(),this.drag=null,this._direction={x:0,y:0},this._speed=0,this._tick=this._tick.bind(this)}_createDragData(t){return{...super._createDragData(t),time:0,deltaTime:0}}_start(t){this.isDestroyed||this.drag||(super._start(t),X.on(O,this._tick))}_end(t){this.drag&&(X.off(O,this._tick),super._end(t))}_cancel(t){this.drag&&(X.off(O,this._tick),super._cancel(t))}_tick(t){if(this.drag){if(t&&this.drag.time){this.drag.deltaTime=t-this.drag.time,this.drag.time=t;let e={type:"tick",time:this.drag.time,deltaTime:this.drag.deltaTime};if(this._emitter.emit("tick",e),!this.drag)return;let i=this._speed*(this.drag.deltaTime/1e3),s=this._direction.x*i,n=this._direction.y*i;(s||n)&&this._move({type:"move",x:this.drag.x+s,y:this.drag.y+n})}else this.drag.time=t,this.drag.deltaTime=0}}};function K(t,e){if("pointerId"in t)return t.pointerId===e?t:null;if("changedTouches"in t){let i=0;for(;itypeof window&&"u">typeof window.document,z=(()=>{let t=!1;try{let e=Object.defineProperty({},"passive",{get:function(){t=!0}});window.addEventListener("testPassive",null,e),window.removeEventListener("testPassive",null,e)}catch{}return t})(),N=F&&"ontouchstart"in window,W=F&&!!window.PointerEvent;function U(t={}){let{capture:e=!0,passive:i=!0}=t;return z?{capture:e,passive:i}:{capture:e}}function V(t){return"auto"===t||void 0===t?W?"pointer":N?"touch":"mouse":t}F&&navigator.vendor&&navigator.vendor.indexOf("Apple")>-1&&navigator.userAgent&&-1==navigator.userAgent.indexOf("CriOS")&&navigator.userAgent.indexOf("FxiOS");var B={pointer:{start:"pointerdown",move:"pointermove",cancel:"pointercancel",end:"pointerup"},touch:{start:"touchstart",move:"touchmove",cancel:"touchcancel",end:"touchend"},mouse:{start:"mousedown",move:"mousemove",cancel:"",end:"mouseup"}},H=class{constructor(t,e={}){let{listenerOptions:s={},sourceEvents:n="auto",startPredicate:r=t=>!("button"in t&&t.button>0)}=e;this.element=t,this.drag=null,this.isDestroyed=!1,this._areWindowListenersBound=!1,this._startPredicate=r,this._listenerOptions=U(s),this._sourceEvents=V(n),this._emitter=new i,this._onStart=this._onStart.bind(this),this._onMove=this._onMove.bind(this),this._onCancel=this._onCancel.bind(this),this._onEnd=this._onEnd.bind(this),t.addEventListener(B[this._sourceEvents].start,this._onStart,this._listenerOptions)}_getTrackedPointerEventData(t){return this.drag?K(t,this.drag.pointerId):null}_onStart(t){if(this.isDestroyed||this.drag||!this._startPredicate(t))return;let e="pointerId"in t?t.pointerId:"changedTouches"in t?t.changedTouches[0]?t.changedTouches[0].identifier:null:-1;if(null===e)return;let i=K(t,e);if(null===i)return;let s={pointerId:e,pointerType:"pointerType"in t?t.pointerType:"touches"in t?"touch":"mouse",x:i.clientX,y:i.clientY};this.drag=s;let n={...s,type:I.start,srcEvent:t,target:i.target};this._emitter.emit(n.type,n),this.drag&&this._bindWindowListeners()}_onMove(t){if(!this.drag)return;let e=this._getTrackedPointerEventData(t);if(!e)return;this.drag.x=e.clientX,this.drag.y=e.clientY;let i={type:I.move,srcEvent:t,target:e.target,...this.drag};this._emitter.emit(i.type,i)}_onCancel(t){if(!this.drag)return;let e=this._getTrackedPointerEventData(t);if(!e)return;this.drag.x=e.clientX,this.drag.y=e.clientY;let i={type:I.cancel,srcEvent:t,target:e.target,...this.drag};this._emitter.emit(i.type,i),this._resetDrag()}_onEnd(t){if(!this.drag)return;let e=this._getTrackedPointerEventData(t);if(!e)return;this.drag.x=e.clientX,this.drag.y=e.clientY;let i={type:I.end,srcEvent:t,target:e.target,...this.drag};this._emitter.emit(i.type,i),this._resetDrag()}_bindWindowListeners(){if(this._areWindowListenersBound)return;let{move:t,end:e,cancel:i}=B[this._sourceEvents];window.addEventListener(t,this._onMove,this._listenerOptions),window.addEventListener(e,this._onEnd,this._listenerOptions),i&&window.addEventListener(i,this._onCancel,this._listenerOptions),this._areWindowListenersBound=!0}_unbindWindowListeners(){if(this._areWindowListenersBound){let{move:t,end:e,cancel:i}=B[this._sourceEvents];window.removeEventListener(t,this._onMove,this._listenerOptions),window.removeEventListener(e,this._onEnd,this._listenerOptions),i&&window.removeEventListener(i,this._onCancel,this._listenerOptions),this._areWindowListenersBound=!1}}_resetDrag(){this.drag=null,this._unbindWindowListeners()}cancel(){if(!this.drag)return;let t={type:I.cancel,srcEvent:null,target:null,...this.drag};this._emitter.emit(t.type,t),this._resetDrag()}updateSettings(t){if(this.isDestroyed)return;let{listenerOptions:e,sourceEvents:i,startPredicate:s}=t,n=V(i),r=U(e);s&&this._startPredicate!==s&&(this._startPredicate=s),(e&&(this._listenerOptions.capture!==r.capture||this._listenerOptions.passive===r.passive)||i&&this._sourceEvents!==n)&&(this.element.removeEventListener(B[this._sourceEvents].start,this._onStart,this._listenerOptions),this._unbindWindowListeners(),this.cancel(),i&&(this._sourceEvents=n),e&&r&&(this._listenerOptions=r),this.element.addEventListener(B[this._sourceEvents].start,this._onStart,this._listenerOptions))}on(t,e,i){return this._emitter.on(t,e,i)}off(t,e){this._emitter.off(t,e)}destroy(){this.isDestroyed||(this.isDestroyed=!0,this.cancel(),this._emitter.emit(I.destroy,{type:I.destroy}),this._emitter.off(),this.element.removeEventListener(B[this._sourceEvents].start,this._onStart,this._listenerOptions))}},j=["start","cancel","end","moveLeft","moveRight","moveUp","moveDown"];function $(t,e){if(!t.size||!e.size)return 1/0;let i=1/0;for(let s of t){let t=e.get(s);void 0!==t&&t{if(document.activeElement){let{left:t,top:e}=document.activeElement.getBoundingClientRect();return{x:t,y:e}}return null},computeSpeed:i=()=>500,startKeys:s=[" ","Enter"],moveLeftKeys:n=["ArrowLeft"],moveRightKeys:r=["ArrowRight"],moveUpKeys:o=["ArrowUp"],moveDownKeys:a=["ArrowDown"],cancelKeys:l=["Escape"],endKeys:h=[" ","Enter"]}=t;this._computeSpeed=i,this._startPredicate=e,this._startKeys=new Set(s),this._cancelKeys=new Set(l),this._endKeys=new Set(h),this._moveLeftKeys=new Set(n),this._moveRightKeys=new Set(r),this._moveUpKeys=new Set(o),this._moveDownKeys=new Set(a),this._moveKeys=new Set([...n,...r,...o,...a]),this._moveKeyTimestamps=new Map,this._onKeyDown=this._onKeyDown.bind(this),this._onKeyUp=this._onKeyUp.bind(this),this._onTick=this._onTick.bind(this),this.on("tick",this._onTick),document.addEventListener("keydown",this._onKeyDown),document.addEventListener("keyup",this._onKeyUp),window.addEventListener("blur",this.cancel),window.addEventListener("visibilitychange",this.cancel)}_end(t){this.drag&&(this._moveKeyTimestamps.clear(),this._direction.x=0,this._direction.y=0,super._end(t))}_cancel(t){this.drag&&(this._moveKeyTimestamps.clear(),this._direction.x=0,this._direction.y=0,super._cancel(t))}_updateDirection(){let t=$(this._moveLeftKeys,this._moveKeyTimestamps),e=$(this._moveRightKeys,this._moveKeyTimestamps),i=$(this._moveUpKeys,this._moveKeyTimestamps),s=$(this._moveDownKeys,this._moveKeyTimestamps),n=t===e?0:t{let n=`${i}Keys`,r=t[n];void 0!==r&&(this[`_${n}`]=new Set(r),s>=3&&(e=!0))}),e){let t=[...this._moveLeftKeys,...this._moveRightKeys,...this._moveUpKeys,...this._moveDownKeys];[...this._moveKeys].every((e,i)=>t[i]===e)||(this._moveKeys=new Set(t),this._moveKeyTimestamps.clear(),this._updateDirection())}}destroy(){this.isDestroyed||(super.destroy(),this.off("tick",this._onTick),document.removeEventListener("keydown",this._onKeyDown),document.removeEventListener("keyup",this._onKeyUp),window.removeEventListener("blur",this.cancel),window.removeEventListener("visibilitychange",this.cancel))}},J=class{constructor(){this.sensor=null,this.isEnded=!1,this.isStarted=!1,this.startEvent=null,this.nextMoveEvent=null,this.prevMoveEvent=null,this.endEvent=null,this.items=[]}},Q=class{constructor(t,e,i,s,n){this.data={},this.element=t,this.elementContainer=e,this.elementOffsetContainer=i,this.dragContainer=s,this.dragOffsetContainer=n,this.initialTransform="",this.frozenProps=null,this.unfrozenProps=null,this.x=0,this.y=0,this.pX=0,this.pY=0,this._updateDiffX=0,this._updateDiffY=0,this._moveDiffX=0,this._moveDiffY=0,this._containerDiffX=0,this._containerDiffY=0}};function Z(t,e,i={left:0,top:0}){if(i.left=0,i.top=0,t===e)return i;let s=k([t,"padding"]),n=k([e,"padding"]);return i.left=n.left-s.left,i.top=n.top-s.top,i}var tt=new WeakMap;function te(t){let e=tt.get(t)?.deref();return e||(e=window.getComputedStyle(t,null),tt.set(t,new WeakRef(e))),e}var ti=!z||{capture:!0,passive:!0},ts={left:0,top:0},tn={x:0,y:0};function tr(){return{container:null,startPredicate:()=>!0,getElements:()=>null,releaseElements:()=>null,getFrozenProps:()=>null,getStartPosition:()=>({x:0,y:0}),setPosition:({item:t,x:e,y:i})=>{t.element.style.transform=`translate(${e}px, ${i}px) ${t.initialTransform}`},getPositionChange:({event:t,prevEvent:e})=>(tn.x=t.x-e.x,tn.y=t.y-e.y,tn)}}var to=class{constructor(t,e={}){this.sensors=t,this.settings=this._parseSettings(e),this.plugins={},this.drag=null,this.isDestroyed=!1,this._sensorData=new Map,this._emitter=new i,this._startId=Symbol(),this._moveId=Symbol(),this._updateId=Symbol(),this._onMove=this._onMove.bind(this),this._onScroll=this._onScroll.bind(this),this._onEnd=this._onEnd.bind(this),this._prepareStart=this._prepareStart.bind(this),this._applyStart=this._applyStart.bind(this),this._prepareMove=this._prepareMove.bind(this),this._applyMove=this._applyMove.bind(this),this._preparePositionUpdate=this._preparePositionUpdate.bind(this),this._applyPositionUpdate=this._applyPositionUpdate.bind(this),this.sensors.forEach(t=>{this._sensorData.set(t,{predicateState:0,predicateEvent:null,onMove:e=>this._onMove(e,t),onEnd:e=>this._onEnd(e,t)});let{onMove:e,onEnd:i}=this._sensorData.get(t);t.on("start",e),t.on("move",e),t.on("cancel",i),t.on("end",i),t.on("destroy",i)})}_parseSettings(t,e=tr()){let{container:i=e.container,startPredicate:s=e.startPredicate,getElements:n=e.getElements,releaseElements:r=e.releaseElements,getFrozenProps:o=e.getFrozenProps,getStartPosition:a=e.getStartPosition,setPosition:l=e.setPosition,getPositionChange:h=e.getPositionChange}=t||{};return{container:i,startPredicate:s,getElements:n,releaseElements:r,getFrozenProps:o,getStartPosition:a,setPosition:l,getPositionChange:h}}_emit(t,...e){this._emitter.emit(t,...e)}_onMove(t,e){let i=this._sensorData.get(e);if(i)switch(i.predicateState){case 0:{i.predicateEvent=t;let s=this.settings.startPredicate({draggable:this,sensor:e,event:t});!0===s?this.resolveStartPredicate(e):!1===s&&this.rejectStartPredicate(e);break}case 1:this.drag&&(this.drag.nextMoveEvent=t,X.once(O,this._prepareMove,this._moveId),X.once(A,this._applyMove,this._moveId))}}_onScroll(){this.updatePosition()}_onEnd(t,e){let i=this._sensorData.get(e);i&&(this.drag?1===i.predicateState&&(this.drag.endEvent=t,this._sensorData.forEach(t=>{t.predicateState=0,t.predicateEvent=null}),this.stop()):(i.predicateState=0,i.predicateEvent=null))}_prepareStart(){let{drag:t}=this;if(!t||!t.startEvent)return;let e=this.settings.getElements({draggable:this,sensor:t.sensor,startEvent:t.startEvent})||[];t.items=e.map(e=>{if(!e.isConnected)throw Error("Element is not connected");let i=e.parentElement,s=M(e);if(!s)throw Error("Offset container could not be computed for the element!");let n=this.settings.container||i,r=n===i?s:M(e,{container:n});if(!r)throw Error("Drag offset container could not be computed for the element!");let o=new Q(e,i,s,n,r),a=e.getBoundingClientRect();if(o.x=a.left,o.y=a.top,s!==r){let{left:t,top:e}=Z(r,s,ts);o._containerDiffX=t,o._containerDiffY=e}let l=te(e),{transform:h}=l;h&&"none"!==h&&"matrix(1, 0, 0, 1, 0, 0)"!==h&&"matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)"!==h&&(o.initialTransform=h);let{x:d,y:c}=this.settings.getStartPosition({draggable:this,sensor:t.sensor,item:o,style:l});o.pX=d,o.pY=c;let u=this.settings.getFrozenProps({draggable:this,sensor:t.sensor,item:o,style:l});if(Array.isArray(u)){if(u.length){let t={};for(let e of u)t[e]=l[e];o.frozenProps=t}else o.frozenProps=null}else o.frozenProps=u;if(o.frozenProps){let t={};for(let i in o.frozenProps)o.frozenProps.hasOwnProperty(i)&&(t[i]=e.style[i]);o.unfrozenProps=t}return o}),this._emit("preparestart",t.startEvent)}_applyStart(){let t=this.drag;if(!t||!t.startEvent)return;let{container:e}=this.settings;for(let i of t.items)e&&i.element.parentElement!==e&&(e.appendChild(i.element),i.pX+=i._containerDiffX,i.pY+=i._containerDiffY),i.frozenProps&&Object.assign(i.element.style,i.frozenProps),this.settings.setPosition({phase:"start",draggable:this,sensor:t.sensor,item:i,x:i.pX,y:i.pY});window.addEventListener("scroll",this._onScroll,ti),t.isStarted=!0,this._emit("start",t.startEvent)}_prepareMove(){let{drag:t}=this;if(!t||!t.startEvent)return;let e=t.nextMoveEvent,i=t.prevMoveEvent||t.startEvent;if(!(!e||e===i)){for(let s of t.items){let{x:n,y:r}=this.settings.getPositionChange({draggable:this,sensor:t.sensor,item:s,startEvent:t.startEvent,prevEvent:i,event:e});n&&(s.pX=s.pX-s._moveDiffX+n,s.x=s.x-s._moveDiffX+n,s._moveDiffX=n),r&&(s.pY=s.pY-s._moveDiffY+r,s.y=s.y-s._moveDiffY+r,s._moveDiffY=r)}t.prevMoveEvent=e,this._emit("preparemove",e)}}_applyMove(){let{drag:t}=this;if(!(!t||!t.nextMoveEvent)){for(let e of t.items)e._moveDiffX=0,e._moveDiffY=0;for(let e of t.items)this.settings.setPosition({phase:"move",draggable:this,sensor:t.sensor,item:e,x:e.pX,y:e.pY});this._emit("move",t.nextMoveEvent)}}_preparePositionUpdate(){let{drag:t}=this;if(t)for(let e of t.items){if(e.elementOffsetContainer!==e.dragOffsetContainer){let{left:t,top:i}=Z(e.dragOffsetContainer,e.elementOffsetContainer,ts);e._containerDiffX=t,e._containerDiffY=i}let{left:t,top:i}=e.element.getBoundingClientRect(),s=e.x-e._moveDiffX-t;e.pX=e.pX-e._updateDiffX+s,e._updateDiffX=s;let n=e.y-e._moveDiffY-i;e.pY=e.pY-e._updateDiffY+n,e._updateDiffY=n}}_applyPositionUpdate(){let{drag:t}=this;if(t)for(let e of t.items)e._updateDiffX=0,e._updateDiffY=0,this.settings.setPosition({phase:"move",draggable:this,sensor:t.sensor,item:e,x:e.pX,y:e.pY})}on(t,e,i){return this._emitter.on(t,e,i)}off(t,e){this._emitter.off(t,e)}resolveStartPredicate(t,e){let i=this._sensorData.get(t);if(!i)return;let s=e||i.predicateEvent;0===i.predicateState&&s&&(i.predicateState=1,i.predicateEvent=null,this.drag=new J,this.drag.sensor=t,this.drag.startEvent=s,this._sensorData.forEach((e,i)=>{i!==t&&(e.predicateState=2,e.predicateEvent=null)}),X.once(O,this._prepareStart,this._startId),X.once(A,this._applyStart,this._startId))}rejectStartPredicate(t){let e=this._sensorData.get(t);e?.predicateState===0&&(e.predicateState=2,e.predicateEvent=null)}stop(){let{drag:t}=this;if(!(!t||t.isEnded)){if(t.isEnded=!0,X.off(O,this._startId),X.off(A,this._startId),X.off(O,this._moveId),X.off(A,this._moveId),X.off(O,this._updateId),X.off(A,this._updateId),t.isStarted){window.removeEventListener("scroll",this._onScroll,ti);let e=[];for(let i of t.items){if(e.push(i.element),i.elementContainer&&i.element.parentElement!==i.elementContainer&&(i.pX-=i._containerDiffX,i.pY-=i._containerDiffY,i._containerDiffX=0,i._containerDiffY=0,i.elementContainer.appendChild(i.element)),i.unfrozenProps)for(let t in i.unfrozenProps)i.element.style[t]=i.unfrozenProps[t]||"";this.settings.setPosition({phase:"end",draggable:this,sensor:t.sensor,item:i,x:i.pX,y:i.pY})}e.length&&this.settings.releaseElements({draggable:this,sensor:t.sensor,elements:e})}this._emit("end",t.endEvent),this.drag=null}}updatePosition(t=!1){this.drag&&(t?(this._preparePositionUpdate(),this._applyPositionUpdate()):(X.once(O,this._preparePositionUpdate,this._updateId),X.once(A,this._applyPositionUpdate,this._updateId)))}updateSettings(t={}){this.settings=this._parseSettings(t,this.settings)}use(t){return t(this)}destroy(){this.isDestroyed||(this.isDestroyed=!0,this.stop(),this._sensorData.forEach(({onMove:t,onEnd:e},i)=>{i.off("start",t),i.off("move",t),i.off("cancel",e),i.off("end",e),i.off("destroy",e)}),this._sensorData.clear(),this._emit("destroy"),this._emitter.off())}},ta=class{constructor(t,e){this._data=[],this._createObject=t,this._onPut=e}pick(){return this._data.length?this._data.pop():this._createObject()}put(t){-1===this._data.indexOf(t)&&(this._onPut&&this._onPut(t),this._data.push(t))}reset(){this._data.length=0}};function tl(t,e){let i;let s=(i=function(t,...e){let i={...P(t),right:0,bottom:0};for(let t of e){let e=P(t),s=Math.max(i.left,e.left),n=Math.min(i.left+i.width,e.left+e.width);if(n<=s)return null;let r=Math.max(i.top,e.top),o=Math.min(i.top+i.height,e.height+e.top);if(o<=r)return null;i.left=s,i.top=r,i.width=n-s,i.height=o-r}return i.right=i.left+i.width,i.bottom=i.top+i.height,i}(t,e))?i.width*i.height:0;return s?s/(Math.min(t.width,e.width)*Math.min(t.height,e.height))*100:0}function th(t){return t instanceof Window}function td(t){return th(t)||t===document.documentElement||t===document.body?window:t}function tc(t){return th(t)?t.pageXOffset:t.scrollLeft}function tu(t){return th(t)&&(t=document.documentElement),t.scrollWidth-t.clientWidth}function tp(t){return th(t)?t.pageYOffset:t.scrollTop}function tf(t){return th(t)&&(t=document.documentElement),t.scrollHeight-t.clientHeight}function tm(t,e){return!(t.right<=e.left||e.right<=t.left||t.bottom<=e.top||e.bottom<=t.top)}var t_={width:0,height:0,left:0,right:0,top:0,bottom:0},tg={...t_},tv={direction:"none",threshold:0,distance:0,value:0,maxValue:0,duration:0,speed:0,deltaTime:0,isEnding:!1},ty={x:1,y:2},tw={forward:4,reverse:8},tE={none:0,left:ty.x|tw.reverse,right:ty.x|tw.forward},tS={none:0,up:ty.y|tw.reverse,down:ty.y|tw.forward},tD={...tE,...tS};function tx(t){switch(t){case tE.none:case tS.none:return"none";case tE.left:return"left";case tE.right:return"right";case tS.up:return"up";case tS.down:return"down";default:throw Error(`Unknown direction value: ${t}`)}}function tb(t,e,i){let{left:s=0,right:n=0,top:r=0,bottom:o=0}=e;return s=Math.max(0,s),n=Math.max(0,n),r=Math.max(0,r),o=Math.max(0,o),i.width=t.width+s+n,i.height=t.height+r+o,i.left=t.left-s,i.top=t.top-r,i.right=t.right+n,i.bottom=t.bottom+o,i}function tk(t,e){return Math.ceil(t)>=Math.floor(e)}function tT(t,e){return Math.min(e/2,t)}function tP(t,e,i,s){return Math.max(0,i+2*t+s*e-s)/2}var tM=class{constructor(){this.positionX=0,this.positionY=0,this.directionX=tD.none,this.directionY=tD.none,this.overlapCheckRequestTime=0}},tq=class{constructor(){this.element=null,this.requestX=null,this.requestY=null,this.scrollLeft=0,this.scrollTop=0}reset(){this.requestX&&(this.requestX.action=null),this.requestY&&(this.requestY.action=null),this.element=null,this.requestX=null,this.requestY=null,this.scrollLeft=0,this.scrollTop=0}addRequest(t){ty.x&t.direction?(this.requestX&&this.removeRequest(this.requestX),this.requestX=t):(this.requestY&&this.removeRequest(this.requestY),this.requestY=t),t.action=this}removeRequest(t){this.requestX===t?(this.requestX=null,t.action=null):this.requestY===t&&(this.requestY=null,t.action=null)}computeScrollValues(){this.element&&(this.scrollLeft=this.requestX?this.requestX.value:tc(this.element),this.scrollTop=this.requestY?this.requestY.value:tp(this.element))}scroll(){this.element&&(this.element.scrollTo?this.element.scrollTo(this.scrollLeft,this.scrollTop):(this.element.scrollLeft=this.scrollLeft,this.element.scrollTop=this.scrollTop))}},tL=class{constructor(){this.item=null,this.element=null,this.isActive=!1,this.isEnding=!1,this.direction=0,this.value=NaN,this.maxValue=0,this.threshold=0,this.distance=0,this.deltaTime=0,this.speed=0,this.duration=0,this.action=null}reset(){this.isActive&&this.onStop(),this.item=null,this.element=null,this.isActive=!1,this.isEnding=!1,this.direction=0,this.value=NaN,this.maxValue=0,this.threshold=0,this.distance=0,this.deltaTime=0,this.speed=0,this.duration=0,this.action=null}hasReachedEnd(){return tw.forward&this.direction?tk(this.value,this.maxValue):this.value<=0}computeCurrentScrollValue(){return this.element?this.value!=this.value?ty.x&this.direction?tc(this.element):tp(this.element):Math.max(0,Math.min(this.value,this.maxValue)):0}computeNextScrollValue(){let t=this.speed*(this.deltaTime/1e3);return Math.max(0,Math.min(tw.forward&this.direction?this.value+t:this.value-t,this.maxValue))}computeSpeed(){if(!this.item||!this.element)return 0;let{speed:t}=this.item;return"function"==typeof t?(tv.direction=tx(this.direction),tv.threshold=this.threshold,tv.distance=this.distance,tv.value=this.value,tv.maxValue=this.maxValue,tv.duration=this.duration,tv.speed=this.speed,tv.deltaTime=this.deltaTime,tv.isEnding=this.isEnding,t(this.element,tv)):t}tick(t){return this.isActive||(this.isActive=!0,this.onStart()),this.deltaTime=t,this.value=this.computeCurrentScrollValue(),this.speed=this.computeSpeed(),this.value=this.computeNextScrollValue(),this.duration+=t,this.value}onStart(){if(!this.item||!this.element)return;let{onStart:t}=this.item;"function"==typeof t&&t(this.element,tx(this.direction))}onStop(){if(!this.item||!this.element)return;let{onStop:t}=this.item;"function"==typeof t&&t(this.element,tx(this.direction))}},tC=new class{constructor(t={}){let{overlapCheckInterval:e=150}=t;this.items=[],this.settings={overlapCheckInterval:e},this._actions=[],this._isDestroyed=!1,this._isTicking=!1,this._tickTime=0,this._tickDeltaTime=0,this._requests={[ty.x]:new Map,[ty.y]:new Map},this._itemData=new Map,this._requestPool=new ta(()=>new tL,t=>t.reset()),this._actionPool=new ta(()=>new tq,t=>t.reset()),this._emitter=new i,this._frameRead=this._frameRead.bind(this),this._frameWrite=this._frameWrite.bind(this)}_frameRead(t){this._isDestroyed||(t&&this._tickTime?(this._tickDeltaTime=t-this._tickTime,this._tickTime=t,this._updateItems(),this._updateRequests(),this._updateActions()):(this._tickTime=t,this._tickDeltaTime=0))}_frameWrite(){this._isDestroyed||this._applyActions()}_startTicking(){this._isTicking||(this._isTicking=!0,X.on(O,this._frameRead),X.on(A,this._frameWrite))}_stopTicking(){this._isTicking&&(this._isTicking=!1,this._tickTime=0,this._tickDeltaTime=0,X.off(O,this._frameRead),X.off(A,this._frameWrite))}_getItemClientRect(t,e={width:0,height:0,left:0,right:0,top:0,bottom:0}){let{clientRect:i}=t;return e.left=i.left,e.top=i.top,e.width=i.width,e.height=i.height,e.right=i.left+i.width,e.bottom=i.top+i.height,e}_requestItemScroll(t,e,i,s,n,r,o){let a=this._requests[e],l=a.get(t);l?(l.element!==i||l.direction!==s)&&l.reset():(l=this._requestPool.pick(),a.set(t,l)),l.item=t,l.element=i,l.direction=s,l.threshold=n,l.distance=r,l.maxValue=o}_cancelItemScroll(t,e){let i=this._requests[e],s=i.get(t);s&&(s.action&&s.action.removeRequest(s),this._requestPool.put(s),i.delete(t))}_checkItemOverlap(t,e,i){let{inertAreaSize:s,targets:n}=t;if(!n.length){e&&this._cancelItemScroll(t,ty.x),i&&this._cancelItemScroll(t,ty.y);return}let r=this._itemData.get(t),o=r?.directionX,a=r?.directionY;if(!o&&!a){e&&this._cancelItemScroll(t,ty.x),i&&this._cancelItemScroll(t,ty.y);return}let l=this._getItemClientRect(t,t_),h=null,d=-1/0,c=0,u=-1/0,p=tD.none,m=0,_=0,g=null,v=-1/0,y=0,w=-1/0,E=tD.none,S=0,D=0,x=0;for(;x=r?f(i,t.top,e.left,r):e.left-i:t.left>=n?s<=e.top?f(t.left,s,n,e.top):t.top>=r?f(t.left,t.top,n,r):t.left-n:s<=e.top?e.top-s:t.top-r}(P(l),P(I))||0)}if(b&&M>=d&&L>0&&(M>d||R>u)){let t=0,e=tD.none,i=tT(r,I.width),n=tP(i,s,l.width,I.width);o===tD.right?(t=I.right+n-l.right)<=i&&!tk(tc(q),L)&&(e=tD.right):o===tD.left&&(t=l.left-(I.left-n))<=i&&tc(q)>0&&(e=tD.left),e&&(h=q,d=M,c=i,u=R,p=e,m=t,_=L)}if(k&&M>=v&&C>0&&(M>v||R>w)){let t=0,e=tS.none,i=tT(r,I.height),n=tP(i,s,l.height,I.height);a===tD.down?(t=I.bottom+n-l.bottom)<=i&&!tk(tp(q),C)&&(e=tD.down):a===tD.up&&(t=l.top-(I.top-n))<=i&&tp(q)>0&&(e=tD.up),e&&(g=q,v=M,y=i,w=R,E=e,S=t,D=C)}}e&&(h&&p?this._requestItemScroll(t,ty.x,h,p,c,m,_):this._cancelItemScroll(t,ty.x)),i&&(g&&E?this._requestItemScroll(t,ty.y,g,E,y,S,D):this._cancelItemScroll(t,ty.y))}_updateScrollRequest(t){let e=t.item,{inertAreaSize:i,smoothStop:s,targets:n}=e,r=this._getItemClientRect(e,t_),o=null,a=0;for(;ac)break;let f=l?tc(s):tp(s);if(o=tw.forward&t.direction?tk(f,h):f<=0)break;return t.maxValue=h,t.threshold=c,t.distance=p,t.isEnding=!1,!0}return!0===s&&t.speed>0?(null===o&&(o=t.hasReachedEnd()),t.isEnding=!o):t.isEnding=!1,t.isEnding}_updateItems(){for(let t=0;tr?tD.right:so?tD.down:n0&&this._tickTime-o>this.settings.overlapCheckInterval,l=!0,h=e.get(n);h&&h.isActive&&(l=!this._updateScrollRequest(h))&&(a=!0,this._cancelItemScroll(n,ty.x));let d=!0,c=i.get(n);c&&c.isActive&&(d=!this._updateScrollRequest(c))&&(a=!0,this._cancelItemScroll(n,ty.y)),a&&(r.overlapCheckRequestTime=0,this._checkItemOverlap(n,l,d))}}_requestAction(t,e){let i=e===ty.x,s=null,n=0;for(;n0?1/e:1/0),n=t*(i>0?1/i:1/0);return function(e,i){let r=0;if(!i.isEnding){if(i.threshold>0){let e=i.threshold-Math.max(0,i.distance);r=t/i.threshold*e}else r=t}let o=i.speed;return o===r?r:o{let{drag:e}=t,i=e?.items[0];if(i)tI.x=i.pX,tI.y=i.pY;else{let t=e&&(e.nextMoveEvent||e.startEvent);tI.x=t?t.x:0,tI.y=t?t.y:0}return tI},getClientRect:t=>{let{drag:e}=t,i=e?.items[0];if(i&&i.element){let{left:t,top:e,width:s,height:n}=i.element.getBoundingClientRect();tR.left=t,tR.top=e,tR.width=s,tR.height=n}else{let t=e&&(e.nextMoveEvent||e.startEvent);tR.left=t?t.x-25:0,tR.top=t?t.y-25:0,tR.width=t?50:0,tR.height=t?50:0}return tR},onStart:null,onStop:null}}var tA=class{constructor(t,e){this._draggableAutoScroll=t,this._draggable=e,this._position={x:0,y:0},this._clientRect={left:0,top:0,width:0,height:0}}_getSettings(){return this._draggableAutoScroll.settings}get targets(){let{targets:t}=this._getSettings();return"function"==typeof t&&(t=t(this._draggable)),t}get position(){let{getPosition:t}=this._getSettings();if("function"==typeof t){let e=t(this._draggable);this._position.x=e.x,this._position.y=e.y}else this._position.x=0,this._position.y=0;return this._position}get clientRect(){let{getClientRect:t}=this._getSettings();if("function"==typeof t){let{left:e,top:i,width:s,height:n}=t(this._draggable);this._clientRect.left=e,this._clientRect.top=i,this._clientRect.width=s,this._clientRect.height=n}else this._clientRect.left=0,this._clientRect.top=0,this._clientRect.width=0,this._clientRect.height=0;return this._clientRect}get inertAreaSize(){return this._getSettings().inertAreaSize}get smoothStop(){return this._getSettings().smoothStop}get speed(){return this._getSettings().speed}get onStart(){return this._getSettings().onStart}get onStop(){return this._getSettings().onStop}onPrepareScrollEffect(){let t=this._draggable._updateId;X.off(O,t),X.off(A,t),this._draggable._preparePositionUpdate()}onApplyScrollEffect(){this._draggable._applyPositionUpdate()}},tX=class{constructor(t,e={}){this.name="autoscroll",this.version="0.0.2",this.settings=this._parseSettings(e),this._autoScrollProxy=null,t.on("start",()=>{this._autoScrollProxy||(this._autoScrollProxy=new tA(this,t),tC.addItem(this._autoScrollProxy))}),t.on("end",()=>{this._autoScrollProxy&&(tC.removeItem(this._autoScrollProxy),this._autoScrollProxy=null)})}_parseSettings(t,e=tO()){let{targets:i=e.targets,inertAreaSize:s=e.inertAreaSize,speed:n=e.speed,smoothStop:r=e.smoothStop,getPosition:o=e.getPosition,getClientRect:a=e.getClientRect,onStart:l=e.onStart,onStop:h=e.onStop}=t||{};return{targets:i,inertAreaSize:s,speed:n,smoothStop:r,getPosition:o,getClientRect:a,onStart:l,onStop:h}}updateSettings(t={}){this.settings=this._parseSettings(t,this.settings)}},tY=new Set(["auto","scroll","overlay"]);function tK(t){let e=te(t);return!!(tY.has(e.overflowY)||tY.has(e.overflowX))}const tF=document.querySelector(".draggable"),tz=document.querySelector(".drag-container"),tN=new to([new H(tF),new G],{container:tz,getElements:()=>[tF],getFrozenProps:()=>["left","top"],startPredicate:function(t={}){let e,i=0,s=null,n,{timeout:r=250,fallback:o=()=>!0}=t,a=t=>t.preventDefault(),l=t=>{if(i){if(e){t.cancelable&&t.preventDefault();return}void 0===e&&(t.cancelable&&t.timeStamp-i>r?(e=!0,t.preventDefault()):e=!1)}};return t=>{if(!(t.sensor instanceof H))return o(t);let{draggable:h,sensor:d,event:c}=t;if("touch"===c.pointerType){if("start"===c.type&&("pointerdown"===c.srcEvent.type||"touchstart"===c.srcEvent.type)){var u;let t;let o=(s=c.target)?(t=[],tK(u=s)&&t.push(u),function(t,e=[]){let i=t?.parentNode;for(;i&&!(i instanceof Document);)i instanceof Element?(tK(i)&&e.push(i),i=i.parentNode):i=i instanceof ShadowRoot?i.host:i.parentNode;e.push(window)}(u,t),t):[];o.forEach(t=>{t.addEventListener("touchmove",l,{passive:!1,capture:!0})});let p=()=>{i&&(h.off("end",p),h.sensors.forEach(t=>{t instanceof H&&t.off("end",p)}),s?.removeEventListener("contextmenu",a),o.forEach(t=>{t.removeEventListener("touchmove",l,{capture:!0})}),i=0,e=void 0,s=null,n=void window.clearTimeout(n))};e=void 0,i=c.srcEvent.timeStamp,s?.addEventListener("contextmenu",a),h.on("end",p),h.sensors.forEach(t=>{t instanceof H&&t.off("end",p)}),r>0&&(n=window.setTimeout(()=>{h.resolveStartPredicate(d),e=!0,n=void 0},r))}return e}return"start"===c.type&&!c.srcEvent.button}}()}).use((q={targets:[{element:window,axis:"y",padding:{top:1/0,bottom:1/0}}]},t=>{let e=new tX(t,q);return t.plugins[e.name]=e,t}));tN.on("start",()=>{tF.classList.add("dragging")}),tN.on("end",()=>{tF.classList.remove("dragging")}); +//# sourceMappingURL=index.12396756.js.map diff --git a/docs/public/examples/002-draggable-autoscroll/index.12396756.js.map b/docs/public/examples/002-draggable-autoscroll/index.12396756.js.map new file mode 100644 index 0000000..073901e --- /dev/null +++ b/docs/public/examples/002-draggable-autoscroll/index.12396756.js.map @@ -0,0 +1 @@ +{"mappings":"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","sources":["","examples/002-draggable-autoscroll/index.ts","dist/dragdoll.js","node_modules/eventti/dist/eventti.js","node_modules/tikki/dist/tikki.js","node_modules/mezr/dist/esm/index.js","node_modules/mezr/dist/esm/getContainingBlock.js","node_modules/mezr/dist/esm/utils/getStyle.js","node_modules/mezr/dist/esm/utils/isContainingBlockForFixedElement.js","node_modules/mezr/dist/esm/utils/constants.js","node_modules/mezr/dist/esm/utils/isBlockElement.js","node_modules/mezr/dist/esm/utils/isContainingBlockForAbsoluteElement.js","node_modules/mezr/dist/esm/utils/isDocumentElement.js","node_modules/mezr/dist/esm/getDistance.js","node_modules/mezr/dist/esm/utils/getDistanceBetweenRects.js","node_modules/mezr/dist/esm/utils/isIntersecting.js","node_modules/mezr/dist/esm/utils/getDistanceBetweenPoints.js","node_modules/mezr/dist/esm/utils/getNormalizedRect.js","node_modules/mezr/dist/esm/getRect.js","node_modules/mezr/dist/esm/getWidth.js","node_modules/mezr/dist/esm/utils/isWindow.js","node_modules/mezr/dist/esm/utils/isDocument.js","node_modules/mezr/dist/esm/utils/getWindowWidth.js","node_modules/mezr/dist/esm/utils/getPreciseScrollbarSize.js","node_modules/mezr/dist/esm/utils/getDocumentWidth.js","node_modules/mezr/dist/esm/utils/getElementWidth.js","node_modules/mezr/dist/esm/getHeight.js","node_modules/mezr/dist/esm/utils/getWindowHeight.js","node_modules/mezr/dist/esm/utils/getDocumentHeight.js","node_modules/mezr/dist/esm/utils/getElementHeight.js","node_modules/mezr/dist/esm/getOffset.js","node_modules/mezr/dist/esm/utils/isRectObject.js","node_modules/mezr/dist/esm/utils/getOffsetFromDocument.js","node_modules/mezr/dist/esm/getIntersection.js","node_modules/mezr/dist/esm/getOffsetContainer.js","node_modules/mezr/dist/esm/getOverflow.js"],"sourcesContent":["function $882b296db6123935$var$getOrCreateEventData(e, t) {\n let i = e.get(t);\n return i || (i = new $882b296db6123935$var$EventData, e.set(t, i)), i;\n}\nclass $882b296db6123935$var$EventData {\n constructor(){\n this.idMap = new Map, this.fnMap = new Map, this.onceList = new Set, this.emitList = null;\n }\n add(e, t, i, s, n) {\n if (!n && this.fnMap.has(e)) throw new Error(\"Emitter: tried to add an existing event listener to an event!\");\n if (this.idMap.has(i)) switch(s){\n case \"throw\":\n throw new Error(\"Emitter: tried to add an existing event listener id to an event!\");\n case \"ignore\":\n return i;\n default:\n this.delId(i, \"update\" === s);\n }\n let r = this.fnMap.get(e);\n return r || (r = new Set, this.fnMap.set(e, r)), r.add(i), this.idMap.set(i, e), t && this.onceList.add(i), this.emitList && this.emitList.push(e), i;\n }\n delId(e, t = !1) {\n const i = this.idMap.get(e);\n if (!i) return;\n const s = this.fnMap.get(i);\n t || this.idMap.delete(e), this.onceList.delete(e), s.delete(e), s.size || this.fnMap.delete(i), this.emitList = null;\n }\n delFn(e) {\n const t = this.fnMap.get(e);\n t && (t.forEach((e)=>{\n this.onceList.delete(e), this.idMap.delete(e);\n }), this.fnMap.delete(e), this.emitList = null);\n }\n}\nclass $882b296db6123935$export$4293555f241ae35a {\n constructor(e = {}){\n const { idDedupeMode: t = \"replace\", allowDuplicateListeners: i = !0 } = e;\n this.idDedupeMode = t, this.allowDuplicateListeners = i, this._events = new Map;\n }\n _getListeners(e) {\n const t = this._events.get(e);\n if (!t) return null;\n const { idMap: i, onceList: s } = t;\n if (!i.size) return null;\n const n = t.emitList || [\n ...i.values()\n ];\n if (s.size) {\n if (s.size === i.size) this._events.delete(e);\n else for (const e of s)t.delId(e);\n } else t.emitList = n;\n return n;\n }\n on(e, t, i = Symbol()) {\n return $882b296db6123935$var$getOrCreateEventData(this._events, e).add(t, !1, i, this.idDedupeMode, this.allowDuplicateListeners);\n }\n once(e, t, i = Symbol()) {\n return $882b296db6123935$var$getOrCreateEventData(this._events, e).add(t, !0, i, this.idDedupeMode, this.allowDuplicateListeners);\n }\n off(e, t) {\n if (void 0 === e) return void this._events.clear();\n if (void 0 === t) return void this._events.delete(e);\n const i = this._events.get(e);\n i && (\"function\" == typeof t ? i.delFn(t) : i.delId(t), i.idMap.size || this._events.delete(e));\n }\n emit(e, ...t) {\n const i = this._getListeners(e);\n if (!i) return;\n let s = 0, n = i.length;\n for(; s < n; s++)i[s](...t);\n }\n listenerCount(e) {\n var t;\n if (void 0 === e) {\n let e = 0;\n return this._events.forEach((t, i)=>{\n e += this.listenerCount(i);\n }), e;\n }\n return (null === (t = this._events.get(e)) || void 0 === t ? void 0 : t.idMap.size) || 0;\n }\n}\n\n\n\nfunction $df4a713e26511813$export$789135d3cf084551(e = 60) {\n if (\"function\" == typeof requestAnimationFrame && \"function\" == typeof cancelAnimationFrame) return (e)=>{\n const t = requestAnimationFrame(e);\n return ()=>cancelAnimationFrame(t);\n };\n {\n const t = 1e3 / e, i = \"undefined\" == typeof performance ? ()=>Date.now() : ()=>performance.now();\n return (e)=>{\n const r = setTimeout(()=>e(i()), t);\n return ()=>clearTimeout(r);\n };\n }\n}\nvar $df4a713e26511813$export$ef9b1dc363f184d9;\n!function(e) {\n e[e.PAUSED = 1] = \"PAUSED\", e[e.ON_DEMAND = 2] = \"ON_DEMAND\", e[e.CONTINUOUS = 3] = \"CONTINUOUS\";\n}($df4a713e26511813$export$ef9b1dc363f184d9 || ($df4a713e26511813$export$ef9b1dc363f184d9 = {}));\nclass $df4a713e26511813$export$39c54bcc89dcee11 {\n constructor(e = {}){\n const { phases: t = [], autoTick: i = $df4a713e26511813$export$ef9b1dc363f184d9.ON_DEMAND, allowDuplicateListeners: r = !0, idDedupeMode: s = \"replace\", requestFrame: n = $df4a713e26511813$export$789135d3cf084551() } = e;\n this.phases = t, this._autoTick = i, this._requestFrame = n, this._cancelFrame = null, this._queue = [], this._emitter = new (0, $882b296db6123935$export$4293555f241ae35a)({\n allowDuplicateListeners: r,\n idDedupeMode: s\n }), this.tick = this.tick.bind(this);\n }\n get requestFrame() {\n return this._requestFrame;\n }\n set requestFrame(e) {\n this._requestFrame = e, this._kickstart();\n }\n get autoTick() {\n return this._autoTick;\n }\n set autoTick(e) {\n this._autoTick = e, this._kickstart();\n }\n get allowDuplicateListeners() {\n return this._emitter.allowDuplicateListeners;\n }\n set allowDuplicateListeners(e) {\n this._emitter.allowDuplicateListeners = e;\n }\n get idDedupeMode() {\n return this._emitter.idDedupeMode;\n }\n set idDedupeMode(e) {\n this._emitter.idDedupeMode = e;\n }\n tick(...e) {\n this._cancelFrame = null;\n const { _queue: t } = this;\n if (t.length) throw new Error(\"Ticker: Can't tick before the previous tick has finished!\");\n this._request();\n const { phases: i, _emitter: r } = this;\n let s, n, a, c, u, o;\n for(s = 0, a = i.length; s < a; s++)o = r._getListeners(i[s]), o && t.push(o);\n for(s = 0, a = t.length; s < a; s++)for(u = t[s], n = 0, c = u.length; n < c; n++)u[n](...e);\n t.length = 0, this._autoTick !== $df4a713e26511813$export$ef9b1dc363f184d9.ON_DEMAND || r.listenerCount() || this._cancel();\n }\n on(e, t, i) {\n const r = this._emitter.on(e, t, i);\n return this._request(), r;\n }\n once(e, t, i) {\n const r = this._emitter.once(e, t, i);\n return this._request(), r;\n }\n off(e, t) {\n return this._emitter.off(e, t);\n }\n listenerCount(e) {\n return this._emitter.listenerCount(e);\n }\n _request() {\n this._requestFrame && !this._cancelFrame && this._autoTick >= $df4a713e26511813$export$ef9b1dc363f184d9.ON_DEMAND && (this._cancelFrame = this._requestFrame(this.tick));\n }\n _cancel() {\n this._cancelFrame && (this._cancelFrame(), this._cancelFrame = null);\n }\n _kickstart() {\n this._autoTick === $df4a713e26511813$export$ef9b1dc363f184d9.ON_DEMAND ? this._emitter.listenerCount() && this._request() : this._autoTick === $df4a713e26511813$export$ef9b1dc363f184d9.CONTINUOUS ? this._request() : this._cancel();\n }\n}\nfunction $df4a713e26511813$export$4d497fac909c98f0(e) {\n return (t)=>{\n const i = e.requestAnimationFrame(t);\n return ()=>e.cancelAnimationFrame(i);\n };\n}\n\n\nconst $45554ebda029bd05$var$STYLE_DECLARATION_CACHE = new WeakMap;\nfunction $45554ebda029bd05$export$3d2f074408bd1b82(e, t) {\n if (t) return window.getComputedStyle(e, t);\n let C = $45554ebda029bd05$var$STYLE_DECLARATION_CACHE.get(e)?.deref();\n return C || (C = window.getComputedStyle(e, null), $45554ebda029bd05$var$STYLE_DECLARATION_CACHE.set(e, new WeakRef(C))), C;\n}\n\n\nconst $70e6b31ea6202e28$export$e44ffb50cc242ec5 = \"undefined\" != typeof window && void 0 !== window.document;\nconst $70e6b31ea6202e28$export$af54264dae9065e6 = !!($70e6b31ea6202e28$export$e44ffb50cc242ec5 && navigator.vendor && navigator.vendor.indexOf(\"Apple\") > -1 && navigator.userAgent && -1 == navigator.userAgent.indexOf(\"CriOS\") && -1 == navigator.userAgent.indexOf(\"FxiOS\"));\nconst $70e6b31ea6202e28$export$11fd24d838ebde87 = {\n content: \"content\",\n padding: \"padding\",\n scrollbar: \"scrollbar\",\n border: \"border\",\n margin: \"margin\"\n};\nconst $70e6b31ea6202e28$export$76e909bcfd8ba196 = {\n [$70e6b31ea6202e28$export$11fd24d838ebde87.content]: !1,\n [$70e6b31ea6202e28$export$11fd24d838ebde87.padding]: !1,\n [$70e6b31ea6202e28$export$11fd24d838ebde87.scrollbar]: !0,\n [$70e6b31ea6202e28$export$11fd24d838ebde87.border]: !0,\n [$70e6b31ea6202e28$export$11fd24d838ebde87.margin]: !0\n};\nconst $70e6b31ea6202e28$export$d2ad2856e215d28e = new Set([\n \"auto\",\n \"scroll\"\n]);\nconst $70e6b31ea6202e28$export$cd414719242f618c = (()=>{\n try {\n return window.navigator.userAgentData.brands.some(({ brand: n })=>\"Chromium\" === n);\n } catch (n) {\n return !1;\n }\n})();\n\n\n\n\nfunction $ac4a87157cb8fded$export$fab73c3646bf1f5e(e) {\n switch((0, $45554ebda029bd05$export$3d2f074408bd1b82)(e).display){\n case \"none\":\n return null;\n case \"inline\":\n case \"contents\":\n return !1;\n default:\n return !0;\n }\n}\n\n\nfunction $19cb8cdbc5921691$export$e5ce114ae0e5f4e8(n) {\n const t = (0, $45554ebda029bd05$export$3d2f074408bd1b82)(n);\n if (!(0, $70e6b31ea6202e28$export$af54264dae9065e6)) {\n const { filter: n } = t;\n if (n && \"none\" !== n) return !0;\n const { backdropFilter: e } = t;\n if (e && \"none\" !== e) return !0;\n const { willChange: i } = t;\n if (i && (i.indexOf(\"filter\") > -1 || i.indexOf(\"backdrop-filter\") > -1)) return !0;\n }\n const e = (0, $ac4a87157cb8fded$export$fab73c3646bf1f5e)(n);\n if (!e) return e;\n const { transform: i } = t;\n if (i && \"none\" !== i) return !0;\n const { perspective: r } = t;\n if (r && \"none\" !== r) return !0;\n const { contentVisibility: o } = t;\n if (o && \"auto\" === o) return !0;\n const { contain: f } = t;\n if (f && (\"strict\" === f || \"content\" === f || f.indexOf(\"paint\") > -1 || f.indexOf(\"layout\") > -1)) return !0;\n const { willChange: c } = t;\n return !(!c || !(c.indexOf(\"transform\") > -1 || c.indexOf(\"perspective\") > -1 || c.indexOf(\"contain\") > -1)) || !!((0, $70e6b31ea6202e28$export$af54264dae9065e6) && c && c.indexOf(\"filter\") > -1);\n}\n\n\n\n\nfunction $ea1829f02863f9a1$export$996cb64f2dabb66f(t) {\n return \"static\" !== (0, $45554ebda029bd05$export$3d2f074408bd1b82)(t).position || (0, $19cb8cdbc5921691$export$e5ce114ae0e5f4e8)(t);\n}\n\n\n\nfunction $8d1ba90c23ec3360$export$d8a62a489b442872(e) {\n return e instanceof HTMLHtmlElement;\n}\n\n\nfunction $1f38751365ebdabf$export$940d8225183e1404(e, t = {}) {\n if ((0, $8d1ba90c23ec3360$export$d8a62a489b442872)(e)) return e.ownerDocument.defaultView;\n const n = t.position || (0, $45554ebda029bd05$export$3d2f074408bd1b82)(e).position, { skipDisplayNone: i, container: o } = t;\n switch(n){\n case \"static\":\n case \"relative\":\n case \"sticky\":\n case \"-webkit-sticky\":\n {\n let t = o || e.parentElement;\n for(; t;){\n const e = (0, $ac4a87157cb8fded$export$fab73c3646bf1f5e)(t);\n if (e) return t;\n if (null === e && !i) return null;\n t = t.parentElement;\n }\n return e.ownerDocument.documentElement;\n }\n case \"absolute\":\n case \"fixed\":\n {\n const t = \"fixed\" === n;\n let l = o || e.parentElement;\n for(; l;){\n const e = t ? (0, $19cb8cdbc5921691$export$e5ce114ae0e5f4e8)(l) : (0, $ea1829f02863f9a1$export$996cb64f2dabb66f)(l);\n if (!0 === e) return l;\n if (null === e && !i) return null;\n l = l.parentElement;\n }\n return e.ownerDocument.defaultView;\n }\n default:\n return null;\n }\n}\n\n\nfunction $15174ae68f2a890f$export$8d3dd0be5eb9f11f(t, e) {\n return !(t.left + t.width <= e.left || e.left + e.width <= t.left || t.top + t.height <= e.top || e.top + e.height <= t.top);\n}\n\n\nfunction $6473c4721ef9a7f0$export$53137579a3174918(t, e, n, o) {\n return Math.sqrt(Math.pow(n - t, 2) + Math.pow(o - e, 2));\n}\n\n\nfunction $1565a77b3ba33365$export$2d670be792dba464(t, e) {\n if ((0, $15174ae68f2a890f$export$8d3dd0be5eb9f11f)(t, e)) return null;\n const n = t.left + t.width, i = t.top + t.height, o = e.left + e.width, s = e.top + e.height;\n return n <= e.left ? i <= e.top ? (0, $6473c4721ef9a7f0$export$53137579a3174918)(n, i, e.left, e.top) : t.top >= s ? (0, $6473c4721ef9a7f0$export$53137579a3174918)(n, t.top, e.left, s) : e.left - n : t.left >= o ? i <= e.top ? (0, $6473c4721ef9a7f0$export$53137579a3174918)(t.left, i, o, e.top) : t.top >= s ? (0, $6473c4721ef9a7f0$export$53137579a3174918)(t.left, t.top, o, s) : t.left - o : i <= e.top ? e.top - i : t.top - s;\n}\n\n\n\nfunction $0dd5d633d9254ede$export$5a096129d439f843(n) {\n return n instanceof Window;\n}\n\n\nfunction $88986006632f0ab8$export$62858bae88b53fd0(n) {\n return n instanceof Document;\n}\n\n\n\n\nconst $9a36d0396b9b09d4$var$SUBPIXEL_OFFSET = new Map;\nlet $9a36d0396b9b09d4$var$testStyleElement = null, $9a36d0396b9b09d4$var$testParentElement = null, $9a36d0396b9b09d4$var$testChildElement = null;\nfunction $9a36d0396b9b09d4$var$getSubpixelScrollbarSize(t, e) {\n const n = t.split(\".\");\n let l = $9a36d0396b9b09d4$var$SUBPIXEL_OFFSET.get(n[1]);\n if (void 0 === l) {\n $9a36d0396b9b09d4$var$testStyleElement || ($9a36d0396b9b09d4$var$testStyleElement = document.createElement(\"style\")), $9a36d0396b9b09d4$var$testStyleElement.innerHTML = `\\n #mezr-scrollbar-test::-webkit-scrollbar {\\n width: ${t} !important;\\n }\\n `, $9a36d0396b9b09d4$var$testParentElement && $9a36d0396b9b09d4$var$testChildElement || ($9a36d0396b9b09d4$var$testParentElement = document.createElement(\"div\"), $9a36d0396b9b09d4$var$testChildElement = document.createElement(\"div\"), $9a36d0396b9b09d4$var$testParentElement.appendChild($9a36d0396b9b09d4$var$testChildElement), $9a36d0396b9b09d4$var$testParentElement.id = \"mezr-scrollbar-test\", $9a36d0396b9b09d4$var$testParentElement.style.cssText = \"\\n all: unset !important;\\n position: fixed !important;\\n top: -200px !important;\\n left: 0px !important;\\n width: 100px !important;\\n height: 100px !important;\\n overflow: scroll !important;\\n pointer-events: none !important;\\n visibility: hidden !important;\\n \", $9a36d0396b9b09d4$var$testChildElement.style.cssText = \"\\n all: unset !important;\\n position: absolute !important;\\n inset: 0 !important;\\n \"), document.body.appendChild($9a36d0396b9b09d4$var$testStyleElement), document.body.appendChild($9a36d0396b9b09d4$var$testParentElement);\n l = $9a36d0396b9b09d4$var$testParentElement.getBoundingClientRect().width - $9a36d0396b9b09d4$var$testChildElement.getBoundingClientRect().width - e, $9a36d0396b9b09d4$var$SUBPIXEL_OFFSET.set(n[1], l), document.body.removeChild($9a36d0396b9b09d4$var$testParentElement), document.body.removeChild($9a36d0396b9b09d4$var$testStyleElement);\n }\n return e + l;\n}\nfunction $9a36d0396b9b09d4$export$5ad86f4734d24a64(t, e, n) {\n if (n <= 0) return 0;\n if (0, $70e6b31ea6202e28$export$cd414719242f618c) {\n const n = (0, $45554ebda029bd05$export$3d2f074408bd1b82)(t, \"::-webkit-scrollbar\"), l = \"x\" === e ? n.height : n.width, i = parseFloat(l);\n if (!Number.isNaN(i) && !Number.isInteger(i)) return $9a36d0396b9b09d4$var$getSubpixelScrollbarSize(l, i);\n }\n return n;\n}\n\n\nfunction $9bae4574eed9d865$export$91cf85d6c980faa0(e, r = !1) {\n if (r) return e.innerWidth;\n const { innerWidth: t, document: i } = e, { documentElement: n } = i, { clientWidth: c } = n;\n return t - (0, $9a36d0396b9b09d4$export$5ad86f4734d24a64)(n, \"y\", t - c);\n}\n\n\nfunction $50cb9a0c1dee19de$export$a76b7f4aaec6cdf4({ documentElement: t }) {\n return Math.max(t.scrollWidth, t.clientWidth, t.getBoundingClientRect().width);\n}\n\n\n\n\n\n\nfunction $f1039b87670ca1f4$export$742d7f6cc44470f1(t, e = (0, $70e6b31ea6202e28$export$11fd24d838ebde87).border) {\n let { width: r } = t.getBoundingClientRect();\n if (e === (0, $70e6b31ea6202e28$export$11fd24d838ebde87).border) return r;\n const o = (0, $45554ebda029bd05$export$3d2f074408bd1b82)(t);\n return e === (0, $70e6b31ea6202e28$export$11fd24d838ebde87).margin ? (r += Math.max(0, parseFloat(o.marginLeft) || 0), r += Math.max(0, parseFloat(o.marginRight) || 0), r) : (r -= parseFloat(o.borderLeftWidth) || 0, r -= parseFloat(o.borderRightWidth) || 0, e === (0, $70e6b31ea6202e28$export$11fd24d838ebde87).scrollbar ? r : (!(0, $8d1ba90c23ec3360$export$d8a62a489b442872)(t) && (0, $70e6b31ea6202e28$export$d2ad2856e215d28e).has(o.overflowY) && (r -= (0, $9a36d0396b9b09d4$export$5ad86f4734d24a64)(t, \"y\", Math.round(r) - t.clientWidth)), e === (0, $70e6b31ea6202e28$export$11fd24d838ebde87).padding || (r -= parseFloat(o.paddingLeft) || 0, r -= parseFloat(o.paddingRight) || 0), r));\n}\n\n\nfunction $2e59c48b8f000a71$export$3c49c185de0c2bfc(t, i = (0, $70e6b31ea6202e28$export$11fd24d838ebde87).border) {\n return (0, $0dd5d633d9254ede$export$5a096129d439f843)(t) ? (0, $9bae4574eed9d865$export$91cf85d6c980faa0)(t, (0, $70e6b31ea6202e28$export$76e909bcfd8ba196)[i]) : (0, $88986006632f0ab8$export$62858bae88b53fd0)(t) ? (0, $50cb9a0c1dee19de$export$a76b7f4aaec6cdf4)(t) : (0, $f1039b87670ca1f4$export$742d7f6cc44470f1)(t, i);\n}\n\n\n\n\n\n\nfunction $421143bc1c1515a1$export$a3648dbc3769cbf4(e, r = !1) {\n if (r) return e.innerHeight;\n const { innerHeight: t, document: i } = e, { documentElement: n } = i, { clientHeight: c } = n;\n return t - (0, $9a36d0396b9b09d4$export$5ad86f4734d24a64)(n, \"x\", t - c);\n}\n\n\nfunction $8e302b6d23f55757$export$5806f5d4b3eb6a6a({ documentElement: t }) {\n return Math.max(t.scrollHeight, t.clientHeight, t.getBoundingClientRect().height);\n}\n\n\n\n\n\n\nfunction $598de259e69a6df4$export$8e0f1520ce23a388(t, e = (0, $70e6b31ea6202e28$export$11fd24d838ebde87).border) {\n let { height: r } = t.getBoundingClientRect();\n if (e === (0, $70e6b31ea6202e28$export$11fd24d838ebde87).border) return r;\n const o = (0, $45554ebda029bd05$export$3d2f074408bd1b82)(t);\n return e === (0, $70e6b31ea6202e28$export$11fd24d838ebde87).margin ? (r += Math.max(0, parseFloat(o.marginTop) || 0), r += Math.max(0, parseFloat(o.marginBottom) || 0), r) : (r -= parseFloat(o.borderTopWidth) || 0, r -= parseFloat(o.borderBottomWidth) || 0, e === (0, $70e6b31ea6202e28$export$11fd24d838ebde87).scrollbar ? r : (!(0, $8d1ba90c23ec3360$export$d8a62a489b442872)(t) && (0, $70e6b31ea6202e28$export$d2ad2856e215d28e).has(o.overflowX) && (r -= (0, $9a36d0396b9b09d4$export$5ad86f4734d24a64)(t, \"x\", Math.round(r) - t.clientHeight)), e === (0, $70e6b31ea6202e28$export$11fd24d838ebde87).padding || (r -= parseFloat(o.paddingTop) || 0, r -= parseFloat(o.paddingBottom) || 0), r));\n}\n\n\nfunction $646cecfa59ec4923$export$c08559766941f856(t, e = (0, $70e6b31ea6202e28$export$11fd24d838ebde87).border) {\n return (0, $0dd5d633d9254ede$export$5a096129d439f843)(t) ? (0, $421143bc1c1515a1$export$a3648dbc3769cbf4)(t, (0, $70e6b31ea6202e28$export$76e909bcfd8ba196)[e]) : (0, $88986006632f0ab8$export$62858bae88b53fd0)(t) ? (0, $8e302b6d23f55757$export$5806f5d4b3eb6a6a)(t) : (0, $598de259e69a6df4$export$8e0f1520ce23a388)(t, e);\n}\n\n\nfunction $4de8edd731addea8$export$ff047630cae37d8e(t) {\n return t?.constructor === Object;\n}\n\n\n\n\n\n\n\nfunction $faeeed2de97ac6f7$export$9f1480883798e819(t, o = (0, $70e6b31ea6202e28$export$11fd24d838ebde87).border) {\n const e = {\n left: 0,\n top: 0\n };\n if ((0, $88986006632f0ab8$export$62858bae88b53fd0)(t)) return e;\n if ((0, $0dd5d633d9254ede$export$5a096129d439f843)(t)) return e.left += t.scrollX || 0, e.top += t.scrollY || 0, e;\n const r = t.ownerDocument.defaultView;\n r && (e.left += r.scrollX || 0, e.top += r.scrollY || 0);\n const n = t.getBoundingClientRect();\n if (e.left += n.left, e.top += n.top, o === (0, $70e6b31ea6202e28$export$11fd24d838ebde87).border) return e;\n const l = (0, $45554ebda029bd05$export$3d2f074408bd1b82)(t);\n return o === (0, $70e6b31ea6202e28$export$11fd24d838ebde87).margin ? (e.left -= Math.max(0, parseFloat(l.marginLeft) || 0), e.top -= Math.max(0, parseFloat(l.marginTop) || 0), e) : (e.left += parseFloat(l.borderLeftWidth) || 0, e.top += parseFloat(l.borderTopWidth) || 0, o === (0, $70e6b31ea6202e28$export$11fd24d838ebde87).scrollbar || o === (0, $70e6b31ea6202e28$export$11fd24d838ebde87).padding || (e.left += parseFloat(l.paddingLeft) || 0, e.top += parseFloat(l.paddingTop) || 0), e);\n}\n\n\nfunction $d927f435c3d7e8ab$export$622cea445a1c5b7d(t, e) {\n const o = (0, $4de8edd731addea8$export$ff047630cae37d8e)(t) ? {\n left: t.left,\n top: t.top\n } : Array.isArray(t) ? (0, $faeeed2de97ac6f7$export$9f1480883798e819)(...t) : (0, $faeeed2de97ac6f7$export$9f1480883798e819)(t);\n if (e && !(0, $88986006632f0ab8$export$62858bae88b53fd0)(e)) {\n const t = (0, $4de8edd731addea8$export$ff047630cae37d8e)(e) ? e : Array.isArray(e) ? (0, $faeeed2de97ac6f7$export$9f1480883798e819)(e[0], e[1]) : (0, $faeeed2de97ac6f7$export$9f1480883798e819)(e);\n o.left -= t.left, o.top -= t.top;\n }\n return o;\n}\n\n\n\nfunction $4fec7741c67a29fc$export$4b834cebd9e5cebe(t, e) {\n let i = 0, g = 0;\n (0, $4de8edd731addea8$export$ff047630cae37d8e)(t) ? (i = t.width, g = t.height) : Array.isArray(t) ? (i = (0, $2e59c48b8f000a71$export$3c49c185de0c2bfc)(...t), g = (0, $646cecfa59ec4923$export$c08559766941f856)(...t)) : (i = (0, $2e59c48b8f000a71$export$3c49c185de0c2bfc)(t), g = (0, $646cecfa59ec4923$export$c08559766941f856)(t));\n const r = (0, $d927f435c3d7e8ab$export$622cea445a1c5b7d)(t, e);\n return {\n width: i,\n height: g,\n ...r,\n right: r.left + i,\n bottom: r.top + g\n };\n}\n\n\n\nfunction $3fe9db1ad94d3e7c$export$e4e616e82e79ab9d(t) {\n return (0, $4de8edd731addea8$export$ff047630cae37d8e)(t) ? t : (0, $4fec7741c67a29fc$export$4b834cebd9e5cebe)(t);\n}\n\n\nfunction $2a599c00d4ed99d6$export$79376507b09a66f(e, t) {\n const c = (0, $3fe9db1ad94d3e7c$export$e4e616e82e79ab9d)(e), i = (0, $3fe9db1ad94d3e7c$export$e4e616e82e79ab9d)(t);\n return (0, $1565a77b3ba33365$export$2d670be792dba464)(c, i);\n}\n\n\n\n\nfunction $e931ad6985aacff5$export$72209efa88586d42(t, ...e) {\n const o = {\n ...(0, $3fe9db1ad94d3e7c$export$e4e616e82e79ab9d)(t),\n right: 0,\n bottom: 0\n };\n for (const t of e){\n const e = (0, $3fe9db1ad94d3e7c$export$e4e616e82e79ab9d)(t), i = Math.max(o.left, e.left), h = Math.min(o.left + o.width, e.left + e.width);\n if (h <= i) return null;\n const r = Math.max(o.top, e.top), l = Math.min(o.top + o.height, e.height + e.top);\n if (l <= r) return null;\n o.left = i, o.top = r, o.width = h - i, o.height = l - r;\n }\n return o.right = o.left + o.width, o.bottom = o.top + o.height, o;\n}\n\n\n\n\n\n\nfunction $4effe6f7501c7f59$export$243d7fadef466e38(n, t = {}) {\n const i = (0, $45554ebda029bd05$export$3d2f074408bd1b82)(n), { display: o } = i;\n if (\"none\" === o || \"contents\" === o) return null;\n const e = t.position || (0, $45554ebda029bd05$export$3d2f074408bd1b82)(n).position, { skipDisplayNone: s, container: r } = t;\n switch(e){\n case \"relative\":\n return n;\n case \"fixed\":\n return (0, $1f38751365ebdabf$export$940d8225183e1404)(n, {\n container: r,\n position: e,\n skipDisplayNone: s\n });\n case \"absolute\":\n {\n const t = (0, $1f38751365ebdabf$export$940d8225183e1404)(n, {\n container: r,\n position: e,\n skipDisplayNone: s\n });\n return (0, $0dd5d633d9254ede$export$5a096129d439f843)(t) ? n.ownerDocument : t;\n }\n default:\n return null;\n }\n}\n\n\n\nfunction $28b6730affddb905$export$f63a1e5ecde5e3c4(t, e) {\n const o = (0, $3fe9db1ad94d3e7c$export$e4e616e82e79ab9d)(t), i = (0, $3fe9db1ad94d3e7c$export$e4e616e82e79ab9d)(e);\n return {\n left: i.left - o.left,\n right: o.left + o.width - (i.left + i.width),\n top: i.top - o.top,\n bottom: o.top + o.height - (i.top + i.height)\n };\n}\n\n\n\n\n\n\nvar $ac6f441b4b448e14$export$61fde4a8bbe7f5d5 = {\n start: \"start\",\n move: \"move\",\n cancel: \"cancel\",\n end: \"end\",\n destroy: \"destroy\"\n};\nvar $ac6f441b4b448e14$export$2176a6ff266bf511 = class {\n constructor(){\n this.drag = null, this.isDestroyed = !1, this._emitter = new (0, $882b296db6123935$export$4293555f241ae35a);\n }\n _createDragData(e) {\n return {\n x: e.x,\n y: e.y\n };\n }\n _updateDragData(e) {\n this.drag && (this.drag.x = e.x, this.drag.y = e.y);\n }\n _resetDragData() {\n this.drag = null;\n }\n _start(e) {\n this.isDestroyed || this.drag || (this.drag = this._createDragData(e), this._emitter.emit($ac6f441b4b448e14$export$61fde4a8bbe7f5d5.start, e));\n }\n _move(e) {\n this.drag && (this._updateDragData(e), this._emitter.emit($ac6f441b4b448e14$export$61fde4a8bbe7f5d5.move, e));\n }\n _end(e) {\n this.drag && (this._updateDragData(e), this._emitter.emit($ac6f441b4b448e14$export$61fde4a8bbe7f5d5.end, e), this._resetDragData());\n }\n _cancel(e) {\n this.drag && (this._updateDragData(e), this._emitter.emit($ac6f441b4b448e14$export$61fde4a8bbe7f5d5.cancel, e), this._resetDragData());\n }\n on(e, t, n) {\n return this._emitter.on(e, t, n);\n }\n off(e, t) {\n this._emitter.off(e, t);\n }\n cancel() {\n this.drag && (this._emitter.emit($ac6f441b4b448e14$export$61fde4a8bbe7f5d5.cancel, {\n type: $ac6f441b4b448e14$export$61fde4a8bbe7f5d5.cancel,\n x: this.drag.x,\n y: this.drag.y\n }), this._resetDragData());\n }\n destroy() {\n this.isDestroyed || (this.isDestroyed = !0, this.cancel(), this._emitter.emit($ac6f441b4b448e14$export$61fde4a8bbe7f5d5.destroy, {\n type: $ac6f441b4b448e14$export$61fde4a8bbe7f5d5.destroy\n }), this._emitter.off());\n }\n};\nvar $ac6f441b4b448e14$export$9138efc7ba4fca22 = Symbol(), $ac6f441b4b448e14$export$5fd1e257088db342 = Symbol(), $ac6f441b4b448e14$export$e94d57566be028aa = new (0, $df4a713e26511813$export$39c54bcc89dcee11)({\n phases: [\n $ac6f441b4b448e14$export$9138efc7ba4fca22,\n $ac6f441b4b448e14$export$5fd1e257088db342\n ]\n});\nfunction $ac6f441b4b448e14$export$9bc58717d06262f5(i, e, t) {\n $ac6f441b4b448e14$export$9138efc7ba4fca22 = e, $ac6f441b4b448e14$export$5fd1e257088db342 = t, $ac6f441b4b448e14$export$e94d57566be028aa = i;\n}\nvar $ac6f441b4b448e14$export$2f0ad9ba2f0800d = class extends $ac6f441b4b448e14$export$2176a6ff266bf511 {\n constructor(){\n super();\n this.drag = null, this._direction = {\n x: 0,\n y: 0\n }, this._speed = 0, this._tick = this._tick.bind(this);\n }\n _createDragData(t) {\n return {\n ...super._createDragData(t),\n time: 0,\n deltaTime: 0\n };\n }\n _start(t) {\n this.isDestroyed || this.drag || (super._start(t), $ac6f441b4b448e14$export$e94d57566be028aa.on($ac6f441b4b448e14$export$9138efc7ba4fca22, this._tick));\n }\n _end(t) {\n this.drag && ($ac6f441b4b448e14$export$e94d57566be028aa.off($ac6f441b4b448e14$export$9138efc7ba4fca22, this._tick), super._end(t));\n }\n _cancel(t) {\n this.drag && ($ac6f441b4b448e14$export$e94d57566be028aa.off($ac6f441b4b448e14$export$9138efc7ba4fca22, this._tick), super._cancel(t));\n }\n _tick(t) {\n if (this.drag) {\n if (t && this.drag.time) {\n this.drag.deltaTime = t - this.drag.time, this.drag.time = t;\n let n = {\n type: \"tick\",\n time: this.drag.time,\n deltaTime: this.drag.deltaTime\n };\n if (this._emitter.emit(\"tick\", n), !this.drag) return;\n let r = this._speed * (this.drag.deltaTime / 1e3), s = this._direction.x * r, o = this._direction.y * r;\n (s || o) && this._move({\n type: \"move\",\n x: this.drag.x + s,\n y: this.drag.y + o\n });\n } else this.drag.time = t, this.drag.deltaTime = 0;\n }\n }\n};\nfunction $ac6f441b4b448e14$var$de(i, e) {\n if (\"pointerId\" in i) return i.pointerId === e ? i : null;\n if (\"changedTouches\" in i) {\n let t = 0;\n for(; t < i.changedTouches.length; t++)if (i.changedTouches[t].identifier === e) return i.changedTouches[t];\n return null;\n }\n return i;\n}\nfunction $ac6f441b4b448e14$var$Re(i) {\n return \"pointerType\" in i ? i.pointerType : \"touches\" in i ? \"touch\" : \"mouse\";\n}\nfunction $ac6f441b4b448e14$var$Me(i) {\n return \"pointerId\" in i ? i.pointerId : \"changedTouches\" in i ? i.changedTouches[0] ? i.changedTouches[0].identifier : null : -1;\n}\nvar $ac6f441b4b448e14$var$he = typeof window < \"u\" && typeof window.document < \"u\", $ac6f441b4b448e14$var$J = (()=>{\n let i = !1;\n try {\n let e = Object.defineProperty({}, \"passive\", {\n get: function() {\n i = !0;\n }\n });\n window.addEventListener(\"testPassive\", null, e), window.removeEventListener(\"testPassive\", null, e);\n } catch {}\n return i;\n})(), $ac6f441b4b448e14$var$Oe = $ac6f441b4b448e14$var$he && \"ontouchstart\" in window, $ac6f441b4b448e14$var$We = $ac6f441b4b448e14$var$he && !!window.PointerEvent, $ac6f441b4b448e14$var$Ot = !!($ac6f441b4b448e14$var$he && navigator.vendor && navigator.vendor.indexOf(\"Apple\") > -1 && navigator.userAgent && navigator.userAgent.indexOf(\"CriOS\") == -1 && navigator.userAgent.indexOf(\"FxiOS\") == -1);\nfunction $ac6f441b4b448e14$var$me(i = {}) {\n let { capture: e = !0, passive: t = !0 } = i;\n return $ac6f441b4b448e14$var$J ? {\n capture: e,\n passive: t\n } : {\n capture: e\n };\n}\nfunction $ac6f441b4b448e14$var$ue(i) {\n return i === \"auto\" || i === void 0 ? $ac6f441b4b448e14$var$We ? \"pointer\" : $ac6f441b4b448e14$var$Oe ? \"touch\" : \"mouse\" : i;\n}\nvar $ac6f441b4b448e14$var$it = {\n start: \"pointerdown\",\n move: \"pointermove\",\n cancel: \"pointercancel\",\n end: \"pointerup\"\n}, $ac6f441b4b448e14$var$ot = {\n start: \"touchstart\",\n move: \"touchmove\",\n cancel: \"touchcancel\",\n end: \"touchend\"\n}, $ac6f441b4b448e14$var$st = {\n start: \"mousedown\",\n move: \"mousemove\",\n cancel: \"\",\n end: \"mouseup\"\n}, $ac6f441b4b448e14$var$X = {\n pointer: $ac6f441b4b448e14$var$it,\n touch: $ac6f441b4b448e14$var$ot,\n mouse: $ac6f441b4b448e14$var$st\n}, $ac6f441b4b448e14$export$b26af955418d6638 = class {\n constructor(e, t = {}){\n let { listenerOptions: n = {}, sourceEvents: r = \"auto\", startPredicate: s = (o)=>!(\"button\" in o && o.button > 0) } = t;\n this.element = e, this.drag = null, this.isDestroyed = !1, this._areWindowListenersBound = !1, this._startPredicate = s, this._listenerOptions = $ac6f441b4b448e14$var$me(n), this._sourceEvents = $ac6f441b4b448e14$var$ue(r), this._emitter = new (0, $882b296db6123935$export$4293555f241ae35a), this._onStart = this._onStart.bind(this), this._onMove = this._onMove.bind(this), this._onCancel = this._onCancel.bind(this), this._onEnd = this._onEnd.bind(this), e.addEventListener($ac6f441b4b448e14$var$X[this._sourceEvents].start, this._onStart, this._listenerOptions);\n }\n _getTrackedPointerEventData(e) {\n return this.drag ? $ac6f441b4b448e14$var$de(e, this.drag.pointerId) : null;\n }\n _onStart(e) {\n if (this.isDestroyed || this.drag || !this._startPredicate(e)) return;\n let t = $ac6f441b4b448e14$var$Me(e);\n if (t === null) return;\n let n = $ac6f441b4b448e14$var$de(e, t);\n if (n === null) return;\n let r = {\n pointerId: t,\n pointerType: $ac6f441b4b448e14$var$Re(e),\n x: n.clientX,\n y: n.clientY\n };\n this.drag = r;\n let s = {\n ...r,\n type: $ac6f441b4b448e14$export$61fde4a8bbe7f5d5.start,\n srcEvent: e,\n target: n.target\n };\n this._emitter.emit(s.type, s), this.drag && this._bindWindowListeners();\n }\n _onMove(e) {\n if (!this.drag) return;\n let t = this._getTrackedPointerEventData(e);\n if (!t) return;\n this.drag.x = t.clientX, this.drag.y = t.clientY;\n let n = {\n type: $ac6f441b4b448e14$export$61fde4a8bbe7f5d5.move,\n srcEvent: e,\n target: t.target,\n ...this.drag\n };\n this._emitter.emit(n.type, n);\n }\n _onCancel(e) {\n if (!this.drag) return;\n let t = this._getTrackedPointerEventData(e);\n if (!t) return;\n this.drag.x = t.clientX, this.drag.y = t.clientY;\n let n = {\n type: $ac6f441b4b448e14$export$61fde4a8bbe7f5d5.cancel,\n srcEvent: e,\n target: t.target,\n ...this.drag\n };\n this._emitter.emit(n.type, n), this._resetDrag();\n }\n _onEnd(e) {\n if (!this.drag) return;\n let t = this._getTrackedPointerEventData(e);\n if (!t) return;\n this.drag.x = t.clientX, this.drag.y = t.clientY;\n let n = {\n type: $ac6f441b4b448e14$export$61fde4a8bbe7f5d5.end,\n srcEvent: e,\n target: t.target,\n ...this.drag\n };\n this._emitter.emit(n.type, n), this._resetDrag();\n }\n _bindWindowListeners() {\n if (this._areWindowListenersBound) return;\n let { move: e, end: t, cancel: n } = $ac6f441b4b448e14$var$X[this._sourceEvents];\n window.addEventListener(e, this._onMove, this._listenerOptions), window.addEventListener(t, this._onEnd, this._listenerOptions), n && window.addEventListener(n, this._onCancel, this._listenerOptions), this._areWindowListenersBound = !0;\n }\n _unbindWindowListeners() {\n if (this._areWindowListenersBound) {\n let { move: e, end: t, cancel: n } = $ac6f441b4b448e14$var$X[this._sourceEvents];\n window.removeEventListener(e, this._onMove, this._listenerOptions), window.removeEventListener(t, this._onEnd, this._listenerOptions), n && window.removeEventListener(n, this._onCancel, this._listenerOptions), this._areWindowListenersBound = !1;\n }\n }\n _resetDrag() {\n this.drag = null, this._unbindWindowListeners();\n }\n cancel() {\n if (!this.drag) return;\n let e = {\n type: $ac6f441b4b448e14$export$61fde4a8bbe7f5d5.cancel,\n srcEvent: null,\n target: null,\n ...this.drag\n };\n this._emitter.emit(e.type, e), this._resetDrag();\n }\n updateSettings(e) {\n if (this.isDestroyed) return;\n let { listenerOptions: t, sourceEvents: n, startPredicate: r } = e, s = $ac6f441b4b448e14$var$ue(n), o = $ac6f441b4b448e14$var$me(t);\n r && this._startPredicate !== r && (this._startPredicate = r), (t && (this._listenerOptions.capture !== o.capture || this._listenerOptions.passive === o.passive) || n && this._sourceEvents !== s) && (this.element.removeEventListener($ac6f441b4b448e14$var$X[this._sourceEvents].start, this._onStart, this._listenerOptions), this._unbindWindowListeners(), this.cancel(), n && (this._sourceEvents = s), t && o && (this._listenerOptions = o), this.element.addEventListener($ac6f441b4b448e14$var$X[this._sourceEvents].start, this._onStart, this._listenerOptions));\n }\n on(e, t, n) {\n return this._emitter.on(e, t, n);\n }\n off(e, t) {\n this._emitter.off(e, t);\n }\n destroy() {\n this.isDestroyed || (this.isDestroyed = !0, this.cancel(), this._emitter.emit($ac6f441b4b448e14$export$61fde4a8bbe7f5d5.destroy, {\n type: $ac6f441b4b448e14$export$61fde4a8bbe7f5d5.destroy\n }), this._emitter.off(), this.element.removeEventListener($ac6f441b4b448e14$var$X[this._sourceEvents].start, this._onStart, this._listenerOptions));\n }\n};\nvar $ac6f441b4b448e14$export$44d67f2a438aeba9 = class extends $ac6f441b4b448e14$export$2176a6ff266bf511 {\n constructor(t = {}){\n super();\n let { moveDistance: n = 25, startPredicate: r = (l)=>{\n if ((l.key === \"Enter\" || l.key === \" \") && document.activeElement && document.activeElement !== document.body) {\n let { left: a, top: d } = document.activeElement.getBoundingClientRect();\n return {\n x: a,\n y: d\n };\n }\n return null;\n }, movePredicate: s = (l, a, d)=>{\n if (!a.drag) return null;\n switch(l.key){\n case \"ArrowLeft\":\n return {\n x: a.drag.x - d.x,\n y: a.drag.y\n };\n case \"ArrowRight\":\n return {\n x: a.drag.x + d.x,\n y: a.drag.y\n };\n case \"ArrowUp\":\n return {\n x: a.drag.x,\n y: a.drag.y - d.y\n };\n case \"ArrowDown\":\n return {\n x: a.drag.x,\n y: a.drag.y + d.y\n };\n default:\n return null;\n }\n }, cancelPredicate: o = (l, a)=>a.drag && l.key === \"Escape\" ? {\n x: a.drag.x,\n y: a.drag.y\n } : null, endPredicate: c = (l, a)=>a.drag && (l.key === \"Enter\" || l.key === \" \") ? {\n x: a.drag.x,\n y: a.drag.y\n } : null } = t;\n this._moveDistance = typeof n == \"number\" ? {\n x: n,\n y: n\n } : {\n ...n\n }, this._startPredicate = r, this._movePredicate = s, this._cancelPredicate = o, this._endPredicate = c, this.cancel = this.cancel.bind(this), this._onKeyDown = this._onKeyDown.bind(this), document.addEventListener(\"keydown\", this._onKeyDown), window.addEventListener(\"blur\", this.cancel), window.addEventListener(\"visibilitychange\", this.cancel);\n }\n _onKeyDown(t) {\n if (!this.drag) {\n let o = this._startPredicate(t, this, this._moveDistance);\n o && (t.preventDefault(), this._start({\n type: \"start\",\n x: o.x,\n y: o.y,\n srcEvent: t\n }));\n return;\n }\n let n = this._cancelPredicate(t, this, this._moveDistance);\n if (n) {\n t.preventDefault(), this._cancel({\n type: \"cancel\",\n x: n.x,\n y: n.y,\n srcEvent: t\n });\n return;\n }\n let r = this._endPredicate(t, this, this._moveDistance);\n if (r) {\n t.preventDefault(), this._end({\n type: \"end\",\n x: r.x,\n y: r.y,\n srcEvent: t\n });\n return;\n }\n let s = this._movePredicate(t, this, this._moveDistance);\n if (s) {\n t.preventDefault(), this._move({\n type: \"move\",\n x: s.x,\n y: s.y,\n srcEvent: t\n });\n return;\n }\n }\n updateSettings(t = {}) {\n t.moveDistance !== void 0 && (typeof t.moveDistance == \"number\" ? (this._moveDistance.x = t.moveDistance, this._moveDistance.y = t.moveDistance) : (this._moveDistance.x = t.moveDistance.x, this._moveDistance.y = t.moveDistance.y)), t.startPredicate !== void 0 && (this._startPredicate = t.startPredicate), t.movePredicate !== void 0 && (this._movePredicate = t.movePredicate), t.cancelPredicate !== void 0 && (this._cancelPredicate = t.cancelPredicate), t.endPredicate !== void 0 && (this._endPredicate = t.endPredicate);\n }\n destroy() {\n this.isDestroyed || (super.destroy(), document.removeEventListener(\"keydown\", this._onKeyDown), window.removeEventListener(\"blur\", this.cancel), window.removeEventListener(\"visibilitychange\", this.cancel));\n }\n};\nvar $ac6f441b4b448e14$var$at = [\n \"start\",\n \"cancel\",\n \"end\",\n \"moveLeft\",\n \"moveRight\",\n \"moveUp\",\n \"moveDown\"\n];\nfunction $ac6f441b4b448e14$var$Q(i, e) {\n if (!i.size || !e.size) return 1 / 0;\n let t = 1 / 0;\n for (let n of i){\n let r = e.get(n);\n r !== void 0 && r < t && (t = r);\n }\n return t;\n}\nvar $ac6f441b4b448e14$export$436f6efcc297171 = class extends $ac6f441b4b448e14$export$2f0ad9ba2f0800d {\n constructor(t = {}){\n super();\n let { startPredicate: n = ()=>{\n if (document.activeElement) {\n let { left: y, top: g } = document.activeElement.getBoundingClientRect();\n return {\n x: y,\n y: g\n };\n }\n return null;\n }, computeSpeed: r = ()=>500, startKeys: s = [\n \" \",\n \"Enter\"\n ], moveLeftKeys: o = [\n \"ArrowLeft\"\n ], moveRightKeys: c = [\n \"ArrowRight\"\n ], moveUpKeys: l = [\n \"ArrowUp\"\n ], moveDownKeys: a = [\n \"ArrowDown\"\n ], cancelKeys: d = [\n \"Escape\"\n ], endKeys: m = [\n \" \",\n \"Enter\"\n ] } = t;\n this._computeSpeed = r, this._startPredicate = n, this._startKeys = new Set(s), this._cancelKeys = new Set(d), this._endKeys = new Set(m), this._moveLeftKeys = new Set(o), this._moveRightKeys = new Set(c), this._moveUpKeys = new Set(l), this._moveDownKeys = new Set(a), this._moveKeys = new Set([\n ...o,\n ...c,\n ...l,\n ...a\n ]), this._moveKeyTimestamps = new Map, this._onKeyDown = this._onKeyDown.bind(this), this._onKeyUp = this._onKeyUp.bind(this), this._onTick = this._onTick.bind(this), this.on(\"tick\", this._onTick), document.addEventListener(\"keydown\", this._onKeyDown), document.addEventListener(\"keyup\", this._onKeyUp), window.addEventListener(\"blur\", this.cancel), window.addEventListener(\"visibilitychange\", this.cancel);\n }\n _end(t) {\n this.drag && (this._moveKeyTimestamps.clear(), this._direction.x = 0, this._direction.y = 0, super._end(t));\n }\n _cancel(t) {\n this.drag && (this._moveKeyTimestamps.clear(), this._direction.x = 0, this._direction.y = 0, super._cancel(t));\n }\n _updateDirection() {\n let t = $ac6f441b4b448e14$var$Q(this._moveLeftKeys, this._moveKeyTimestamps), n = $ac6f441b4b448e14$var$Q(this._moveRightKeys, this._moveKeyTimestamps), r = $ac6f441b4b448e14$var$Q(this._moveUpKeys, this._moveKeyTimestamps), s = $ac6f441b4b448e14$var$Q(this._moveDownKeys, this._moveKeyTimestamps), o = t === n ? 0 : t < n ? -1 : 1, c = r === s ? 0 : r < s ? -1 : 1;\n if (!(o === 0 || c === 0)) {\n let l = 1 / (Math.sqrt(o * o + c * c) || 1);\n o *= l, c *= l;\n }\n this._direction.x = o, this._direction.y = c;\n }\n _onTick() {\n this._speed = this._computeSpeed(this);\n }\n _onKeyUp(t) {\n this._moveKeyTimestamps.get(t.key) && (this._moveKeyTimestamps.delete(t.key), this._updateDirection());\n }\n _onKeyDown(t) {\n if (!this.drag) {\n if (this._startKeys.has(t.key)) {\n let n = this._startPredicate(t, this);\n n && (t.preventDefault(), this._start({\n type: \"start\",\n x: n.x,\n y: n.y\n }));\n }\n return;\n }\n if (this._cancelKeys.has(t.key)) {\n t.preventDefault(), this._cancel({\n type: \"cancel\",\n x: this.drag.x,\n y: this.drag.y\n });\n return;\n }\n if (this._endKeys.has(t.key)) {\n t.preventDefault(), this._end({\n type: \"end\",\n x: this.drag.x,\n y: this.drag.y\n });\n return;\n }\n if (this._moveKeys.has(t.key)) {\n t.preventDefault(), this._moveKeyTimestamps.get(t.key) || (this._moveKeyTimestamps.set(t.key, Date.now()), this._updateDirection());\n return;\n }\n }\n updateSettings(t = {}) {\n let n = !1;\n if (t.startPredicate !== void 0 && (this._startPredicate = t.startPredicate), t.computeSpeed !== void 0 && (this._computeSpeed = t.computeSpeed), $ac6f441b4b448e14$var$at.forEach((r, s)=>{\n let o = `${r}Keys`, c = t[o];\n c !== void 0 && (this[`_${o}`] = new Set(c), s >= 3 && (n = !0));\n }), n) {\n let r = [\n ...this._moveLeftKeys,\n ...this._moveRightKeys,\n ...this._moveUpKeys,\n ...this._moveDownKeys\n ];\n [\n ...this._moveKeys\n ].every((o, c)=>r[c] === o) || (this._moveKeys = new Set(r), this._moveKeyTimestamps.clear(), this._updateDirection());\n }\n }\n destroy() {\n this.isDestroyed || (super.destroy(), this.off(\"tick\", this._onTick), document.removeEventListener(\"keydown\", this._onKeyDown), document.removeEventListener(\"keyup\", this._onKeyUp), window.removeEventListener(\"blur\", this.cancel), window.removeEventListener(\"visibilitychange\", this.cancel));\n }\n};\nvar $ac6f441b4b448e14$var$Z = class {\n constructor(){\n this.sensor = null, this.isEnded = !1, this.isStarted = !1, this.startEvent = null, this.nextMoveEvent = null, this.prevMoveEvent = null, this.endEvent = null, this.items = [];\n }\n};\nvar $ac6f441b4b448e14$var$ee = class {\n constructor(e, t, n, r, s){\n this.data = {}, this.element = e, this.elementContainer = t, this.elementOffsetContainer = n, this.dragContainer = r, this.dragOffsetContainer = s, this.initialTransform = \"\", this.frozenProps = null, this.unfrozenProps = null, this.x = 0, this.y = 0, this.pX = 0, this.pY = 0, this._updateDiffX = 0, this._updateDiffY = 0, this._moveDiffX = 0, this._moveDiffY = 0, this._containerDiffX = 0, this._containerDiffY = 0;\n }\n};\nfunction $ac6f441b4b448e14$var$pe(i, e, t = {\n left: 0,\n top: 0\n}) {\n if (t.left = 0, t.top = 0, i === e) return t;\n let n = (0, $d927f435c3d7e8ab$export$622cea445a1c5b7d)([\n i,\n \"padding\"\n ]), r = (0, $d927f435c3d7e8ab$export$622cea445a1c5b7d)([\n e,\n \"padding\"\n ]);\n return t.left = r.left - n.left, t.top = r.top - n.top, t;\n}\nvar $ac6f441b4b448e14$var$qe = new WeakMap;\nfunction $ac6f441b4b448e14$var$te(i) {\n let e = $ac6f441b4b448e14$var$qe.get(i)?.deref();\n return e || (e = window.getComputedStyle(i, null), $ac6f441b4b448e14$var$qe.set(i, new WeakRef(e))), e;\n}\nvar $ac6f441b4b448e14$var$ct = \"matrix(1, 0, 0, 1, 0, 0)\", $ac6f441b4b448e14$var$dt = \"matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)\", $ac6f441b4b448e14$var$Ue = $ac6f441b4b448e14$var$J ? {\n capture: !0,\n passive: !0\n} : !0, $ac6f441b4b448e14$var$ze = {\n left: 0,\n top: 0\n}, $ac6f441b4b448e14$var$fe = {\n x: 0,\n y: 0\n};\nfunction $ac6f441b4b448e14$var$ht() {\n return {\n container: null,\n startPredicate: ()=>!0,\n getElements: ()=>null,\n releaseElements: ()=>null,\n getFrozenProps: ()=>null,\n getStartPosition: ()=>({\n x: 0,\n y: 0\n }),\n setPosition: ({ item: i, x: e, y: t })=>{\n i.element.style.transform = `translate(${e}px, ${t}px) ${i.initialTransform}`;\n },\n getPositionChange: ({ event: i, prevEvent: e })=>($ac6f441b4b448e14$var$fe.x = i.x - e.x, $ac6f441b4b448e14$var$fe.y = i.y - e.y, $ac6f441b4b448e14$var$fe)\n };\n}\nvar $ac6f441b4b448e14$export$f2a139e5d18b9882 = class {\n constructor(e, t = {}){\n this.sensors = e, this.settings = this._parseSettings(t), this.plugins = {}, this.drag = null, this.isDestroyed = !1, this._sensorData = new Map, this._emitter = new (0, $882b296db6123935$export$4293555f241ae35a), this._startId = Symbol(), this._moveId = Symbol(), this._updateId = Symbol(), this._onMove = this._onMove.bind(this), this._onScroll = this._onScroll.bind(this), this._onEnd = this._onEnd.bind(this), this._prepareStart = this._prepareStart.bind(this), this._applyStart = this._applyStart.bind(this), this._prepareMove = this._prepareMove.bind(this), this._applyMove = this._applyMove.bind(this), this._preparePositionUpdate = this._preparePositionUpdate.bind(this), this._applyPositionUpdate = this._applyPositionUpdate.bind(this), this.sensors.forEach((n)=>{\n this._sensorData.set(n, {\n predicateState: 0,\n predicateEvent: null,\n onMove: (o)=>this._onMove(o, n),\n onEnd: (o)=>this._onEnd(o, n)\n });\n let { onMove: r, onEnd: s } = this._sensorData.get(n);\n n.on(\"start\", r), n.on(\"move\", r), n.on(\"cancel\", s), n.on(\"end\", s), n.on(\"destroy\", s);\n });\n }\n _parseSettings(e, t = $ac6f441b4b448e14$var$ht()) {\n let { container: n = t.container, startPredicate: r = t.startPredicate, getElements: s = t.getElements, releaseElements: o = t.releaseElements, getFrozenProps: c = t.getFrozenProps, getStartPosition: l = t.getStartPosition, setPosition: a = t.setPosition, getPositionChange: d = t.getPositionChange } = e || {};\n return {\n container: n,\n startPredicate: r,\n getElements: s,\n releaseElements: o,\n getFrozenProps: c,\n getStartPosition: l,\n setPosition: a,\n getPositionChange: d\n };\n }\n _emit(e, ...t) {\n this._emitter.emit(e, ...t);\n }\n _onMove(e, t) {\n let n = this._sensorData.get(t);\n if (n) switch(n.predicateState){\n case 0:\n {\n n.predicateEvent = e;\n let r = this.settings.startPredicate({\n draggable: this,\n sensor: t,\n event: e\n });\n r === !0 ? this.resolveStartPredicate(t) : r === !1 && this.rejectStartPredicate(t);\n break;\n }\n case 1:\n this.drag && (this.drag.nextMoveEvent = e, $ac6f441b4b448e14$export$e94d57566be028aa.once($ac6f441b4b448e14$export$9138efc7ba4fca22, this._prepareMove, this._moveId), $ac6f441b4b448e14$export$e94d57566be028aa.once($ac6f441b4b448e14$export$5fd1e257088db342, this._applyMove, this._moveId));\n break;\n }\n }\n _onScroll() {\n this.updatePosition();\n }\n _onEnd(e, t) {\n let n = this._sensorData.get(t);\n n && (this.drag ? n.predicateState === 1 && (this.drag.endEvent = e, this._sensorData.forEach((r)=>{\n r.predicateState = 0, r.predicateEvent = null;\n }), this.stop()) : (n.predicateState = 0, n.predicateEvent = null));\n }\n _prepareStart() {\n let { drag: e } = this;\n if (!e || !e.startEvent) return;\n let t = this.settings.getElements({\n draggable: this,\n sensor: e.sensor,\n startEvent: e.startEvent\n }) || [];\n e.items = t.map((n)=>{\n if (!n.isConnected) throw new Error(\"Element is not connected\");\n let r = n.parentElement, s = (0, $4effe6f7501c7f59$export$243d7fadef466e38)(n);\n if (!s) throw new Error(\"Offset container could not be computed for the element!\");\n let o = this.settings.container || r, c = o === r ? s : (0, $4effe6f7501c7f59$export$243d7fadef466e38)(n, {\n container: o\n });\n if (!c) throw new Error(\"Drag offset container could not be computed for the element!\");\n let l = new $ac6f441b4b448e14$var$ee(n, r, s, o, c), a = n.getBoundingClientRect();\n if (l.x = a.left, l.y = a.top, s !== c) {\n let { left: b, top: f } = $ac6f441b4b448e14$var$pe(c, s, $ac6f441b4b448e14$var$ze);\n l._containerDiffX = b, l._containerDiffY = f;\n }\n let d = $ac6f441b4b448e14$var$te(n), { transform: m } = d;\n m && m !== \"none\" && m !== $ac6f441b4b448e14$var$ct && m !== $ac6f441b4b448e14$var$dt && (l.initialTransform = m);\n let { x: y, y: g } = this.settings.getStartPosition({\n draggable: this,\n sensor: e.sensor,\n item: l,\n style: d\n });\n l.pX = y, l.pY = g;\n let S = this.settings.getFrozenProps({\n draggable: this,\n sensor: e.sensor,\n item: l,\n style: d\n });\n if (Array.isArray(S)) {\n if (S.length) {\n let b = {};\n for (let f of S)b[f] = d[f];\n l.frozenProps = b;\n } else l.frozenProps = null;\n } else l.frozenProps = S;\n if (l.frozenProps) {\n let b = {};\n for(let f in l.frozenProps)l.frozenProps.hasOwnProperty(f) && (b[f] = n.style[f]);\n l.unfrozenProps = b;\n }\n return l;\n }), this._emit(\"preparestart\", e.startEvent);\n }\n _applyStart() {\n let e = this.drag;\n if (!e || !e.startEvent) return;\n let { container: t } = this.settings;\n for (let n of e.items)t && n.element.parentElement !== t && (t.appendChild(n.element), n.pX += n._containerDiffX, n.pY += n._containerDiffY), n.frozenProps && Object.assign(n.element.style, n.frozenProps), this.settings.setPosition({\n phase: \"start\",\n draggable: this,\n sensor: e.sensor,\n item: n,\n x: n.pX,\n y: n.pY\n });\n window.addEventListener(\"scroll\", this._onScroll, $ac6f441b4b448e14$var$Ue), e.isStarted = !0, this._emit(\"start\", e.startEvent);\n }\n _prepareMove() {\n let { drag: e } = this;\n if (!e || !e.startEvent) return;\n let t = e.nextMoveEvent, n = e.prevMoveEvent || e.startEvent;\n if (!(!t || t === n)) {\n for (let r of e.items){\n let { x: s, y: o } = this.settings.getPositionChange({\n draggable: this,\n sensor: e.sensor,\n item: r,\n startEvent: e.startEvent,\n prevEvent: n,\n event: t\n });\n s && (r.pX = r.pX - r._moveDiffX + s, r.x = r.x - r._moveDiffX + s, r._moveDiffX = s), o && (r.pY = r.pY - r._moveDiffY + o, r.y = r.y - r._moveDiffY + o, r._moveDiffY = o);\n }\n e.prevMoveEvent = t, this._emit(\"preparemove\", t);\n }\n }\n _applyMove() {\n let { drag: e } = this;\n if (!(!e || !e.nextMoveEvent)) {\n for (let t of e.items)t._moveDiffX = 0, t._moveDiffY = 0;\n for (let t of e.items)this.settings.setPosition({\n phase: \"move\",\n draggable: this,\n sensor: e.sensor,\n item: t,\n x: t.pX,\n y: t.pY\n });\n this._emit(\"move\", e.nextMoveEvent);\n }\n }\n _preparePositionUpdate() {\n let { drag: e } = this;\n if (e) for (let t of e.items){\n if (t.elementOffsetContainer !== t.dragOffsetContainer) {\n let { left: c, top: l } = $ac6f441b4b448e14$var$pe(t.dragOffsetContainer, t.elementOffsetContainer, $ac6f441b4b448e14$var$ze);\n t._containerDiffX = c, t._containerDiffY = l;\n }\n let { left: n, top: r } = t.element.getBoundingClientRect(), s = t.x - t._moveDiffX - n;\n t.pX = t.pX - t._updateDiffX + s, t._updateDiffX = s;\n let o = t.y - t._moveDiffY - r;\n t.pY = t.pY - t._updateDiffY + o, t._updateDiffY = o;\n }\n }\n _applyPositionUpdate() {\n let { drag: e } = this;\n if (e) for (let t of e.items)t._updateDiffX = 0, t._updateDiffY = 0, this.settings.setPosition({\n phase: \"move\",\n draggable: this,\n sensor: e.sensor,\n item: t,\n x: t.pX,\n y: t.pY\n });\n }\n on(e, t, n) {\n return this._emitter.on(e, t, n);\n }\n off(e, t) {\n this._emitter.off(e, t);\n }\n resolveStartPredicate(e, t) {\n let n = this._sensorData.get(e);\n if (!n) return;\n let r = t || n.predicateEvent;\n n.predicateState === 0 && r && (n.predicateState = 1, n.predicateEvent = null, this.drag = new $ac6f441b4b448e14$var$Z, this.drag.sensor = e, this.drag.startEvent = r, this._sensorData.forEach((s, o)=>{\n o !== e && (s.predicateState = 2, s.predicateEvent = null);\n }), $ac6f441b4b448e14$export$e94d57566be028aa.once($ac6f441b4b448e14$export$9138efc7ba4fca22, this._prepareStart, this._startId), $ac6f441b4b448e14$export$e94d57566be028aa.once($ac6f441b4b448e14$export$5fd1e257088db342, this._applyStart, this._startId));\n }\n rejectStartPredicate(e) {\n let t = this._sensorData.get(e);\n t?.predicateState === 0 && (t.predicateState = 2, t.predicateEvent = null);\n }\n stop() {\n let { drag: e } = this;\n if (!(!e || e.isEnded)) {\n if (e.isEnded = !0, $ac6f441b4b448e14$export$e94d57566be028aa.off($ac6f441b4b448e14$export$9138efc7ba4fca22, this._startId), $ac6f441b4b448e14$export$e94d57566be028aa.off($ac6f441b4b448e14$export$5fd1e257088db342, this._startId), $ac6f441b4b448e14$export$e94d57566be028aa.off($ac6f441b4b448e14$export$9138efc7ba4fca22, this._moveId), $ac6f441b4b448e14$export$e94d57566be028aa.off($ac6f441b4b448e14$export$5fd1e257088db342, this._moveId), $ac6f441b4b448e14$export$e94d57566be028aa.off($ac6f441b4b448e14$export$9138efc7ba4fca22, this._updateId), $ac6f441b4b448e14$export$e94d57566be028aa.off($ac6f441b4b448e14$export$5fd1e257088db342, this._updateId), e.isStarted) {\n window.removeEventListener(\"scroll\", this._onScroll, $ac6f441b4b448e14$var$Ue);\n let t = [];\n for (let n of e.items){\n if (t.push(n.element), n.elementContainer && n.element.parentElement !== n.elementContainer && (n.pX -= n._containerDiffX, n.pY -= n._containerDiffY, n._containerDiffX = 0, n._containerDiffY = 0, n.elementContainer.appendChild(n.element)), n.unfrozenProps) for(let r in n.unfrozenProps)n.element.style[r] = n.unfrozenProps[r] || \"\";\n this.settings.setPosition({\n phase: \"end\",\n draggable: this,\n sensor: e.sensor,\n item: n,\n x: n.pX,\n y: n.pY\n });\n }\n t.length && this.settings.releaseElements({\n draggable: this,\n sensor: e.sensor,\n elements: t\n });\n }\n this._emit(\"end\", e.endEvent), this.drag = null;\n }\n }\n updatePosition(e = !1) {\n this.drag && (e ? (this._preparePositionUpdate(), this._applyPositionUpdate()) : ($ac6f441b4b448e14$export$e94d57566be028aa.once($ac6f441b4b448e14$export$9138efc7ba4fca22, this._preparePositionUpdate, this._updateId), $ac6f441b4b448e14$export$e94d57566be028aa.once($ac6f441b4b448e14$export$5fd1e257088db342, this._applyPositionUpdate, this._updateId)));\n }\n updateSettings(e = {}) {\n this.settings = this._parseSettings(e, this.settings);\n }\n use(e) {\n return e(this);\n }\n destroy() {\n this.isDestroyed || (this.isDestroyed = !0, this.stop(), this._sensorData.forEach(({ onMove: e, onEnd: t }, n)=>{\n n.off(\"start\", e), n.off(\"move\", e), n.off(\"cancel\", t), n.off(\"end\", t), n.off(\"destroy\", t);\n }), this._sensorData.clear(), this._emit(\"destroy\"), this._emitter.off());\n }\n};\nvar $ac6f441b4b448e14$var$B = class {\n constructor(e, t){\n this._data = [], this._createObject = e, this._onPut = t;\n }\n pick() {\n return this._data.length ? this._data.pop() : this._createObject();\n }\n put(e) {\n this._data.indexOf(e) === -1 && (this._onPut && this._onPut(e), this._data.push(e));\n }\n reset() {\n this._data.length = 0;\n }\n};\nfunction $ac6f441b4b448e14$var$He(i, e) {\n let t = (0, $e931ad6985aacff5$export$72209efa88586d42)(i, e);\n return t ? t.width * t.height : 0;\n}\nfunction $ac6f441b4b448e14$var$ge(i, e) {\n let t = $ac6f441b4b448e14$var$He(i, e);\n if (!t) return 0;\n let n = Math.min(i.width, e.width) * Math.min(i.height, e.height);\n return t / n * 100;\n}\nfunction $ac6f441b4b448e14$var$w(i) {\n return i instanceof Window;\n}\nfunction $ac6f441b4b448e14$var$Se(i) {\n return $ac6f441b4b448e14$var$w(i) || i === document.documentElement || i === document.body ? window : i;\n}\nfunction $ac6f441b4b448e14$var$N(i) {\n return $ac6f441b4b448e14$var$w(i) ? i.pageXOffset : i.scrollLeft;\n}\nfunction $ac6f441b4b448e14$var$Ee(i) {\n return $ac6f441b4b448e14$var$w(i) && (i = document.documentElement), i.scrollWidth - i.clientWidth;\n}\nfunction $ac6f441b4b448e14$var$q(i) {\n return $ac6f441b4b448e14$var$w(i) ? i.pageYOffset : i.scrollTop;\n}\nfunction $ac6f441b4b448e14$var$ve(i) {\n return $ac6f441b4b448e14$var$w(i) && (i = document.documentElement), i.scrollHeight - i.clientHeight;\n}\nfunction $ac6f441b4b448e14$var$_e(i, e) {\n return !(i.right <= e.left || e.right <= i.left || i.bottom <= e.top || e.bottom <= i.top);\n}\nvar $ac6f441b4b448e14$var$xe = {\n width: 0,\n height: 0,\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n}, $ac6f441b4b448e14$var$Fe = {\n ...$ac6f441b4b448e14$var$xe\n}, $ac6f441b4b448e14$var$je = 50, $ac6f441b4b448e14$var$I = {\n direction: \"none\",\n threshold: 0,\n distance: 0,\n value: 0,\n maxValue: 0,\n duration: 0,\n speed: 0,\n deltaTime: 0,\n isEnding: !1\n}, $ac6f441b4b448e14$export$5bbd74ab6c855dff = {\n x: 1,\n y: 2\n}, $ac6f441b4b448e14$export$3eeb7a7b68c92567 = {\n forward: 4,\n reverse: 8\n}, $ac6f441b4b448e14$var$ne = {\n none: 0,\n left: $ac6f441b4b448e14$export$5bbd74ab6c855dff.x | $ac6f441b4b448e14$export$3eeb7a7b68c92567.reverse,\n right: $ac6f441b4b448e14$export$5bbd74ab6c855dff.x | $ac6f441b4b448e14$export$3eeb7a7b68c92567.forward\n}, $ac6f441b4b448e14$var$H = {\n none: 0,\n up: $ac6f441b4b448e14$export$5bbd74ab6c855dff.y | $ac6f441b4b448e14$export$3eeb7a7b68c92567.reverse,\n down: $ac6f441b4b448e14$export$5bbd74ab6c855dff.y | $ac6f441b4b448e14$export$3eeb7a7b68c92567.forward\n}, $ac6f441b4b448e14$export$c9fbd1f9176bc8ed = {\n ...$ac6f441b4b448e14$var$ne,\n ...$ac6f441b4b448e14$var$H\n};\nfunction $ac6f441b4b448e14$var$ye(i) {\n switch(i){\n case $ac6f441b4b448e14$var$ne.none:\n case $ac6f441b4b448e14$var$H.none:\n return \"none\";\n case $ac6f441b4b448e14$var$ne.left:\n return \"left\";\n case $ac6f441b4b448e14$var$ne.right:\n return \"right\";\n case $ac6f441b4b448e14$var$H.up:\n return \"up\";\n case $ac6f441b4b448e14$var$H.down:\n return \"down\";\n default:\n throw new Error(`Unknown direction value: ${i}`);\n }\n}\nfunction $ac6f441b4b448e14$var$$e(i, e, t) {\n let { left: n = 0, right: r = 0, top: s = 0, bottom: o = 0 } = e;\n return n = Math.max(0, n), r = Math.max(0, r), s = Math.max(0, s), o = Math.max(0, o), t.width = i.width + n + r, t.height = i.height + s + o, t.left = i.left - n, t.top = i.top - s, t.right = i.right + r, t.bottom = i.bottom + o, t;\n}\nfunction $ac6f441b4b448e14$var$re(i, e) {\n return Math.ceil(i) >= Math.floor(e);\n}\nfunction $ac6f441b4b448e14$var$be(i, e) {\n return Math.min(e / 2, i);\n}\nfunction $ac6f441b4b448e14$var$De(i, e, t, n) {\n return Math.max(0, t + i * 2 + n * e - n) / 2;\n}\nvar $ac6f441b4b448e14$var$Pe = class {\n constructor(){\n this.positionX = 0, this.positionY = 0, this.directionX = $ac6f441b4b448e14$export$c9fbd1f9176bc8ed.none, this.directionY = $ac6f441b4b448e14$export$c9fbd1f9176bc8ed.none, this.overlapCheckRequestTime = 0;\n }\n}, $ac6f441b4b448e14$var$Te = class {\n constructor(){\n this.element = null, this.requestX = null, this.requestY = null, this.scrollLeft = 0, this.scrollTop = 0;\n }\n reset() {\n this.requestX && (this.requestX.action = null), this.requestY && (this.requestY.action = null), this.element = null, this.requestX = null, this.requestY = null, this.scrollLeft = 0, this.scrollTop = 0;\n }\n addRequest(e) {\n $ac6f441b4b448e14$export$5bbd74ab6c855dff.x & e.direction ? (this.requestX && this.removeRequest(this.requestX), this.requestX = e) : (this.requestY && this.removeRequest(this.requestY), this.requestY = e), e.action = this;\n }\n removeRequest(e) {\n this.requestX === e ? (this.requestX = null, e.action = null) : this.requestY === e && (this.requestY = null, e.action = null);\n }\n computeScrollValues() {\n this.element && (this.scrollLeft = this.requestX ? this.requestX.value : $ac6f441b4b448e14$var$N(this.element), this.scrollTop = this.requestY ? this.requestY.value : $ac6f441b4b448e14$var$q(this.element));\n }\n scroll() {\n this.element && (this.element.scrollTo ? this.element.scrollTo(this.scrollLeft, this.scrollTop) : (this.element.scrollLeft = this.scrollLeft, this.element.scrollTop = this.scrollTop));\n }\n}, $ac6f441b4b448e14$var$we = class {\n constructor(){\n this.item = null, this.element = null, this.isActive = !1, this.isEnding = !1, this.direction = 0, this.value = NaN, this.maxValue = 0, this.threshold = 0, this.distance = 0, this.deltaTime = 0, this.speed = 0, this.duration = 0, this.action = null;\n }\n reset() {\n this.isActive && this.onStop(), this.item = null, this.element = null, this.isActive = !1, this.isEnding = !1, this.direction = 0, this.value = NaN, this.maxValue = 0, this.threshold = 0, this.distance = 0, this.deltaTime = 0, this.speed = 0, this.duration = 0, this.action = null;\n }\n hasReachedEnd() {\n return $ac6f441b4b448e14$export$3eeb7a7b68c92567.forward & this.direction ? $ac6f441b4b448e14$var$re(this.value, this.maxValue) : this.value <= 0;\n }\n computeCurrentScrollValue() {\n return this.element ? this.value !== this.value ? $ac6f441b4b448e14$export$5bbd74ab6c855dff.x & this.direction ? $ac6f441b4b448e14$var$N(this.element) : $ac6f441b4b448e14$var$q(this.element) : Math.max(0, Math.min(this.value, this.maxValue)) : 0;\n }\n computeNextScrollValue() {\n let e = this.speed * (this.deltaTime / 1e3), t = $ac6f441b4b448e14$export$3eeb7a7b68c92567.forward & this.direction ? this.value + e : this.value - e;\n return Math.max(0, Math.min(t, this.maxValue));\n }\n computeSpeed() {\n if (!this.item || !this.element) return 0;\n let { speed: e } = this.item;\n return typeof e == \"function\" ? ($ac6f441b4b448e14$var$I.direction = $ac6f441b4b448e14$var$ye(this.direction), $ac6f441b4b448e14$var$I.threshold = this.threshold, $ac6f441b4b448e14$var$I.distance = this.distance, $ac6f441b4b448e14$var$I.value = this.value, $ac6f441b4b448e14$var$I.maxValue = this.maxValue, $ac6f441b4b448e14$var$I.duration = this.duration, $ac6f441b4b448e14$var$I.speed = this.speed, $ac6f441b4b448e14$var$I.deltaTime = this.deltaTime, $ac6f441b4b448e14$var$I.isEnding = this.isEnding, e(this.element, $ac6f441b4b448e14$var$I)) : e;\n }\n tick(e) {\n return this.isActive || (this.isActive = !0, this.onStart()), this.deltaTime = e, this.value = this.computeCurrentScrollValue(), this.speed = this.computeSpeed(), this.value = this.computeNextScrollValue(), this.duration += e, this.value;\n }\n onStart() {\n if (!this.item || !this.element) return;\n let { onStart: e } = this.item;\n typeof e == \"function\" && e(this.element, $ac6f441b4b448e14$var$ye(this.direction));\n }\n onStop() {\n if (!this.item || !this.element) return;\n let { onStop: e } = this.item;\n typeof e == \"function\" && e(this.element, $ac6f441b4b448e14$var$ye(this.direction));\n }\n};\nfunction $ac6f441b4b448e14$export$55a384729d91296b(i = 500, e = .5, t = .25) {\n let n = i * (e > 0 ? 1 / e : 1 / 0), r = i * (t > 0 ? 1 / t : 1 / 0);\n return function(s, o) {\n let c = 0;\n if (!o.isEnding) {\n if (o.threshold > 0) {\n let d = o.threshold - Math.max(0, o.distance);\n c = i / o.threshold * d;\n } else c = i;\n }\n let l = o.speed;\n if (l === c) return c;\n let a = c;\n return l < c ? (a = l + n * (o.deltaTime / 1e3), Math.min(c, a)) : (a = l - r * (o.deltaTime / 1e3), Math.max(c, a));\n };\n}\nvar $ac6f441b4b448e14$export$3fb39aee5567f02e = class {\n constructor(e = {}){\n let { overlapCheckInterval: t = 150 } = e;\n this.items = [], this.settings = {\n overlapCheckInterval: t\n }, this._actions = [], this._isDestroyed = !1, this._isTicking = !1, this._tickTime = 0, this._tickDeltaTime = 0, this._requests = {\n [$ac6f441b4b448e14$export$5bbd74ab6c855dff.x]: new Map,\n [$ac6f441b4b448e14$export$5bbd74ab6c855dff.y]: new Map\n }, this._itemData = new Map, this._requestPool = new $ac6f441b4b448e14$var$B(()=>new $ac6f441b4b448e14$var$we, (n)=>n.reset()), this._actionPool = new $ac6f441b4b448e14$var$B(()=>new $ac6f441b4b448e14$var$Te, (n)=>n.reset()), this._emitter = new (0, $882b296db6123935$export$4293555f241ae35a), this._frameRead = this._frameRead.bind(this), this._frameWrite = this._frameWrite.bind(this);\n }\n _frameRead(e) {\n this._isDestroyed || (e && this._tickTime ? (this._tickDeltaTime = e - this._tickTime, this._tickTime = e, this._updateItems(), this._updateRequests(), this._updateActions()) : (this._tickTime = e, this._tickDeltaTime = 0));\n }\n _frameWrite() {\n this._isDestroyed || this._applyActions();\n }\n _startTicking() {\n this._isTicking || (this._isTicking = !0, $ac6f441b4b448e14$export$e94d57566be028aa.on($ac6f441b4b448e14$export$9138efc7ba4fca22, this._frameRead), $ac6f441b4b448e14$export$e94d57566be028aa.on($ac6f441b4b448e14$export$5fd1e257088db342, this._frameWrite));\n }\n _stopTicking() {\n this._isTicking && (this._isTicking = !1, this._tickTime = 0, this._tickDeltaTime = 0, $ac6f441b4b448e14$export$e94d57566be028aa.off($ac6f441b4b448e14$export$9138efc7ba4fca22, this._frameRead), $ac6f441b4b448e14$export$e94d57566be028aa.off($ac6f441b4b448e14$export$5fd1e257088db342, this._frameWrite));\n }\n _getItemClientRect(e, t = {\n width: 0,\n height: 0,\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n }) {\n let { clientRect: n } = e;\n return t.left = n.left, t.top = n.top, t.width = n.width, t.height = n.height, t.right = n.left + n.width, t.bottom = n.top + n.height, t;\n }\n _requestItemScroll(e, t, n, r, s, o, c) {\n let l = this._requests[t], a = l.get(e);\n a ? (a.element !== n || a.direction !== r) && a.reset() : (a = this._requestPool.pick(), l.set(e, a)), a.item = e, a.element = n, a.direction = r, a.threshold = s, a.distance = o, a.maxValue = c;\n }\n _cancelItemScroll(e, t) {\n let n = this._requests[t], r = n.get(e);\n r && (r.action && r.action.removeRequest(r), this._requestPool.put(r), n.delete(e));\n }\n _checkItemOverlap(e, t, n) {\n let { inertAreaSize: r, targets: s } = e;\n if (!s.length) {\n t && this._cancelItemScroll(e, $ac6f441b4b448e14$export$5bbd74ab6c855dff.x), n && this._cancelItemScroll(e, $ac6f441b4b448e14$export$5bbd74ab6c855dff.y);\n return;\n }\n let o = this._itemData.get(e), c = o?.directionX, l = o?.directionY;\n if (!c && !l) {\n t && this._cancelItemScroll(e, $ac6f441b4b448e14$export$5bbd74ab6c855dff.x), n && this._cancelItemScroll(e, $ac6f441b4b448e14$export$5bbd74ab6c855dff.y);\n return;\n }\n let a = this._getItemClientRect(e, $ac6f441b4b448e14$var$xe), d = null, m = -1 / 0, y = 0, g = -1 / 0, S = $ac6f441b4b448e14$export$c9fbd1f9176bc8ed.none, b = 0, f = 0, E = null, x = -1 / 0, V = 0, U = -1 / 0, se = $ac6f441b4b448e14$export$c9fbd1f9176bc8ed.none, Ce = 0, Le = 0, ae = 0;\n for(; ae < s.length; ae++){\n let A = s[ae], Ke = typeof A.threshold == \"number\" ? A.threshold : $ac6f441b4b448e14$var$je, le = !!(t && c && A.axis !== \"y\"), ce = !!(n && l && A.axis !== \"x\"), R = A.priority || 0;\n if ((!le || R < m) && (!ce || R < x)) continue;\n let k = $ac6f441b4b448e14$var$Se(A.element || A), F = le ? $ac6f441b4b448e14$var$Ee(k) : -1, j = ce ? $ac6f441b4b448e14$var$ve(k) : -1;\n if (F <= 0 && j <= 0) continue;\n let P = (0, $4fec7741c67a29fc$export$4b834cebd9e5cebe)([\n k,\n \"padding\"\n ], window), O = $ac6f441b4b448e14$var$ge(a, P) || -1 / 0;\n if (O === -1 / 0) {\n if (A.padding && $ac6f441b4b448e14$var$_e(a, $ac6f441b4b448e14$var$$e(P, A.padding, $ac6f441b4b448e14$var$Fe))) O = -((0, $2a599c00d4ed99d6$export$79376507b09a66f)(a, P) || 0);\n else continue;\n }\n if (le && R >= m && F > 0 && (R > m || O > g)) {\n let T = 0, C = $ac6f441b4b448e14$export$c9fbd1f9176bc8ed.none, L = $ac6f441b4b448e14$var$be(Ke, P.width), z = $ac6f441b4b448e14$var$De(L, r, a.width, P.width);\n c === $ac6f441b4b448e14$export$c9fbd1f9176bc8ed.right ? (T = P.right + z - a.right, T <= L && !$ac6f441b4b448e14$var$re($ac6f441b4b448e14$var$N(k), F) && (C = $ac6f441b4b448e14$export$c9fbd1f9176bc8ed.right)) : c === $ac6f441b4b448e14$export$c9fbd1f9176bc8ed.left && (T = a.left - (P.left - z), T <= L && $ac6f441b4b448e14$var$N(k) > 0 && (C = $ac6f441b4b448e14$export$c9fbd1f9176bc8ed.left)), C && (d = k, m = R, y = L, g = O, S = C, b = T, f = F);\n }\n if (ce && R >= x && j > 0 && (R > x || O > U)) {\n let T = 0, C = $ac6f441b4b448e14$var$H.none, L = $ac6f441b4b448e14$var$be(Ke, P.height), z = $ac6f441b4b448e14$var$De(L, r, a.height, P.height);\n l === $ac6f441b4b448e14$export$c9fbd1f9176bc8ed.down ? (T = P.bottom + z - a.bottom, T <= L && !$ac6f441b4b448e14$var$re($ac6f441b4b448e14$var$q(k), j) && (C = $ac6f441b4b448e14$export$c9fbd1f9176bc8ed.down)) : l === $ac6f441b4b448e14$export$c9fbd1f9176bc8ed.up && (T = a.top - (P.top - z), T <= L && $ac6f441b4b448e14$var$q(k) > 0 && (C = $ac6f441b4b448e14$export$c9fbd1f9176bc8ed.up)), C && (E = k, x = R, V = L, U = O, se = C, Ce = T, Le = j);\n }\n }\n t && (d && S ? this._requestItemScroll(e, $ac6f441b4b448e14$export$5bbd74ab6c855dff.x, d, S, y, b, f) : this._cancelItemScroll(e, $ac6f441b4b448e14$export$5bbd74ab6c855dff.x)), n && (E && se ? this._requestItemScroll(e, $ac6f441b4b448e14$export$5bbd74ab6c855dff.y, E, se, V, Ce, Le) : this._cancelItemScroll(e, $ac6f441b4b448e14$export$5bbd74ab6c855dff.y));\n }\n _updateScrollRequest(e) {\n let t = e.item, { inertAreaSize: n, smoothStop: r, targets: s } = t, o = this._getItemClientRect(t, $ac6f441b4b448e14$var$xe), c = null, l = 0;\n for(; l < s.length; l++){\n let a = s[l], d = $ac6f441b4b448e14$var$Se(a.element || a);\n if (d !== e.element) continue;\n let m = !!($ac6f441b4b448e14$export$5bbd74ab6c855dff.x & e.direction);\n if (m) {\n if (a.axis === \"y\") continue;\n } else if (a.axis === \"x\") continue;\n let y = m ? $ac6f441b4b448e14$var$Ee(d) : $ac6f441b4b448e14$var$ve(d);\n if (y <= 0) break;\n let g = (0, $4fec7741c67a29fc$export$4b834cebd9e5cebe)([\n d,\n \"padding\"\n ], window);\n if (($ac6f441b4b448e14$var$ge(o, g) || -1 / 0) === -1 / 0) {\n let U = a.scrollPadding || a.padding;\n if (!(U && $ac6f441b4b448e14$var$_e(o, $ac6f441b4b448e14$var$$e(g, U, $ac6f441b4b448e14$var$Fe)))) break;\n }\n let b = typeof a.threshold == \"number\" ? a.threshold : $ac6f441b4b448e14$var$je, f = $ac6f441b4b448e14$var$be(b, m ? g.width : g.height), E = $ac6f441b4b448e14$var$De(f, n, m ? o.width : o.height, m ? g.width : g.height), x = 0;\n if (e.direction === $ac6f441b4b448e14$export$c9fbd1f9176bc8ed.left ? x = o.left - (g.left - E) : e.direction === $ac6f441b4b448e14$export$c9fbd1f9176bc8ed.right ? x = g.right + E - o.right : e.direction === $ac6f441b4b448e14$export$c9fbd1f9176bc8ed.up ? x = o.top - (g.top - E) : x = g.bottom + E - o.bottom, x > f) break;\n let V = m ? $ac6f441b4b448e14$var$N(d) : $ac6f441b4b448e14$var$q(d);\n if (c = $ac6f441b4b448e14$export$3eeb7a7b68c92567.forward & e.direction ? $ac6f441b4b448e14$var$re(V, y) : V <= 0, c) break;\n return e.maxValue = y, e.threshold = f, e.distance = x, e.isEnding = !1, !0;\n }\n return r === !0 && e.speed > 0 ? (c === null && (c = e.hasReachedEnd()), e.isEnding = !c) : e.isEnding = !1, e.isEnding;\n }\n _updateItems() {\n for(let e = 0; e < this.items.length; e++){\n let t = this.items[e], n = this._itemData.get(t), { x: r, y: s } = t.position, o = n.positionX, c = n.positionY;\n r === o && s === c || (n.directionX = r > o ? $ac6f441b4b448e14$export$c9fbd1f9176bc8ed.right : r < o ? $ac6f441b4b448e14$export$c9fbd1f9176bc8ed.left : n.directionX, n.directionY = s > c ? $ac6f441b4b448e14$export$c9fbd1f9176bc8ed.down : s < c ? $ac6f441b4b448e14$export$c9fbd1f9176bc8ed.up : n.directionY, n.positionX = r, n.positionY = s, n.overlapCheckRequestTime === 0 && (n.overlapCheckRequestTime = this._tickTime));\n }\n }\n _updateRequests() {\n let e = this.items, t = this._requests[$ac6f441b4b448e14$export$5bbd74ab6c855dff.x], n = this._requests[$ac6f441b4b448e14$export$5bbd74ab6c855dff.y], r = 0;\n for(; r < e.length; r++){\n let s = e[r], o = this._itemData.get(s), c = o.overlapCheckRequestTime, l = c > 0 && this._tickTime - c > this.settings.overlapCheckInterval, a = !0, d = t.get(s);\n d && d.isActive && (a = !this._updateScrollRequest(d), a && (l = !0, this._cancelItemScroll(s, $ac6f441b4b448e14$export$5bbd74ab6c855dff.x)));\n let m = !0, y = n.get(s);\n y && y.isActive && (m = !this._updateScrollRequest(y), m && (l = !0, this._cancelItemScroll(s, $ac6f441b4b448e14$export$5bbd74ab6c855dff.y))), l && (o.overlapCheckRequestTime = 0, this._checkItemOverlap(s, a, m));\n }\n }\n _requestAction(e, t) {\n let n = t === $ac6f441b4b448e14$export$5bbd74ab6c855dff.x, r = null, s = 0;\n for(; s < this._actions.length; s++){\n if (r = this._actions[s], e.element !== r.element) {\n r = null;\n continue;\n }\n if (n ? r.requestX : r.requestY) {\n this._cancelItemScroll(e.item, t);\n return;\n }\n break;\n }\n r || (r = this._actionPool.pick()), r.element = e.element, r.addRequest(e), e.tick(this._tickDeltaTime), this._actions.push(r);\n }\n _updateActions() {\n let e = 0;\n for(e = 0; e < this.items.length; e++){\n let t = this.items[e], n = this._requests[$ac6f441b4b448e14$export$5bbd74ab6c855dff.x].get(t), r = this._requests[$ac6f441b4b448e14$export$5bbd74ab6c855dff.y].get(t);\n n && this._requestAction(n, $ac6f441b4b448e14$export$5bbd74ab6c855dff.x), r && this._requestAction(r, $ac6f441b4b448e14$export$5bbd74ab6c855dff.y);\n }\n for(e = 0; e < this._actions.length; e++)this._actions[e].computeScrollValues();\n }\n _applyActions() {\n if (!this._actions.length) return;\n this._emitter.emit(\"beforescroll\");\n let e = 0;\n for(e = 0; e < this._actions.length; e++)this._actions[e].scroll(), this._actionPool.put(this._actions[e]);\n this._actions.length = 0;\n let t;\n for(e = 0; e < this.items.length; e++)t = this.items[e], t.onPrepareScrollEffect && t.onPrepareScrollEffect();\n for(e = 0; e < this.items.length; e++)t = this.items[e], t.onApplyScrollEffect && t.onApplyScrollEffect();\n this._emitter.emit(\"afterscroll\");\n }\n on(e, t) {\n return this._emitter.on(e, t);\n }\n off(e, t) {\n this._emitter.off(e, t);\n }\n addItem(e) {\n if (this._isDestroyed || this._itemData.has(e)) return;\n let { x: t, y: n } = e.position, r = new $ac6f441b4b448e14$var$Pe;\n r.positionX = t, r.positionY = n, r.directionX = $ac6f441b4b448e14$export$c9fbd1f9176bc8ed.none, r.directionY = $ac6f441b4b448e14$export$c9fbd1f9176bc8ed.none, r.overlapCheckRequestTime = this._tickTime, this._itemData.set(e, r), this.items.push(e), this._isTicking || this._startTicking();\n }\n removeItem(e) {\n if (this._isDestroyed) return;\n let t = this.items.indexOf(e);\n t !== -1 && (this._requests[$ac6f441b4b448e14$export$5bbd74ab6c855dff.x].get(e) && (this._cancelItemScroll(e, $ac6f441b4b448e14$export$5bbd74ab6c855dff.x), this._requests[$ac6f441b4b448e14$export$5bbd74ab6c855dff.x].delete(e)), this._requests[$ac6f441b4b448e14$export$5bbd74ab6c855dff.y].get(e) && (this._cancelItemScroll(e, $ac6f441b4b448e14$export$5bbd74ab6c855dff.y), this._requests[$ac6f441b4b448e14$export$5bbd74ab6c855dff.y].delete(e)), this._itemData.delete(e), this.items.splice(t, 1), this._isTicking && !this.items.length && this._stopTicking());\n }\n isDestroyed() {\n return this._isDestroyed;\n }\n isItemScrollingX(e) {\n return !!this._requests[$ac6f441b4b448e14$export$5bbd74ab6c855dff.x].get(e)?.isActive;\n }\n isItemScrollingY(e) {\n return !!this._requests[$ac6f441b4b448e14$export$5bbd74ab6c855dff.y].get(e)?.isActive;\n }\n isItemScrolling(e) {\n return this.isItemScrollingX(e) || this.isItemScrollingY(e);\n }\n updateSettings(e = {}) {\n let { overlapCheckInterval: t = this.settings.overlapCheckInterval } = e;\n this.settings.overlapCheckInterval = t;\n }\n destroy() {\n if (this._isDestroyed) return;\n let e = this.items.slice(0), t = 0;\n for(; t < e.length; t++)this.removeItem(e[t]);\n this._actions.length = 0, this._requestPool.reset(), this._actionPool.reset(), this._emitter.off(), this._isDestroyed = !0;\n }\n};\nvar $ac6f441b4b448e14$export$d976747ecb966cea = new $ac6f441b4b448e14$export$3fb39aee5567f02e;\nvar $ac6f441b4b448e14$var$G = {\n x: 0,\n y: 0\n}, $ac6f441b4b448e14$var$K = {\n left: 0,\n top: 0,\n width: 0,\n height: 0\n};\nfunction $ac6f441b4b448e14$var$ft() {\n return {\n targets: [],\n inertAreaSize: .2,\n speed: $ac6f441b4b448e14$export$55a384729d91296b(),\n smoothStop: !1,\n getPosition: (i)=>{\n let { drag: e } = i, t = e?.items[0];\n if (t) $ac6f441b4b448e14$var$G.x = t.pX, $ac6f441b4b448e14$var$G.y = t.pY;\n else {\n let n = e && (e.nextMoveEvent || e.startEvent);\n $ac6f441b4b448e14$var$G.x = n ? n.x : 0, $ac6f441b4b448e14$var$G.y = n ? n.y : 0;\n }\n return $ac6f441b4b448e14$var$G;\n },\n getClientRect: (i)=>{\n let { drag: e } = i, t = e?.items[0];\n if (t && t.element) {\n let { left: n, top: r, width: s, height: o } = t.element.getBoundingClientRect();\n $ac6f441b4b448e14$var$K.left = n, $ac6f441b4b448e14$var$K.top = r, $ac6f441b4b448e14$var$K.width = s, $ac6f441b4b448e14$var$K.height = o;\n } else {\n let n = e && (e.nextMoveEvent || e.startEvent);\n $ac6f441b4b448e14$var$K.left = n ? n.x - 25 : 0, $ac6f441b4b448e14$var$K.top = n ? n.y - 25 : 0, $ac6f441b4b448e14$var$K.width = n ? 50 : 0, $ac6f441b4b448e14$var$K.height = n ? 50 : 0;\n }\n return $ac6f441b4b448e14$var$K;\n },\n onStart: null,\n onStop: null\n };\n}\nvar $ac6f441b4b448e14$var$Ae = class {\n constructor(e, t){\n this._draggableAutoScroll = e, this._draggable = t, this._position = {\n x: 0,\n y: 0\n }, this._clientRect = {\n left: 0,\n top: 0,\n width: 0,\n height: 0\n };\n }\n _getSettings() {\n return this._draggableAutoScroll.settings;\n }\n get targets() {\n let { targets: e } = this._getSettings();\n return typeof e == \"function\" && (e = e(this._draggable)), e;\n }\n get position() {\n let { getPosition: e } = this._getSettings();\n if (typeof e == \"function\") {\n let t = e(this._draggable);\n this._position.x = t.x, this._position.y = t.y;\n } else this._position.x = 0, this._position.y = 0;\n return this._position;\n }\n get clientRect() {\n let { getClientRect: e } = this._getSettings();\n if (typeof e == \"function\") {\n let { left: t, top: n, width: r, height: s } = e(this._draggable);\n this._clientRect.left = t, this._clientRect.top = n, this._clientRect.width = r, this._clientRect.height = s;\n } else this._clientRect.left = 0, this._clientRect.top = 0, this._clientRect.width = 0, this._clientRect.height = 0;\n return this._clientRect;\n }\n get inertAreaSize() {\n return this._getSettings().inertAreaSize;\n }\n get smoothStop() {\n return this._getSettings().smoothStop;\n }\n get speed() {\n return this._getSettings().speed;\n }\n get onStart() {\n return this._getSettings().onStart;\n }\n get onStop() {\n return this._getSettings().onStop;\n }\n onPrepareScrollEffect() {\n let e = this._draggable._updateId;\n $ac6f441b4b448e14$export$e94d57566be028aa.off($ac6f441b4b448e14$export$9138efc7ba4fca22, e), $ac6f441b4b448e14$export$e94d57566be028aa.off($ac6f441b4b448e14$export$5fd1e257088db342, e), this._draggable._preparePositionUpdate();\n }\n onApplyScrollEffect() {\n this._draggable._applyPositionUpdate();\n }\n}, $ac6f441b4b448e14$export$5059276ad4233de3 = class {\n constructor(e, t = {}){\n this.name = \"autoscroll\", this.version = \"0.0.2\", this.settings = this._parseSettings(t), this._autoScrollProxy = null, e.on(\"start\", ()=>{\n this._autoScrollProxy || (this._autoScrollProxy = new $ac6f441b4b448e14$var$Ae(this, e), $ac6f441b4b448e14$export$d976747ecb966cea.addItem(this._autoScrollProxy));\n }), e.on(\"end\", ()=>{\n this._autoScrollProxy && ($ac6f441b4b448e14$export$d976747ecb966cea.removeItem(this._autoScrollProxy), this._autoScrollProxy = null);\n });\n }\n _parseSettings(e, t = $ac6f441b4b448e14$var$ft()) {\n let { targets: n = t.targets, inertAreaSize: r = t.inertAreaSize, speed: s = t.speed, smoothStop: o = t.smoothStop, getPosition: c = t.getPosition, getClientRect: l = t.getClientRect, onStart: a = t.onStart, onStop: d = t.onStop } = e || {};\n return {\n targets: n,\n inertAreaSize: r,\n speed: s,\n smoothStop: o,\n getPosition: c,\n getClientRect: l,\n onStart: a,\n onStop: d\n };\n }\n updateSettings(e = {}) {\n this.settings = this._parseSettings(e, this.settings);\n }\n};\nfunction $ac6f441b4b448e14$export$c0f5c18ade842ccd(i) {\n return (e)=>{\n let t = new $ac6f441b4b448e14$export$5059276ad4233de3(e, i), n = e;\n return n.plugins[t.name] = t, n;\n };\n}\nvar $ac6f441b4b448e14$var$Qe = new Set([\n \"auto\",\n \"scroll\",\n \"overlay\"\n]);\nfunction $ac6f441b4b448e14$var$oe(i) {\n let e = $ac6f441b4b448e14$var$te(i);\n return !!($ac6f441b4b448e14$var$Qe.has(e.overflowY) || $ac6f441b4b448e14$var$Qe.has(e.overflowX));\n}\nfunction $ac6f441b4b448e14$var$Ze(i) {\n return i instanceof Document;\n}\nfunction $ac6f441b4b448e14$var$et(i, e = []) {\n let t = i?.parentNode;\n for(; t && !$ac6f441b4b448e14$var$Ze(t);)t instanceof Element ? ($ac6f441b4b448e14$var$oe(t) && e.push(t), t = t.parentNode) : t instanceof ShadowRoot ? t = t.host : t = t.parentNode;\n return e.push(window), e;\n}\nfunction $ac6f441b4b448e14$var$gt(i) {\n let e = [];\n return $ac6f441b4b448e14$var$oe(i) && e.push(i), $ac6f441b4b448e14$var$et(i, e), e;\n}\nfunction $ac6f441b4b448e14$export$88d83dc4a35d804f(i = {}) {\n let e, t = 0, n = null, r, { timeout: s = 250, fallback: o = ()=>!0 } = i, c = (d)=>d.preventDefault(), l = (d)=>{\n if (t) {\n if (e) {\n d.cancelable && d.preventDefault();\n return;\n }\n e === void 0 && (d.cancelable && d.timeStamp - t > s ? (e = !0, d.preventDefault()) : e = !1);\n }\n };\n return (d)=>{\n if (!(d.sensor instanceof $ac6f441b4b448e14$export$b26af955418d6638)) return o(d);\n let { draggable: m, sensor: y, event: g } = d, S = g;\n if (S.pointerType === \"touch\") {\n if (S.type === \"start\" && (S.srcEvent.type === \"pointerdown\" || S.srcEvent.type === \"touchstart\")) {\n n = S.target;\n let b = n ? $ac6f441b4b448e14$var$gt(n) : [];\n b.forEach((E)=>{\n E.addEventListener(\"touchmove\", l, {\n passive: !1,\n capture: !0\n });\n });\n let f = ()=>{\n t && (m.off(\"end\", f), m.sensors.forEach((E)=>{\n E instanceof $ac6f441b4b448e14$export$b26af955418d6638 && E.off(\"end\", f);\n }), n?.removeEventListener(\"contextmenu\", c), b.forEach((E)=>{\n E.removeEventListener(\"touchmove\", l, {\n capture: !0\n });\n }), t = 0, e = void 0, n = null, r = void window.clearTimeout(r));\n };\n e = void 0, t = S.srcEvent.timeStamp, n?.addEventListener(\"contextmenu\", c), m.on(\"end\", f), m.sensors.forEach((E)=>{\n E instanceof $ac6f441b4b448e14$export$b26af955418d6638 && E.off(\"end\", f);\n }), s > 0 && (r = window.setTimeout(()=>{\n m.resolveStartPredicate(y), e = !0, r = void 0;\n }, s));\n }\n return e;\n }\n return S.type === \"start\" && !S.srcEvent.button;\n };\n}\n\n\nconst $6e413c53c7f19483$var$element = document.querySelector(\".draggable\");\nconst $6e413c53c7f19483$var$container = document.querySelector(\".drag-container\");\nconst $6e413c53c7f19483$var$pointerSensor = new (0, $ac6f441b4b448e14$export$b26af955418d6638)($6e413c53c7f19483$var$element);\nconst $6e413c53c7f19483$var$keyboardSensor = new (0, $ac6f441b4b448e14$export$436f6efcc297171)();\nconst $6e413c53c7f19483$var$draggable = new (0, $ac6f441b4b448e14$export$f2a139e5d18b9882)([\n $6e413c53c7f19483$var$pointerSensor,\n $6e413c53c7f19483$var$keyboardSensor\n], {\n container: $6e413c53c7f19483$var$container,\n getElements: ()=>[\n $6e413c53c7f19483$var$element\n ],\n getFrozenProps: ()=>[\n \"left\",\n \"top\"\n ],\n startPredicate: (0, $ac6f441b4b448e14$export$88d83dc4a35d804f)()\n}).use((0, $ac6f441b4b448e14$export$c0f5c18ade842ccd)({\n targets: [\n {\n element: window,\n axis: \"y\",\n padding: {\n top: Infinity,\n bottom: Infinity\n }\n }\n ]\n}));\n$6e413c53c7f19483$var$draggable.on(\"start\", ()=>{\n $6e413c53c7f19483$var$element.classList.add(\"dragging\");\n});\n$6e413c53c7f19483$var$draggable.on(\"end\", ()=>{\n $6e413c53c7f19483$var$element.classList.remove(\"dragging\");\n});\n\n\n//# sourceMappingURL=index.12396756.js.map\n","import {\n Draggable,\n PointerSensor,\n KeyboardMotionSensor,\n createPointerSensorStartPredicate,\n autoScrollPlugin,\n} from '../../dist/dragdoll';\n\nconst element = document.querySelector('.draggable') as HTMLElement;\nconst container = document.querySelector('.drag-container') as HTMLElement;\nconst pointerSensor = new PointerSensor(element);\nconst keyboardSensor = new KeyboardMotionSensor();\nconst draggable = new Draggable([pointerSensor, keyboardSensor], {\n container,\n getElements: () => [element],\n getFrozenProps: () => ['left', 'top'],\n startPredicate: createPointerSensorStartPredicate(),\n}).use(\n autoScrollPlugin({\n targets: [\n {\n element: window,\n axis: 'y',\n padding: { top: Infinity, bottom: Infinity },\n },\n ],\n }),\n);\n\ndraggable.on('start', () => {\n element.classList.add('dragging');\n});\n\ndraggable.on('end', () => {\n element.classList.remove('dragging');\n});\n","var _={start:\"start\",move:\"move\",cancel:\"cancel\",end:\"end\",destroy:\"destroy\"};import{Emitter as tt}from\"eventti\";var W=class{constructor(){this.drag=null,this.isDestroyed=!1,this._emitter=new tt}_createDragData(e){return{x:e.x,y:e.y}}_updateDragData(e){this.drag&&(this.drag.x=e.x,this.drag.y=e.y)}_resetDragData(){this.drag=null}_start(e){this.isDestroyed||this.drag||(this.drag=this._createDragData(e),this._emitter.emit(_.start,e))}_move(e){this.drag&&(this._updateDragData(e),this._emitter.emit(_.move,e))}_end(e){this.drag&&(this._updateDragData(e),this._emitter.emit(_.end,e),this._resetDragData())}_cancel(e){this.drag&&(this._updateDragData(e),this._emitter.emit(_.cancel,e),this._resetDragData())}on(e,t,n){return this._emitter.on(e,t,n)}off(e,t){this._emitter.off(e,t)}cancel(){this.drag&&(this._emitter.emit(_.cancel,{type:_.cancel,x:this.drag.x,y:this.drag.y}),this._resetDragData())}destroy(){this.isDestroyed||(this.isDestroyed=!0,this.cancel(),this._emitter.emit(_.destroy,{type:_.destroy}),this._emitter.off())}};import{Ticker as nt}from\"tikki\";var v=Symbol(),D=Symbol(),u=new nt({phases:[v,D]});function wt(i,e,t){v=e,D=t,u=i}var $=class extends W{constructor(){super();this.drag=null,this._direction={x:0,y:0},this._speed=0,this._tick=this._tick.bind(this)}_createDragData(t){return{...super._createDragData(t),time:0,deltaTime:0}}_start(t){this.isDestroyed||this.drag||(super._start(t),u.on(v,this._tick))}_end(t){this.drag&&(u.off(v,this._tick),super._end(t))}_cancel(t){this.drag&&(u.off(v,this._tick),super._cancel(t))}_tick(t){if(this.drag)if(t&&this.drag.time){this.drag.deltaTime=t-this.drag.time,this.drag.time=t;let n={type:\"tick\",time:this.drag.time,deltaTime:this.drag.deltaTime};if(this._emitter.emit(\"tick\",n),!this.drag)return;let r=this._speed*(this.drag.deltaTime/1e3),s=this._direction.x*r,o=this._direction.y*r;(s||o)&&this._move({type:\"move\",x:this.drag.x+s,y:this.drag.y+o})}else this.drag.time=t,this.drag.deltaTime=0}};import{Emitter as rt}from\"eventti\";function de(i,e){if(\"pointerId\"in i)return i.pointerId===e?i:null;if(\"changedTouches\"in i){let t=0;for(;t{let i=!1;try{let e=Object.defineProperty({},\"passive\",{get:function(){i=!0}});window.addEventListener(\"testPassive\",null,e),window.removeEventListener(\"testPassive\",null,e)}catch{}return i})(),Oe=he&&\"ontouchstart\"in window,We=he&&!!window.PointerEvent,Ot=!!(he&&navigator.vendor&&navigator.vendor.indexOf(\"Apple\")>-1&&navigator.userAgent&&navigator.userAgent.indexOf(\"CriOS\")==-1&&navigator.userAgent.indexOf(\"FxiOS\")==-1);function me(i={}){let{capture:e=!0,passive:t=!0}=i;return J?{capture:e,passive:t}:{capture:e}}function ue(i){return i===\"auto\"||i===void 0?We?\"pointer\":Oe?\"touch\":\"mouse\":i}var it={start:\"pointerdown\",move:\"pointermove\",cancel:\"pointercancel\",end:\"pointerup\"},ot={start:\"touchstart\",move:\"touchmove\",cancel:\"touchcancel\",end:\"touchend\"},st={start:\"mousedown\",move:\"mousemove\",cancel:\"\",end:\"mouseup\"},X={pointer:it,touch:ot,mouse:st},Y=class{constructor(e,t={}){let{listenerOptions:n={},sourceEvents:r=\"auto\",startPredicate:s=o=>!(\"button\"in o&&o.button>0)}=t;this.element=e,this.drag=null,this.isDestroyed=!1,this._areWindowListenersBound=!1,this._startPredicate=s,this._listenerOptions=me(n),this._sourceEvents=ue(r),this._emitter=new rt,this._onStart=this._onStart.bind(this),this._onMove=this._onMove.bind(this),this._onCancel=this._onCancel.bind(this),this._onEnd=this._onEnd.bind(this),e.addEventListener(X[this._sourceEvents].start,this._onStart,this._listenerOptions)}_getTrackedPointerEventData(e){return this.drag?de(e,this.drag.pointerId):null}_onStart(e){if(this.isDestroyed||this.drag||!this._startPredicate(e))return;let t=Me(e);if(t===null)return;let n=de(e,t);if(n===null)return;let r={pointerId:t,pointerType:Re(e),x:n.clientX,y:n.clientY};this.drag=r;let s={...r,type:_.start,srcEvent:e,target:n.target};this._emitter.emit(s.type,s),this.drag&&this._bindWindowListeners()}_onMove(e){if(!this.drag)return;let t=this._getTrackedPointerEventData(e);if(!t)return;this.drag.x=t.clientX,this.drag.y=t.clientY;let n={type:_.move,srcEvent:e,target:t.target,...this.drag};this._emitter.emit(n.type,n)}_onCancel(e){if(!this.drag)return;let t=this._getTrackedPointerEventData(e);if(!t)return;this.drag.x=t.clientX,this.drag.y=t.clientY;let n={type:_.cancel,srcEvent:e,target:t.target,...this.drag};this._emitter.emit(n.type,n),this._resetDrag()}_onEnd(e){if(!this.drag)return;let t=this._getTrackedPointerEventData(e);if(!t)return;this.drag.x=t.clientX,this.drag.y=t.clientY;let n={type:_.end,srcEvent:e,target:t.target,...this.drag};this._emitter.emit(n.type,n),this._resetDrag()}_bindWindowListeners(){if(this._areWindowListenersBound)return;let{move:e,end:t,cancel:n}=X[this._sourceEvents];window.addEventListener(e,this._onMove,this._listenerOptions),window.addEventListener(t,this._onEnd,this._listenerOptions),n&&window.addEventListener(n,this._onCancel,this._listenerOptions),this._areWindowListenersBound=!0}_unbindWindowListeners(){if(this._areWindowListenersBound){let{move:e,end:t,cancel:n}=X[this._sourceEvents];window.removeEventListener(e,this._onMove,this._listenerOptions),window.removeEventListener(t,this._onEnd,this._listenerOptions),n&&window.removeEventListener(n,this._onCancel,this._listenerOptions),this._areWindowListenersBound=!1}}_resetDrag(){this.drag=null,this._unbindWindowListeners()}cancel(){if(!this.drag)return;let e={type:_.cancel,srcEvent:null,target:null,...this.drag};this._emitter.emit(e.type,e),this._resetDrag()}updateSettings(e){if(this.isDestroyed)return;let{listenerOptions:t,sourceEvents:n,startPredicate:r}=e,s=ue(n),o=me(t);r&&this._startPredicate!==r&&(this._startPredicate=r),(t&&(this._listenerOptions.capture!==o.capture||this._listenerOptions.passive===o.passive)||n&&this._sourceEvents!==s)&&(this.element.removeEventListener(X[this._sourceEvents].start,this._onStart,this._listenerOptions),this._unbindWindowListeners(),this.cancel(),n&&(this._sourceEvents=s),t&&o&&(this._listenerOptions=o),this.element.addEventListener(X[this._sourceEvents].start,this._onStart,this._listenerOptions))}on(e,t,n){return this._emitter.on(e,t,n)}off(e,t){this._emitter.off(e,t)}destroy(){this.isDestroyed||(this.isDestroyed=!0,this.cancel(),this._emitter.emit(_.destroy,{type:_.destroy}),this._emitter.off(),this.element.removeEventListener(X[this._sourceEvents].start,this._onStart,this._listenerOptions))}};var Xe=class extends W{constructor(t={}){super();let{moveDistance:n=25,startPredicate:r=l=>{if((l.key===\"Enter\"||l.key===\" \")&&document.activeElement&&document.activeElement!==document.body){let{left:a,top:d}=document.activeElement.getBoundingClientRect();return{x:a,y:d}}return null},movePredicate:s=(l,a,d)=>{if(!a.drag)return null;switch(l.key){case\"ArrowLeft\":return{x:a.drag.x-d.x,y:a.drag.y};case\"ArrowRight\":return{x:a.drag.x+d.x,y:a.drag.y};case\"ArrowUp\":return{x:a.drag.x,y:a.drag.y-d.y};case\"ArrowDown\":return{x:a.drag.x,y:a.drag.y+d.y};default:return null}},cancelPredicate:o=(l,a)=>a.drag&&l.key===\"Escape\"?{x:a.drag.x,y:a.drag.y}:null,endPredicate:c=(l,a)=>a.drag&&(l.key===\"Enter\"||l.key===\" \")?{x:a.drag.x,y:a.drag.y}:null}=t;this._moveDistance=typeof n==\"number\"?{x:n,y:n}:{...n},this._startPredicate=r,this._movePredicate=s,this._cancelPredicate=o,this._endPredicate=c,this.cancel=this.cancel.bind(this),this._onKeyDown=this._onKeyDown.bind(this),document.addEventListener(\"keydown\",this._onKeyDown),window.addEventListener(\"blur\",this.cancel),window.addEventListener(\"visibilitychange\",this.cancel)}_onKeyDown(t){if(!this.drag){let o=this._startPredicate(t,this,this._moveDistance);o&&(t.preventDefault(),this._start({type:\"start\",x:o.x,y:o.y,srcEvent:t}));return}let n=this._cancelPredicate(t,this,this._moveDistance);if(n){t.preventDefault(),this._cancel({type:\"cancel\",x:n.x,y:n.y,srcEvent:t});return}let r=this._endPredicate(t,this,this._moveDistance);if(r){t.preventDefault(),this._end({type:\"end\",x:r.x,y:r.y,srcEvent:t});return}let s=this._movePredicate(t,this,this._moveDistance);if(s){t.preventDefault(),this._move({type:\"move\",x:s.x,y:s.y,srcEvent:t});return}}updateSettings(t={}){t.moveDistance!==void 0&&(typeof t.moveDistance==\"number\"?(this._moveDistance.x=t.moveDistance,this._moveDistance.y=t.moveDistance):(this._moveDistance.x=t.moveDistance.x,this._moveDistance.y=t.moveDistance.y)),t.startPredicate!==void 0&&(this._startPredicate=t.startPredicate),t.movePredicate!==void 0&&(this._movePredicate=t.movePredicate),t.cancelPredicate!==void 0&&(this._cancelPredicate=t.cancelPredicate),t.endPredicate!==void 0&&(this._endPredicate=t.endPredicate)}destroy(){this.isDestroyed||(super.destroy(),document.removeEventListener(\"keydown\",this._onKeyDown),window.removeEventListener(\"blur\",this.cancel),window.removeEventListener(\"visibilitychange\",this.cancel))}};var at=[\"start\",\"cancel\",\"end\",\"moveLeft\",\"moveRight\",\"moveUp\",\"moveDown\"];function Q(i,e){if(!i.size||!e.size)return 1/0;let t=1/0;for(let n of i){let r=e.get(n);r!==void 0&&r{if(document.activeElement){let{left:y,top:g}=document.activeElement.getBoundingClientRect();return{x:y,y:g}}return null},computeSpeed:r=()=>500,startKeys:s=[\" \",\"Enter\"],moveLeftKeys:o=[\"ArrowLeft\"],moveRightKeys:c=[\"ArrowRight\"],moveUpKeys:l=[\"ArrowUp\"],moveDownKeys:a=[\"ArrowDown\"],cancelKeys:d=[\"Escape\"],endKeys:m=[\" \",\"Enter\"]}=t;this._computeSpeed=r,this._startPredicate=n,this._startKeys=new Set(s),this._cancelKeys=new Set(d),this._endKeys=new Set(m),this._moveLeftKeys=new Set(o),this._moveRightKeys=new Set(c),this._moveUpKeys=new Set(l),this._moveDownKeys=new Set(a),this._moveKeys=new Set([...o,...c,...l,...a]),this._moveKeyTimestamps=new Map,this._onKeyDown=this._onKeyDown.bind(this),this._onKeyUp=this._onKeyUp.bind(this),this._onTick=this._onTick.bind(this),this.on(\"tick\",this._onTick),document.addEventListener(\"keydown\",this._onKeyDown),document.addEventListener(\"keyup\",this._onKeyUp),window.addEventListener(\"blur\",this.cancel),window.addEventListener(\"visibilitychange\",this.cancel)}_end(t){this.drag&&(this._moveKeyTimestamps.clear(),this._direction.x=0,this._direction.y=0,super._end(t))}_cancel(t){this.drag&&(this._moveKeyTimestamps.clear(),this._direction.x=0,this._direction.y=0,super._cancel(t))}_updateDirection(){let t=Q(this._moveLeftKeys,this._moveKeyTimestamps),n=Q(this._moveRightKeys,this._moveKeyTimestamps),r=Q(this._moveUpKeys,this._moveKeyTimestamps),s=Q(this._moveDownKeys,this._moveKeyTimestamps),o=t===n?0:t{let o=`${r}Keys`,c=t[o];c!==void 0&&(this[`_${o}`]=new Set(c),s>=3&&(n=!0))}),n){let r=[...this._moveLeftKeys,...this._moveRightKeys,...this._moveUpKeys,...this._moveDownKeys];[...this._moveKeys].every((o,c)=>r[c]===o)||(this._moveKeys=new Set(r),this._moveKeyTimestamps.clear(),this._updateDirection())}}destroy(){this.isDestroyed||(super.destroy(),this.off(\"tick\",this._onTick),document.removeEventListener(\"keydown\",this._onKeyDown),document.removeEventListener(\"keyup\",this._onKeyUp),window.removeEventListener(\"blur\",this.cancel),window.removeEventListener(\"visibilitychange\",this.cancel))}};import{Emitter as lt}from\"eventti\";import{getOffsetContainer as Ve}from\"mezr\";var Z=class{constructor(){this.sensor=null,this.isEnded=!1,this.isStarted=!1,this.startEvent=null,this.nextMoveEvent=null,this.prevMoveEvent=null,this.endEvent=null,this.items=[]}};var ee=class{constructor(e,t,n,r,s){this.data={},this.element=e,this.elementContainer=t,this.elementOffsetContainer=n,this.dragContainer=r,this.dragOffsetContainer=s,this.initialTransform=\"\",this.frozenProps=null,this.unfrozenProps=null,this.x=0,this.y=0,this.pX=0,this.pY=0,this._updateDiffX=0,this._updateDiffY=0,this._moveDiffX=0,this._moveDiffY=0,this._containerDiffX=0,this._containerDiffY=0}};import{getOffset as Ne}from\"mezr\";function pe(i,e,t={left:0,top:0}){if(t.left=0,t.top=0,i===e)return t;let n=Ne([i,\"padding\"]),r=Ne([e,\"padding\"]);return t.left=r.left-n.left,t.top=r.top-n.top,t}var qe=new WeakMap;function te(i){let e=qe.get(i)?.deref();return e||(e=window.getComputedStyle(i,null),qe.set(i,new WeakRef(e))),e}var ct=\"matrix(1, 0, 0, 1, 0, 0)\",dt=\"matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)\",Ue=J?{capture:!0,passive:!0}:!0,ze={left:0,top:0},fe={x:0,y:0};function ht(){return{container:null,startPredicate:()=>!0,getElements:()=>null,releaseElements:()=>null,getFrozenProps:()=>null,getStartPosition:()=>({x:0,y:0}),setPosition:({item:i,x:e,y:t})=>{i.element.style.transform=`translate(${e}px, ${t}px) ${i.initialTransform}`},getPositionChange:({event:i,prevEvent:e})=>(fe.x=i.x-e.x,fe.y=i.y-e.y,fe)}}var Be=class{constructor(e,t={}){this.sensors=e,this.settings=this._parseSettings(t),this.plugins={},this.drag=null,this.isDestroyed=!1,this._sensorData=new Map,this._emitter=new lt,this._startId=Symbol(),this._moveId=Symbol(),this._updateId=Symbol(),this._onMove=this._onMove.bind(this),this._onScroll=this._onScroll.bind(this),this._onEnd=this._onEnd.bind(this),this._prepareStart=this._prepareStart.bind(this),this._applyStart=this._applyStart.bind(this),this._prepareMove=this._prepareMove.bind(this),this._applyMove=this._applyMove.bind(this),this._preparePositionUpdate=this._preparePositionUpdate.bind(this),this._applyPositionUpdate=this._applyPositionUpdate.bind(this),this.sensors.forEach(n=>{this._sensorData.set(n,{predicateState:0,predicateEvent:null,onMove:o=>this._onMove(o,n),onEnd:o=>this._onEnd(o,n)});let{onMove:r,onEnd:s}=this._sensorData.get(n);n.on(\"start\",r),n.on(\"move\",r),n.on(\"cancel\",s),n.on(\"end\",s),n.on(\"destroy\",s)})}_parseSettings(e,t=ht()){let{container:n=t.container,startPredicate:r=t.startPredicate,getElements:s=t.getElements,releaseElements:o=t.releaseElements,getFrozenProps:c=t.getFrozenProps,getStartPosition:l=t.getStartPosition,setPosition:a=t.setPosition,getPositionChange:d=t.getPositionChange}=e||{};return{container:n,startPredicate:r,getElements:s,releaseElements:o,getFrozenProps:c,getStartPosition:l,setPosition:a,getPositionChange:d}}_emit(e,...t){this._emitter.emit(e,...t)}_onMove(e,t){let n=this._sensorData.get(t);if(n)switch(n.predicateState){case 0:{n.predicateEvent=e;let r=this.settings.startPredicate({draggable:this,sensor:t,event:e});r===!0?this.resolveStartPredicate(t):r===!1&&this.rejectStartPredicate(t);break}case 1:{this.drag&&(this.drag.nextMoveEvent=e,u.once(v,this._prepareMove,this._moveId),u.once(D,this._applyMove,this._moveId));break}}}_onScroll(){this.updatePosition()}_onEnd(e,t){let n=this._sensorData.get(t);n&&(this.drag?n.predicateState===1&&(this.drag.endEvent=e,this._sensorData.forEach(r=>{r.predicateState=0,r.predicateEvent=null}),this.stop()):(n.predicateState=0,n.predicateEvent=null))}_prepareStart(){let{drag:e}=this;if(!e||!e.startEvent)return;let t=this.settings.getElements({draggable:this,sensor:e.sensor,startEvent:e.startEvent})||[];e.items=t.map(n=>{if(!n.isConnected)throw new Error(\"Element is not connected\");let r=n.parentElement,s=Ve(n);if(!s)throw new Error(\"Offset container could not be computed for the element!\");let o=this.settings.container||r,c=o===r?s:Ve(n,{container:o});if(!c)throw new Error(\"Drag offset container could not be computed for the element!\");let l=new ee(n,r,s,o,c),a=n.getBoundingClientRect();if(l.x=a.left,l.y=a.top,s!==c){let{left:b,top:f}=pe(c,s,ze);l._containerDiffX=b,l._containerDiffY=f}let d=te(n),{transform:m}=d;m&&m!==\"none\"&&m!==ct&&m!==dt&&(l.initialTransform=m);let{x:y,y:g}=this.settings.getStartPosition({draggable:this,sensor:e.sensor,item:l,style:d});l.pX=y,l.pY=g;let S=this.settings.getFrozenProps({draggable:this,sensor:e.sensor,item:l,style:d});if(Array.isArray(S))if(S.length){let b={};for(let f of S)b[f]=d[f];l.frozenProps=b}else l.frozenProps=null;else l.frozenProps=S;if(l.frozenProps){let b={};for(let f in l.frozenProps)l.frozenProps.hasOwnProperty(f)&&(b[f]=n.style[f]);l.unfrozenProps=b}return l}),this._emit(\"preparestart\",e.startEvent)}_applyStart(){let e=this.drag;if(!e||!e.startEvent)return;let{container:t}=this.settings;for(let n of e.items)t&&n.element.parentElement!==t&&(t.appendChild(n.element),n.pX+=n._containerDiffX,n.pY+=n._containerDiffY),n.frozenProps&&Object.assign(n.element.style,n.frozenProps),this.settings.setPosition({phase:\"start\",draggable:this,sensor:e.sensor,item:n,x:n.pX,y:n.pY});window.addEventListener(\"scroll\",this._onScroll,Ue),e.isStarted=!0,this._emit(\"start\",e.startEvent)}_prepareMove(){let{drag:e}=this;if(!e||!e.startEvent)return;let t=e.nextMoveEvent,n=e.prevMoveEvent||e.startEvent;if(!(!t||t===n)){for(let r of e.items){let{x:s,y:o}=this.settings.getPositionChange({draggable:this,sensor:e.sensor,item:r,startEvent:e.startEvent,prevEvent:n,event:t});s&&(r.pX=r.pX-r._moveDiffX+s,r.x=r.x-r._moveDiffX+s,r._moveDiffX=s),o&&(r.pY=r.pY-r._moveDiffY+o,r.y=r.y-r._moveDiffY+o,r._moveDiffY=o)}e.prevMoveEvent=t,this._emit(\"preparemove\",t)}}_applyMove(){let{drag:e}=this;if(!(!e||!e.nextMoveEvent)){for(let t of e.items)t._moveDiffX=0,t._moveDiffY=0;for(let t of e.items)this.settings.setPosition({phase:\"move\",draggable:this,sensor:e.sensor,item:t,x:t.pX,y:t.pY});this._emit(\"move\",e.nextMoveEvent)}}_preparePositionUpdate(){let{drag:e}=this;if(e)for(let t of e.items){if(t.elementOffsetContainer!==t.dragOffsetContainer){let{left:c,top:l}=pe(t.dragOffsetContainer,t.elementOffsetContainer,ze);t._containerDiffX=c,t._containerDiffY=l}let{left:n,top:r}=t.element.getBoundingClientRect(),s=t.x-t._moveDiffX-n;t.pX=t.pX-t._updateDiffX+s,t._updateDiffX=s;let o=t.y-t._moveDiffY-r;t.pY=t.pY-t._updateDiffY+o,t._updateDiffY=o}}_applyPositionUpdate(){let{drag:e}=this;if(e)for(let t of e.items)t._updateDiffX=0,t._updateDiffY=0,this.settings.setPosition({phase:\"move\",draggable:this,sensor:e.sensor,item:t,x:t.pX,y:t.pY})}on(e,t,n){return this._emitter.on(e,t,n)}off(e,t){this._emitter.off(e,t)}resolveStartPredicate(e,t){let n=this._sensorData.get(e);if(!n)return;let r=t||n.predicateEvent;n.predicateState===0&&r&&(n.predicateState=1,n.predicateEvent=null,this.drag=new Z,this.drag.sensor=e,this.drag.startEvent=r,this._sensorData.forEach((s,o)=>{o!==e&&(s.predicateState=2,s.predicateEvent=null)}),u.once(v,this._prepareStart,this._startId),u.once(D,this._applyStart,this._startId))}rejectStartPredicate(e){let t=this._sensorData.get(e);t?.predicateState===0&&(t.predicateState=2,t.predicateEvent=null)}stop(){let{drag:e}=this;if(!(!e||e.isEnded)){if(e.isEnded=!0,u.off(v,this._startId),u.off(D,this._startId),u.off(v,this._moveId),u.off(D,this._moveId),u.off(v,this._updateId),u.off(D,this._updateId),e.isStarted){window.removeEventListener(\"scroll\",this._onScroll,Ue);let t=[];for(let n of e.items){if(t.push(n.element),n.elementContainer&&n.element.parentElement!==n.elementContainer&&(n.pX-=n._containerDiffX,n.pY-=n._containerDiffY,n._containerDiffX=0,n._containerDiffY=0,n.elementContainer.appendChild(n.element)),n.unfrozenProps)for(let r in n.unfrozenProps)n.element.style[r]=n.unfrozenProps[r]||\"\";this.settings.setPosition({phase:\"end\",draggable:this,sensor:e.sensor,item:n,x:n.pX,y:n.pY})}t.length&&this.settings.releaseElements({draggable:this,sensor:e.sensor,elements:t})}this._emit(\"end\",e.endEvent),this.drag=null}}updatePosition(e=!1){this.drag&&(e?(this._preparePositionUpdate(),this._applyPositionUpdate()):(u.once(v,this._preparePositionUpdate,this._updateId),u.once(D,this._applyPositionUpdate,this._updateId)))}updateSettings(e={}){this.settings=this._parseSettings(e,this.settings)}use(e){return e(this)}destroy(){this.isDestroyed||(this.isDestroyed=!0,this.stop(),this._sensorData.forEach(({onMove:e,onEnd:t},n)=>{n.off(\"start\",e),n.off(\"move\",e),n.off(\"cancel\",t),n.off(\"end\",t),n.off(\"destroy\",t)}),this._sensorData.clear(),this._emit(\"destroy\"),this._emitter.off())}};import{Emitter as ut}from\"eventti\";import{getDistance as pt,getRect as Ge}from\"mezr\";var B=class{constructor(e,t){this._data=[],this._createObject=e,this._onPut=t}pick(){return this._data.length?this._data.pop():this._createObject()}put(e){this._data.indexOf(e)===-1&&(this._onPut&&this._onPut(e),this._data.push(e))}reset(){this._data.length=0}};import{getIntersection as mt}from\"mezr\";function He(i,e){let t=mt(i,e);return t?t.width*t.height:0}function ge(i,e){let t=He(i,e);if(!t)return 0;let n=Math.min(i.width,e.width)*Math.min(i.height,e.height);return t/n*100}function w(i){return i instanceof Window}function Se(i){return w(i)||i===document.documentElement||i===document.body?window:i}function N(i){return w(i)?i.pageXOffset:i.scrollLeft}function Ee(i){return w(i)&&(i=document.documentElement),i.scrollWidth-i.clientWidth}function q(i){return w(i)?i.pageYOffset:i.scrollTop}function ve(i){return w(i)&&(i=document.documentElement),i.scrollHeight-i.clientHeight}function _e(i,e){return!(i.right<=e.left||e.right<=i.left||i.bottom<=e.top||e.bottom<=i.top)}var xe={width:0,height:0,left:0,right:0,top:0,bottom:0},Fe={...xe},je=50,I={direction:\"none\",threshold:0,distance:0,value:0,maxValue:0,duration:0,speed:0,deltaTime:0,isEnding:!1},h={x:1,y:2},M={forward:4,reverse:8},ne={none:0,left:h.x|M.reverse,right:h.x|M.forward},H={none:0,up:h.y|M.reverse,down:h.y|M.forward},p={...ne,...H};function ye(i){switch(i){case ne.none:case H.none:return\"none\";case ne.left:return\"left\";case ne.right:return\"right\";case H.up:return\"up\";case H.down:return\"down\";default:throw new Error(`Unknown direction value: ${i}`)}}function $e(i,e,t){let{left:n=0,right:r=0,top:s=0,bottom:o=0}=e;return n=Math.max(0,n),r=Math.max(0,r),s=Math.max(0,s),o=Math.max(0,o),t.width=i.width+n+r,t.height=i.height+s+o,t.left=i.left-n,t.top=i.top-s,t.right=i.right+r,t.bottom=i.bottom+o,t}function re(i,e){return Math.ceil(i)>=Math.floor(e)}function be(i,e){return Math.min(e/2,i)}function De(i,e,t,n){return Math.max(0,t+i*2+n*e-n)/2}var Pe=class{constructor(){this.positionX=0,this.positionY=0,this.directionX=p.none,this.directionY=p.none,this.overlapCheckRequestTime=0}},Te=class{constructor(){this.element=null,this.requestX=null,this.requestY=null,this.scrollLeft=0,this.scrollTop=0}reset(){this.requestX&&(this.requestX.action=null),this.requestY&&(this.requestY.action=null),this.element=null,this.requestX=null,this.requestY=null,this.scrollLeft=0,this.scrollTop=0}addRequest(e){h.x&e.direction?(this.requestX&&this.removeRequest(this.requestX),this.requestX=e):(this.requestY&&this.removeRequest(this.requestY),this.requestY=e),e.action=this}removeRequest(e){this.requestX===e?(this.requestX=null,e.action=null):this.requestY===e&&(this.requestY=null,e.action=null)}computeScrollValues(){this.element&&(this.scrollLeft=this.requestX?this.requestX.value:N(this.element),this.scrollTop=this.requestY?this.requestY.value:q(this.element))}scroll(){this.element&&(this.element.scrollTo?this.element.scrollTo(this.scrollLeft,this.scrollTop):(this.element.scrollLeft=this.scrollLeft,this.element.scrollTop=this.scrollTop))}},we=class{constructor(){this.item=null,this.element=null,this.isActive=!1,this.isEnding=!1,this.direction=0,this.value=NaN,this.maxValue=0,this.threshold=0,this.distance=0,this.deltaTime=0,this.speed=0,this.duration=0,this.action=null}reset(){this.isActive&&this.onStop(),this.item=null,this.element=null,this.isActive=!1,this.isEnding=!1,this.direction=0,this.value=NaN,this.maxValue=0,this.threshold=0,this.distance=0,this.deltaTime=0,this.speed=0,this.duration=0,this.action=null}hasReachedEnd(){return M.forward&this.direction?re(this.value,this.maxValue):this.value<=0}computeCurrentScrollValue(){return this.element?this.value!==this.value?h.x&this.direction?N(this.element):q(this.element):Math.max(0,Math.min(this.value,this.maxValue)):0}computeNextScrollValue(){let e=this.speed*(this.deltaTime/1e3),t=M.forward&this.direction?this.value+e:this.value-e;return Math.max(0,Math.min(t,this.maxValue))}computeSpeed(){if(!this.item||!this.element)return 0;let{speed:e}=this.item;return typeof e==\"function\"?(I.direction=ye(this.direction),I.threshold=this.threshold,I.distance=this.distance,I.value=this.value,I.maxValue=this.maxValue,I.duration=this.duration,I.speed=this.speed,I.deltaTime=this.deltaTime,I.isEnding=this.isEnding,e(this.element,I)):e}tick(e){return this.isActive||(this.isActive=!0,this.onStart()),this.deltaTime=e,this.value=this.computeCurrentScrollValue(),this.speed=this.computeSpeed(),this.value=this.computeNextScrollValue(),this.duration+=e,this.value}onStart(){if(!this.item||!this.element)return;let{onStart:e}=this.item;typeof e==\"function\"&&e(this.element,ye(this.direction))}onStop(){if(!this.item||!this.element)return;let{onStop:e}=this.item;typeof e==\"function\"&&e(this.element,ye(this.direction))}};function Je(i=500,e=.5,t=.25){let n=i*(e>0?1/e:1/0),r=i*(t>0?1/t:1/0);return function(s,o){let c=0;if(!o.isEnding)if(o.threshold>0){let d=o.threshold-Math.max(0,o.distance);c=i/o.threshold*d}else c=i;let l=o.speed;if(l===c)return c;let a=c;return lnew we,n=>n.reset()),this._actionPool=new B(()=>new Te,n=>n.reset()),this._emitter=new ut,this._frameRead=this._frameRead.bind(this),this._frameWrite=this._frameWrite.bind(this)}_frameRead(e){this._isDestroyed||(e&&this._tickTime?(this._tickDeltaTime=e-this._tickTime,this._tickTime=e,this._updateItems(),this._updateRequests(),this._updateActions()):(this._tickTime=e,this._tickDeltaTime=0))}_frameWrite(){this._isDestroyed||this._applyActions()}_startTicking(){this._isTicking||(this._isTicking=!0,u.on(v,this._frameRead),u.on(D,this._frameWrite))}_stopTicking(){this._isTicking&&(this._isTicking=!1,this._tickTime=0,this._tickDeltaTime=0,u.off(v,this._frameRead),u.off(D,this._frameWrite))}_getItemClientRect(e,t={width:0,height:0,left:0,right:0,top:0,bottom:0}){let{clientRect:n}=e;return t.left=n.left,t.top=n.top,t.width=n.width,t.height=n.height,t.right=n.left+n.width,t.bottom=n.top+n.height,t}_requestItemScroll(e,t,n,r,s,o,c){let l=this._requests[t],a=l.get(e);a?(a.element!==n||a.direction!==r)&&a.reset():(a=this._requestPool.pick(),l.set(e,a)),a.item=e,a.element=n,a.direction=r,a.threshold=s,a.distance=o,a.maxValue=c}_cancelItemScroll(e,t){let n=this._requests[t],r=n.get(e);r&&(r.action&&r.action.removeRequest(r),this._requestPool.put(r),n.delete(e))}_checkItemOverlap(e,t,n){let{inertAreaSize:r,targets:s}=e;if(!s.length){t&&this._cancelItemScroll(e,h.x),n&&this._cancelItemScroll(e,h.y);return}let o=this._itemData.get(e),c=o?.directionX,l=o?.directionY;if(!c&&!l){t&&this._cancelItemScroll(e,h.x),n&&this._cancelItemScroll(e,h.y);return}let a=this._getItemClientRect(e,xe),d=null,m=-1/0,y=0,g=-1/0,S=p.none,b=0,f=0,E=null,x=-1/0,V=0,U=-1/0,se=p.none,Ce=0,Le=0,ae=0;for(;ae=m&&F>0&&(R>m||O>g)){let T=0,C=p.none,L=be(Ke,P.width),z=De(L,r,a.width,P.width);c===p.right?(T=P.right+z-a.right,T<=L&&!re(N(k),F)&&(C=p.right)):c===p.left&&(T=a.left-(P.left-z),T<=L&&N(k)>0&&(C=p.left)),C&&(d=k,m=R,y=L,g=O,S=C,b=T,f=F)}if(ce&&R>=x&&j>0&&(R>x||O>U)){let T=0,C=H.none,L=be(Ke,P.height),z=De(L,r,a.height,P.height);l===p.down?(T=P.bottom+z-a.bottom,T<=L&&!re(q(k),j)&&(C=p.down)):l===p.up&&(T=a.top-(P.top-z),T<=L&&q(k)>0&&(C=p.up)),C&&(E=k,x=R,V=L,U=O,se=C,Ce=T,Le=j)}}t&&(d&&S?this._requestItemScroll(e,h.x,d,S,y,b,f):this._cancelItemScroll(e,h.x)),n&&(E&&se?this._requestItemScroll(e,h.y,E,se,V,Ce,Le):this._cancelItemScroll(e,h.y))}_updateScrollRequest(e){let t=e.item,{inertAreaSize:n,smoothStop:r,targets:s}=t,o=this._getItemClientRect(t,xe),c=null,l=0;for(;lf)break;let V=m?N(d):q(d);if(c=M.forward&e.direction?re(V,y):V<=0,c)break;return e.maxValue=y,e.threshold=f,e.distance=x,e.isEnding=!1,!0}return r===!0&&e.speed>0?(c===null&&(c=e.hasReachedEnd()),e.isEnding=!c):e.isEnding=!1,e.isEnding}_updateItems(){for(let e=0;eo?p.right:rc?p.down:s0&&this._tickTime-c>this.settings.overlapCheckInterval,a=!0,d=t.get(s);d&&d.isActive&&(a=!this._updateScrollRequest(d),a&&(l=!0,this._cancelItemScroll(s,h.x)));let m=!0,y=n.get(s);y&&y.isActive&&(m=!this._updateScrollRequest(y),m&&(l=!0,this._cancelItemScroll(s,h.y))),l&&(o.overlapCheckRequestTime=0,this._checkItemOverlap(s,a,m))}}_requestAction(e,t){let n=t===h.x,r=null,s=0;for(;s{let{drag:e}=i,t=e?.items[0];if(t)G.x=t.pX,G.y=t.pY;else{let n=e&&(e.nextMoveEvent||e.startEvent);G.x=n?n.x:0,G.y=n?n.y:0}return G},getClientRect:i=>{let{drag:e}=i,t=e?.items[0];if(t&&t.element){let{left:n,top:r,width:s,height:o}=t.element.getBoundingClientRect();K.left=n,K.top=r,K.width=s,K.height=o}else{let n=e&&(e.nextMoveEvent||e.startEvent);K.left=n?n.x-25:0,K.top=n?n.y-25:0,K.width=n?50:0,K.height=n?50:0}return K},onStart:null,onStop:null}}var Ae=class{constructor(e,t){this._draggableAutoScroll=e,this._draggable=t,this._position={x:0,y:0},this._clientRect={left:0,top:0,width:0,height:0}}_getSettings(){return this._draggableAutoScroll.settings}get targets(){let{targets:e}=this._getSettings();return typeof e==\"function\"&&(e=e(this._draggable)),e}get position(){let{getPosition:e}=this._getSettings();if(typeof e==\"function\"){let t=e(this._draggable);this._position.x=t.x,this._position.y=t.y}else this._position.x=0,this._position.y=0;return this._position}get clientRect(){let{getClientRect:e}=this._getSettings();if(typeof e==\"function\"){let{left:t,top:n,width:r,height:s}=e(this._draggable);this._clientRect.left=t,this._clientRect.top=n,this._clientRect.width=r,this._clientRect.height=s}else this._clientRect.left=0,this._clientRect.top=0,this._clientRect.width=0,this._clientRect.height=0;return this._clientRect}get inertAreaSize(){return this._getSettings().inertAreaSize}get smoothStop(){return this._getSettings().smoothStop}get speed(){return this._getSettings().speed}get onStart(){return this._getSettings().onStart}get onStop(){return this._getSettings().onStop}onPrepareScrollEffect(){let e=this._draggable._updateId;u.off(v,e),u.off(D,e),this._draggable._preparePositionUpdate()}onApplyScrollEffect(){this._draggable._applyPositionUpdate()}},ke=class{constructor(e,t={}){this.name=\"autoscroll\",this.version=\"0.0.2\",this.settings=this._parseSettings(t),this._autoScrollProxy=null,e.on(\"start\",()=>{this._autoScrollProxy||(this._autoScrollProxy=new Ae(this,e),Ie.addItem(this._autoScrollProxy))}),e.on(\"end\",()=>{this._autoScrollProxy&&(Ie.removeItem(this._autoScrollProxy),this._autoScrollProxy=null)})}_parseSettings(e,t=ft()){let{targets:n=t.targets,inertAreaSize:r=t.inertAreaSize,speed:s=t.speed,smoothStop:o=t.smoothStop,getPosition:c=t.getPosition,getClientRect:l=t.getClientRect,onStart:a=t.onStart,onStop:d=t.onStop}=e||{};return{targets:n,inertAreaSize:r,speed:s,smoothStop:o,getPosition:c,getClientRect:l,onStart:a,onStop:d}}updateSettings(e={}){this.settings=this._parseSettings(e,this.settings)}};function dr(i){return e=>{let t=new ke(e,i),n=e;return n.plugins[t.name]=t,n}}var Qe=new Set([\"auto\",\"scroll\",\"overlay\"]);function oe(i){let e=te(i);return!!(Qe.has(e.overflowY)||Qe.has(e.overflowX))}function Ze(i){return i instanceof Document}function et(i,e=[]){let t=i?.parentNode;for(;t&&!Ze(t);)t instanceof Element?(oe(t)&&e.push(t),t=t.parentNode):t instanceof ShadowRoot?t=t.host:t=t.parentNode;return e.push(window),e}function gt(i){let e=[];return oe(i)&&e.push(i),et(i,e),e}function br(i={}){let e,t=0,n=null,r,{timeout:s=250,fallback:o=()=>!0}=i,c=d=>d.preventDefault(),l=d=>{if(t){if(e){d.cancelable&&d.preventDefault();return}e===void 0&&(d.cancelable&&d.timeStamp-t>s?(e=!0,d.preventDefault()):e=!1)}};return d=>{if(!(d.sensor instanceof Y))return o(d);let{draggable:m,sensor:y,event:g}=d,S=g;if(S.pointerType===\"touch\"){if(S.type===\"start\"&&(S.srcEvent.type===\"pointerdown\"||S.srcEvent.type===\"touchstart\")){n=S.target;let b=n?gt(n):[];b.forEach(E=>{E.addEventListener(\"touchmove\",l,{passive:!1,capture:!0})});let f=()=>{t&&(m.off(\"end\",f),m.sensors.forEach(E=>{E instanceof Y&&E.off(\"end\",f)}),n?.removeEventListener(\"contextmenu\",c),b.forEach(E=>{E.removeEventListener(\"touchmove\",l,{capture:!0})}),t=0,e=void 0,n=null,r=void window.clearTimeout(r))};e=void 0,t=S.srcEvent.timeStamp,n?.addEventListener(\"contextmenu\",c),m.on(\"end\",f),m.sensors.forEach(E=>{E instanceof Y&&E.off(\"end\",f)}),s>0&&(r=window.setTimeout(()=>{m.resolveStartPredicate(y),e=!0,r=void 0},s))}return e}return S.type===\"start\"&&!S.srcEvent.button}}export{h as AUTO_SCROLL_AXIS,M as AUTO_SCROLL_AXIS_DIRECTION,p as AUTO_SCROLL_DIRECTION,ie as AutoScroll,$ as BaseMotionSensor,W as BaseSensor,Be as Draggable,ke as DraggableAutoScroll,Ye as KeyboardMotionSensor,Xe as KeyboardSensor,Y as PointerSensor,_ as SensorEventType,Ie as autoScroll,dr as autoScrollPlugin,Je as autoScrollSmoothSpeed,br as createPointerSensorStartPredicate,wt as setTicker,u as ticker,v as tickerReadPhase,D as tickerWritePhase};\n","function getOrCreateEventData(e,t){let i=e.get(t);return i||(i=new EventData,e.set(t,i)),i}class EventData{constructor(){this.idMap=new Map,this.fnMap=new Map,this.onceList=new Set,this.emitList=null}add(e,t,i,s,n){if(!n&&this.fnMap.has(e))throw new Error(\"Emitter: tried to add an existing event listener to an event!\");if(this.idMap.has(i))switch(s){case\"throw\":throw new Error(\"Emitter: tried to add an existing event listener id to an event!\");case\"ignore\":return i;default:this.delId(i,\"update\"===s)}let r=this.fnMap.get(e);return r||(r=new Set,this.fnMap.set(e,r)),r.add(i),this.idMap.set(i,e),t&&this.onceList.add(i),this.emitList&&this.emitList.push(e),i}delId(e,t=!1){const i=this.idMap.get(e);if(!i)return;const s=this.fnMap.get(i);t||this.idMap.delete(e),this.onceList.delete(e),s.delete(e),s.size||this.fnMap.delete(i),this.emitList=null}delFn(e){const t=this.fnMap.get(e);t&&(t.forEach((e=>{this.onceList.delete(e),this.idMap.delete(e)})),this.fnMap.delete(e),this.emitList=null)}}class Emitter{constructor(e={}){const{idDedupeMode:t=\"replace\",allowDuplicateListeners:i=!0}=e;this.idDedupeMode=t,this.allowDuplicateListeners=i,this._events=new Map}_getListeners(e){const t=this._events.get(e);if(!t)return null;const{idMap:i,onceList:s}=t;if(!i.size)return null;const n=t.emitList||[...i.values()];if(s.size)if(s.size===i.size)this._events.delete(e);else for(const e of s)t.delId(e);else t.emitList=n;return n}on(e,t,i=Symbol()){return getOrCreateEventData(this._events,e).add(t,!1,i,this.idDedupeMode,this.allowDuplicateListeners)}once(e,t,i=Symbol()){return getOrCreateEventData(this._events,e).add(t,!0,i,this.idDedupeMode,this.allowDuplicateListeners)}off(e,t){if(void 0===e)return void this._events.clear();if(void 0===t)return void this._events.delete(e);const i=this._events.get(e);i&&(\"function\"==typeof t?i.delFn(t):i.delId(t),i.idMap.size||this._events.delete(e))}emit(e,...t){const i=this._getListeners(e);if(!i)return;let s=0,n=i.length;for(;s{e+=this.listenerCount(i)})),e}return(null===(t=this._events.get(e))||void 0===t?void 0:t.idMap.size)||0}}export{Emitter};","import{Emitter}from\"eventti\";function createRequestFrame(e=60){if(\"function\"==typeof requestAnimationFrame&&\"function\"==typeof cancelAnimationFrame)return e=>{const t=requestAnimationFrame(e);return()=>cancelAnimationFrame(t)};{const t=1e3/e,i=\"undefined\"==typeof performance?()=>Date.now():()=>performance.now();return e=>{const r=setTimeout((()=>e(i())),t);return()=>clearTimeout(r)}}}var AutoTickState;!function(e){e[e.PAUSED=1]=\"PAUSED\",e[e.ON_DEMAND=2]=\"ON_DEMAND\",e[e.CONTINUOUS=3]=\"CONTINUOUS\"}(AutoTickState||(AutoTickState={}));class Ticker{constructor(e={}){const{phases:t=[],autoTick:i=AutoTickState.ON_DEMAND,allowDuplicateListeners:r=!0,idDedupeMode:s=\"replace\",requestFrame:n=createRequestFrame()}=e;this.phases=t,this._autoTick=i,this._requestFrame=n,this._cancelFrame=null,this._queue=[],this._emitter=new Emitter({allowDuplicateListeners:r,idDedupeMode:s}),this.tick=this.tick.bind(this)}get requestFrame(){return this._requestFrame}set requestFrame(e){this._requestFrame=e,this._kickstart()}get autoTick(){return this._autoTick}set autoTick(e){this._autoTick=e,this._kickstart()}get allowDuplicateListeners(){return this._emitter.allowDuplicateListeners}set allowDuplicateListeners(e){this._emitter.allowDuplicateListeners=e}get idDedupeMode(){return this._emitter.idDedupeMode}set idDedupeMode(e){this._emitter.idDedupeMode=e}tick(...e){this._cancelFrame=null;const{_queue:t}=this;if(t.length)throw new Error(\"Ticker: Can't tick before the previous tick has finished!\");this._request();const{phases:i,_emitter:r}=this;let s,n,a,c,u,o;for(s=0,a=i.length;s=AutoTickState.ON_DEMAND&&(this._cancelFrame=this._requestFrame(this.tick))}_cancel(){this._cancelFrame&&(this._cancelFrame(),this._cancelFrame=null)}_kickstart(){this._autoTick===AutoTickState.ON_DEMAND?this._emitter.listenerCount()&&this._request():this._autoTick===AutoTickState.CONTINUOUS?this._request():this._cancel()}}function createXrRequestFrame(e){return t=>{const i=e.requestAnimationFrame(t);return()=>e.cancelAnimationFrame(i)}}export{AutoTickState,Ticker,createRequestFrame,createXrRequestFrame};","export*from\"./getContainingBlock.js\";export*from\"./getDistance.js\";export*from\"./getHeight.js\";export*from\"./getIntersection.js\";export*from\"./getOffset.js\";export*from\"./getOffsetContainer.js\";export*from\"./getOverflow.js\";export*from\"./getRect.js\";export*from\"./getWidth.js\";","import{getStyle}from\"./utils/getStyle.js\";import{isContainingBlockForFixedElement}from\"./utils/isContainingBlockForFixedElement.js\";import{isContainingBlockForAbsoluteElement}from\"./utils/isContainingBlockForAbsoluteElement.js\";import{isBlockElement}from\"./utils/isBlockElement.js\";import{isDocumentElement}from\"./utils/isDocumentElement.js\";export function getContainingBlock(e,t={}){if(isDocumentElement(e))return e.ownerDocument.defaultView;const n=t.position||getStyle(e).position,{skipDisplayNone:i,container:o}=t;switch(n){case\"static\":case\"relative\":case\"sticky\":case\"-webkit-sticky\":{let t=o||e.parentElement;for(;t;){const e=isBlockElement(t);if(e)return t;if(null===e&&!i)return null;t=t.parentElement}return e.ownerDocument.documentElement}case\"absolute\":case\"fixed\":{const t=\"fixed\"===n;let l=o||e.parentElement;for(;l;){const e=t?isContainingBlockForFixedElement(l):isContainingBlockForAbsoluteElement(l);if(!0===e)return l;if(null===e&&!i)return null;l=l.parentElement}return e.ownerDocument.defaultView}default:return null}}","const STYLE_DECLARATION_CACHE=new WeakMap;export function getStyle(e,t){if(t)return window.getComputedStyle(e,t);let C=STYLE_DECLARATION_CACHE.get(e)?.deref();return C||(C=window.getComputedStyle(e,null),STYLE_DECLARATION_CACHE.set(e,new WeakRef(C))),C}","import{IS_SAFARI}from\"./constants.js\";import{getStyle}from\"./getStyle.js\";import{isBlockElement}from\"./isBlockElement.js\";export function isContainingBlockForFixedElement(n){const t=getStyle(n);if(!IS_SAFARI){const{filter:n}=t;if(n&&\"none\"!==n)return!0;const{backdropFilter:e}=t;if(e&&\"none\"!==e)return!0;const{willChange:i}=t;if(i&&(i.indexOf(\"filter\")>-1||i.indexOf(\"backdrop-filter\")>-1))return!0}const e=isBlockElement(n);if(!e)return e;const{transform:i}=t;if(i&&\"none\"!==i)return!0;const{perspective:r}=t;if(r&&\"none\"!==r)return!0;const{contentVisibility:o}=t;if(o&&\"auto\"===o)return!0;const{contain:f}=t;if(f&&(\"strict\"===f||\"content\"===f||f.indexOf(\"paint\")>-1||f.indexOf(\"layout\")>-1))return!0;const{willChange:c}=t;return!(!c||!(c.indexOf(\"transform\")>-1||c.indexOf(\"perspective\")>-1||c.indexOf(\"contain\")>-1))||!!(IS_SAFARI&&c&&c.indexOf(\"filter\")>-1)}","export const IS_BROWSER=\"undefined\"!=typeof window&&void 0!==window.document;export const IS_SAFARI=!!(IS_BROWSER&&navigator.vendor&&navigator.vendor.indexOf(\"Apple\")>-1&&navigator.userAgent&&-1==navigator.userAgent.indexOf(\"CriOS\")&&-1==navigator.userAgent.indexOf(\"FxiOS\"));export const BOX_EDGE={content:\"content\",padding:\"padding\",scrollbar:\"scrollbar\",border:\"border\",margin:\"margin\"};export const INCLUDE_WINDOW_SCROLLBAR={[BOX_EDGE.content]:!1,[BOX_EDGE.padding]:!1,[BOX_EDGE.scrollbar]:!0,[BOX_EDGE.border]:!0,[BOX_EDGE.margin]:!0};export const SCROLLABLE_OVERFLOWS=new Set([\"auto\",\"scroll\"]);export const IS_CHROMIUM=(()=>{try{return window.navigator.userAgentData.brands.some((({brand:n})=>\"Chromium\"===n))}catch(n){return!1}})();","import{getStyle}from\"./getStyle.js\";export function isBlockElement(e){switch(getStyle(e).display){case\"none\":return null;case\"inline\":case\"contents\":return!1;default:return!0}}","import{getStyle}from\"./getStyle.js\";import{isContainingBlockForFixedElement}from\"./isContainingBlockForFixedElement.js\";export function isContainingBlockForAbsoluteElement(t){return\"static\"!==getStyle(t).position||isContainingBlockForFixedElement(t)}","export function isDocumentElement(e){return e instanceof HTMLHtmlElement}","import{getDistanceBetweenRects}from\"./utils/getDistanceBetweenRects.js\";import{getNormalizedRect}from\"./utils/getNormalizedRect.js\";export function getDistance(e,t){const c=getNormalizedRect(e),i=getNormalizedRect(t);return getDistanceBetweenRects(c,i)}","import{isIntersecting}from\"./isIntersecting.js\";import{getDistanceBetweenPoints}from\"./getDistanceBetweenPoints.js\";export function getDistanceBetweenRects(t,e){if(isIntersecting(t,e))return null;const n=t.left+t.width,i=t.top+t.height,o=e.left+e.width,s=e.top+e.height;return n<=e.left?i<=e.top?getDistanceBetweenPoints(n,i,e.left,e.top):t.top>=s?getDistanceBetweenPoints(n,t.top,e.left,s):e.left-n:t.left>=o?i<=e.top?getDistanceBetweenPoints(t.left,i,o,e.top):t.top>=s?getDistanceBetweenPoints(t.left,t.top,o,s):t.left-o:i<=e.top?e.top-i:t.top-s}","export function isIntersecting(t,e){return!(t.left+t.width<=e.left||e.left+e.width<=t.left||t.top+t.height<=e.top||e.top+e.height<=t.top)}","export function getDistanceBetweenPoints(t,e,n,o){return Math.sqrt(Math.pow(n-t,2)+Math.pow(o-e,2))}","import{getRect}from\"../getRect.js\";import{isRectObject}from\"./isRectObject.js\";export function getNormalizedRect(t){return isRectObject(t)?t:getRect(t)}","import{getWidth}from\"./getWidth.js\";import{getHeight}from\"./getHeight.js\";import{getOffset}from\"./getOffset.js\";import{isRectObject}from\"./utils/isRectObject.js\";export function getRect(t,e){let i=0,g=0;isRectObject(t)?(i=t.width,g=t.height):Array.isArray(t)?(i=getWidth(...t),g=getHeight(...t)):(i=getWidth(t),g=getHeight(t));const r=getOffset(t,e);return{width:i,height:g,...r,right:r.left+i,bottom:r.top+g}}","import{INCLUDE_WINDOW_SCROLLBAR,BOX_EDGE}from\"./utils/constants.js\";import{isWindow}from\"./utils/isWindow.js\";import{isDocument}from\"./utils/isDocument.js\";import{getWindowWidth}from\"./utils/getWindowWidth.js\";import{getDocumentWidth}from\"./utils/getDocumentWidth.js\";import{getElementWidth}from\"./utils/getElementWidth.js\";export function getWidth(t,i=BOX_EDGE.border){return isWindow(t)?getWindowWidth(t,INCLUDE_WINDOW_SCROLLBAR[i]):isDocument(t)?getDocumentWidth(t):getElementWidth(t,i)}","export function isWindow(n){return n instanceof Window}","export function isDocument(n){return n instanceof Document}","import{getPreciseScrollbarSize}from\"./getPreciseScrollbarSize.js\";export function getWindowWidth(e,r=!1){if(r)return e.innerWidth;const{innerWidth:t,document:i}=e,{documentElement:n}=i,{clientWidth:c}=n;return t-getPreciseScrollbarSize(n,\"y\",t-c)}","import{IS_CHROMIUM}from\"./constants.js\";import{getStyle}from\"./getStyle.js\";const SUBPIXEL_OFFSET=new Map;let testStyleElement=null,testParentElement=null,testChildElement=null;function getSubpixelScrollbarSize(t,e){const n=t.split(\".\");let l=SUBPIXEL_OFFSET.get(n[1]);if(void 0===l){testStyleElement||(testStyleElement=document.createElement(\"style\")),testStyleElement.innerHTML=`\\n #mezr-scrollbar-test::-webkit-scrollbar {\\n width: ${t} !important;\\n }\\n `,testParentElement&&testChildElement||(testParentElement=document.createElement(\"div\"),testChildElement=document.createElement(\"div\"),testParentElement.appendChild(testChildElement),testParentElement.id=\"mezr-scrollbar-test\",testParentElement.style.cssText=\"\\n all: unset !important;\\n position: fixed !important;\\n top: -200px !important;\\n left: 0px !important;\\n width: 100px !important;\\n height: 100px !important;\\n overflow: scroll !important;\\n pointer-events: none !important;\\n visibility: hidden !important;\\n \",testChildElement.style.cssText=\"\\n all: unset !important;\\n position: absolute !important;\\n inset: 0 !important;\\n \"),document.body.appendChild(testStyleElement),document.body.appendChild(testParentElement);l=testParentElement.getBoundingClientRect().width-testChildElement.getBoundingClientRect().width-e,SUBPIXEL_OFFSET.set(n[1],l),document.body.removeChild(testParentElement),document.body.removeChild(testStyleElement)}return e+l}export function getPreciseScrollbarSize(t,e,n){if(n<=0)return 0;if(IS_CHROMIUM){const n=getStyle(t,\"::-webkit-scrollbar\"),l=\"x\"===e?n.height:n.width,i=parseFloat(l);if(!Number.isNaN(i)&&!Number.isInteger(i))return getSubpixelScrollbarSize(l,i)}return n}","export function getDocumentWidth({documentElement:t}){return Math.max(t.scrollWidth,t.clientWidth,t.getBoundingClientRect().width)}","import{BOX_EDGE,SCROLLABLE_OVERFLOWS}from\"./constants.js\";import{getStyle}from\"./getStyle.js\";import{getPreciseScrollbarSize}from\"./getPreciseScrollbarSize.js\";import{isDocumentElement}from\"./isDocumentElement.js\";export function getElementWidth(t,e=BOX_EDGE.border){let{width:r}=t.getBoundingClientRect();if(e===BOX_EDGE.border)return r;const o=getStyle(t);return e===BOX_EDGE.margin?(r+=Math.max(0,parseFloat(o.marginLeft)||0),r+=Math.max(0,parseFloat(o.marginRight)||0),r):(r-=parseFloat(o.borderLeftWidth)||0,r-=parseFloat(o.borderRightWidth)||0,e===BOX_EDGE.scrollbar?r:(!isDocumentElement(t)&&SCROLLABLE_OVERFLOWS.has(o.overflowY)&&(r-=getPreciseScrollbarSize(t,\"y\",Math.round(r)-t.clientWidth)),e===BOX_EDGE.padding||(r-=parseFloat(o.paddingLeft)||0,r-=parseFloat(o.paddingRight)||0),r))}","import{INCLUDE_WINDOW_SCROLLBAR,BOX_EDGE}from\"./utils/constants.js\";import{isWindow}from\"./utils/isWindow.js\";import{isDocument}from\"./utils/isDocument.js\";import{getWindowHeight}from\"./utils/getWindowHeight.js\";import{getDocumentHeight}from\"./utils/getDocumentHeight.js\";import{getElementHeight}from\"./utils/getElementHeight.js\";export function getHeight(t,e=BOX_EDGE.border){return isWindow(t)?getWindowHeight(t,INCLUDE_WINDOW_SCROLLBAR[e]):isDocument(t)?getDocumentHeight(t):getElementHeight(t,e)}","import{getPreciseScrollbarSize}from\"./getPreciseScrollbarSize.js\";export function getWindowHeight(e,r=!1){if(r)return e.innerHeight;const{innerHeight:t,document:i}=e,{documentElement:n}=i,{clientHeight:c}=n;return t-getPreciseScrollbarSize(n,\"x\",t-c)}","export function getDocumentHeight({documentElement:t}){return Math.max(t.scrollHeight,t.clientHeight,t.getBoundingClientRect().height)}","import{BOX_EDGE,SCROLLABLE_OVERFLOWS}from\"./constants.js\";import{getStyle}from\"./getStyle.js\";import{getPreciseScrollbarSize}from\"./getPreciseScrollbarSize.js\";import{isDocumentElement}from\"./isDocumentElement.js\";export function getElementHeight(t,e=BOX_EDGE.border){let{height:r}=t.getBoundingClientRect();if(e===BOX_EDGE.border)return r;const o=getStyle(t);return e===BOX_EDGE.margin?(r+=Math.max(0,parseFloat(o.marginTop)||0),r+=Math.max(0,parseFloat(o.marginBottom)||0),r):(r-=parseFloat(o.borderTopWidth)||0,r-=parseFloat(o.borderBottomWidth)||0,e===BOX_EDGE.scrollbar?r:(!isDocumentElement(t)&&SCROLLABLE_OVERFLOWS.has(o.overflowX)&&(r-=getPreciseScrollbarSize(t,\"x\",Math.round(r)-t.clientHeight)),e===BOX_EDGE.padding||(r-=parseFloat(o.paddingTop)||0,r-=parseFloat(o.paddingBottom)||0),r))}","import{isRectObject}from\"./utils/isRectObject.js\";import{isDocument}from\"./utils/isDocument.js\";import{getOffsetFromDocument}from\"./utils/getOffsetFromDocument.js\";export function getOffset(t,e){const o=isRectObject(t)?{left:t.left,top:t.top}:Array.isArray(t)?getOffsetFromDocument(...t):getOffsetFromDocument(t);if(e&&!isDocument(e)){const t=isRectObject(e)?e:Array.isArray(e)?getOffsetFromDocument(e[0],e[1]):getOffsetFromDocument(e);o.left-=t.left,o.top-=t.top}return o}","export function isRectObject(t){return t?.constructor===Object}","import{BOX_EDGE}from\"./constants.js\";import{getStyle}from\"./getStyle.js\";import{isDocument}from\"./isDocument.js\";import{isWindow}from\"./isWindow.js\";export function getOffsetFromDocument(t,o=BOX_EDGE.border){const e={left:0,top:0};if(isDocument(t))return e;if(isWindow(t))return e.left+=t.scrollX||0,e.top+=t.scrollY||0,e;const r=t.ownerDocument.defaultView;r&&(e.left+=r.scrollX||0,e.top+=r.scrollY||0);const n=t.getBoundingClientRect();if(e.left+=n.left,e.top+=n.top,o===BOX_EDGE.border)return e;const l=getStyle(t);return o===BOX_EDGE.margin?(e.left-=Math.max(0,parseFloat(l.marginLeft)||0),e.top-=Math.max(0,parseFloat(l.marginTop)||0),e):(e.left+=parseFloat(l.borderLeftWidth)||0,e.top+=parseFloat(l.borderTopWidth)||0,o===BOX_EDGE.scrollbar||o===BOX_EDGE.padding||(e.left+=parseFloat(l.paddingLeft)||0,e.top+=parseFloat(l.paddingTop)||0),e)}","import{getNormalizedRect}from\"./utils/getNormalizedRect.js\";export function getIntersection(t,...e){const o={...getNormalizedRect(t),right:0,bottom:0};for(const t of e){const e=getNormalizedRect(t),i=Math.max(o.left,e.left),h=Math.min(o.left+o.width,e.left+e.width);if(h<=i)return null;const r=Math.max(o.top,e.top),l=Math.min(o.top+o.height,e.height+e.top);if(l<=r)return null;o.left=i,o.top=r,o.width=h-i,o.height=l-r}return o.right=o.left+o.width,o.bottom=o.top+o.height,o}","import{getStyle}from\"./utils/getStyle.js\";import{getContainingBlock}from\"./getContainingBlock.js\";import{isWindow}from\"./utils/isWindow.js\";export function getOffsetContainer(n,t={}){const i=getStyle(n),{display:o}=i;if(\"none\"===o||\"contents\"===o)return null;const e=t.position||getStyle(n).position,{skipDisplayNone:s,container:r}=t;switch(e){case\"relative\":return n;case\"fixed\":return getContainingBlock(n,{container:r,position:e,skipDisplayNone:s});case\"absolute\":{const t=getContainingBlock(n,{container:r,position:e,skipDisplayNone:s});return isWindow(t)?n.ownerDocument:t}default:return null}}","import{getNormalizedRect}from\"./utils/getNormalizedRect.js\";export function getOverflow(t,e){const o=getNormalizedRect(t),i=getNormalizedRect(e);return{left:i.left-o.left,right:o.left+o.width-(i.left+i.width),top:i.top-o.top,bottom:o.top+o.height-(i.top+i.height)}}"],"names":["$882b296db6123935$var$getOrCreateEventData","e","t","i","get","$882b296db6123935$var$EventData","set","constructor","idMap","Map","fnMap","onceList","Set","emitList","add","s","n","has","Error","delId","r","push","delete","size","delFn","forEach","$882b296db6123935$export$4293555f241ae35a","idDedupeMode","allowDuplicateListeners","_events","_getListeners","values","on","Symbol","once","off","clear","emit","length","listenerCount","$df4a713e26511813$export$ef9b1dc363f184d9","PAUSED","ON_DEMAND","CONTINUOUS","$45554ebda029bd05$var$STYLE_DECLARATION_CACHE","WeakMap","$45554ebda029bd05$export$3d2f074408bd1b82","window","getComputedStyle","C","deref","WeakRef","$70e6b31ea6202e28$export$af54264dae9065e6","$70e6b31ea6202e28$export$e44ffb50cc242ec5","document","navigator","vendor","indexOf","userAgent","$70e6b31ea6202e28$export$11fd24d838ebde87","content","padding","scrollbar","border","margin","$70e6b31ea6202e28$export$76e909bcfd8ba196","$70e6b31ea6202e28$export$d2ad2856e215d28e","$70e6b31ea6202e28$export$cd414719242f618c","userAgentData","brands","some","brand","$ac4a87157cb8fded$export$fab73c3646bf1f5e","display","$19cb8cdbc5921691$export$e5ce114ae0e5f4e8","filter","backdropFilter","willChange","transform","perspective","contentVisibility","o","contain","f","c","$8d1ba90c23ec3360$export$d8a62a489b442872","HTMLHtmlElement","$1f38751365ebdabf$export$940d8225183e1404","ownerDocument","defaultView","position","skipDisplayNone","container","parentElement","documentElement","l","$6473c4721ef9a7f0$export$53137579a3174918","Math","sqrt","pow","$0dd5d633d9254ede$export$5a096129d439f843","Window","$88986006632f0ab8$export$62858bae88b53fd0","Document","$9a36d0396b9b09d4$var$SUBPIXEL_OFFSET","$9a36d0396b9b09d4$var$testStyleElement","$9a36d0396b9b09d4$var$testParentElement","$9a36d0396b9b09d4$var$testChildElement","$9a36d0396b9b09d4$export$5ad86f4734d24a64","height","width","parseFloat","Number","isNaN","isInteger","$9a36d0396b9b09d4$var$getSubpixelScrollbarSize","split","createElement","innerHTML","appendChild","id","style","cssText","body","getBoundingClientRect","removeChild","$2e59c48b8f000a71$export$3c49c185de0c2bfc","innerWidth","clientWidth","max","scrollWidth","marginLeft","marginRight","borderLeftWidth","borderRightWidth","overflowY","round","paddingLeft","paddingRight","$646cecfa59ec4923$export$c08559766941f856","innerHeight","clientHeight","scrollHeight","marginTop","marginBottom","borderTopWidth","borderBottomWidth","overflowX","paddingTop","paddingBottom","$4de8edd731addea8$export$ff047630cae37d8e","Object","$faeeed2de97ac6f7$export$9f1480883798e819","left","top","scrollX","scrollY","$d927f435c3d7e8ab$export$622cea445a1c5b7d","Array","isArray","$4fec7741c67a29fc$export$4b834cebd9e5cebe","g","right","bottom","$3fe9db1ad94d3e7c$export$e4e616e82e79ab9d","$4effe6f7501c7f59$export$243d7fadef466e38","$ac6f441b4b448e14$export$61fde4a8bbe7f5d5","start","move","cancel","end","destroy","$ac6f441b4b448e14$export$2176a6ff266bf511","drag","isDestroyed","_emitter","_createDragData","x","y","_updateDragData","_resetDragData","_start","_move","_end","_cancel","type","$ac6f441b4b448e14$export$9138efc7ba4fca22","$ac6f441b4b448e14$export$5fd1e257088db342","$ac6f441b4b448e14$export$e94d57566be028aa","phases","autoTick","requestFrame","$df4a713e26511813$export$789135d3cf084551","requestAnimationFrame","cancelAnimationFrame","performance","Date","now","setTimeout","clearTimeout","_autoTick","_requestFrame","_cancelFrame","_queue","tick","bind","_kickstart","a","u","_request","$ac6f441b4b448e14$export$2f0ad9ba2f0800d","_direction","_speed","_tick","time","deltaTime","$ac6f441b4b448e14$var$de","pointerId","changedTouches","identifier","$ac6f441b4b448e14$var$he","$ac6f441b4b448e14$var$J","defineProperty","addEventListener","removeEventListener","$ac6f441b4b448e14$var$Oe","$ac6f441b4b448e14$var$We","PointerEvent","$ac6f441b4b448e14$var$me","capture","passive","$ac6f441b4b448e14$var$ue","$ac6f441b4b448e14$var$X","pointer","touch","mouse","$ac6f441b4b448e14$export$b26af955418d6638","listenerOptions","sourceEvents","startPredicate","button","element","_areWindowListenersBound","_startPredicate","_listenerOptions","_sourceEvents","_onStart","_onMove","_onCancel","_onEnd","_getTrackedPointerEventData","pointerType","clientX","clientY","srcEvent","target","_bindWindowListeners","_resetDrag","_unbindWindowListeners","updateSettings","$ac6f441b4b448e14$var$at","$ac6f441b4b448e14$var$Q","$ac6f441b4b448e14$export$436f6efcc297171","activeElement","computeSpeed","startKeys","moveLeftKeys","moveRightKeys","moveUpKeys","moveDownKeys","cancelKeys","d","endKeys","m","_computeSpeed","_startKeys","_cancelKeys","_endKeys","_moveLeftKeys","_moveRightKeys","_moveUpKeys","_moveDownKeys","_moveKeys","_moveKeyTimestamps","_onKeyDown","_onKeyUp","_onTick","_updateDirection","key","preventDefault","every","$ac6f441b4b448e14$var$Z","sensor","isEnded","isStarted","startEvent","nextMoveEvent","prevMoveEvent","endEvent","items","$ac6f441b4b448e14$var$ee","data","elementContainer","elementOffsetContainer","dragContainer","dragOffsetContainer","initialTransform","frozenProps","unfrozenProps","pX","pY","_updateDiffX","_updateDiffY","_moveDiffX","_moveDiffY","_containerDiffX","_containerDiffY","$ac6f441b4b448e14$var$pe","$ac6f441b4b448e14$var$qe","$ac6f441b4b448e14$var$te","$ac6f441b4b448e14$var$Ue","$ac6f441b4b448e14$var$ze","$ac6f441b4b448e14$var$fe","$ac6f441b4b448e14$var$ht","getElements","releaseElements","getFrozenProps","getStartPosition","setPosition","item","getPositionChange","event","prevEvent","$ac6f441b4b448e14$export$f2a139e5d18b9882","sensors","settings","_parseSettings","plugins","_sensorData","_startId","_moveId","_updateId","_onScroll","_prepareStart","_applyStart","_prepareMove","_applyMove","_preparePositionUpdate","_applyPositionUpdate","predicateState","predicateEvent","onMove","onEnd","_emit","draggable","resolveStartPredicate","rejectStartPredicate","updatePosition","stop","map","isConnected","b","S","hasOwnProperty","assign","phase","elements","use","$ac6f441b4b448e14$var$B","_data","_createObject","_onPut","pick","pop","put","reset","$ac6f441b4b448e14$var$ge","h","min","$ac6f441b4b448e14$var$w","$ac6f441b4b448e14$var$Se","$ac6f441b4b448e14$var$N","pageXOffset","scrollLeft","$ac6f441b4b448e14$var$Ee","$ac6f441b4b448e14$var$q","pageYOffset","scrollTop","$ac6f441b4b448e14$var$ve","$ac6f441b4b448e14$var$_e","$ac6f441b4b448e14$var$xe","$ac6f441b4b448e14$var$Fe","$ac6f441b4b448e14$var$I","direction","threshold","distance","value","maxValue","duration","speed","isEnding","$ac6f441b4b448e14$export$5bbd74ab6c855dff","$ac6f441b4b448e14$export$3eeb7a7b68c92567","forward","reverse","$ac6f441b4b448e14$var$ne","none","$ac6f441b4b448e14$var$H","up","down","$ac6f441b4b448e14$export$c9fbd1f9176bc8ed","$ac6f441b4b448e14$var$ye","$ac6f441b4b448e14$var$$e","$ac6f441b4b448e14$var$re","ceil","floor","$ac6f441b4b448e14$var$be","$ac6f441b4b448e14$var$De","$ac6f441b4b448e14$var$Pe","positionX","positionY","directionX","directionY","overlapCheckRequestTime","$ac6f441b4b448e14$var$Te","requestX","requestY","action","addRequest","removeRequest","computeScrollValues","scroll","scrollTo","$ac6f441b4b448e14$var$we","isActive","NaN","onStop","hasReachedEnd","computeCurrentScrollValue","computeNextScrollValue","onStart","$ac6f441b4b448e14$export$d976747ecb966cea","overlapCheckInterval","_actions","_isDestroyed","_isTicking","_tickTime","_tickDeltaTime","_requests","_itemData","_requestPool","_actionPool","_frameRead","_frameWrite","_updateItems","_updateRequests","_updateActions","_applyActions","_startTicking","_stopTicking","_getItemClientRect","clientRect","_requestItemScroll","_cancelItemScroll","_checkItemOverlap","inertAreaSize","targets","E","V","U","se","Ce","Le","ae","A","Ke","le","axis","ce","R","priority","k","F","j","P","O","T","L","z","_updateScrollRequest","smoothStop","scrollPadding","_requestAction","onPrepareScrollEffect","onApplyScrollEffect","addItem","removeItem","splice","isItemScrollingX","isItemScrollingY","isItemScrolling","slice","$ac6f441b4b448e14$var$G","$ac6f441b4b448e14$var$K","$ac6f441b4b448e14$var$ft","$ac6f441b4b448e14$export$55a384729d91296b","getPosition","getClientRect","$ac6f441b4b448e14$var$Ae","_draggableAutoScroll","_draggable","_position","_clientRect","_getSettings","$ac6f441b4b448e14$export$5059276ad4233de3","name","version","_autoScrollProxy","$ac6f441b4b448e14$var$Qe","$ac6f441b4b448e14$var$oe","$6e413c53c7f19483$var$element","querySelector","$6e413c53c7f19483$var$container","$6e413c53c7f19483$var$draggable","timeout","fallback","cancelable","timeStamp","$ac6f441b4b448e14$var$et","parentNode","Element","ShadowRoot","host","Infinity","classList","remove"],"version":3,"file":"index.12396756.js.map"} \ No newline at end of file diff --git a/docs/public/examples/002-draggable-autoscroll/index.c710f602.css b/docs/public/examples/002-draggable-autoscroll/index.c710f602.css new file mode 100644 index 0000000..5572c21 --- /dev/null +++ b/docs/public/examples/002-draggable-autoscroll/index.c710f602.css @@ -0,0 +1,2 @@ +:root{--bg-color:#161618;--color:#fffff5db;--theme-color:#f55;--card-color:#fff;--card-bgColor:var(--theme-color);--card-color--focus:var(--card-color);--card-bgColor--focus:#db55ff;--card-color--drag:var(--card-color);--card-bgColor--drag:#55ff9c}*{box-sizing:border-box}html{background:var(--bg-color);color:var(--color);background-image:linear-gradient(90deg,#ffffff1a 1px,#0000 1px),linear-gradient(#ffffff1a 1px,#0000 1px);background-size:40px 40px;height:100%}body{margin:0}.card{background-color:var(--card-bgColor);color:var(--card-color);border-radius:8px;width:100px;height:100px}@media (hover:hover) and (pointer:fine){.card:hover,.card:focus-visible{background-color:var(--card-bgColor--focus);color:var(--card-bgColor--focus)}.card:focus-visible{outline-offset:4px;outline:1px solid var(--card-bgColor--focus)}}.card.draggable{cursor:grab}.card.dragging{cursor:grabbing;background-color:var(--card-bgColor--drag);color:var(--card-bgColor--drag)}@media (hover:hover) and (pointer:fine){.card.dragging:focus-visible{outline:1px solid var(--card-bgColor--drag)}} +/*# sourceMappingURL=index.c710f602.css.map */ diff --git a/docs/public/examples/002-draggable-autoscroll/index.c710f602.css.map b/docs/public/examples/002-draggable-autoscroll/index.c710f602.css.map new file mode 100644 index 0000000..4d611b5 --- /dev/null +++ b/docs/public/examples/002-draggable-autoscroll/index.c710f602.css.map @@ -0,0 +1 @@ +{"mappings":"ACEA,wPAcA,wBAGA,kMAQA,cAMA,8GAOA,wCACE,6GAKA,qFAKF,4BAGA,0GAKA,wCACE","sources":["index.c710f602.css","examples/assets/base.css"],"sourcesContent":[":root {\n --bg-color: #161618;\n --color: #fffff5db;\n --theme-color: #f55;\n --card-color: #fff;\n --card-bgColor: var(--theme-color);\n --card-color--focus: var(--card-color);\n --card-bgColor--focus: #db55ff;\n --card-color--drag: var(--card-color);\n --card-bgColor--drag: #55ff9c;\n}\n\n* {\n box-sizing: border-box;\n}\n\nhtml {\n background: var(--bg-color);\n color: var(--color);\n background-image: linear-gradient(to right, #ffffff1a 1px, #0000 1px), linear-gradient(#ffffff1a 1px, #0000 1px);\n background-size: 40px 40px;\n height: 100%;\n}\n\nbody {\n margin: 0;\n}\n\n.card {\n background-color: var(--card-bgColor);\n color: var(--card-color);\n border-radius: 8px;\n width: 100px;\n height: 100px;\n}\n\n@media (hover: hover) and (pointer: fine) {\n .card:hover, .card:focus-visible {\n background-color: var(--card-bgColor--focus);\n color: var(--card-bgColor--focus);\n }\n\n .card:focus-visible {\n outline-offset: 4px;\n outline: 1px solid var(--card-bgColor--focus);\n }\n}\n\n.card.draggable {\n cursor: grab;\n}\n\n.card.dragging {\n cursor: grabbing;\n background-color: var(--card-bgColor--drag);\n color: var(--card-bgColor--drag);\n}\n\n@media (hover: hover) and (pointer: fine) {\n .card.dragging:focus-visible {\n outline: 1px solid var(--card-bgColor--drag);\n }\n}\n\n/*# sourceMappingURL=index.c710f602.css.map */\n","/* VARIABLES */\n\n:root {\n --bg-color: #161618;\n --color: rgba(255, 255, 245, 0.86);\n --theme-color: #ff5555;\n --card-color: #fff;\n --card-bgColor: var(--theme-color);\n --card-color--focus: var(--card-color);\n --card-bgColor--focus: #db55ff;\n --card-color--drag: var(--card-color);\n --card-bgColor--drag: #55ff9c;\n}\n\n/* BASE */\n\n* {\n box-sizing: border-box;\n}\nhtml {\n height: 100%;\n background: var(--bg-color);\n color: var(--color);\n background-size: 40px 40px;\n background-image: linear-gradient(to right, rgba(255, 255, 255, 0.1) 1px, transparent 1px),\n linear-gradient(to bottom, rgba(255, 255, 255, 0.1) 1px, transparent 1px);\n}\nbody {\n margin: 0;\n}\n\n/* CARD */\n\n.card {\n width: 100px;\n height: 100px;\n background-color: var(--card-bgColor);\n color: var(--card-color);\n border-radius: 8px;\n}\n@media (hover: hover) and (pointer: fine) {\n .card:hover,\n .card:focus-visible {\n background-color: var(--card-bgColor--focus);\n color: var(--card-bgColor--focus);\n }\n .card:focus-visible {\n outline-offset: 4px;\n outline: 1px solid var(--card-bgColor--focus);\n }\n}\n.card.draggable {\n cursor: grab;\n}\n.card.dragging {\n cursor: grabbing;\n background-color: var(--card-bgColor--drag);\n color: var(--card-bgColor--drag);\n}\n@media (hover: hover) and (pointer: fine) {\n .card.dragging:focus-visible {\n outline: 1px solid var(--card-bgColor--drag);\n }\n}\n"],"names":[],"version":3,"file":"index.c710f602.css.map"} \ No newline at end of file diff --git a/docs/public/examples/002-draggable-autoscroll/index.d427fc39.css b/docs/public/examples/002-draggable-autoscroll/index.d427fc39.css new file mode 100644 index 0000000..c317583 --- /dev/null +++ b/docs/public/examples/002-draggable-autoscroll/index.d427fc39.css @@ -0,0 +1,2 @@ +body{height:300%}.drag-container{position:fixed;top:10px;left:10px}.draggable{position:absolute;top:50%;left:50%;transform:translate(-50%)translateY(-50%)} +/*# sourceMappingURL=index.d427fc39.css.map */ diff --git a/docs/public/examples/002-draggable-autoscroll/index.d427fc39.css.map b/docs/public/examples/002-draggable-autoscroll/index.d427fc39.css.map new file mode 100644 index 0000000..09c810d --- /dev/null +++ b/docs/public/examples/002-draggable-autoscroll/index.d427fc39.css.map @@ -0,0 +1 @@ +{"mappings":"ACAA,iBAGA,kDAKA","sources":["index.d427fc39.css","examples/002-draggable-autoscroll/index.css"],"sourcesContent":["body {\n height: 300%;\n}\n\n.drag-container {\n position: fixed;\n top: 10px;\n left: 10px;\n}\n\n.draggable {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translateX(-50%)translateY(-50%);\n}\n\n/*# sourceMappingURL=index.d427fc39.css.map */\n","body {\n height: 300%;\n}\n.drag-container {\n position: fixed;\n left: 10px;\n top: 10px;\n}\n.draggable {\n position: absolute;\n left: 50%;\n top: 50%;\n transform: translateX(-50%) translateY(-50%);\n}\n"],"names":[],"version":3,"file":"index.d427fc39.css.map"} \ No newline at end of file diff --git a/docs/public/examples/002-draggable-autoscroll/index.html b/docs/public/examples/002-draggable-autoscroll/index.html new file mode 100644 index 0000000..de5a6db --- /dev/null +++ b/docs/public/examples/002-draggable-autoscroll/index.html @@ -0,0 +1 @@ +Draggable - Autoscroll
\ No newline at end of file diff --git a/docs/public/examples/003-draggable-snap-to-grid/index.2575a7e7.css b/docs/public/examples/003-draggable-snap-to-grid/index.2575a7e7.css new file mode 100644 index 0000000..1285e23 --- /dev/null +++ b/docs/public/examples/003-draggable-snap-to-grid/index.2575a7e7.css @@ -0,0 +1,2 @@ +:root{--bg-color:#161618;--color:#fffff5db;--theme-color:#f55;--card-color:#fff;--card-bgColor:var(--theme-color);--card-color--focus:var(--card-color);--card-bgColor--focus:#db55ff;--card-color--drag:var(--card-color);--card-bgColor--drag:#55ff9c}*{box-sizing:border-box}html{background:var(--bg-color);color:var(--color);background-image:linear-gradient(90deg,#ffffff1a 1px,#0000 1px),linear-gradient(#ffffff1a 1px,#0000 1px);background-size:40px 40px;height:100%}body{margin:0}.card{background-color:var(--card-bgColor);color:var(--card-color);border-radius:8px;width:100px;height:100px}@media (hover:hover) and (pointer:fine){.card:hover,.card:focus-visible{background-color:var(--card-bgColor--focus);color:var(--card-bgColor--focus)}.card:focus-visible{outline-offset:4px;outline:1px solid var(--card-bgColor--focus)}}.card.draggable{cursor:grab}.card.dragging{cursor:grabbing;background-color:var(--card-bgColor--drag);color:var(--card-bgColor--drag)}@media (hover:hover) and (pointer:fine){.card.dragging:focus-visible{outline:1px solid var(--card-bgColor--drag)}} +/*# sourceMappingURL=index.2575a7e7.css.map */ diff --git a/docs/public/examples/003-draggable-snap-to-grid/index.2575a7e7.css.map b/docs/public/examples/003-draggable-snap-to-grid/index.2575a7e7.css.map new file mode 100644 index 0000000..5988841 --- /dev/null +++ b/docs/public/examples/003-draggable-snap-to-grid/index.2575a7e7.css.map @@ -0,0 +1 @@ +{"mappings":"ACEA,wPAcA,wBAGA,kMAQA,cAMA,8GAOA,wCACE,6GAKA,qFAKF,4BAGA,0GAKA,wCACE","sources":["index.2575a7e7.css","examples/assets/base.css"],"sourcesContent":[":root {\n --bg-color: #161618;\n --color: #fffff5db;\n --theme-color: #f55;\n --card-color: #fff;\n --card-bgColor: var(--theme-color);\n --card-color--focus: var(--card-color);\n --card-bgColor--focus: #db55ff;\n --card-color--drag: var(--card-color);\n --card-bgColor--drag: #55ff9c;\n}\n\n* {\n box-sizing: border-box;\n}\n\nhtml {\n background: var(--bg-color);\n color: var(--color);\n background-image: linear-gradient(to right, #ffffff1a 1px, #0000 1px), linear-gradient(#ffffff1a 1px, #0000 1px);\n background-size: 40px 40px;\n height: 100%;\n}\n\nbody {\n margin: 0;\n}\n\n.card {\n background-color: var(--card-bgColor);\n color: var(--card-color);\n border-radius: 8px;\n width: 100px;\n height: 100px;\n}\n\n@media (hover: hover) and (pointer: fine) {\n .card:hover, .card:focus-visible {\n background-color: var(--card-bgColor--focus);\n color: var(--card-bgColor--focus);\n }\n\n .card:focus-visible {\n outline-offset: 4px;\n outline: 1px solid var(--card-bgColor--focus);\n }\n}\n\n.card.draggable {\n cursor: grab;\n}\n\n.card.dragging {\n cursor: grabbing;\n background-color: var(--card-bgColor--drag);\n color: var(--card-bgColor--drag);\n}\n\n@media (hover: hover) and (pointer: fine) {\n .card.dragging:focus-visible {\n outline: 1px solid var(--card-bgColor--drag);\n }\n}\n\n/*# sourceMappingURL=index.2575a7e7.css.map */\n","/* VARIABLES */\n\n:root {\n --bg-color: #161618;\n --color: rgba(255, 255, 245, 0.86);\n --theme-color: #ff5555;\n --card-color: #fff;\n --card-bgColor: var(--theme-color);\n --card-color--focus: var(--card-color);\n --card-bgColor--focus: #db55ff;\n --card-color--drag: var(--card-color);\n --card-bgColor--drag: #55ff9c;\n}\n\n/* BASE */\n\n* {\n box-sizing: border-box;\n}\nhtml {\n height: 100%;\n background: var(--bg-color);\n color: var(--color);\n background-size: 40px 40px;\n background-image: linear-gradient(to right, rgba(255, 255, 255, 0.1) 1px, transparent 1px),\n linear-gradient(to bottom, rgba(255, 255, 255, 0.1) 1px, transparent 1px);\n}\nbody {\n margin: 0;\n}\n\n/* CARD */\n\n.card {\n width: 100px;\n height: 100px;\n background-color: var(--card-bgColor);\n color: var(--card-color);\n border-radius: 8px;\n}\n@media (hover: hover) and (pointer: fine) {\n .card:hover,\n .card:focus-visible {\n background-color: var(--card-bgColor--focus);\n color: var(--card-bgColor--focus);\n }\n .card:focus-visible {\n outline-offset: 4px;\n outline: 1px solid var(--card-bgColor--focus);\n }\n}\n.card.draggable {\n cursor: grab;\n}\n.card.dragging {\n cursor: grabbing;\n background-color: var(--card-bgColor--drag);\n color: var(--card-bgColor--drag);\n}\n@media (hover: hover) and (pointer: fine) {\n .card.dragging:focus-visible {\n outline: 1px solid var(--card-bgColor--drag);\n }\n}\n"],"names":[],"version":3,"file":"index.2575a7e7.css.map"} \ No newline at end of file diff --git a/docs/public/examples/003-draggable-snap-to-grid/index.d0c3cf20.css b/docs/public/examples/003-draggable-snap-to-grid/index.d0c3cf20.css new file mode 100644 index 0000000..dafc4c7 --- /dev/null +++ b/docs/public/examples/003-draggable-snap-to-grid/index.d0c3cf20.css @@ -0,0 +1,2 @@ +.draggable{width:80px;height:80px;position:absolute;top:0;left:0} +/*# sourceMappingURL=index.d0c3cf20.css.map */ diff --git a/docs/public/examples/003-draggable-snap-to-grid/index.d0c3cf20.css.map b/docs/public/examples/003-draggable-snap-to-grid/index.d0c3cf20.css.map new file mode 100644 index 0000000..64e515a --- /dev/null +++ b/docs/public/examples/003-draggable-snap-to-grid/index.d0c3cf20.css.map @@ -0,0 +1 @@ +{"mappings":"ACAA","sources":["index.d0c3cf20.css","examples/003-draggable-snap-to-grid/index.css"],"sourcesContent":[".draggable {\n width: 80px;\n height: 80px;\n position: absolute;\n top: 0;\n left: 0;\n}\n\n/*# sourceMappingURL=index.d0c3cf20.css.map */\n",".draggable {\n position: absolute;\n left: 0;\n top: 0;\n width: 80px;\n height: 80px;\n}\n"],"names":[],"version":3,"file":"index.d0c3cf20.css.map"} \ No newline at end of file diff --git a/docs/public/examples/003-draggable-snap-to-grid/index.f0b19664.js b/docs/public/examples/003-draggable-snap-to-grid/index.f0b19664.js new file mode 100644 index 0000000..06e62f6 --- /dev/null +++ b/docs/public/examples/003-draggable-snap-to-grid/index.f0b19664.js @@ -0,0 +1,6 @@ +function t(t,i){let n=t.get(i);return n||(n=new e,t.set(i,n)),n}class e{constructor(){this.idMap=new Map,this.fnMap=new Map,this.onceList=new Set,this.emitList=null}add(t,e,i,n,s){if(!s&&this.fnMap.has(t))throw Error("Emitter: tried to add an existing event listener to an event!");if(this.idMap.has(i))switch(n){case"throw":throw Error("Emitter: tried to add an existing event listener id to an event!");case"ignore":return i;default:this.delId(i,"update"===n)}let r=this.fnMap.get(t);return r||(r=new Set,this.fnMap.set(t,r)),r.add(i),this.idMap.set(i,t),e&&this.onceList.add(i),this.emitList&&this.emitList.push(t),i}delId(t,e=!1){let i=this.idMap.get(t);if(!i)return;let n=this.fnMap.get(i);e||this.idMap.delete(t),this.onceList.delete(t),n.delete(t),n.size||this.fnMap.delete(i),this.emitList=null}delFn(t){let e=this.fnMap.get(t);e&&(e.forEach(t=>{this.onceList.delete(t),this.idMap.delete(t)}),this.fnMap.delete(t),this.emitList=null)}}class i{constructor(t={}){let{idDedupeMode:e="replace",allowDuplicateListeners:i=!0}=t;this.idDedupeMode=e,this.allowDuplicateListeners=i,this._events=new Map}_getListeners(t){let e=this._events.get(t);if(!e)return null;let{idMap:i,onceList:n}=e;if(!i.size)return null;let s=e.emitList||[...i.values()];if(n.size){if(n.size===i.size)this._events.delete(t);else for(let t of n)e.delId(t)}else e.emitList=s;return s}on(e,i,n=Symbol()){return t(this._events,e).add(i,!1,n,this.idDedupeMode,this.allowDuplicateListeners)}once(e,i,n=Symbol()){return t(this._events,e).add(i,!0,n,this.idDedupeMode,this.allowDuplicateListeners)}off(t,e){if(void 0===t)return void this._events.clear();if(void 0===e)return void this._events.delete(t);let i=this._events.get(t);i&&("function"==typeof e?i.delFn(e):i.delId(e),i.idMap.size||this._events.delete(t))}emit(t,...e){let i=this._getListeners(t);if(!i)return;let n=0,s=i.length;for(;n{t+=this.listenerCount(i)}),t}return(null===(e=this._events.get(t))||void 0===e?void 0:e.idMap.size)||0}}(q=L||(L={}))[q.PAUSED=1]="PAUSED",q[q.ON_DEMAND=2]="ON_DEMAND",q[q.CONTINUOUS=3]="CONTINUOUS";const n=new WeakMap;function s(t,e){if(e)return window.getComputedStyle(t,e);let i=n.get(t)?.deref();return i||(i=window.getComputedStyle(t,null),n.set(t,new WeakRef(i))),i}const r=!!("undefined"!=typeof window&&void 0!==window.document&&navigator.vendor&&navigator.vendor.indexOf("Apple")>-1&&navigator.userAgent&&-1==navigator.userAgent.indexOf("CriOS")&&-1==navigator.userAgent.indexOf("FxiOS")),o={content:"content",padding:"padding",scrollbar:"scrollbar",border:"border",margin:"margin"},a={[o.content]:!1,[o.padding]:!1,[o.scrollbar]:!0,[o.border]:!0,[o.margin]:!0},l=new Set(["auto","scroll"]),h=(()=>{try{return window.navigator.userAgentData.brands.some(({brand:t})=>"Chromium"===t)}catch(t){return!1}})();function d(t){switch(s(t).display){case"none":return null;case"inline":case"contents":return!1;default:return!0}}function c(t){let e=s(t);if(!r){let{filter:t}=e;if(t&&"none"!==t)return!0;let{backdropFilter:i}=e;if(i&&"none"!==i)return!0;let{willChange:n}=e;if(n&&(n.indexOf("filter")>-1||n.indexOf("backdrop-filter")>-1))return!0}let i=d(t);if(!i)return i;let{transform:n}=e;if(n&&"none"!==n)return!0;let{perspective:o}=e;if(o&&"none"!==o)return!0;let{contentVisibility:a}=e;if(a&&"auto"===a)return!0;let{contain:l}=e;if(l&&("strict"===l||"content"===l||l.indexOf("paint")>-1||l.indexOf("layout")>-1))return!0;let{willChange:h}=e;return!(!h||!(h.indexOf("transform")>-1||h.indexOf("perspective")>-1||h.indexOf("contain")>-1))||!!(r&&h&&h.indexOf("filter")>-1)}function u(t){return t instanceof HTMLHtmlElement}function p(t,e={}){if(u(t))return t.ownerDocument.defaultView;let i=e.position||s(t).position,{skipDisplayNone:n,container:r}=e;switch(i){case"static":case"relative":case"sticky":case"-webkit-sticky":{let e=r||t.parentElement;for(;e;){let t=d(e);if(t)return e;if(null===t&&!n)return null;e=e.parentElement}return t.ownerDocument.documentElement}case"absolute":case"fixed":{let e="fixed"===i,a=r||t.parentElement;for(;a;){var o;let t=e?c(a):"static"!==s(o=a).position||c(o);if(!0===t)return a;if(null===t&&!n)return null;a=a.parentElement}return t.ownerDocument.defaultView}default:return null}}function f(t,e,i,n){return Math.sqrt(Math.pow(i-t,2)+Math.pow(n-e,2))}function m(t){return t instanceof Window}function _(t){return t instanceof Document}const g=new Map;let v=null,y=null,w=null;function D(t,e,i){if(i<=0)return 0;if(h){let i=s(t,"::-webkit-scrollbar"),n="x"===e?i.height:i.width,r=parseFloat(n);if(!Number.isNaN(r)&&!Number.isInteger(r))return function(t,e){let i=t.split("."),n=g.get(i[1]);return void 0===n&&(v||(v=document.createElement("style")),v.innerHTML=` + #mezr-scrollbar-test::-webkit-scrollbar { + width: ${t} !important; + } + `,y&&w||(y=document.createElement("div"),w=document.createElement("div"),y.appendChild(w),y.id="mezr-scrollbar-test",y.style.cssText="\n all: unset !important;\n position: fixed !important;\n top: -200px !important;\n left: 0px !important;\n width: 100px !important;\n height: 100px !important;\n overflow: scroll !important;\n pointer-events: none !important;\n visibility: hidden !important;\n ",w.style.cssText="\n all: unset !important;\n position: absolute !important;\n inset: 0 !important;\n "),document.body.appendChild(v),document.body.appendChild(y),n=y.getBoundingClientRect().width-w.getBoundingClientRect().width-e,g.set(i[1],n),document.body.removeChild(y),document.body.removeChild(v)),e+n}(n,r)}return i}function E(t,e=o.border){return m(t)?function(t,e=!1){if(e)return t.innerWidth;let{innerWidth:i,document:n}=t,{documentElement:s}=n,{clientWidth:r}=s;return i-D(s,"y",i-r)}(t,a[e]):_(t)?function({documentElement:t}){return Math.max(t.scrollWidth,t.clientWidth,t.getBoundingClientRect().width)}(t):function(t,e=o.border){let{width:i}=t.getBoundingClientRect();if(e===o.border)return i;let n=s(t);return e===o.margin?i+=Math.max(0,parseFloat(n.marginLeft)||0)+Math.max(0,parseFloat(n.marginRight)||0):(i-=parseFloat(n.borderLeftWidth)||0,i-=parseFloat(n.borderRightWidth)||0,e===o.scrollbar||(!u(t)&&l.has(n.overflowY)&&(i-=D(t,"y",Math.round(i)-t.clientWidth)),e===o.padding||(i-=parseFloat(n.paddingLeft)||0,i-=parseFloat(n.paddingRight)||0)),i)}(t,e)}function x(t,e=o.border){return m(t)?function(t,e=!1){if(e)return t.innerHeight;let{innerHeight:i,document:n}=t,{documentElement:s}=n,{clientHeight:r}=s;return i-D(s,"x",i-r)}(t,a[e]):_(t)?function({documentElement:t}){return Math.max(t.scrollHeight,t.clientHeight,t.getBoundingClientRect().height)}(t):function(t,e=o.border){let{height:i}=t.getBoundingClientRect();if(e===o.border)return i;let n=s(t);return e===o.margin?i+=Math.max(0,parseFloat(n.marginTop)||0)+Math.max(0,parseFloat(n.marginBottom)||0):(i-=parseFloat(n.borderTopWidth)||0,i-=parseFloat(n.borderBottomWidth)||0,e===o.scrollbar||(!u(t)&&l.has(n.overflowX)&&(i-=D(t,"x",Math.round(i)-t.clientHeight)),e===o.padding||(i-=parseFloat(n.paddingTop)||0,i-=parseFloat(n.paddingBottom)||0)),i)}(t,e)}function b(t){return t?.constructor===Object}function S(t,e=o.border){let i={left:0,top:0};if(_(t))return i;if(m(t))return i.left+=t.scrollX||0,i.top+=t.scrollY||0,i;let n=t.ownerDocument.defaultView;n&&(i.left+=n.scrollX||0,i.top+=n.scrollY||0);let r=t.getBoundingClientRect();if(i.left+=r.left,i.top+=r.top,e===o.border)return i;let a=s(t);return e===o.margin?(i.left-=Math.max(0,parseFloat(a.marginLeft)||0),i.top-=Math.max(0,parseFloat(a.marginTop)||0)):(i.left+=parseFloat(a.borderLeftWidth)||0,i.top+=parseFloat(a.borderTopWidth)||0,e===o.scrollbar||e===o.padding||(i.left+=parseFloat(a.paddingLeft)||0,i.top+=parseFloat(a.paddingTop)||0)),i}function P(t,e){let i=b(t)?{left:t.left,top:t.top}:Array.isArray(t)?S(...t):S(t);if(e&&!_(e)){let t=b(e)?e:Array.isArray(e)?S(e[0],e[1]):S(e);i.left-=t.left,i.top-=t.top}return i}function M(t,e){let i=0,n=0;b(t)?(i=t.width,n=t.height):Array.isArray(t)?(i=E(...t),n=x(...t)):(i=E(t),n=x(t));let s=P(t,e);return{width:i,height:n,...s,right:s.left+i,bottom:s.top+n}}function k(t){return b(t)?t:M(t)}function T(t,e={}){let{display:i}=s(t);if("none"===i||"contents"===i)return null;let n=e.position||s(t).position,{skipDisplayNone:r,container:o}=e;switch(n){case"relative":return t;case"fixed":return p(t,{container:o,position:n,skipDisplayNone:r});case"absolute":{let e=p(t,{container:o,position:n,skipDisplayNone:r});return m(e)?t.ownerDocument:e}default:return null}}var q,L,C={start:"start",move:"move",cancel:"cancel",end:"end",destroy:"destroy"},I=class{constructor(){this.drag=null,this.isDestroyed=!1,this._emitter=new i}_createDragData(t){return{x:t.x,y:t.y}}_updateDragData(t){this.drag&&(this.drag.x=t.x,this.drag.y=t.y)}_resetDragData(){this.drag=null}_start(t){this.isDestroyed||this.drag||(this.drag=this._createDragData(t),this._emitter.emit(C.start,t))}_move(t){this.drag&&(this._updateDragData(t),this._emitter.emit(C.move,t))}_end(t){this.drag&&(this._updateDragData(t),this._emitter.emit(C.end,t),this._resetDragData())}_cancel(t){this.drag&&(this._updateDragData(t),this._emitter.emit(C.cancel,t),this._resetDragData())}on(t,e,i){return this._emitter.on(t,e,i)}off(t,e){this._emitter.off(t,e)}cancel(){this.drag&&(this._emitter.emit(C.cancel,{type:C.cancel,x:this.drag.x,y:this.drag.y}),this._resetDragData())}destroy(){this.isDestroyed||(this.isDestroyed=!0,this.cancel(),this._emitter.emit(C.destroy,{type:C.destroy}),this._emitter.off())}},O=Symbol(),X=Symbol(),Y=new class{constructor(t={}){let{phases:e=[],autoTick:n=L.ON_DEMAND,allowDuplicateListeners:s=!0,idDedupeMode:r="replace",requestFrame:o=function(t=60){if("function"==typeof requestAnimationFrame&&"function"==typeof cancelAnimationFrame)return t=>{let e=requestAnimationFrame(t);return()=>cancelAnimationFrame(e)};{let e=1e3/t,i="undefined"==typeof performance?()=>Date.now():()=>performance.now();return t=>{let n=setTimeout(()=>t(i()),e);return()=>clearTimeout(n)}}}()}=t;this.phases=e,this._autoTick=n,this._requestFrame=o,this._cancelFrame=null,this._queue=[],this._emitter=new i({allowDuplicateListeners:s,idDedupeMode:r}),this.tick=this.tick.bind(this)}get requestFrame(){return this._requestFrame}set requestFrame(t){this._requestFrame=t,this._kickstart()}get autoTick(){return this._autoTick}set autoTick(t){this._autoTick=t,this._kickstart()}get allowDuplicateListeners(){return this._emitter.allowDuplicateListeners}set allowDuplicateListeners(t){this._emitter.allowDuplicateListeners=t}get idDedupeMode(){return this._emitter.idDedupeMode}set idDedupeMode(t){this._emitter.idDedupeMode=t}tick(...t){let e,i,n,s,r,o;this._cancelFrame=null;let{_queue:a}=this;if(a.length)throw Error("Ticker: Can't tick before the previous tick has finished!");this._request();let{phases:l,_emitter:h}=this;for(e=0,n=l.length;e=L.ON_DEMAND&&(this._cancelFrame=this._requestFrame(this.tick))}_cancel(){this._cancelFrame&&(this._cancelFrame(),this._cancelFrame=null)}_kickstart(){this._autoTick===L.ON_DEMAND?this._emitter.listenerCount()&&this._request():this._autoTick===L.CONTINUOUS?this._request():this._cancel()}}({phases:[O,X]});function A(t,e){if("pointerId"in t)return t.pointerId===e?t:null;if("changedTouches"in t){let i=0;for(;itypeof window&&"u">typeof window.document,R=(()=>{let t=!1;try{let e=Object.defineProperty({},"passive",{get:function(){t=!0}});window.addEventListener("testPassive",null,e),window.removeEventListener("testPassive",null,e)}catch{}return t})(),N=F&&"ontouchstart"in window,W=F&&!!window.PointerEvent;function z(t={}){let{capture:e=!0,passive:i=!0}=t;return R?{capture:e,passive:i}:{capture:e}}function U(t){return"auto"===t||void 0===t?W?"pointer":N?"touch":"mouse":t}F&&navigator.vendor&&navigator.vendor.indexOf("Apple")>-1&&navigator.userAgent&&-1==navigator.userAgent.indexOf("CriOS")&&navigator.userAgent.indexOf("FxiOS");var V={pointer:{start:"pointerdown",move:"pointermove",cancel:"pointercancel",end:"pointerup"},touch:{start:"touchstart",move:"touchmove",cancel:"touchcancel",end:"touchend"},mouse:{start:"mousedown",move:"mousemove",cancel:"",end:"mouseup"}},B=class{constructor(t,e={}){let{listenerOptions:n={},sourceEvents:s="auto",startPredicate:r=t=>!("button"in t&&t.button>0)}=e;this.element=t,this.drag=null,this.isDestroyed=!1,this._areWindowListenersBound=!1,this._startPredicate=r,this._listenerOptions=z(n),this._sourceEvents=U(s),this._emitter=new i,this._onStart=this._onStart.bind(this),this._onMove=this._onMove.bind(this),this._onCancel=this._onCancel.bind(this),this._onEnd=this._onEnd.bind(this),t.addEventListener(V[this._sourceEvents].start,this._onStart,this._listenerOptions)}_getTrackedPointerEventData(t){return this.drag?A(t,this.drag.pointerId):null}_onStart(t){if(this.isDestroyed||this.drag||!this._startPredicate(t))return;let e="pointerId"in t?t.pointerId:"changedTouches"in t?t.changedTouches[0]?t.changedTouches[0].identifier:null:-1;if(null===e)return;let i=A(t,e);if(null===i)return;let n={pointerId:e,pointerType:"pointerType"in t?t.pointerType:"touches"in t?"touch":"mouse",x:i.clientX,y:i.clientY};this.drag=n;let s={...n,type:C.start,srcEvent:t,target:i.target};this._emitter.emit(s.type,s),this.drag&&this._bindWindowListeners()}_onMove(t){if(!this.drag)return;let e=this._getTrackedPointerEventData(t);if(!e)return;this.drag.x=e.clientX,this.drag.y=e.clientY;let i={type:C.move,srcEvent:t,target:e.target,...this.drag};this._emitter.emit(i.type,i)}_onCancel(t){if(!this.drag)return;let e=this._getTrackedPointerEventData(t);if(!e)return;this.drag.x=e.clientX,this.drag.y=e.clientY;let i={type:C.cancel,srcEvent:t,target:e.target,...this.drag};this._emitter.emit(i.type,i),this._resetDrag()}_onEnd(t){if(!this.drag)return;let e=this._getTrackedPointerEventData(t);if(!e)return;this.drag.x=e.clientX,this.drag.y=e.clientY;let i={type:C.end,srcEvent:t,target:e.target,...this.drag};this._emitter.emit(i.type,i),this._resetDrag()}_bindWindowListeners(){if(this._areWindowListenersBound)return;let{move:t,end:e,cancel:i}=V[this._sourceEvents];window.addEventListener(t,this._onMove,this._listenerOptions),window.addEventListener(e,this._onEnd,this._listenerOptions),i&&window.addEventListener(i,this._onCancel,this._listenerOptions),this._areWindowListenersBound=!0}_unbindWindowListeners(){if(this._areWindowListenersBound){let{move:t,end:e,cancel:i}=V[this._sourceEvents];window.removeEventListener(t,this._onMove,this._listenerOptions),window.removeEventListener(e,this._onEnd,this._listenerOptions),i&&window.removeEventListener(i,this._onCancel,this._listenerOptions),this._areWindowListenersBound=!1}}_resetDrag(){this.drag=null,this._unbindWindowListeners()}cancel(){if(!this.drag)return;let t={type:C.cancel,srcEvent:null,target:null,...this.drag};this._emitter.emit(t.type,t),this._resetDrag()}updateSettings(t){if(this.isDestroyed)return;let{listenerOptions:e,sourceEvents:i,startPredicate:n}=t,s=U(i),r=z(e);n&&this._startPredicate!==n&&(this._startPredicate=n),(e&&(this._listenerOptions.capture!==r.capture||this._listenerOptions.passive===r.passive)||i&&this._sourceEvents!==s)&&(this.element.removeEventListener(V[this._sourceEvents].start,this._onStart,this._listenerOptions),this._unbindWindowListeners(),this.cancel(),i&&(this._sourceEvents=s),e&&r&&(this._listenerOptions=r),this.element.addEventListener(V[this._sourceEvents].start,this._onStart,this._listenerOptions))}on(t,e,i){return this._emitter.on(t,e,i)}off(t,e){this._emitter.off(t,e)}destroy(){this.isDestroyed||(this.isDestroyed=!0,this.cancel(),this._emitter.emit(C.destroy,{type:C.destroy}),this._emitter.off(),this.element.removeEventListener(V[this._sourceEvents].start,this._onStart,this._listenerOptions))}},H=class extends I{constructor(t={}){super();let{moveDistance:e=25,startPredicate:i=t=>{if(("Enter"===t.key||" "===t.key)&&document.activeElement&&document.activeElement!==document.body){let{left:t,top:e}=document.activeElement.getBoundingClientRect();return{x:t,y:e}}return null},movePredicate:n=(t,e,i)=>{if(!e.drag)return null;switch(t.key){case"ArrowLeft":return{x:e.drag.x-i.x,y:e.drag.y};case"ArrowRight":return{x:e.drag.x+i.x,y:e.drag.y};case"ArrowUp":return{x:e.drag.x,y:e.drag.y-i.y};case"ArrowDown":return{x:e.drag.x,y:e.drag.y+i.y};default:return null}},cancelPredicate:s=(t,e)=>e.drag&&"Escape"===t.key?{x:e.drag.x,y:e.drag.y}:null,endPredicate:r=(t,e)=>e.drag&&("Enter"===t.key||" "===t.key)?{x:e.drag.x,y:e.drag.y}:null}=t;this._moveDistance="number"==typeof e?{x:e,y:e}:{...e},this._startPredicate=i,this._movePredicate=n,this._cancelPredicate=s,this._endPredicate=r,this.cancel=this.cancel.bind(this),this._onKeyDown=this._onKeyDown.bind(this),document.addEventListener("keydown",this._onKeyDown),window.addEventListener("blur",this.cancel),window.addEventListener("visibilitychange",this.cancel)}_onKeyDown(t){if(!this.drag){let e=this._startPredicate(t,this,this._moveDistance);e&&(t.preventDefault(),this._start({type:"start",x:e.x,y:e.y,srcEvent:t}));return}let e=this._cancelPredicate(t,this,this._moveDistance);if(e){t.preventDefault(),this._cancel({type:"cancel",x:e.x,y:e.y,srcEvent:t});return}let i=this._endPredicate(t,this,this._moveDistance);if(i){t.preventDefault(),this._end({type:"end",x:i.x,y:i.y,srcEvent:t});return}let n=this._movePredicate(t,this,this._moveDistance);if(n){t.preventDefault(),this._move({type:"move",x:n.x,y:n.y,srcEvent:t});return}}updateSettings(t={}){void 0!==t.moveDistance&&("number"==typeof t.moveDistance?(this._moveDistance.x=t.moveDistance,this._moveDistance.y=t.moveDistance):(this._moveDistance.x=t.moveDistance.x,this._moveDistance.y=t.moveDistance.y)),void 0!==t.startPredicate&&(this._startPredicate=t.startPredicate),void 0!==t.movePredicate&&(this._movePredicate=t.movePredicate),void 0!==t.cancelPredicate&&(this._cancelPredicate=t.cancelPredicate),void 0!==t.endPredicate&&(this._endPredicate=t.endPredicate)}destroy(){this.isDestroyed||(super.destroy(),document.removeEventListener("keydown",this._onKeyDown),window.removeEventListener("blur",this.cancel),window.removeEventListener("visibilitychange",this.cancel))}},j=class{constructor(){this.sensor=null,this.isEnded=!1,this.isStarted=!1,this.startEvent=null,this.nextMoveEvent=null,this.prevMoveEvent=null,this.endEvent=null,this.items=[]}},K=class{constructor(t,e,i,n,s){this.data={},this.element=t,this.elementContainer=e,this.elementOffsetContainer=i,this.dragContainer=n,this.dragOffsetContainer=s,this.initialTransform="",this.frozenProps=null,this.unfrozenProps=null,this.x=0,this.y=0,this.pX=0,this.pY=0,this._updateDiffX=0,this._updateDiffY=0,this._moveDiffX=0,this._moveDiffY=0,this._containerDiffX=0,this._containerDiffY=0}};function $(t,e,i={left:0,top:0}){if(i.left=0,i.top=0,t===e)return i;let n=P([t,"padding"]),s=P([e,"padding"]);return i.left=s.left-n.left,i.top=s.top-n.top,i}var G=new WeakMap;function J(t){let e=G.get(t)?.deref();return e||(e=window.getComputedStyle(t,null),G.set(t,new WeakRef(e))),e}var Q=!R||{capture:!0,passive:!0},Z={left:0,top:0},tt={x:0,y:0};function te(){return{container:null,startPredicate:()=>!0,getElements:()=>null,releaseElements:()=>null,getFrozenProps:()=>null,getStartPosition:()=>({x:0,y:0}),setPosition:({item:t,x:e,y:i})=>{t.element.style.transform=`translate(${e}px, ${i}px) ${t.initialTransform}`},getPositionChange:({event:t,prevEvent:e})=>(tt.x=t.x-e.x,tt.y=t.y-e.y,tt)}}var ti=class{constructor(t,e={}){this.sensors=t,this.settings=this._parseSettings(e),this.plugins={},this.drag=null,this.isDestroyed=!1,this._sensorData=new Map,this._emitter=new i,this._startId=Symbol(),this._moveId=Symbol(),this._updateId=Symbol(),this._onMove=this._onMove.bind(this),this._onScroll=this._onScroll.bind(this),this._onEnd=this._onEnd.bind(this),this._prepareStart=this._prepareStart.bind(this),this._applyStart=this._applyStart.bind(this),this._prepareMove=this._prepareMove.bind(this),this._applyMove=this._applyMove.bind(this),this._preparePositionUpdate=this._preparePositionUpdate.bind(this),this._applyPositionUpdate=this._applyPositionUpdate.bind(this),this.sensors.forEach(t=>{this._sensorData.set(t,{predicateState:0,predicateEvent:null,onMove:e=>this._onMove(e,t),onEnd:e=>this._onEnd(e,t)});let{onMove:e,onEnd:i}=this._sensorData.get(t);t.on("start",e),t.on("move",e),t.on("cancel",i),t.on("end",i),t.on("destroy",i)})}_parseSettings(t,e=te()){let{container:i=e.container,startPredicate:n=e.startPredicate,getElements:s=e.getElements,releaseElements:r=e.releaseElements,getFrozenProps:o=e.getFrozenProps,getStartPosition:a=e.getStartPosition,setPosition:l=e.setPosition,getPositionChange:h=e.getPositionChange}=t||{};return{container:i,startPredicate:n,getElements:s,releaseElements:r,getFrozenProps:o,getStartPosition:a,setPosition:l,getPositionChange:h}}_emit(t,...e){this._emitter.emit(t,...e)}_onMove(t,e){let i=this._sensorData.get(e);if(i)switch(i.predicateState){case 0:{i.predicateEvent=t;let n=this.settings.startPredicate({draggable:this,sensor:e,event:t});!0===n?this.resolveStartPredicate(e):!1===n&&this.rejectStartPredicate(e);break}case 1:this.drag&&(this.drag.nextMoveEvent=t,Y.once(O,this._prepareMove,this._moveId),Y.once(X,this._applyMove,this._moveId))}}_onScroll(){this.updatePosition()}_onEnd(t,e){let i=this._sensorData.get(e);i&&(this.drag?1===i.predicateState&&(this.drag.endEvent=t,this._sensorData.forEach(t=>{t.predicateState=0,t.predicateEvent=null}),this.stop()):(i.predicateState=0,i.predicateEvent=null))}_prepareStart(){let{drag:t}=this;if(!t||!t.startEvent)return;let e=this.settings.getElements({draggable:this,sensor:t.sensor,startEvent:t.startEvent})||[];t.items=e.map(e=>{if(!e.isConnected)throw Error("Element is not connected");let i=e.parentElement,n=T(e);if(!n)throw Error("Offset container could not be computed for the element!");let s=this.settings.container||i,r=s===i?n:T(e,{container:s});if(!r)throw Error("Drag offset container could not be computed for the element!");let o=new K(e,i,n,s,r),a=e.getBoundingClientRect();if(o.x=a.left,o.y=a.top,n!==r){let{left:t,top:e}=$(r,n,Z);o._containerDiffX=t,o._containerDiffY=e}let l=J(e),{transform:h}=l;h&&"none"!==h&&"matrix(1, 0, 0, 1, 0, 0)"!==h&&"matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)"!==h&&(o.initialTransform=h);let{x:d,y:c}=this.settings.getStartPosition({draggable:this,sensor:t.sensor,item:o,style:l});o.pX=d,o.pY=c;let u=this.settings.getFrozenProps({draggable:this,sensor:t.sensor,item:o,style:l});if(Array.isArray(u)){if(u.length){let t={};for(let e of u)t[e]=l[e];o.frozenProps=t}else o.frozenProps=null}else o.frozenProps=u;if(o.frozenProps){let t={};for(let i in o.frozenProps)o.frozenProps.hasOwnProperty(i)&&(t[i]=e.style[i]);o.unfrozenProps=t}return o}),this._emit("preparestart",t.startEvent)}_applyStart(){let t=this.drag;if(!t||!t.startEvent)return;let{container:e}=this.settings;for(let i of t.items)e&&i.element.parentElement!==e&&(e.appendChild(i.element),i.pX+=i._containerDiffX,i.pY+=i._containerDiffY),i.frozenProps&&Object.assign(i.element.style,i.frozenProps),this.settings.setPosition({phase:"start",draggable:this,sensor:t.sensor,item:i,x:i.pX,y:i.pY});window.addEventListener("scroll",this._onScroll,Q),t.isStarted=!0,this._emit("start",t.startEvent)}_prepareMove(){let{drag:t}=this;if(!t||!t.startEvent)return;let e=t.nextMoveEvent,i=t.prevMoveEvent||t.startEvent;if(!(!e||e===i)){for(let n of t.items){let{x:s,y:r}=this.settings.getPositionChange({draggable:this,sensor:t.sensor,item:n,startEvent:t.startEvent,prevEvent:i,event:e});s&&(n.pX=n.pX-n._moveDiffX+s,n.x=n.x-n._moveDiffX+s,n._moveDiffX=s),r&&(n.pY=n.pY-n._moveDiffY+r,n.y=n.y-n._moveDiffY+r,n._moveDiffY=r)}t.prevMoveEvent=e,this._emit("preparemove",e)}}_applyMove(){let{drag:t}=this;if(!(!t||!t.nextMoveEvent)){for(let e of t.items)e._moveDiffX=0,e._moveDiffY=0;for(let e of t.items)this.settings.setPosition({phase:"move",draggable:this,sensor:t.sensor,item:e,x:e.pX,y:e.pY});this._emit("move",t.nextMoveEvent)}}_preparePositionUpdate(){let{drag:t}=this;if(t)for(let e of t.items){if(e.elementOffsetContainer!==e.dragOffsetContainer){let{left:t,top:i}=$(e.dragOffsetContainer,e.elementOffsetContainer,Z);e._containerDiffX=t,e._containerDiffY=i}let{left:t,top:i}=e.element.getBoundingClientRect(),n=e.x-e._moveDiffX-t;e.pX=e.pX-e._updateDiffX+n,e._updateDiffX=n;let s=e.y-e._moveDiffY-i;e.pY=e.pY-e._updateDiffY+s,e._updateDiffY=s}}_applyPositionUpdate(){let{drag:t}=this;if(t)for(let e of t.items)e._updateDiffX=0,e._updateDiffY=0,this.settings.setPosition({phase:"move",draggable:this,sensor:t.sensor,item:e,x:e.pX,y:e.pY})}on(t,e,i){return this._emitter.on(t,e,i)}off(t,e){this._emitter.off(t,e)}resolveStartPredicate(t,e){let i=this._sensorData.get(t);if(!i)return;let n=e||i.predicateEvent;0===i.predicateState&&n&&(i.predicateState=1,i.predicateEvent=null,this.drag=new j,this.drag.sensor=t,this.drag.startEvent=n,this._sensorData.forEach((e,i)=>{i!==t&&(e.predicateState=2,e.predicateEvent=null)}),Y.once(O,this._prepareStart,this._startId),Y.once(X,this._applyStart,this._startId))}rejectStartPredicate(t){let e=this._sensorData.get(t);e?.predicateState===0&&(e.predicateState=2,e.predicateEvent=null)}stop(){let{drag:t}=this;if(!(!t||t.isEnded)){if(t.isEnded=!0,Y.off(O,this._startId),Y.off(X,this._startId),Y.off(O,this._moveId),Y.off(X,this._moveId),Y.off(O,this._updateId),Y.off(X,this._updateId),t.isStarted){window.removeEventListener("scroll",this._onScroll,Q);let e=[];for(let i of t.items){if(e.push(i.element),i.elementContainer&&i.element.parentElement!==i.elementContainer&&(i.pX-=i._containerDiffX,i.pY-=i._containerDiffY,i._containerDiffX=0,i._containerDiffY=0,i.elementContainer.appendChild(i.element)),i.unfrozenProps)for(let t in i.unfrozenProps)i.element.style[t]=i.unfrozenProps[t]||"";this.settings.setPosition({phase:"end",draggable:this,sensor:t.sensor,item:i,x:i.pX,y:i.pY})}e.length&&this.settings.releaseElements({draggable:this,sensor:t.sensor,elements:e})}this._emit("end",t.endEvent),this.drag=null}}updatePosition(t=!1){this.drag&&(t?(this._preparePositionUpdate(),this._applyPositionUpdate()):(Y.once(O,this._preparePositionUpdate,this._updateId),Y.once(X,this._applyPositionUpdate,this._updateId)))}updateSettings(t={}){this.settings=this._parseSettings(t,this.settings)}use(t){return t(this)}destroy(){this.isDestroyed||(this.isDestroyed=!0,this.stop(),this._sensorData.forEach(({onMove:t,onEnd:e},i)=>{i.off("start",t),i.off("move",t),i.off("cancel",e),i.off("end",e),i.off("destroy",e)}),this._sensorData.clear(),this._emit("destroy"),this._emitter.off())}},tn=class{constructor(t,e){this._data=[],this._createObject=t,this._onPut=e}pick(){return this._data.length?this._data.pop():this._createObject()}put(t){-1===this._data.indexOf(t)&&(this._onPut&&this._onPut(t),this._data.push(t))}reset(){this._data.length=0}};function ts(t,e){let i;let n=(i=function(t,...e){let i={...k(t),right:0,bottom:0};for(let t of e){let e=k(t),n=Math.max(i.left,e.left),s=Math.min(i.left+i.width,e.left+e.width);if(s<=n)return null;let r=Math.max(i.top,e.top),o=Math.min(i.top+i.height,e.height+e.top);if(o<=r)return null;i.left=n,i.top=r,i.width=s-n,i.height=o-r}return i.right=i.left+i.width,i.bottom=i.top+i.height,i}(t,e))?i.width*i.height:0;return n?n/(Math.min(t.width,e.width)*Math.min(t.height,e.height))*100:0}function tr(t){return t instanceof Window}function to(t){return tr(t)||t===document.documentElement||t===document.body?window:t}function ta(t){return tr(t)?t.pageXOffset:t.scrollLeft}function tl(t){return tr(t)&&(t=document.documentElement),t.scrollWidth-t.clientWidth}function th(t){return tr(t)?t.pageYOffset:t.scrollTop}function td(t){return tr(t)&&(t=document.documentElement),t.scrollHeight-t.clientHeight}function tc(t,e){return!(t.right<=e.left||e.right<=t.left||t.bottom<=e.top||e.bottom<=t.top)}var tu={width:0,height:0,left:0,right:0,top:0,bottom:0},tp={...tu},tf={direction:"none",threshold:0,distance:0,value:0,maxValue:0,duration:0,speed:0,deltaTime:0,isEnding:!1},tm={x:1,y:2},t_={forward:4,reverse:8},tg={none:0,left:tm.x|t_.reverse,right:tm.x|t_.forward},tv={none:0,up:tm.y|t_.reverse,down:tm.y|t_.forward},ty={...tg,...tv};function tw(t){switch(t){case tg.none:case tv.none:return"none";case tg.left:return"left";case tg.right:return"right";case tv.up:return"up";case tv.down:return"down";default:throw Error(`Unknown direction value: ${t}`)}}function tD(t,e,i){let{left:n=0,right:s=0,top:r=0,bottom:o=0}=e;return n=Math.max(0,n),s=Math.max(0,s),r=Math.max(0,r),o=Math.max(0,o),i.width=t.width+n+s,i.height=t.height+r+o,i.left=t.left-n,i.top=t.top-r,i.right=t.right+s,i.bottom=t.bottom+o,i}function tE(t,e){return Math.ceil(t)>=Math.floor(e)}function tx(t,e){return Math.min(e/2,t)}function tb(t,e,i,n){return Math.max(0,i+2*t+n*e-n)/2}var tS=class{constructor(){this.positionX=0,this.positionY=0,this.directionX=ty.none,this.directionY=ty.none,this.overlapCheckRequestTime=0}},tP=class{constructor(){this.element=null,this.requestX=null,this.requestY=null,this.scrollLeft=0,this.scrollTop=0}reset(){this.requestX&&(this.requestX.action=null),this.requestY&&(this.requestY.action=null),this.element=null,this.requestX=null,this.requestY=null,this.scrollLeft=0,this.scrollTop=0}addRequest(t){tm.x&t.direction?(this.requestX&&this.removeRequest(this.requestX),this.requestX=t):(this.requestY&&this.removeRequest(this.requestY),this.requestY=t),t.action=this}removeRequest(t){this.requestX===t?(this.requestX=null,t.action=null):this.requestY===t&&(this.requestY=null,t.action=null)}computeScrollValues(){this.element&&(this.scrollLeft=this.requestX?this.requestX.value:ta(this.element),this.scrollTop=this.requestY?this.requestY.value:th(this.element))}scroll(){this.element&&(this.element.scrollTo?this.element.scrollTo(this.scrollLeft,this.scrollTop):(this.element.scrollLeft=this.scrollLeft,this.element.scrollTop=this.scrollTop))}},tM=class{constructor(){this.item=null,this.element=null,this.isActive=!1,this.isEnding=!1,this.direction=0,this.value=NaN,this.maxValue=0,this.threshold=0,this.distance=0,this.deltaTime=0,this.speed=0,this.duration=0,this.action=null}reset(){this.isActive&&this.onStop(),this.item=null,this.element=null,this.isActive=!1,this.isEnding=!1,this.direction=0,this.value=NaN,this.maxValue=0,this.threshold=0,this.distance=0,this.deltaTime=0,this.speed=0,this.duration=0,this.action=null}hasReachedEnd(){return t_.forward&this.direction?tE(this.value,this.maxValue):this.value<=0}computeCurrentScrollValue(){return this.element?this.value!=this.value?tm.x&this.direction?ta(this.element):th(this.element):Math.max(0,Math.min(this.value,this.maxValue)):0}computeNextScrollValue(){let t=this.speed*(this.deltaTime/1e3);return Math.max(0,Math.min(t_.forward&this.direction?this.value+t:this.value-t,this.maxValue))}computeSpeed(){if(!this.item||!this.element)return 0;let{speed:t}=this.item;return"function"==typeof t?(tf.direction=tw(this.direction),tf.threshold=this.threshold,tf.distance=this.distance,tf.value=this.value,tf.maxValue=this.maxValue,tf.duration=this.duration,tf.speed=this.speed,tf.deltaTime=this.deltaTime,tf.isEnding=this.isEnding,t(this.element,tf)):t}tick(t){return this.isActive||(this.isActive=!0,this.onStart()),this.deltaTime=t,this.value=this.computeCurrentScrollValue(),this.speed=this.computeSpeed(),this.value=this.computeNextScrollValue(),this.duration+=t,this.value}onStart(){if(!this.item||!this.element)return;let{onStart:t}=this.item;"function"==typeof t&&t(this.element,tw(this.direction))}onStop(){if(!this.item||!this.element)return;let{onStop:t}=this.item;"function"==typeof t&&t(this.element,tw(this.direction))}};new class{constructor(t={}){let{overlapCheckInterval:e=150}=t;this.items=[],this.settings={overlapCheckInterval:e},this._actions=[],this._isDestroyed=!1,this._isTicking=!1,this._tickTime=0,this._tickDeltaTime=0,this._requests={[tm.x]:new Map,[tm.y]:new Map},this._itemData=new Map,this._requestPool=new tn(()=>new tM,t=>t.reset()),this._actionPool=new tn(()=>new tP,t=>t.reset()),this._emitter=new i,this._frameRead=this._frameRead.bind(this),this._frameWrite=this._frameWrite.bind(this)}_frameRead(t){this._isDestroyed||(t&&this._tickTime?(this._tickDeltaTime=t-this._tickTime,this._tickTime=t,this._updateItems(),this._updateRequests(),this._updateActions()):(this._tickTime=t,this._tickDeltaTime=0))}_frameWrite(){this._isDestroyed||this._applyActions()}_startTicking(){this._isTicking||(this._isTicking=!0,Y.on(O,this._frameRead),Y.on(X,this._frameWrite))}_stopTicking(){this._isTicking&&(this._isTicking=!1,this._tickTime=0,this._tickDeltaTime=0,Y.off(O,this._frameRead),Y.off(X,this._frameWrite))}_getItemClientRect(t,e={width:0,height:0,left:0,right:0,top:0,bottom:0}){let{clientRect:i}=t;return e.left=i.left,e.top=i.top,e.width=i.width,e.height=i.height,e.right=i.left+i.width,e.bottom=i.top+i.height,e}_requestItemScroll(t,e,i,n,s,r,o){let a=this._requests[e],l=a.get(t);l?(l.element!==i||l.direction!==n)&&l.reset():(l=this._requestPool.pick(),a.set(t,l)),l.item=t,l.element=i,l.direction=n,l.threshold=s,l.distance=r,l.maxValue=o}_cancelItemScroll(t,e){let i=this._requests[e],n=i.get(t);n&&(n.action&&n.action.removeRequest(n),this._requestPool.put(n),i.delete(t))}_checkItemOverlap(t,e,i){let{inertAreaSize:n,targets:s}=t;if(!s.length){e&&this._cancelItemScroll(t,tm.x),i&&this._cancelItemScroll(t,tm.y);return}let r=this._itemData.get(t),o=r?.directionX,a=r?.directionY;if(!o&&!a){e&&this._cancelItemScroll(t,tm.x),i&&this._cancelItemScroll(t,tm.y);return}let l=this._getItemClientRect(t,tu),h=null,d=-1/0,c=0,u=-1/0,p=ty.none,m=0,_=0,g=null,v=-1/0,y=0,w=-1/0,D=ty.none,E=0,x=0,b=0;for(;b=r?f(i,t.top,e.left,r):e.left-i:t.left>=s?n<=e.top?f(t.left,n,s,e.top):t.top>=r?f(t.left,t.top,s,r):t.left-s:n<=e.top?e.top-n:t.top-r}(k(l),k(I))||0)}if(S&&T>=d&&L>0&&(T>d||O>u)){let t=0,e=ty.none,i=tx(r,I.width),s=tb(i,n,l.width,I.width);o===ty.right?(t=I.right+s-l.right)<=i&&!tE(ta(q),L)&&(e=ty.right):o===ty.left&&(t=l.left-(I.left-s))<=i&&ta(q)>0&&(e=ty.left),e&&(h=q,d=T,c=i,u=O,p=e,m=t,_=L)}if(P&&T>=v&&C>0&&(T>v||O>w)){let t=0,e=tv.none,i=tx(r,I.height),s=tb(i,n,l.height,I.height);a===ty.down?(t=I.bottom+s-l.bottom)<=i&&!tE(th(q),C)&&(e=ty.down):a===ty.up&&(t=l.top-(I.top-s))<=i&&th(q)>0&&(e=ty.up),e&&(g=q,v=T,y=i,w=O,D=e,E=t,x=C)}}e&&(h&&p?this._requestItemScroll(t,tm.x,h,p,c,m,_):this._cancelItemScroll(t,tm.x)),i&&(g&&D?this._requestItemScroll(t,tm.y,g,D,y,E,x):this._cancelItemScroll(t,tm.y))}_updateScrollRequest(t){let e=t.item,{inertAreaSize:i,smoothStop:n,targets:s}=e,r=this._getItemClientRect(e,tu),o=null,a=0;for(;ac)break;let f=l?ta(n):th(n);if(o=t_.forward&t.direction?tE(f,h):f<=0)break;return t.maxValue=h,t.threshold=c,t.distance=p,t.isEnding=!1,!0}return!0===n&&t.speed>0?(null===o&&(o=t.hasReachedEnd()),t.isEnding=!o):t.isEnding=!1,t.isEnding}_updateItems(){for(let t=0;tr?ty.right:no?ty.down:s0&&this._tickTime-o>this.settings.overlapCheckInterval,l=!0,h=e.get(s);h&&h.isActive&&(l=!this._updateScrollRequest(h))&&(a=!0,this._cancelItemScroll(s,tm.x));let d=!0,c=i.get(s);c&&c.isActive&&(d=!this._updateScrollRequest(c))&&(a=!0,this._cancelItemScroll(s,tm.y)),a&&(r.overlapCheckRequestTime=0,this._checkItemOverlap(s,l,d))}}_requestAction(t,e){let i=e===tm.x,n=null,s=0;for(;s[tq],startPredicate:function(t={}){let e,i=0,n=null,s,{timeout:r=250,fallback:o=()=>!0}=t,a=t=>t.preventDefault(),l=t=>{if(i){if(e){t.cancelable&&t.preventDefault();return}void 0===e&&(t.cancelable&&t.timeStamp-i>r?(e=!0,t.preventDefault()):e=!1)}};return t=>{if(!(t.sensor instanceof B))return o(t);let{draggable:h,sensor:d,event:c}=t;if("touch"===c.pointerType){if("start"===c.type&&("pointerdown"===c.srcEvent.type||"touchstart"===c.srcEvent.type)){var u;let t;let o=(n=c.target)?(t=[],tT(u=n)&&t.push(u),function(t,e=[]){let i=t?.parentNode;for(;i&&!(i instanceof Document);)i instanceof Element?(tT(i)&&e.push(i),i=i.parentNode):i=i instanceof ShadowRoot?i.host:i.parentNode;e.push(window)}(u,t),t):[];o.forEach(t=>{t.addEventListener("touchmove",l,{passive:!1,capture:!0})});let p=()=>{i&&(h.off("end",p),h.sensors.forEach(t=>{t instanceof B&&t.off("end",p)}),n?.removeEventListener("contextmenu",a),o.forEach(t=>{t.removeEventListener("touchmove",l,{capture:!0})}),i=0,e=void 0,n=null,s=void window.clearTimeout(s))};e=void 0,i=c.srcEvent.timeStamp,n?.addEventListener("contextmenu",a),h.on("end",p),h.sensors.forEach(t=>{t instanceof B&&t.off("end",p)}),r>0&&(s=window.setTimeout(()=>{h.resolveStartPredicate(d),e=!0,s=void 0},r))}return e}return"start"===c.type&&!c.srcEvent.button}}(),getPositionChange:({startEvent:t,event:e,item:i})=>{let{prevX:n=t.x,prevY:s=t.y}=i.data,r=e.x-n,o=Math.abs(r);if(o>=40){let t=o%40;r>0?(r-=t,i.data.prevX=e.x-t):(r+=t,i.data.prevX=e.x+t)}else r=0;let a=e.y-s,l=Math.abs(a);if(l>=40){let t=l%40;a>0?(a-=t,i.data.prevY=e.y-t):(a+=t,i.data.prevY=e.y+t)}else a=0;return{x:r,y:a}}});tL.on("start",()=>{tq.classList.add("dragging")}),tL.on("end",()=>{tq.classList.remove("dragging")}); +//# sourceMappingURL=index.f0b19664.js.map diff --git a/docs/public/examples/003-draggable-snap-to-grid/index.f0b19664.js.map b/docs/public/examples/003-draggable-snap-to-grid/index.f0b19664.js.map new file mode 100644 index 0000000..71dd923 --- /dev/null +++ b/docs/public/examples/003-draggable-snap-to-grid/index.f0b19664.js.map @@ -0,0 +1 @@ +{"mappings":"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","sources":["","examples/003-draggable-snap-to-grid/index.ts","dist/dragdoll.js","node_modules/eventti/dist/eventti.js","node_modules/tikki/dist/tikki.js","node_modules/mezr/dist/esm/index.js","node_modules/mezr/dist/esm/getContainingBlock.js","node_modules/mezr/dist/esm/utils/getStyle.js","node_modules/mezr/dist/esm/utils/isContainingBlockForFixedElement.js","node_modules/mezr/dist/esm/utils/constants.js","node_modules/mezr/dist/esm/utils/isBlockElement.js","node_modules/mezr/dist/esm/utils/isContainingBlockForAbsoluteElement.js","node_modules/mezr/dist/esm/utils/isDocumentElement.js","node_modules/mezr/dist/esm/getDistance.js","node_modules/mezr/dist/esm/utils/getDistanceBetweenRects.js","node_modules/mezr/dist/esm/utils/isIntersecting.js","node_modules/mezr/dist/esm/utils/getDistanceBetweenPoints.js","node_modules/mezr/dist/esm/utils/getNormalizedRect.js","node_modules/mezr/dist/esm/getRect.js","node_modules/mezr/dist/esm/getWidth.js","node_modules/mezr/dist/esm/utils/isWindow.js","node_modules/mezr/dist/esm/utils/isDocument.js","node_modules/mezr/dist/esm/utils/getWindowWidth.js","node_modules/mezr/dist/esm/utils/getPreciseScrollbarSize.js","node_modules/mezr/dist/esm/utils/getDocumentWidth.js","node_modules/mezr/dist/esm/utils/getElementWidth.js","node_modules/mezr/dist/esm/getHeight.js","node_modules/mezr/dist/esm/utils/getWindowHeight.js","node_modules/mezr/dist/esm/utils/getDocumentHeight.js","node_modules/mezr/dist/esm/utils/getElementHeight.js","node_modules/mezr/dist/esm/getOffset.js","node_modules/mezr/dist/esm/utils/isRectObject.js","node_modules/mezr/dist/esm/utils/getOffsetFromDocument.js","node_modules/mezr/dist/esm/getIntersection.js","node_modules/mezr/dist/esm/getOffsetContainer.js","node_modules/mezr/dist/esm/getOverflow.js"],"sourcesContent":["function $882b296db6123935$var$getOrCreateEventData(e, t) {\n let i = e.get(t);\n return i || (i = new $882b296db6123935$var$EventData, e.set(t, i)), i;\n}\nclass $882b296db6123935$var$EventData {\n constructor(){\n this.idMap = new Map, this.fnMap = new Map, this.onceList = new Set, this.emitList = null;\n }\n add(e, t, i, s, n) {\n if (!n && this.fnMap.has(e)) throw new Error(\"Emitter: tried to add an existing event listener to an event!\");\n if (this.idMap.has(i)) switch(s){\n case \"throw\":\n throw new Error(\"Emitter: tried to add an existing event listener id to an event!\");\n case \"ignore\":\n return i;\n default:\n this.delId(i, \"update\" === s);\n }\n let r = this.fnMap.get(e);\n return r || (r = new Set, this.fnMap.set(e, r)), r.add(i), this.idMap.set(i, e), t && this.onceList.add(i), this.emitList && this.emitList.push(e), i;\n }\n delId(e, t = !1) {\n const i = this.idMap.get(e);\n if (!i) return;\n const s = this.fnMap.get(i);\n t || this.idMap.delete(e), this.onceList.delete(e), s.delete(e), s.size || this.fnMap.delete(i), this.emitList = null;\n }\n delFn(e) {\n const t = this.fnMap.get(e);\n t && (t.forEach((e)=>{\n this.onceList.delete(e), this.idMap.delete(e);\n }), this.fnMap.delete(e), this.emitList = null);\n }\n}\nclass $882b296db6123935$export$4293555f241ae35a {\n constructor(e = {}){\n const { idDedupeMode: t = \"replace\", allowDuplicateListeners: i = !0 } = e;\n this.idDedupeMode = t, this.allowDuplicateListeners = i, this._events = new Map;\n }\n _getListeners(e) {\n const t = this._events.get(e);\n if (!t) return null;\n const { idMap: i, onceList: s } = t;\n if (!i.size) return null;\n const n = t.emitList || [\n ...i.values()\n ];\n if (s.size) {\n if (s.size === i.size) this._events.delete(e);\n else for (const e of s)t.delId(e);\n } else t.emitList = n;\n return n;\n }\n on(e, t, i = Symbol()) {\n return $882b296db6123935$var$getOrCreateEventData(this._events, e).add(t, !1, i, this.idDedupeMode, this.allowDuplicateListeners);\n }\n once(e, t, i = Symbol()) {\n return $882b296db6123935$var$getOrCreateEventData(this._events, e).add(t, !0, i, this.idDedupeMode, this.allowDuplicateListeners);\n }\n off(e, t) {\n if (void 0 === e) return void this._events.clear();\n if (void 0 === t) return void this._events.delete(e);\n const i = this._events.get(e);\n i && (\"function\" == typeof t ? i.delFn(t) : i.delId(t), i.idMap.size || this._events.delete(e));\n }\n emit(e, ...t) {\n const i = this._getListeners(e);\n if (!i) return;\n let s = 0, n = i.length;\n for(; s < n; s++)i[s](...t);\n }\n listenerCount(e) {\n var t;\n if (void 0 === e) {\n let e = 0;\n return this._events.forEach((t, i)=>{\n e += this.listenerCount(i);\n }), e;\n }\n return (null === (t = this._events.get(e)) || void 0 === t ? void 0 : t.idMap.size) || 0;\n }\n}\n\n\n\nfunction $df4a713e26511813$export$789135d3cf084551(e = 60) {\n if (\"function\" == typeof requestAnimationFrame && \"function\" == typeof cancelAnimationFrame) return (e)=>{\n const t = requestAnimationFrame(e);\n return ()=>cancelAnimationFrame(t);\n };\n {\n const t = 1e3 / e, i = \"undefined\" == typeof performance ? ()=>Date.now() : ()=>performance.now();\n return (e)=>{\n const r = setTimeout(()=>e(i()), t);\n return ()=>clearTimeout(r);\n };\n }\n}\nvar $df4a713e26511813$export$ef9b1dc363f184d9;\n!function(e) {\n e[e.PAUSED = 1] = \"PAUSED\", e[e.ON_DEMAND = 2] = \"ON_DEMAND\", e[e.CONTINUOUS = 3] = \"CONTINUOUS\";\n}($df4a713e26511813$export$ef9b1dc363f184d9 || ($df4a713e26511813$export$ef9b1dc363f184d9 = {}));\nclass $df4a713e26511813$export$39c54bcc89dcee11 {\n constructor(e = {}){\n const { phases: t = [], autoTick: i = $df4a713e26511813$export$ef9b1dc363f184d9.ON_DEMAND, allowDuplicateListeners: r = !0, idDedupeMode: s = \"replace\", requestFrame: n = $df4a713e26511813$export$789135d3cf084551() } = e;\n this.phases = t, this._autoTick = i, this._requestFrame = n, this._cancelFrame = null, this._queue = [], this._emitter = new (0, $882b296db6123935$export$4293555f241ae35a)({\n allowDuplicateListeners: r,\n idDedupeMode: s\n }), this.tick = this.tick.bind(this);\n }\n get requestFrame() {\n return this._requestFrame;\n }\n set requestFrame(e) {\n this._requestFrame = e, this._kickstart();\n }\n get autoTick() {\n return this._autoTick;\n }\n set autoTick(e) {\n this._autoTick = e, this._kickstart();\n }\n get allowDuplicateListeners() {\n return this._emitter.allowDuplicateListeners;\n }\n set allowDuplicateListeners(e) {\n this._emitter.allowDuplicateListeners = e;\n }\n get idDedupeMode() {\n return this._emitter.idDedupeMode;\n }\n set idDedupeMode(e) {\n this._emitter.idDedupeMode = e;\n }\n tick(...e) {\n this._cancelFrame = null;\n const { _queue: t } = this;\n if (t.length) throw new Error(\"Ticker: Can't tick before the previous tick has finished!\");\n this._request();\n const { phases: i, _emitter: r } = this;\n let s, n, a, c, u, o;\n for(s = 0, a = i.length; s < a; s++)o = r._getListeners(i[s]), o && t.push(o);\n for(s = 0, a = t.length; s < a; s++)for(u = t[s], n = 0, c = u.length; n < c; n++)u[n](...e);\n t.length = 0, this._autoTick !== $df4a713e26511813$export$ef9b1dc363f184d9.ON_DEMAND || r.listenerCount() || this._cancel();\n }\n on(e, t, i) {\n const r = this._emitter.on(e, t, i);\n return this._request(), r;\n }\n once(e, t, i) {\n const r = this._emitter.once(e, t, i);\n return this._request(), r;\n }\n off(e, t) {\n return this._emitter.off(e, t);\n }\n listenerCount(e) {\n return this._emitter.listenerCount(e);\n }\n _request() {\n this._requestFrame && !this._cancelFrame && this._autoTick >= $df4a713e26511813$export$ef9b1dc363f184d9.ON_DEMAND && (this._cancelFrame = this._requestFrame(this.tick));\n }\n _cancel() {\n this._cancelFrame && (this._cancelFrame(), this._cancelFrame = null);\n }\n _kickstart() {\n this._autoTick === $df4a713e26511813$export$ef9b1dc363f184d9.ON_DEMAND ? this._emitter.listenerCount() && this._request() : this._autoTick === $df4a713e26511813$export$ef9b1dc363f184d9.CONTINUOUS ? this._request() : this._cancel();\n }\n}\nfunction $df4a713e26511813$export$4d497fac909c98f0(e) {\n return (t)=>{\n const i = e.requestAnimationFrame(t);\n return ()=>e.cancelAnimationFrame(i);\n };\n}\n\n\nconst $45554ebda029bd05$var$STYLE_DECLARATION_CACHE = new WeakMap;\nfunction $45554ebda029bd05$export$3d2f074408bd1b82(e, t) {\n if (t) return window.getComputedStyle(e, t);\n let C = $45554ebda029bd05$var$STYLE_DECLARATION_CACHE.get(e)?.deref();\n return C || (C = window.getComputedStyle(e, null), $45554ebda029bd05$var$STYLE_DECLARATION_CACHE.set(e, new WeakRef(C))), C;\n}\n\n\nconst $70e6b31ea6202e28$export$e44ffb50cc242ec5 = \"undefined\" != typeof window && void 0 !== window.document;\nconst $70e6b31ea6202e28$export$af54264dae9065e6 = !!($70e6b31ea6202e28$export$e44ffb50cc242ec5 && navigator.vendor && navigator.vendor.indexOf(\"Apple\") > -1 && navigator.userAgent && -1 == navigator.userAgent.indexOf(\"CriOS\") && -1 == navigator.userAgent.indexOf(\"FxiOS\"));\nconst $70e6b31ea6202e28$export$11fd24d838ebde87 = {\n content: \"content\",\n padding: \"padding\",\n scrollbar: \"scrollbar\",\n border: \"border\",\n margin: \"margin\"\n};\nconst $70e6b31ea6202e28$export$76e909bcfd8ba196 = {\n [$70e6b31ea6202e28$export$11fd24d838ebde87.content]: !1,\n [$70e6b31ea6202e28$export$11fd24d838ebde87.padding]: !1,\n [$70e6b31ea6202e28$export$11fd24d838ebde87.scrollbar]: !0,\n [$70e6b31ea6202e28$export$11fd24d838ebde87.border]: !0,\n [$70e6b31ea6202e28$export$11fd24d838ebde87.margin]: !0\n};\nconst $70e6b31ea6202e28$export$d2ad2856e215d28e = new Set([\n \"auto\",\n \"scroll\"\n]);\nconst $70e6b31ea6202e28$export$cd414719242f618c = (()=>{\n try {\n return window.navigator.userAgentData.brands.some(({ brand: n })=>\"Chromium\" === n);\n } catch (n) {\n return !1;\n }\n})();\n\n\n\n\nfunction $ac4a87157cb8fded$export$fab73c3646bf1f5e(e) {\n switch((0, $45554ebda029bd05$export$3d2f074408bd1b82)(e).display){\n case \"none\":\n return null;\n case \"inline\":\n case \"contents\":\n return !1;\n default:\n return !0;\n }\n}\n\n\nfunction $19cb8cdbc5921691$export$e5ce114ae0e5f4e8(n) {\n const t = (0, $45554ebda029bd05$export$3d2f074408bd1b82)(n);\n if (!(0, $70e6b31ea6202e28$export$af54264dae9065e6)) {\n const { filter: n } = t;\n if (n && \"none\" !== n) return !0;\n const { backdropFilter: e } = t;\n if (e && \"none\" !== e) return !0;\n const { willChange: i } = t;\n if (i && (i.indexOf(\"filter\") > -1 || i.indexOf(\"backdrop-filter\") > -1)) return !0;\n }\n const e = (0, $ac4a87157cb8fded$export$fab73c3646bf1f5e)(n);\n if (!e) return e;\n const { transform: i } = t;\n if (i && \"none\" !== i) return !0;\n const { perspective: r } = t;\n if (r && \"none\" !== r) return !0;\n const { contentVisibility: o } = t;\n if (o && \"auto\" === o) return !0;\n const { contain: f } = t;\n if (f && (\"strict\" === f || \"content\" === f || f.indexOf(\"paint\") > -1 || f.indexOf(\"layout\") > -1)) return !0;\n const { willChange: c } = t;\n return !(!c || !(c.indexOf(\"transform\") > -1 || c.indexOf(\"perspective\") > -1 || c.indexOf(\"contain\") > -1)) || !!((0, $70e6b31ea6202e28$export$af54264dae9065e6) && c && c.indexOf(\"filter\") > -1);\n}\n\n\n\n\nfunction $ea1829f02863f9a1$export$996cb64f2dabb66f(t) {\n return \"static\" !== (0, $45554ebda029bd05$export$3d2f074408bd1b82)(t).position || (0, $19cb8cdbc5921691$export$e5ce114ae0e5f4e8)(t);\n}\n\n\n\nfunction $8d1ba90c23ec3360$export$d8a62a489b442872(e) {\n return e instanceof HTMLHtmlElement;\n}\n\n\nfunction $1f38751365ebdabf$export$940d8225183e1404(e, t = {}) {\n if ((0, $8d1ba90c23ec3360$export$d8a62a489b442872)(e)) return e.ownerDocument.defaultView;\n const n = t.position || (0, $45554ebda029bd05$export$3d2f074408bd1b82)(e).position, { skipDisplayNone: i, container: o } = t;\n switch(n){\n case \"static\":\n case \"relative\":\n case \"sticky\":\n case \"-webkit-sticky\":\n {\n let t = o || e.parentElement;\n for(; t;){\n const e = (0, $ac4a87157cb8fded$export$fab73c3646bf1f5e)(t);\n if (e) return t;\n if (null === e && !i) return null;\n t = t.parentElement;\n }\n return e.ownerDocument.documentElement;\n }\n case \"absolute\":\n case \"fixed\":\n {\n const t = \"fixed\" === n;\n let l = o || e.parentElement;\n for(; l;){\n const e = t ? (0, $19cb8cdbc5921691$export$e5ce114ae0e5f4e8)(l) : (0, $ea1829f02863f9a1$export$996cb64f2dabb66f)(l);\n if (!0 === e) return l;\n if (null === e && !i) return null;\n l = l.parentElement;\n }\n return e.ownerDocument.defaultView;\n }\n default:\n return null;\n }\n}\n\n\nfunction $15174ae68f2a890f$export$8d3dd0be5eb9f11f(t, e) {\n return !(t.left + t.width <= e.left || e.left + e.width <= t.left || t.top + t.height <= e.top || e.top + e.height <= t.top);\n}\n\n\nfunction $6473c4721ef9a7f0$export$53137579a3174918(t, e, n, o) {\n return Math.sqrt(Math.pow(n - t, 2) + Math.pow(o - e, 2));\n}\n\n\nfunction $1565a77b3ba33365$export$2d670be792dba464(t, e) {\n if ((0, $15174ae68f2a890f$export$8d3dd0be5eb9f11f)(t, e)) return null;\n const n = t.left + t.width, i = t.top + t.height, o = e.left + e.width, s = e.top + e.height;\n return n <= e.left ? i <= e.top ? (0, $6473c4721ef9a7f0$export$53137579a3174918)(n, i, e.left, e.top) : t.top >= s ? (0, $6473c4721ef9a7f0$export$53137579a3174918)(n, t.top, e.left, s) : e.left - n : t.left >= o ? i <= e.top ? (0, $6473c4721ef9a7f0$export$53137579a3174918)(t.left, i, o, e.top) : t.top >= s ? (0, $6473c4721ef9a7f0$export$53137579a3174918)(t.left, t.top, o, s) : t.left - o : i <= e.top ? e.top - i : t.top - s;\n}\n\n\n\nfunction $0dd5d633d9254ede$export$5a096129d439f843(n) {\n return n instanceof Window;\n}\n\n\nfunction $88986006632f0ab8$export$62858bae88b53fd0(n) {\n return n instanceof Document;\n}\n\n\n\n\nconst $9a36d0396b9b09d4$var$SUBPIXEL_OFFSET = new Map;\nlet $9a36d0396b9b09d4$var$testStyleElement = null, $9a36d0396b9b09d4$var$testParentElement = null, $9a36d0396b9b09d4$var$testChildElement = null;\nfunction $9a36d0396b9b09d4$var$getSubpixelScrollbarSize(t, e) {\n const n = t.split(\".\");\n let l = $9a36d0396b9b09d4$var$SUBPIXEL_OFFSET.get(n[1]);\n if (void 0 === l) {\n $9a36d0396b9b09d4$var$testStyleElement || ($9a36d0396b9b09d4$var$testStyleElement = document.createElement(\"style\")), $9a36d0396b9b09d4$var$testStyleElement.innerHTML = `\\n #mezr-scrollbar-test::-webkit-scrollbar {\\n width: ${t} !important;\\n }\\n `, $9a36d0396b9b09d4$var$testParentElement && $9a36d0396b9b09d4$var$testChildElement || ($9a36d0396b9b09d4$var$testParentElement = document.createElement(\"div\"), $9a36d0396b9b09d4$var$testChildElement = document.createElement(\"div\"), $9a36d0396b9b09d4$var$testParentElement.appendChild($9a36d0396b9b09d4$var$testChildElement), $9a36d0396b9b09d4$var$testParentElement.id = \"mezr-scrollbar-test\", $9a36d0396b9b09d4$var$testParentElement.style.cssText = \"\\n all: unset !important;\\n position: fixed !important;\\n top: -200px !important;\\n left: 0px !important;\\n width: 100px !important;\\n height: 100px !important;\\n overflow: scroll !important;\\n pointer-events: none !important;\\n visibility: hidden !important;\\n \", $9a36d0396b9b09d4$var$testChildElement.style.cssText = \"\\n all: unset !important;\\n position: absolute !important;\\n inset: 0 !important;\\n \"), document.body.appendChild($9a36d0396b9b09d4$var$testStyleElement), document.body.appendChild($9a36d0396b9b09d4$var$testParentElement);\n l = $9a36d0396b9b09d4$var$testParentElement.getBoundingClientRect().width - $9a36d0396b9b09d4$var$testChildElement.getBoundingClientRect().width - e, $9a36d0396b9b09d4$var$SUBPIXEL_OFFSET.set(n[1], l), document.body.removeChild($9a36d0396b9b09d4$var$testParentElement), document.body.removeChild($9a36d0396b9b09d4$var$testStyleElement);\n }\n return e + l;\n}\nfunction $9a36d0396b9b09d4$export$5ad86f4734d24a64(t, e, n) {\n if (n <= 0) return 0;\n if (0, $70e6b31ea6202e28$export$cd414719242f618c) {\n const n = (0, $45554ebda029bd05$export$3d2f074408bd1b82)(t, \"::-webkit-scrollbar\"), l = \"x\" === e ? n.height : n.width, i = parseFloat(l);\n if (!Number.isNaN(i) && !Number.isInteger(i)) return $9a36d0396b9b09d4$var$getSubpixelScrollbarSize(l, i);\n }\n return n;\n}\n\n\nfunction $9bae4574eed9d865$export$91cf85d6c980faa0(e, r = !1) {\n if (r) return e.innerWidth;\n const { innerWidth: t, document: i } = e, { documentElement: n } = i, { clientWidth: c } = n;\n return t - (0, $9a36d0396b9b09d4$export$5ad86f4734d24a64)(n, \"y\", t - c);\n}\n\n\nfunction $50cb9a0c1dee19de$export$a76b7f4aaec6cdf4({ documentElement: t }) {\n return Math.max(t.scrollWidth, t.clientWidth, t.getBoundingClientRect().width);\n}\n\n\n\n\n\n\nfunction $f1039b87670ca1f4$export$742d7f6cc44470f1(t, e = (0, $70e6b31ea6202e28$export$11fd24d838ebde87).border) {\n let { width: r } = t.getBoundingClientRect();\n if (e === (0, $70e6b31ea6202e28$export$11fd24d838ebde87).border) return r;\n const o = (0, $45554ebda029bd05$export$3d2f074408bd1b82)(t);\n return e === (0, $70e6b31ea6202e28$export$11fd24d838ebde87).margin ? (r += Math.max(0, parseFloat(o.marginLeft) || 0), r += Math.max(0, parseFloat(o.marginRight) || 0), r) : (r -= parseFloat(o.borderLeftWidth) || 0, r -= parseFloat(o.borderRightWidth) || 0, e === (0, $70e6b31ea6202e28$export$11fd24d838ebde87).scrollbar ? r : (!(0, $8d1ba90c23ec3360$export$d8a62a489b442872)(t) && (0, $70e6b31ea6202e28$export$d2ad2856e215d28e).has(o.overflowY) && (r -= (0, $9a36d0396b9b09d4$export$5ad86f4734d24a64)(t, \"y\", Math.round(r) - t.clientWidth)), e === (0, $70e6b31ea6202e28$export$11fd24d838ebde87).padding || (r -= parseFloat(o.paddingLeft) || 0, r -= parseFloat(o.paddingRight) || 0), r));\n}\n\n\nfunction $2e59c48b8f000a71$export$3c49c185de0c2bfc(t, i = (0, $70e6b31ea6202e28$export$11fd24d838ebde87).border) {\n return (0, $0dd5d633d9254ede$export$5a096129d439f843)(t) ? (0, $9bae4574eed9d865$export$91cf85d6c980faa0)(t, (0, $70e6b31ea6202e28$export$76e909bcfd8ba196)[i]) : (0, $88986006632f0ab8$export$62858bae88b53fd0)(t) ? (0, $50cb9a0c1dee19de$export$a76b7f4aaec6cdf4)(t) : (0, $f1039b87670ca1f4$export$742d7f6cc44470f1)(t, i);\n}\n\n\n\n\n\n\nfunction $421143bc1c1515a1$export$a3648dbc3769cbf4(e, r = !1) {\n if (r) return e.innerHeight;\n const { innerHeight: t, document: i } = e, { documentElement: n } = i, { clientHeight: c } = n;\n return t - (0, $9a36d0396b9b09d4$export$5ad86f4734d24a64)(n, \"x\", t - c);\n}\n\n\nfunction $8e302b6d23f55757$export$5806f5d4b3eb6a6a({ documentElement: t }) {\n return Math.max(t.scrollHeight, t.clientHeight, t.getBoundingClientRect().height);\n}\n\n\n\n\n\n\nfunction $598de259e69a6df4$export$8e0f1520ce23a388(t, e = (0, $70e6b31ea6202e28$export$11fd24d838ebde87).border) {\n let { height: r } = t.getBoundingClientRect();\n if (e === (0, $70e6b31ea6202e28$export$11fd24d838ebde87).border) return r;\n const o = (0, $45554ebda029bd05$export$3d2f074408bd1b82)(t);\n return e === (0, $70e6b31ea6202e28$export$11fd24d838ebde87).margin ? (r += Math.max(0, parseFloat(o.marginTop) || 0), r += Math.max(0, parseFloat(o.marginBottom) || 0), r) : (r -= parseFloat(o.borderTopWidth) || 0, r -= parseFloat(o.borderBottomWidth) || 0, e === (0, $70e6b31ea6202e28$export$11fd24d838ebde87).scrollbar ? r : (!(0, $8d1ba90c23ec3360$export$d8a62a489b442872)(t) && (0, $70e6b31ea6202e28$export$d2ad2856e215d28e).has(o.overflowX) && (r -= (0, $9a36d0396b9b09d4$export$5ad86f4734d24a64)(t, \"x\", Math.round(r) - t.clientHeight)), e === (0, $70e6b31ea6202e28$export$11fd24d838ebde87).padding || (r -= parseFloat(o.paddingTop) || 0, r -= parseFloat(o.paddingBottom) || 0), r));\n}\n\n\nfunction $646cecfa59ec4923$export$c08559766941f856(t, e = (0, $70e6b31ea6202e28$export$11fd24d838ebde87).border) {\n return (0, $0dd5d633d9254ede$export$5a096129d439f843)(t) ? (0, $421143bc1c1515a1$export$a3648dbc3769cbf4)(t, (0, $70e6b31ea6202e28$export$76e909bcfd8ba196)[e]) : (0, $88986006632f0ab8$export$62858bae88b53fd0)(t) ? (0, $8e302b6d23f55757$export$5806f5d4b3eb6a6a)(t) : (0, $598de259e69a6df4$export$8e0f1520ce23a388)(t, e);\n}\n\n\nfunction $4de8edd731addea8$export$ff047630cae37d8e(t) {\n return t?.constructor === Object;\n}\n\n\n\n\n\n\n\nfunction $faeeed2de97ac6f7$export$9f1480883798e819(t, o = (0, $70e6b31ea6202e28$export$11fd24d838ebde87).border) {\n const e = {\n left: 0,\n top: 0\n };\n if ((0, $88986006632f0ab8$export$62858bae88b53fd0)(t)) return e;\n if ((0, $0dd5d633d9254ede$export$5a096129d439f843)(t)) return e.left += t.scrollX || 0, e.top += t.scrollY || 0, e;\n const r = t.ownerDocument.defaultView;\n r && (e.left += r.scrollX || 0, e.top += r.scrollY || 0);\n const n = t.getBoundingClientRect();\n if (e.left += n.left, e.top += n.top, o === (0, $70e6b31ea6202e28$export$11fd24d838ebde87).border) return e;\n const l = (0, $45554ebda029bd05$export$3d2f074408bd1b82)(t);\n return o === (0, $70e6b31ea6202e28$export$11fd24d838ebde87).margin ? (e.left -= Math.max(0, parseFloat(l.marginLeft) || 0), e.top -= Math.max(0, parseFloat(l.marginTop) || 0), e) : (e.left += parseFloat(l.borderLeftWidth) || 0, e.top += parseFloat(l.borderTopWidth) || 0, o === (0, $70e6b31ea6202e28$export$11fd24d838ebde87).scrollbar || o === (0, $70e6b31ea6202e28$export$11fd24d838ebde87).padding || (e.left += parseFloat(l.paddingLeft) || 0, e.top += parseFloat(l.paddingTop) || 0), e);\n}\n\n\nfunction $d927f435c3d7e8ab$export$622cea445a1c5b7d(t, e) {\n const o = (0, $4de8edd731addea8$export$ff047630cae37d8e)(t) ? {\n left: t.left,\n top: t.top\n } : Array.isArray(t) ? (0, $faeeed2de97ac6f7$export$9f1480883798e819)(...t) : (0, $faeeed2de97ac6f7$export$9f1480883798e819)(t);\n if (e && !(0, $88986006632f0ab8$export$62858bae88b53fd0)(e)) {\n const t = (0, $4de8edd731addea8$export$ff047630cae37d8e)(e) ? e : Array.isArray(e) ? (0, $faeeed2de97ac6f7$export$9f1480883798e819)(e[0], e[1]) : (0, $faeeed2de97ac6f7$export$9f1480883798e819)(e);\n o.left -= t.left, o.top -= t.top;\n }\n return o;\n}\n\n\n\nfunction $4fec7741c67a29fc$export$4b834cebd9e5cebe(t, e) {\n let i = 0, g = 0;\n (0, $4de8edd731addea8$export$ff047630cae37d8e)(t) ? (i = t.width, g = t.height) : Array.isArray(t) ? (i = (0, $2e59c48b8f000a71$export$3c49c185de0c2bfc)(...t), g = (0, $646cecfa59ec4923$export$c08559766941f856)(...t)) : (i = (0, $2e59c48b8f000a71$export$3c49c185de0c2bfc)(t), g = (0, $646cecfa59ec4923$export$c08559766941f856)(t));\n const r = (0, $d927f435c3d7e8ab$export$622cea445a1c5b7d)(t, e);\n return {\n width: i,\n height: g,\n ...r,\n right: r.left + i,\n bottom: r.top + g\n };\n}\n\n\n\nfunction $3fe9db1ad94d3e7c$export$e4e616e82e79ab9d(t) {\n return (0, $4de8edd731addea8$export$ff047630cae37d8e)(t) ? t : (0, $4fec7741c67a29fc$export$4b834cebd9e5cebe)(t);\n}\n\n\nfunction $2a599c00d4ed99d6$export$79376507b09a66f(e, t) {\n const c = (0, $3fe9db1ad94d3e7c$export$e4e616e82e79ab9d)(e), i = (0, $3fe9db1ad94d3e7c$export$e4e616e82e79ab9d)(t);\n return (0, $1565a77b3ba33365$export$2d670be792dba464)(c, i);\n}\n\n\n\n\nfunction $e931ad6985aacff5$export$72209efa88586d42(t, ...e) {\n const o = {\n ...(0, $3fe9db1ad94d3e7c$export$e4e616e82e79ab9d)(t),\n right: 0,\n bottom: 0\n };\n for (const t of e){\n const e = (0, $3fe9db1ad94d3e7c$export$e4e616e82e79ab9d)(t), i = Math.max(o.left, e.left), h = Math.min(o.left + o.width, e.left + e.width);\n if (h <= i) return null;\n const r = Math.max(o.top, e.top), l = Math.min(o.top + o.height, e.height + e.top);\n if (l <= r) return null;\n o.left = i, o.top = r, o.width = h - i, o.height = l - r;\n }\n return o.right = o.left + o.width, o.bottom = o.top + o.height, o;\n}\n\n\n\n\n\n\nfunction $4effe6f7501c7f59$export$243d7fadef466e38(n, t = {}) {\n const i = (0, $45554ebda029bd05$export$3d2f074408bd1b82)(n), { display: o } = i;\n if (\"none\" === o || \"contents\" === o) return null;\n const e = t.position || (0, $45554ebda029bd05$export$3d2f074408bd1b82)(n).position, { skipDisplayNone: s, container: r } = t;\n switch(e){\n case \"relative\":\n return n;\n case \"fixed\":\n return (0, $1f38751365ebdabf$export$940d8225183e1404)(n, {\n container: r,\n position: e,\n skipDisplayNone: s\n });\n case \"absolute\":\n {\n const t = (0, $1f38751365ebdabf$export$940d8225183e1404)(n, {\n container: r,\n position: e,\n skipDisplayNone: s\n });\n return (0, $0dd5d633d9254ede$export$5a096129d439f843)(t) ? n.ownerDocument : t;\n }\n default:\n return null;\n }\n}\n\n\n\nfunction $28b6730affddb905$export$f63a1e5ecde5e3c4(t, e) {\n const o = (0, $3fe9db1ad94d3e7c$export$e4e616e82e79ab9d)(t), i = (0, $3fe9db1ad94d3e7c$export$e4e616e82e79ab9d)(e);\n return {\n left: i.left - o.left,\n right: o.left + o.width - (i.left + i.width),\n top: i.top - o.top,\n bottom: o.top + o.height - (i.top + i.height)\n };\n}\n\n\n\n\n\n\nvar $ac6f441b4b448e14$export$61fde4a8bbe7f5d5 = {\n start: \"start\",\n move: \"move\",\n cancel: \"cancel\",\n end: \"end\",\n destroy: \"destroy\"\n};\nvar $ac6f441b4b448e14$export$2176a6ff266bf511 = class {\n constructor(){\n this.drag = null, this.isDestroyed = !1, this._emitter = new (0, $882b296db6123935$export$4293555f241ae35a);\n }\n _createDragData(e) {\n return {\n x: e.x,\n y: e.y\n };\n }\n _updateDragData(e) {\n this.drag && (this.drag.x = e.x, this.drag.y = e.y);\n }\n _resetDragData() {\n this.drag = null;\n }\n _start(e) {\n this.isDestroyed || this.drag || (this.drag = this._createDragData(e), this._emitter.emit($ac6f441b4b448e14$export$61fde4a8bbe7f5d5.start, e));\n }\n _move(e) {\n this.drag && (this._updateDragData(e), this._emitter.emit($ac6f441b4b448e14$export$61fde4a8bbe7f5d5.move, e));\n }\n _end(e) {\n this.drag && (this._updateDragData(e), this._emitter.emit($ac6f441b4b448e14$export$61fde4a8bbe7f5d5.end, e), this._resetDragData());\n }\n _cancel(e) {\n this.drag && (this._updateDragData(e), this._emitter.emit($ac6f441b4b448e14$export$61fde4a8bbe7f5d5.cancel, e), this._resetDragData());\n }\n on(e, t, n) {\n return this._emitter.on(e, t, n);\n }\n off(e, t) {\n this._emitter.off(e, t);\n }\n cancel() {\n this.drag && (this._emitter.emit($ac6f441b4b448e14$export$61fde4a8bbe7f5d5.cancel, {\n type: $ac6f441b4b448e14$export$61fde4a8bbe7f5d5.cancel,\n x: this.drag.x,\n y: this.drag.y\n }), this._resetDragData());\n }\n destroy() {\n this.isDestroyed || (this.isDestroyed = !0, this.cancel(), this._emitter.emit($ac6f441b4b448e14$export$61fde4a8bbe7f5d5.destroy, {\n type: $ac6f441b4b448e14$export$61fde4a8bbe7f5d5.destroy\n }), this._emitter.off());\n }\n};\nvar $ac6f441b4b448e14$export$9138efc7ba4fca22 = Symbol(), $ac6f441b4b448e14$export$5fd1e257088db342 = Symbol(), $ac6f441b4b448e14$export$e94d57566be028aa = new (0, $df4a713e26511813$export$39c54bcc89dcee11)({\n phases: [\n $ac6f441b4b448e14$export$9138efc7ba4fca22,\n $ac6f441b4b448e14$export$5fd1e257088db342\n ]\n});\nfunction $ac6f441b4b448e14$export$9bc58717d06262f5(i, e, t) {\n $ac6f441b4b448e14$export$9138efc7ba4fca22 = e, $ac6f441b4b448e14$export$5fd1e257088db342 = t, $ac6f441b4b448e14$export$e94d57566be028aa = i;\n}\nvar $ac6f441b4b448e14$export$2f0ad9ba2f0800d = class extends $ac6f441b4b448e14$export$2176a6ff266bf511 {\n constructor(){\n super();\n this.drag = null, this._direction = {\n x: 0,\n y: 0\n }, this._speed = 0, this._tick = this._tick.bind(this);\n }\n _createDragData(t) {\n return {\n ...super._createDragData(t),\n time: 0,\n deltaTime: 0\n };\n }\n _start(t) {\n this.isDestroyed || this.drag || (super._start(t), $ac6f441b4b448e14$export$e94d57566be028aa.on($ac6f441b4b448e14$export$9138efc7ba4fca22, this._tick));\n }\n _end(t) {\n this.drag && ($ac6f441b4b448e14$export$e94d57566be028aa.off($ac6f441b4b448e14$export$9138efc7ba4fca22, this._tick), super._end(t));\n }\n _cancel(t) {\n this.drag && ($ac6f441b4b448e14$export$e94d57566be028aa.off($ac6f441b4b448e14$export$9138efc7ba4fca22, this._tick), super._cancel(t));\n }\n _tick(t) {\n if (this.drag) {\n if (t && this.drag.time) {\n this.drag.deltaTime = t - this.drag.time, this.drag.time = t;\n let n = {\n type: \"tick\",\n time: this.drag.time,\n deltaTime: this.drag.deltaTime\n };\n if (this._emitter.emit(\"tick\", n), !this.drag) return;\n let r = this._speed * (this.drag.deltaTime / 1e3), s = this._direction.x * r, o = this._direction.y * r;\n (s || o) && this._move({\n type: \"move\",\n x: this.drag.x + s,\n y: this.drag.y + o\n });\n } else this.drag.time = t, this.drag.deltaTime = 0;\n }\n }\n};\nfunction $ac6f441b4b448e14$var$de(i, e) {\n if (\"pointerId\" in i) return i.pointerId === e ? i : null;\n if (\"changedTouches\" in i) {\n let t = 0;\n for(; t < i.changedTouches.length; t++)if (i.changedTouches[t].identifier === e) return i.changedTouches[t];\n return null;\n }\n return i;\n}\nfunction $ac6f441b4b448e14$var$Re(i) {\n return \"pointerType\" in i ? i.pointerType : \"touches\" in i ? \"touch\" : \"mouse\";\n}\nfunction $ac6f441b4b448e14$var$Me(i) {\n return \"pointerId\" in i ? i.pointerId : \"changedTouches\" in i ? i.changedTouches[0] ? i.changedTouches[0].identifier : null : -1;\n}\nvar $ac6f441b4b448e14$var$he = typeof window < \"u\" && typeof window.document < \"u\", $ac6f441b4b448e14$var$J = (()=>{\n let i = !1;\n try {\n let e = Object.defineProperty({}, \"passive\", {\n get: function() {\n i = !0;\n }\n });\n window.addEventListener(\"testPassive\", null, e), window.removeEventListener(\"testPassive\", null, e);\n } catch {}\n return i;\n})(), $ac6f441b4b448e14$var$Oe = $ac6f441b4b448e14$var$he && \"ontouchstart\" in window, $ac6f441b4b448e14$var$We = $ac6f441b4b448e14$var$he && !!window.PointerEvent, $ac6f441b4b448e14$var$Ot = !!($ac6f441b4b448e14$var$he && navigator.vendor && navigator.vendor.indexOf(\"Apple\") > -1 && navigator.userAgent && navigator.userAgent.indexOf(\"CriOS\") == -1 && navigator.userAgent.indexOf(\"FxiOS\") == -1);\nfunction $ac6f441b4b448e14$var$me(i = {}) {\n let { capture: e = !0, passive: t = !0 } = i;\n return $ac6f441b4b448e14$var$J ? {\n capture: e,\n passive: t\n } : {\n capture: e\n };\n}\nfunction $ac6f441b4b448e14$var$ue(i) {\n return i === \"auto\" || i === void 0 ? $ac6f441b4b448e14$var$We ? \"pointer\" : $ac6f441b4b448e14$var$Oe ? \"touch\" : \"mouse\" : i;\n}\nvar $ac6f441b4b448e14$var$it = {\n start: \"pointerdown\",\n move: \"pointermove\",\n cancel: \"pointercancel\",\n end: \"pointerup\"\n}, $ac6f441b4b448e14$var$ot = {\n start: \"touchstart\",\n move: \"touchmove\",\n cancel: \"touchcancel\",\n end: \"touchend\"\n}, $ac6f441b4b448e14$var$st = {\n start: \"mousedown\",\n move: \"mousemove\",\n cancel: \"\",\n end: \"mouseup\"\n}, $ac6f441b4b448e14$var$X = {\n pointer: $ac6f441b4b448e14$var$it,\n touch: $ac6f441b4b448e14$var$ot,\n mouse: $ac6f441b4b448e14$var$st\n}, $ac6f441b4b448e14$export$b26af955418d6638 = class {\n constructor(e, t = {}){\n let { listenerOptions: n = {}, sourceEvents: r = \"auto\", startPredicate: s = (o)=>!(\"button\" in o && o.button > 0) } = t;\n this.element = e, this.drag = null, this.isDestroyed = !1, this._areWindowListenersBound = !1, this._startPredicate = s, this._listenerOptions = $ac6f441b4b448e14$var$me(n), this._sourceEvents = $ac6f441b4b448e14$var$ue(r), this._emitter = new (0, $882b296db6123935$export$4293555f241ae35a), this._onStart = this._onStart.bind(this), this._onMove = this._onMove.bind(this), this._onCancel = this._onCancel.bind(this), this._onEnd = this._onEnd.bind(this), e.addEventListener($ac6f441b4b448e14$var$X[this._sourceEvents].start, this._onStart, this._listenerOptions);\n }\n _getTrackedPointerEventData(e) {\n return this.drag ? $ac6f441b4b448e14$var$de(e, this.drag.pointerId) : null;\n }\n _onStart(e) {\n if (this.isDestroyed || this.drag || !this._startPredicate(e)) return;\n let t = $ac6f441b4b448e14$var$Me(e);\n if (t === null) return;\n let n = $ac6f441b4b448e14$var$de(e, t);\n if (n === null) return;\n let r = {\n pointerId: t,\n pointerType: $ac6f441b4b448e14$var$Re(e),\n x: n.clientX,\n y: n.clientY\n };\n this.drag = r;\n let s = {\n ...r,\n type: $ac6f441b4b448e14$export$61fde4a8bbe7f5d5.start,\n srcEvent: e,\n target: n.target\n };\n this._emitter.emit(s.type, s), this.drag && this._bindWindowListeners();\n }\n _onMove(e) {\n if (!this.drag) return;\n let t = this._getTrackedPointerEventData(e);\n if (!t) return;\n this.drag.x = t.clientX, this.drag.y = t.clientY;\n let n = {\n type: $ac6f441b4b448e14$export$61fde4a8bbe7f5d5.move,\n srcEvent: e,\n target: t.target,\n ...this.drag\n };\n this._emitter.emit(n.type, n);\n }\n _onCancel(e) {\n if (!this.drag) return;\n let t = this._getTrackedPointerEventData(e);\n if (!t) return;\n this.drag.x = t.clientX, this.drag.y = t.clientY;\n let n = {\n type: $ac6f441b4b448e14$export$61fde4a8bbe7f5d5.cancel,\n srcEvent: e,\n target: t.target,\n ...this.drag\n };\n this._emitter.emit(n.type, n), this._resetDrag();\n }\n _onEnd(e) {\n if (!this.drag) return;\n let t = this._getTrackedPointerEventData(e);\n if (!t) return;\n this.drag.x = t.clientX, this.drag.y = t.clientY;\n let n = {\n type: $ac6f441b4b448e14$export$61fde4a8bbe7f5d5.end,\n srcEvent: e,\n target: t.target,\n ...this.drag\n };\n this._emitter.emit(n.type, n), this._resetDrag();\n }\n _bindWindowListeners() {\n if (this._areWindowListenersBound) return;\n let { move: e, end: t, cancel: n } = $ac6f441b4b448e14$var$X[this._sourceEvents];\n window.addEventListener(e, this._onMove, this._listenerOptions), window.addEventListener(t, this._onEnd, this._listenerOptions), n && window.addEventListener(n, this._onCancel, this._listenerOptions), this._areWindowListenersBound = !0;\n }\n _unbindWindowListeners() {\n if (this._areWindowListenersBound) {\n let { move: e, end: t, cancel: n } = $ac6f441b4b448e14$var$X[this._sourceEvents];\n window.removeEventListener(e, this._onMove, this._listenerOptions), window.removeEventListener(t, this._onEnd, this._listenerOptions), n && window.removeEventListener(n, this._onCancel, this._listenerOptions), this._areWindowListenersBound = !1;\n }\n }\n _resetDrag() {\n this.drag = null, this._unbindWindowListeners();\n }\n cancel() {\n if (!this.drag) return;\n let e = {\n type: $ac6f441b4b448e14$export$61fde4a8bbe7f5d5.cancel,\n srcEvent: null,\n target: null,\n ...this.drag\n };\n this._emitter.emit(e.type, e), this._resetDrag();\n }\n updateSettings(e) {\n if (this.isDestroyed) return;\n let { listenerOptions: t, sourceEvents: n, startPredicate: r } = e, s = $ac6f441b4b448e14$var$ue(n), o = $ac6f441b4b448e14$var$me(t);\n r && this._startPredicate !== r && (this._startPredicate = r), (t && (this._listenerOptions.capture !== o.capture || this._listenerOptions.passive === o.passive) || n && this._sourceEvents !== s) && (this.element.removeEventListener($ac6f441b4b448e14$var$X[this._sourceEvents].start, this._onStart, this._listenerOptions), this._unbindWindowListeners(), this.cancel(), n && (this._sourceEvents = s), t && o && (this._listenerOptions = o), this.element.addEventListener($ac6f441b4b448e14$var$X[this._sourceEvents].start, this._onStart, this._listenerOptions));\n }\n on(e, t, n) {\n return this._emitter.on(e, t, n);\n }\n off(e, t) {\n this._emitter.off(e, t);\n }\n destroy() {\n this.isDestroyed || (this.isDestroyed = !0, this.cancel(), this._emitter.emit($ac6f441b4b448e14$export$61fde4a8bbe7f5d5.destroy, {\n type: $ac6f441b4b448e14$export$61fde4a8bbe7f5d5.destroy\n }), this._emitter.off(), this.element.removeEventListener($ac6f441b4b448e14$var$X[this._sourceEvents].start, this._onStart, this._listenerOptions));\n }\n};\nvar $ac6f441b4b448e14$export$44d67f2a438aeba9 = class extends $ac6f441b4b448e14$export$2176a6ff266bf511 {\n constructor(t = {}){\n super();\n let { moveDistance: n = 25, startPredicate: r = (l)=>{\n if ((l.key === \"Enter\" || l.key === \" \") && document.activeElement && document.activeElement !== document.body) {\n let { left: a, top: d } = document.activeElement.getBoundingClientRect();\n return {\n x: a,\n y: d\n };\n }\n return null;\n }, movePredicate: s = (l, a, d)=>{\n if (!a.drag) return null;\n switch(l.key){\n case \"ArrowLeft\":\n return {\n x: a.drag.x - d.x,\n y: a.drag.y\n };\n case \"ArrowRight\":\n return {\n x: a.drag.x + d.x,\n y: a.drag.y\n };\n case \"ArrowUp\":\n return {\n x: a.drag.x,\n y: a.drag.y - d.y\n };\n case \"ArrowDown\":\n return {\n x: a.drag.x,\n y: a.drag.y + d.y\n };\n default:\n return null;\n }\n }, cancelPredicate: o = (l, a)=>a.drag && l.key === \"Escape\" ? {\n x: a.drag.x,\n y: a.drag.y\n } : null, endPredicate: c = (l, a)=>a.drag && (l.key === \"Enter\" || l.key === \" \") ? {\n x: a.drag.x,\n y: a.drag.y\n } : null } = t;\n this._moveDistance = typeof n == \"number\" ? {\n x: n,\n y: n\n } : {\n ...n\n }, this._startPredicate = r, this._movePredicate = s, this._cancelPredicate = o, this._endPredicate = c, this.cancel = this.cancel.bind(this), this._onKeyDown = this._onKeyDown.bind(this), document.addEventListener(\"keydown\", this._onKeyDown), window.addEventListener(\"blur\", this.cancel), window.addEventListener(\"visibilitychange\", this.cancel);\n }\n _onKeyDown(t) {\n if (!this.drag) {\n let o = this._startPredicate(t, this, this._moveDistance);\n o && (t.preventDefault(), this._start({\n type: \"start\",\n x: o.x,\n y: o.y,\n srcEvent: t\n }));\n return;\n }\n let n = this._cancelPredicate(t, this, this._moveDistance);\n if (n) {\n t.preventDefault(), this._cancel({\n type: \"cancel\",\n x: n.x,\n y: n.y,\n srcEvent: t\n });\n return;\n }\n let r = this._endPredicate(t, this, this._moveDistance);\n if (r) {\n t.preventDefault(), this._end({\n type: \"end\",\n x: r.x,\n y: r.y,\n srcEvent: t\n });\n return;\n }\n let s = this._movePredicate(t, this, this._moveDistance);\n if (s) {\n t.preventDefault(), this._move({\n type: \"move\",\n x: s.x,\n y: s.y,\n srcEvent: t\n });\n return;\n }\n }\n updateSettings(t = {}) {\n t.moveDistance !== void 0 && (typeof t.moveDistance == \"number\" ? (this._moveDistance.x = t.moveDistance, this._moveDistance.y = t.moveDistance) : (this._moveDistance.x = t.moveDistance.x, this._moveDistance.y = t.moveDistance.y)), t.startPredicate !== void 0 && (this._startPredicate = t.startPredicate), t.movePredicate !== void 0 && (this._movePredicate = t.movePredicate), t.cancelPredicate !== void 0 && (this._cancelPredicate = t.cancelPredicate), t.endPredicate !== void 0 && (this._endPredicate = t.endPredicate);\n }\n destroy() {\n this.isDestroyed || (super.destroy(), document.removeEventListener(\"keydown\", this._onKeyDown), window.removeEventListener(\"blur\", this.cancel), window.removeEventListener(\"visibilitychange\", this.cancel));\n }\n};\nvar $ac6f441b4b448e14$var$at = [\n \"start\",\n \"cancel\",\n \"end\",\n \"moveLeft\",\n \"moveRight\",\n \"moveUp\",\n \"moveDown\"\n];\nfunction $ac6f441b4b448e14$var$Q(i, e) {\n if (!i.size || !e.size) return 1 / 0;\n let t = 1 / 0;\n for (let n of i){\n let r = e.get(n);\n r !== void 0 && r < t && (t = r);\n }\n return t;\n}\nvar $ac6f441b4b448e14$export$436f6efcc297171 = class extends $ac6f441b4b448e14$export$2f0ad9ba2f0800d {\n constructor(t = {}){\n super();\n let { startPredicate: n = ()=>{\n if (document.activeElement) {\n let { left: y, top: g } = document.activeElement.getBoundingClientRect();\n return {\n x: y,\n y: g\n };\n }\n return null;\n }, computeSpeed: r = ()=>500, startKeys: s = [\n \" \",\n \"Enter\"\n ], moveLeftKeys: o = [\n \"ArrowLeft\"\n ], moveRightKeys: c = [\n \"ArrowRight\"\n ], moveUpKeys: l = [\n \"ArrowUp\"\n ], moveDownKeys: a = [\n \"ArrowDown\"\n ], cancelKeys: d = [\n \"Escape\"\n ], endKeys: m = [\n \" \",\n \"Enter\"\n ] } = t;\n this._computeSpeed = r, this._startPredicate = n, this._startKeys = new Set(s), this._cancelKeys = new Set(d), this._endKeys = new Set(m), this._moveLeftKeys = new Set(o), this._moveRightKeys = new Set(c), this._moveUpKeys = new Set(l), this._moveDownKeys = new Set(a), this._moveKeys = new Set([\n ...o,\n ...c,\n ...l,\n ...a\n ]), this._moveKeyTimestamps = new Map, this._onKeyDown = this._onKeyDown.bind(this), this._onKeyUp = this._onKeyUp.bind(this), this._onTick = this._onTick.bind(this), this.on(\"tick\", this._onTick), document.addEventListener(\"keydown\", this._onKeyDown), document.addEventListener(\"keyup\", this._onKeyUp), window.addEventListener(\"blur\", this.cancel), window.addEventListener(\"visibilitychange\", this.cancel);\n }\n _end(t) {\n this.drag && (this._moveKeyTimestamps.clear(), this._direction.x = 0, this._direction.y = 0, super._end(t));\n }\n _cancel(t) {\n this.drag && (this._moveKeyTimestamps.clear(), this._direction.x = 0, this._direction.y = 0, super._cancel(t));\n }\n _updateDirection() {\n let t = $ac6f441b4b448e14$var$Q(this._moveLeftKeys, this._moveKeyTimestamps), n = $ac6f441b4b448e14$var$Q(this._moveRightKeys, this._moveKeyTimestamps), r = $ac6f441b4b448e14$var$Q(this._moveUpKeys, this._moveKeyTimestamps), s = $ac6f441b4b448e14$var$Q(this._moveDownKeys, this._moveKeyTimestamps), o = t === n ? 0 : t < n ? -1 : 1, c = r === s ? 0 : r < s ? -1 : 1;\n if (!(o === 0 || c === 0)) {\n let l = 1 / (Math.sqrt(o * o + c * c) || 1);\n o *= l, c *= l;\n }\n this._direction.x = o, this._direction.y = c;\n }\n _onTick() {\n this._speed = this._computeSpeed(this);\n }\n _onKeyUp(t) {\n this._moveKeyTimestamps.get(t.key) && (this._moveKeyTimestamps.delete(t.key), this._updateDirection());\n }\n _onKeyDown(t) {\n if (!this.drag) {\n if (this._startKeys.has(t.key)) {\n let n = this._startPredicate(t, this);\n n && (t.preventDefault(), this._start({\n type: \"start\",\n x: n.x,\n y: n.y\n }));\n }\n return;\n }\n if (this._cancelKeys.has(t.key)) {\n t.preventDefault(), this._cancel({\n type: \"cancel\",\n x: this.drag.x,\n y: this.drag.y\n });\n return;\n }\n if (this._endKeys.has(t.key)) {\n t.preventDefault(), this._end({\n type: \"end\",\n x: this.drag.x,\n y: this.drag.y\n });\n return;\n }\n if (this._moveKeys.has(t.key)) {\n t.preventDefault(), this._moveKeyTimestamps.get(t.key) || (this._moveKeyTimestamps.set(t.key, Date.now()), this._updateDirection());\n return;\n }\n }\n updateSettings(t = {}) {\n let n = !1;\n if (t.startPredicate !== void 0 && (this._startPredicate = t.startPredicate), t.computeSpeed !== void 0 && (this._computeSpeed = t.computeSpeed), $ac6f441b4b448e14$var$at.forEach((r, s)=>{\n let o = `${r}Keys`, c = t[o];\n c !== void 0 && (this[`_${o}`] = new Set(c), s >= 3 && (n = !0));\n }), n) {\n let r = [\n ...this._moveLeftKeys,\n ...this._moveRightKeys,\n ...this._moveUpKeys,\n ...this._moveDownKeys\n ];\n [\n ...this._moveKeys\n ].every((o, c)=>r[c] === o) || (this._moveKeys = new Set(r), this._moveKeyTimestamps.clear(), this._updateDirection());\n }\n }\n destroy() {\n this.isDestroyed || (super.destroy(), this.off(\"tick\", this._onTick), document.removeEventListener(\"keydown\", this._onKeyDown), document.removeEventListener(\"keyup\", this._onKeyUp), window.removeEventListener(\"blur\", this.cancel), window.removeEventListener(\"visibilitychange\", this.cancel));\n }\n};\nvar $ac6f441b4b448e14$var$Z = class {\n constructor(){\n this.sensor = null, this.isEnded = !1, this.isStarted = !1, this.startEvent = null, this.nextMoveEvent = null, this.prevMoveEvent = null, this.endEvent = null, this.items = [];\n }\n};\nvar $ac6f441b4b448e14$var$ee = class {\n constructor(e, t, n, r, s){\n this.data = {}, this.element = e, this.elementContainer = t, this.elementOffsetContainer = n, this.dragContainer = r, this.dragOffsetContainer = s, this.initialTransform = \"\", this.frozenProps = null, this.unfrozenProps = null, this.x = 0, this.y = 0, this.pX = 0, this.pY = 0, this._updateDiffX = 0, this._updateDiffY = 0, this._moveDiffX = 0, this._moveDiffY = 0, this._containerDiffX = 0, this._containerDiffY = 0;\n }\n};\nfunction $ac6f441b4b448e14$var$pe(i, e, t = {\n left: 0,\n top: 0\n}) {\n if (t.left = 0, t.top = 0, i === e) return t;\n let n = (0, $d927f435c3d7e8ab$export$622cea445a1c5b7d)([\n i,\n \"padding\"\n ]), r = (0, $d927f435c3d7e8ab$export$622cea445a1c5b7d)([\n e,\n \"padding\"\n ]);\n return t.left = r.left - n.left, t.top = r.top - n.top, t;\n}\nvar $ac6f441b4b448e14$var$qe = new WeakMap;\nfunction $ac6f441b4b448e14$var$te(i) {\n let e = $ac6f441b4b448e14$var$qe.get(i)?.deref();\n return e || (e = window.getComputedStyle(i, null), $ac6f441b4b448e14$var$qe.set(i, new WeakRef(e))), e;\n}\nvar $ac6f441b4b448e14$var$ct = \"matrix(1, 0, 0, 1, 0, 0)\", $ac6f441b4b448e14$var$dt = \"matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)\", $ac6f441b4b448e14$var$Ue = $ac6f441b4b448e14$var$J ? {\n capture: !0,\n passive: !0\n} : !0, $ac6f441b4b448e14$var$ze = {\n left: 0,\n top: 0\n}, $ac6f441b4b448e14$var$fe = {\n x: 0,\n y: 0\n};\nfunction $ac6f441b4b448e14$var$ht() {\n return {\n container: null,\n startPredicate: ()=>!0,\n getElements: ()=>null,\n releaseElements: ()=>null,\n getFrozenProps: ()=>null,\n getStartPosition: ()=>({\n x: 0,\n y: 0\n }),\n setPosition: ({ item: i, x: e, y: t })=>{\n i.element.style.transform = `translate(${e}px, ${t}px) ${i.initialTransform}`;\n },\n getPositionChange: ({ event: i, prevEvent: e })=>($ac6f441b4b448e14$var$fe.x = i.x - e.x, $ac6f441b4b448e14$var$fe.y = i.y - e.y, $ac6f441b4b448e14$var$fe)\n };\n}\nvar $ac6f441b4b448e14$export$f2a139e5d18b9882 = class {\n constructor(e, t = {}){\n this.sensors = e, this.settings = this._parseSettings(t), this.plugins = {}, this.drag = null, this.isDestroyed = !1, this._sensorData = new Map, this._emitter = new (0, $882b296db6123935$export$4293555f241ae35a), this._startId = Symbol(), this._moveId = Symbol(), this._updateId = Symbol(), this._onMove = this._onMove.bind(this), this._onScroll = this._onScroll.bind(this), this._onEnd = this._onEnd.bind(this), this._prepareStart = this._prepareStart.bind(this), this._applyStart = this._applyStart.bind(this), this._prepareMove = this._prepareMove.bind(this), this._applyMove = this._applyMove.bind(this), this._preparePositionUpdate = this._preparePositionUpdate.bind(this), this._applyPositionUpdate = this._applyPositionUpdate.bind(this), this.sensors.forEach((n)=>{\n this._sensorData.set(n, {\n predicateState: 0,\n predicateEvent: null,\n onMove: (o)=>this._onMove(o, n),\n onEnd: (o)=>this._onEnd(o, n)\n });\n let { onMove: r, onEnd: s } = this._sensorData.get(n);\n n.on(\"start\", r), n.on(\"move\", r), n.on(\"cancel\", s), n.on(\"end\", s), n.on(\"destroy\", s);\n });\n }\n _parseSettings(e, t = $ac6f441b4b448e14$var$ht()) {\n let { container: n = t.container, startPredicate: r = t.startPredicate, getElements: s = t.getElements, releaseElements: o = t.releaseElements, getFrozenProps: c = t.getFrozenProps, getStartPosition: l = t.getStartPosition, setPosition: a = t.setPosition, getPositionChange: d = t.getPositionChange } = e || {};\n return {\n container: n,\n startPredicate: r,\n getElements: s,\n releaseElements: o,\n getFrozenProps: c,\n getStartPosition: l,\n setPosition: a,\n getPositionChange: d\n };\n }\n _emit(e, ...t) {\n this._emitter.emit(e, ...t);\n }\n _onMove(e, t) {\n let n = this._sensorData.get(t);\n if (n) switch(n.predicateState){\n case 0:\n {\n n.predicateEvent = e;\n let r = this.settings.startPredicate({\n draggable: this,\n sensor: t,\n event: e\n });\n r === !0 ? this.resolveStartPredicate(t) : r === !1 && this.rejectStartPredicate(t);\n break;\n }\n case 1:\n this.drag && (this.drag.nextMoveEvent = e, $ac6f441b4b448e14$export$e94d57566be028aa.once($ac6f441b4b448e14$export$9138efc7ba4fca22, this._prepareMove, this._moveId), $ac6f441b4b448e14$export$e94d57566be028aa.once($ac6f441b4b448e14$export$5fd1e257088db342, this._applyMove, this._moveId));\n break;\n }\n }\n _onScroll() {\n this.updatePosition();\n }\n _onEnd(e, t) {\n let n = this._sensorData.get(t);\n n && (this.drag ? n.predicateState === 1 && (this.drag.endEvent = e, this._sensorData.forEach((r)=>{\n r.predicateState = 0, r.predicateEvent = null;\n }), this.stop()) : (n.predicateState = 0, n.predicateEvent = null));\n }\n _prepareStart() {\n let { drag: e } = this;\n if (!e || !e.startEvent) return;\n let t = this.settings.getElements({\n draggable: this,\n sensor: e.sensor,\n startEvent: e.startEvent\n }) || [];\n e.items = t.map((n)=>{\n if (!n.isConnected) throw new Error(\"Element is not connected\");\n let r = n.parentElement, s = (0, $4effe6f7501c7f59$export$243d7fadef466e38)(n);\n if (!s) throw new Error(\"Offset container could not be computed for the element!\");\n let o = this.settings.container || r, c = o === r ? s : (0, $4effe6f7501c7f59$export$243d7fadef466e38)(n, {\n container: o\n });\n if (!c) throw new Error(\"Drag offset container could not be computed for the element!\");\n let l = new $ac6f441b4b448e14$var$ee(n, r, s, o, c), a = n.getBoundingClientRect();\n if (l.x = a.left, l.y = a.top, s !== c) {\n let { left: b, top: f } = $ac6f441b4b448e14$var$pe(c, s, $ac6f441b4b448e14$var$ze);\n l._containerDiffX = b, l._containerDiffY = f;\n }\n let d = $ac6f441b4b448e14$var$te(n), { transform: m } = d;\n m && m !== \"none\" && m !== $ac6f441b4b448e14$var$ct && m !== $ac6f441b4b448e14$var$dt && (l.initialTransform = m);\n let { x: y, y: g } = this.settings.getStartPosition({\n draggable: this,\n sensor: e.sensor,\n item: l,\n style: d\n });\n l.pX = y, l.pY = g;\n let S = this.settings.getFrozenProps({\n draggable: this,\n sensor: e.sensor,\n item: l,\n style: d\n });\n if (Array.isArray(S)) {\n if (S.length) {\n let b = {};\n for (let f of S)b[f] = d[f];\n l.frozenProps = b;\n } else l.frozenProps = null;\n } else l.frozenProps = S;\n if (l.frozenProps) {\n let b = {};\n for(let f in l.frozenProps)l.frozenProps.hasOwnProperty(f) && (b[f] = n.style[f]);\n l.unfrozenProps = b;\n }\n return l;\n }), this._emit(\"preparestart\", e.startEvent);\n }\n _applyStart() {\n let e = this.drag;\n if (!e || !e.startEvent) return;\n let { container: t } = this.settings;\n for (let n of e.items)t && n.element.parentElement !== t && (t.appendChild(n.element), n.pX += n._containerDiffX, n.pY += n._containerDiffY), n.frozenProps && Object.assign(n.element.style, n.frozenProps), this.settings.setPosition({\n phase: \"start\",\n draggable: this,\n sensor: e.sensor,\n item: n,\n x: n.pX,\n y: n.pY\n });\n window.addEventListener(\"scroll\", this._onScroll, $ac6f441b4b448e14$var$Ue), e.isStarted = !0, this._emit(\"start\", e.startEvent);\n }\n _prepareMove() {\n let { drag: e } = this;\n if (!e || !e.startEvent) return;\n let t = e.nextMoveEvent, n = e.prevMoveEvent || e.startEvent;\n if (!(!t || t === n)) {\n for (let r of e.items){\n let { x: s, y: o } = this.settings.getPositionChange({\n draggable: this,\n sensor: e.sensor,\n item: r,\n startEvent: e.startEvent,\n prevEvent: n,\n event: t\n });\n s && (r.pX = r.pX - r._moveDiffX + s, r.x = r.x - r._moveDiffX + s, r._moveDiffX = s), o && (r.pY = r.pY - r._moveDiffY + o, r.y = r.y - r._moveDiffY + o, r._moveDiffY = o);\n }\n e.prevMoveEvent = t, this._emit(\"preparemove\", t);\n }\n }\n _applyMove() {\n let { drag: e } = this;\n if (!(!e || !e.nextMoveEvent)) {\n for (let t of e.items)t._moveDiffX = 0, t._moveDiffY = 0;\n for (let t of e.items)this.settings.setPosition({\n phase: \"move\",\n draggable: this,\n sensor: e.sensor,\n item: t,\n x: t.pX,\n y: t.pY\n });\n this._emit(\"move\", e.nextMoveEvent);\n }\n }\n _preparePositionUpdate() {\n let { drag: e } = this;\n if (e) for (let t of e.items){\n if (t.elementOffsetContainer !== t.dragOffsetContainer) {\n let { left: c, top: l } = $ac6f441b4b448e14$var$pe(t.dragOffsetContainer, t.elementOffsetContainer, $ac6f441b4b448e14$var$ze);\n t._containerDiffX = c, t._containerDiffY = l;\n }\n let { left: n, top: r } = t.element.getBoundingClientRect(), s = t.x - t._moveDiffX - n;\n t.pX = t.pX - t._updateDiffX + s, t._updateDiffX = s;\n let o = t.y - t._moveDiffY - r;\n t.pY = t.pY - t._updateDiffY + o, t._updateDiffY = o;\n }\n }\n _applyPositionUpdate() {\n let { drag: e } = this;\n if (e) for (let t of e.items)t._updateDiffX = 0, t._updateDiffY = 0, this.settings.setPosition({\n phase: \"move\",\n draggable: this,\n sensor: e.sensor,\n item: t,\n x: t.pX,\n y: t.pY\n });\n }\n on(e, t, n) {\n return this._emitter.on(e, t, n);\n }\n off(e, t) {\n this._emitter.off(e, t);\n }\n resolveStartPredicate(e, t) {\n let n = this._sensorData.get(e);\n if (!n) return;\n let r = t || n.predicateEvent;\n n.predicateState === 0 && r && (n.predicateState = 1, n.predicateEvent = null, this.drag = new $ac6f441b4b448e14$var$Z, this.drag.sensor = e, this.drag.startEvent = r, this._sensorData.forEach((s, o)=>{\n o !== e && (s.predicateState = 2, s.predicateEvent = null);\n }), $ac6f441b4b448e14$export$e94d57566be028aa.once($ac6f441b4b448e14$export$9138efc7ba4fca22, this._prepareStart, this._startId), $ac6f441b4b448e14$export$e94d57566be028aa.once($ac6f441b4b448e14$export$5fd1e257088db342, this._applyStart, this._startId));\n }\n rejectStartPredicate(e) {\n let t = this._sensorData.get(e);\n t?.predicateState === 0 && (t.predicateState = 2, t.predicateEvent = null);\n }\n stop() {\n let { drag: e } = this;\n if (!(!e || e.isEnded)) {\n if (e.isEnded = !0, $ac6f441b4b448e14$export$e94d57566be028aa.off($ac6f441b4b448e14$export$9138efc7ba4fca22, this._startId), $ac6f441b4b448e14$export$e94d57566be028aa.off($ac6f441b4b448e14$export$5fd1e257088db342, this._startId), $ac6f441b4b448e14$export$e94d57566be028aa.off($ac6f441b4b448e14$export$9138efc7ba4fca22, this._moveId), $ac6f441b4b448e14$export$e94d57566be028aa.off($ac6f441b4b448e14$export$5fd1e257088db342, this._moveId), $ac6f441b4b448e14$export$e94d57566be028aa.off($ac6f441b4b448e14$export$9138efc7ba4fca22, this._updateId), $ac6f441b4b448e14$export$e94d57566be028aa.off($ac6f441b4b448e14$export$5fd1e257088db342, this._updateId), e.isStarted) {\n window.removeEventListener(\"scroll\", this._onScroll, $ac6f441b4b448e14$var$Ue);\n let t = [];\n for (let n of e.items){\n if (t.push(n.element), n.elementContainer && n.element.parentElement !== n.elementContainer && (n.pX -= n._containerDiffX, n.pY -= n._containerDiffY, n._containerDiffX = 0, n._containerDiffY = 0, n.elementContainer.appendChild(n.element)), n.unfrozenProps) for(let r in n.unfrozenProps)n.element.style[r] = n.unfrozenProps[r] || \"\";\n this.settings.setPosition({\n phase: \"end\",\n draggable: this,\n sensor: e.sensor,\n item: n,\n x: n.pX,\n y: n.pY\n });\n }\n t.length && this.settings.releaseElements({\n draggable: this,\n sensor: e.sensor,\n elements: t\n });\n }\n this._emit(\"end\", e.endEvent), this.drag = null;\n }\n }\n updatePosition(e = !1) {\n this.drag && (e ? (this._preparePositionUpdate(), this._applyPositionUpdate()) : ($ac6f441b4b448e14$export$e94d57566be028aa.once($ac6f441b4b448e14$export$9138efc7ba4fca22, this._preparePositionUpdate, this._updateId), $ac6f441b4b448e14$export$e94d57566be028aa.once($ac6f441b4b448e14$export$5fd1e257088db342, this._applyPositionUpdate, this._updateId)));\n }\n updateSettings(e = {}) {\n this.settings = this._parseSettings(e, this.settings);\n }\n use(e) {\n return e(this);\n }\n destroy() {\n this.isDestroyed || (this.isDestroyed = !0, this.stop(), this._sensorData.forEach(({ onMove: e, onEnd: t }, n)=>{\n n.off(\"start\", e), n.off(\"move\", e), n.off(\"cancel\", t), n.off(\"end\", t), n.off(\"destroy\", t);\n }), this._sensorData.clear(), this._emit(\"destroy\"), this._emitter.off());\n }\n};\nvar $ac6f441b4b448e14$var$B = class {\n constructor(e, t){\n this._data = [], this._createObject = e, this._onPut = t;\n }\n pick() {\n return this._data.length ? this._data.pop() : this._createObject();\n }\n put(e) {\n this._data.indexOf(e) === -1 && (this._onPut && this._onPut(e), this._data.push(e));\n }\n reset() {\n this._data.length = 0;\n }\n};\nfunction $ac6f441b4b448e14$var$He(i, e) {\n let t = (0, $e931ad6985aacff5$export$72209efa88586d42)(i, e);\n return t ? t.width * t.height : 0;\n}\nfunction $ac6f441b4b448e14$var$ge(i, e) {\n let t = $ac6f441b4b448e14$var$He(i, e);\n if (!t) return 0;\n let n = Math.min(i.width, e.width) * Math.min(i.height, e.height);\n return t / n * 100;\n}\nfunction $ac6f441b4b448e14$var$w(i) {\n return i instanceof Window;\n}\nfunction $ac6f441b4b448e14$var$Se(i) {\n return $ac6f441b4b448e14$var$w(i) || i === document.documentElement || i === document.body ? window : i;\n}\nfunction $ac6f441b4b448e14$var$N(i) {\n return $ac6f441b4b448e14$var$w(i) ? i.pageXOffset : i.scrollLeft;\n}\nfunction $ac6f441b4b448e14$var$Ee(i) {\n return $ac6f441b4b448e14$var$w(i) && (i = document.documentElement), i.scrollWidth - i.clientWidth;\n}\nfunction $ac6f441b4b448e14$var$q(i) {\n return $ac6f441b4b448e14$var$w(i) ? i.pageYOffset : i.scrollTop;\n}\nfunction $ac6f441b4b448e14$var$ve(i) {\n return $ac6f441b4b448e14$var$w(i) && (i = document.documentElement), i.scrollHeight - i.clientHeight;\n}\nfunction $ac6f441b4b448e14$var$_e(i, e) {\n return !(i.right <= e.left || e.right <= i.left || i.bottom <= e.top || e.bottom <= i.top);\n}\nvar $ac6f441b4b448e14$var$xe = {\n width: 0,\n height: 0,\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n}, $ac6f441b4b448e14$var$Fe = {\n ...$ac6f441b4b448e14$var$xe\n}, $ac6f441b4b448e14$var$je = 50, $ac6f441b4b448e14$var$I = {\n direction: \"none\",\n threshold: 0,\n distance: 0,\n value: 0,\n maxValue: 0,\n duration: 0,\n speed: 0,\n deltaTime: 0,\n isEnding: !1\n}, $ac6f441b4b448e14$export$5bbd74ab6c855dff = {\n x: 1,\n y: 2\n}, $ac6f441b4b448e14$export$3eeb7a7b68c92567 = {\n forward: 4,\n reverse: 8\n}, $ac6f441b4b448e14$var$ne = {\n none: 0,\n left: $ac6f441b4b448e14$export$5bbd74ab6c855dff.x | $ac6f441b4b448e14$export$3eeb7a7b68c92567.reverse,\n right: $ac6f441b4b448e14$export$5bbd74ab6c855dff.x | $ac6f441b4b448e14$export$3eeb7a7b68c92567.forward\n}, $ac6f441b4b448e14$var$H = {\n none: 0,\n up: $ac6f441b4b448e14$export$5bbd74ab6c855dff.y | $ac6f441b4b448e14$export$3eeb7a7b68c92567.reverse,\n down: $ac6f441b4b448e14$export$5bbd74ab6c855dff.y | $ac6f441b4b448e14$export$3eeb7a7b68c92567.forward\n}, $ac6f441b4b448e14$export$c9fbd1f9176bc8ed = {\n ...$ac6f441b4b448e14$var$ne,\n ...$ac6f441b4b448e14$var$H\n};\nfunction $ac6f441b4b448e14$var$ye(i) {\n switch(i){\n case $ac6f441b4b448e14$var$ne.none:\n case $ac6f441b4b448e14$var$H.none:\n return \"none\";\n case $ac6f441b4b448e14$var$ne.left:\n return \"left\";\n case $ac6f441b4b448e14$var$ne.right:\n return \"right\";\n case $ac6f441b4b448e14$var$H.up:\n return \"up\";\n case $ac6f441b4b448e14$var$H.down:\n return \"down\";\n default:\n throw new Error(`Unknown direction value: ${i}`);\n }\n}\nfunction $ac6f441b4b448e14$var$$e(i, e, t) {\n let { left: n = 0, right: r = 0, top: s = 0, bottom: o = 0 } = e;\n return n = Math.max(0, n), r = Math.max(0, r), s = Math.max(0, s), o = Math.max(0, o), t.width = i.width + n + r, t.height = i.height + s + o, t.left = i.left - n, t.top = i.top - s, t.right = i.right + r, t.bottom = i.bottom + o, t;\n}\nfunction $ac6f441b4b448e14$var$re(i, e) {\n return Math.ceil(i) >= Math.floor(e);\n}\nfunction $ac6f441b4b448e14$var$be(i, e) {\n return Math.min(e / 2, i);\n}\nfunction $ac6f441b4b448e14$var$De(i, e, t, n) {\n return Math.max(0, t + i * 2 + n * e - n) / 2;\n}\nvar $ac6f441b4b448e14$var$Pe = class {\n constructor(){\n this.positionX = 0, this.positionY = 0, this.directionX = $ac6f441b4b448e14$export$c9fbd1f9176bc8ed.none, this.directionY = $ac6f441b4b448e14$export$c9fbd1f9176bc8ed.none, this.overlapCheckRequestTime = 0;\n }\n}, $ac6f441b4b448e14$var$Te = class {\n constructor(){\n this.element = null, this.requestX = null, this.requestY = null, this.scrollLeft = 0, this.scrollTop = 0;\n }\n reset() {\n this.requestX && (this.requestX.action = null), this.requestY && (this.requestY.action = null), this.element = null, this.requestX = null, this.requestY = null, this.scrollLeft = 0, this.scrollTop = 0;\n }\n addRequest(e) {\n $ac6f441b4b448e14$export$5bbd74ab6c855dff.x & e.direction ? (this.requestX && this.removeRequest(this.requestX), this.requestX = e) : (this.requestY && this.removeRequest(this.requestY), this.requestY = e), e.action = this;\n }\n removeRequest(e) {\n this.requestX === e ? (this.requestX = null, e.action = null) : this.requestY === e && (this.requestY = null, e.action = null);\n }\n computeScrollValues() {\n this.element && (this.scrollLeft = this.requestX ? this.requestX.value : $ac6f441b4b448e14$var$N(this.element), this.scrollTop = this.requestY ? this.requestY.value : $ac6f441b4b448e14$var$q(this.element));\n }\n scroll() {\n this.element && (this.element.scrollTo ? this.element.scrollTo(this.scrollLeft, this.scrollTop) : (this.element.scrollLeft = this.scrollLeft, this.element.scrollTop = this.scrollTop));\n }\n}, $ac6f441b4b448e14$var$we = class {\n constructor(){\n this.item = null, this.element = null, this.isActive = !1, this.isEnding = !1, this.direction = 0, this.value = NaN, this.maxValue = 0, this.threshold = 0, this.distance = 0, this.deltaTime = 0, this.speed = 0, this.duration = 0, this.action = null;\n }\n reset() {\n this.isActive && this.onStop(), this.item = null, this.element = null, this.isActive = !1, this.isEnding = !1, this.direction = 0, this.value = NaN, this.maxValue = 0, this.threshold = 0, this.distance = 0, this.deltaTime = 0, this.speed = 0, this.duration = 0, this.action = null;\n }\n hasReachedEnd() {\n return $ac6f441b4b448e14$export$3eeb7a7b68c92567.forward & this.direction ? $ac6f441b4b448e14$var$re(this.value, this.maxValue) : this.value <= 0;\n }\n computeCurrentScrollValue() {\n return this.element ? this.value !== this.value ? $ac6f441b4b448e14$export$5bbd74ab6c855dff.x & this.direction ? $ac6f441b4b448e14$var$N(this.element) : $ac6f441b4b448e14$var$q(this.element) : Math.max(0, Math.min(this.value, this.maxValue)) : 0;\n }\n computeNextScrollValue() {\n let e = this.speed * (this.deltaTime / 1e3), t = $ac6f441b4b448e14$export$3eeb7a7b68c92567.forward & this.direction ? this.value + e : this.value - e;\n return Math.max(0, Math.min(t, this.maxValue));\n }\n computeSpeed() {\n if (!this.item || !this.element) return 0;\n let { speed: e } = this.item;\n return typeof e == \"function\" ? ($ac6f441b4b448e14$var$I.direction = $ac6f441b4b448e14$var$ye(this.direction), $ac6f441b4b448e14$var$I.threshold = this.threshold, $ac6f441b4b448e14$var$I.distance = this.distance, $ac6f441b4b448e14$var$I.value = this.value, $ac6f441b4b448e14$var$I.maxValue = this.maxValue, $ac6f441b4b448e14$var$I.duration = this.duration, $ac6f441b4b448e14$var$I.speed = this.speed, $ac6f441b4b448e14$var$I.deltaTime = this.deltaTime, $ac6f441b4b448e14$var$I.isEnding = this.isEnding, e(this.element, $ac6f441b4b448e14$var$I)) : e;\n }\n tick(e) {\n return this.isActive || (this.isActive = !0, this.onStart()), this.deltaTime = e, this.value = this.computeCurrentScrollValue(), this.speed = this.computeSpeed(), this.value = this.computeNextScrollValue(), this.duration += e, this.value;\n }\n onStart() {\n if (!this.item || !this.element) return;\n let { onStart: e } = this.item;\n typeof e == \"function\" && e(this.element, $ac6f441b4b448e14$var$ye(this.direction));\n }\n onStop() {\n if (!this.item || !this.element) return;\n let { onStop: e } = this.item;\n typeof e == \"function\" && e(this.element, $ac6f441b4b448e14$var$ye(this.direction));\n }\n};\nfunction $ac6f441b4b448e14$export$55a384729d91296b(i = 500, e = .5, t = .25) {\n let n = i * (e > 0 ? 1 / e : 1 / 0), r = i * (t > 0 ? 1 / t : 1 / 0);\n return function(s, o) {\n let c = 0;\n if (!o.isEnding) {\n if (o.threshold > 0) {\n let d = o.threshold - Math.max(0, o.distance);\n c = i / o.threshold * d;\n } else c = i;\n }\n let l = o.speed;\n if (l === c) return c;\n let a = c;\n return l < c ? (a = l + n * (o.deltaTime / 1e3), Math.min(c, a)) : (a = l - r * (o.deltaTime / 1e3), Math.max(c, a));\n };\n}\nvar $ac6f441b4b448e14$export$3fb39aee5567f02e = class {\n constructor(e = {}){\n let { overlapCheckInterval: t = 150 } = e;\n this.items = [], this.settings = {\n overlapCheckInterval: t\n }, this._actions = [], this._isDestroyed = !1, this._isTicking = !1, this._tickTime = 0, this._tickDeltaTime = 0, this._requests = {\n [$ac6f441b4b448e14$export$5bbd74ab6c855dff.x]: new Map,\n [$ac6f441b4b448e14$export$5bbd74ab6c855dff.y]: new Map\n }, this._itemData = new Map, this._requestPool = new $ac6f441b4b448e14$var$B(()=>new $ac6f441b4b448e14$var$we, (n)=>n.reset()), this._actionPool = new $ac6f441b4b448e14$var$B(()=>new $ac6f441b4b448e14$var$Te, (n)=>n.reset()), this._emitter = new (0, $882b296db6123935$export$4293555f241ae35a), this._frameRead = this._frameRead.bind(this), this._frameWrite = this._frameWrite.bind(this);\n }\n _frameRead(e) {\n this._isDestroyed || (e && this._tickTime ? (this._tickDeltaTime = e - this._tickTime, this._tickTime = e, this._updateItems(), this._updateRequests(), this._updateActions()) : (this._tickTime = e, this._tickDeltaTime = 0));\n }\n _frameWrite() {\n this._isDestroyed || this._applyActions();\n }\n _startTicking() {\n this._isTicking || (this._isTicking = !0, $ac6f441b4b448e14$export$e94d57566be028aa.on($ac6f441b4b448e14$export$9138efc7ba4fca22, this._frameRead), $ac6f441b4b448e14$export$e94d57566be028aa.on($ac6f441b4b448e14$export$5fd1e257088db342, this._frameWrite));\n }\n _stopTicking() {\n this._isTicking && (this._isTicking = !1, this._tickTime = 0, this._tickDeltaTime = 0, $ac6f441b4b448e14$export$e94d57566be028aa.off($ac6f441b4b448e14$export$9138efc7ba4fca22, this._frameRead), $ac6f441b4b448e14$export$e94d57566be028aa.off($ac6f441b4b448e14$export$5fd1e257088db342, this._frameWrite));\n }\n _getItemClientRect(e, t = {\n width: 0,\n height: 0,\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n }) {\n let { clientRect: n } = e;\n return t.left = n.left, t.top = n.top, t.width = n.width, t.height = n.height, t.right = n.left + n.width, t.bottom = n.top + n.height, t;\n }\n _requestItemScroll(e, t, n, r, s, o, c) {\n let l = this._requests[t], a = l.get(e);\n a ? (a.element !== n || a.direction !== r) && a.reset() : (a = this._requestPool.pick(), l.set(e, a)), a.item = e, a.element = n, a.direction = r, a.threshold = s, a.distance = o, a.maxValue = c;\n }\n _cancelItemScroll(e, t) {\n let n = this._requests[t], r = n.get(e);\n r && (r.action && r.action.removeRequest(r), this._requestPool.put(r), n.delete(e));\n }\n _checkItemOverlap(e, t, n) {\n let { inertAreaSize: r, targets: s } = e;\n if (!s.length) {\n t && this._cancelItemScroll(e, $ac6f441b4b448e14$export$5bbd74ab6c855dff.x), n && this._cancelItemScroll(e, $ac6f441b4b448e14$export$5bbd74ab6c855dff.y);\n return;\n }\n let o = this._itemData.get(e), c = o?.directionX, l = o?.directionY;\n if (!c && !l) {\n t && this._cancelItemScroll(e, $ac6f441b4b448e14$export$5bbd74ab6c855dff.x), n && this._cancelItemScroll(e, $ac6f441b4b448e14$export$5bbd74ab6c855dff.y);\n return;\n }\n let a = this._getItemClientRect(e, $ac6f441b4b448e14$var$xe), d = null, m = -1 / 0, y = 0, g = -1 / 0, S = $ac6f441b4b448e14$export$c9fbd1f9176bc8ed.none, b = 0, f = 0, E = null, x = -1 / 0, V = 0, U = -1 / 0, se = $ac6f441b4b448e14$export$c9fbd1f9176bc8ed.none, Ce = 0, Le = 0, ae = 0;\n for(; ae < s.length; ae++){\n let A = s[ae], Ke = typeof A.threshold == \"number\" ? A.threshold : $ac6f441b4b448e14$var$je, le = !!(t && c && A.axis !== \"y\"), ce = !!(n && l && A.axis !== \"x\"), R = A.priority || 0;\n if ((!le || R < m) && (!ce || R < x)) continue;\n let k = $ac6f441b4b448e14$var$Se(A.element || A), F = le ? $ac6f441b4b448e14$var$Ee(k) : -1, j = ce ? $ac6f441b4b448e14$var$ve(k) : -1;\n if (F <= 0 && j <= 0) continue;\n let P = (0, $4fec7741c67a29fc$export$4b834cebd9e5cebe)([\n k,\n \"padding\"\n ], window), O = $ac6f441b4b448e14$var$ge(a, P) || -1 / 0;\n if (O === -1 / 0) {\n if (A.padding && $ac6f441b4b448e14$var$_e(a, $ac6f441b4b448e14$var$$e(P, A.padding, $ac6f441b4b448e14$var$Fe))) O = -((0, $2a599c00d4ed99d6$export$79376507b09a66f)(a, P) || 0);\n else continue;\n }\n if (le && R >= m && F > 0 && (R > m || O > g)) {\n let T = 0, C = $ac6f441b4b448e14$export$c9fbd1f9176bc8ed.none, L = $ac6f441b4b448e14$var$be(Ke, P.width), z = $ac6f441b4b448e14$var$De(L, r, a.width, P.width);\n c === $ac6f441b4b448e14$export$c9fbd1f9176bc8ed.right ? (T = P.right + z - a.right, T <= L && !$ac6f441b4b448e14$var$re($ac6f441b4b448e14$var$N(k), F) && (C = $ac6f441b4b448e14$export$c9fbd1f9176bc8ed.right)) : c === $ac6f441b4b448e14$export$c9fbd1f9176bc8ed.left && (T = a.left - (P.left - z), T <= L && $ac6f441b4b448e14$var$N(k) > 0 && (C = $ac6f441b4b448e14$export$c9fbd1f9176bc8ed.left)), C && (d = k, m = R, y = L, g = O, S = C, b = T, f = F);\n }\n if (ce && R >= x && j > 0 && (R > x || O > U)) {\n let T = 0, C = $ac6f441b4b448e14$var$H.none, L = $ac6f441b4b448e14$var$be(Ke, P.height), z = $ac6f441b4b448e14$var$De(L, r, a.height, P.height);\n l === $ac6f441b4b448e14$export$c9fbd1f9176bc8ed.down ? (T = P.bottom + z - a.bottom, T <= L && !$ac6f441b4b448e14$var$re($ac6f441b4b448e14$var$q(k), j) && (C = $ac6f441b4b448e14$export$c9fbd1f9176bc8ed.down)) : l === $ac6f441b4b448e14$export$c9fbd1f9176bc8ed.up && (T = a.top - (P.top - z), T <= L && $ac6f441b4b448e14$var$q(k) > 0 && (C = $ac6f441b4b448e14$export$c9fbd1f9176bc8ed.up)), C && (E = k, x = R, V = L, U = O, se = C, Ce = T, Le = j);\n }\n }\n t && (d && S ? this._requestItemScroll(e, $ac6f441b4b448e14$export$5bbd74ab6c855dff.x, d, S, y, b, f) : this._cancelItemScroll(e, $ac6f441b4b448e14$export$5bbd74ab6c855dff.x)), n && (E && se ? this._requestItemScroll(e, $ac6f441b4b448e14$export$5bbd74ab6c855dff.y, E, se, V, Ce, Le) : this._cancelItemScroll(e, $ac6f441b4b448e14$export$5bbd74ab6c855dff.y));\n }\n _updateScrollRequest(e) {\n let t = e.item, { inertAreaSize: n, smoothStop: r, targets: s } = t, o = this._getItemClientRect(t, $ac6f441b4b448e14$var$xe), c = null, l = 0;\n for(; l < s.length; l++){\n let a = s[l], d = $ac6f441b4b448e14$var$Se(a.element || a);\n if (d !== e.element) continue;\n let m = !!($ac6f441b4b448e14$export$5bbd74ab6c855dff.x & e.direction);\n if (m) {\n if (a.axis === \"y\") continue;\n } else if (a.axis === \"x\") continue;\n let y = m ? $ac6f441b4b448e14$var$Ee(d) : $ac6f441b4b448e14$var$ve(d);\n if (y <= 0) break;\n let g = (0, $4fec7741c67a29fc$export$4b834cebd9e5cebe)([\n d,\n \"padding\"\n ], window);\n if (($ac6f441b4b448e14$var$ge(o, g) || -1 / 0) === -1 / 0) {\n let U = a.scrollPadding || a.padding;\n if (!(U && $ac6f441b4b448e14$var$_e(o, $ac6f441b4b448e14$var$$e(g, U, $ac6f441b4b448e14$var$Fe)))) break;\n }\n let b = typeof a.threshold == \"number\" ? a.threshold : $ac6f441b4b448e14$var$je, f = $ac6f441b4b448e14$var$be(b, m ? g.width : g.height), E = $ac6f441b4b448e14$var$De(f, n, m ? o.width : o.height, m ? g.width : g.height), x = 0;\n if (e.direction === $ac6f441b4b448e14$export$c9fbd1f9176bc8ed.left ? x = o.left - (g.left - E) : e.direction === $ac6f441b4b448e14$export$c9fbd1f9176bc8ed.right ? x = g.right + E - o.right : e.direction === $ac6f441b4b448e14$export$c9fbd1f9176bc8ed.up ? x = o.top - (g.top - E) : x = g.bottom + E - o.bottom, x > f) break;\n let V = m ? $ac6f441b4b448e14$var$N(d) : $ac6f441b4b448e14$var$q(d);\n if (c = $ac6f441b4b448e14$export$3eeb7a7b68c92567.forward & e.direction ? $ac6f441b4b448e14$var$re(V, y) : V <= 0, c) break;\n return e.maxValue = y, e.threshold = f, e.distance = x, e.isEnding = !1, !0;\n }\n return r === !0 && e.speed > 0 ? (c === null && (c = e.hasReachedEnd()), e.isEnding = !c) : e.isEnding = !1, e.isEnding;\n }\n _updateItems() {\n for(let e = 0; e < this.items.length; e++){\n let t = this.items[e], n = this._itemData.get(t), { x: r, y: s } = t.position, o = n.positionX, c = n.positionY;\n r === o && s === c || (n.directionX = r > o ? $ac6f441b4b448e14$export$c9fbd1f9176bc8ed.right : r < o ? $ac6f441b4b448e14$export$c9fbd1f9176bc8ed.left : n.directionX, n.directionY = s > c ? $ac6f441b4b448e14$export$c9fbd1f9176bc8ed.down : s < c ? $ac6f441b4b448e14$export$c9fbd1f9176bc8ed.up : n.directionY, n.positionX = r, n.positionY = s, n.overlapCheckRequestTime === 0 && (n.overlapCheckRequestTime = this._tickTime));\n }\n }\n _updateRequests() {\n let e = this.items, t = this._requests[$ac6f441b4b448e14$export$5bbd74ab6c855dff.x], n = this._requests[$ac6f441b4b448e14$export$5bbd74ab6c855dff.y], r = 0;\n for(; r < e.length; r++){\n let s = e[r], o = this._itemData.get(s), c = o.overlapCheckRequestTime, l = c > 0 && this._tickTime - c > this.settings.overlapCheckInterval, a = !0, d = t.get(s);\n d && d.isActive && (a = !this._updateScrollRequest(d), a && (l = !0, this._cancelItemScroll(s, $ac6f441b4b448e14$export$5bbd74ab6c855dff.x)));\n let m = !0, y = n.get(s);\n y && y.isActive && (m = !this._updateScrollRequest(y), m && (l = !0, this._cancelItemScroll(s, $ac6f441b4b448e14$export$5bbd74ab6c855dff.y))), l && (o.overlapCheckRequestTime = 0, this._checkItemOverlap(s, a, m));\n }\n }\n _requestAction(e, t) {\n let n = t === $ac6f441b4b448e14$export$5bbd74ab6c855dff.x, r = null, s = 0;\n for(; s < this._actions.length; s++){\n if (r = this._actions[s], e.element !== r.element) {\n r = null;\n continue;\n }\n if (n ? r.requestX : r.requestY) {\n this._cancelItemScroll(e.item, t);\n return;\n }\n break;\n }\n r || (r = this._actionPool.pick()), r.element = e.element, r.addRequest(e), e.tick(this._tickDeltaTime), this._actions.push(r);\n }\n _updateActions() {\n let e = 0;\n for(e = 0; e < this.items.length; e++){\n let t = this.items[e], n = this._requests[$ac6f441b4b448e14$export$5bbd74ab6c855dff.x].get(t), r = this._requests[$ac6f441b4b448e14$export$5bbd74ab6c855dff.y].get(t);\n n && this._requestAction(n, $ac6f441b4b448e14$export$5bbd74ab6c855dff.x), r && this._requestAction(r, $ac6f441b4b448e14$export$5bbd74ab6c855dff.y);\n }\n for(e = 0; e < this._actions.length; e++)this._actions[e].computeScrollValues();\n }\n _applyActions() {\n if (!this._actions.length) return;\n this._emitter.emit(\"beforescroll\");\n let e = 0;\n for(e = 0; e < this._actions.length; e++)this._actions[e].scroll(), this._actionPool.put(this._actions[e]);\n this._actions.length = 0;\n let t;\n for(e = 0; e < this.items.length; e++)t = this.items[e], t.onPrepareScrollEffect && t.onPrepareScrollEffect();\n for(e = 0; e < this.items.length; e++)t = this.items[e], t.onApplyScrollEffect && t.onApplyScrollEffect();\n this._emitter.emit(\"afterscroll\");\n }\n on(e, t) {\n return this._emitter.on(e, t);\n }\n off(e, t) {\n this._emitter.off(e, t);\n }\n addItem(e) {\n if (this._isDestroyed || this._itemData.has(e)) return;\n let { x: t, y: n } = e.position, r = new $ac6f441b4b448e14$var$Pe;\n r.positionX = t, r.positionY = n, r.directionX = $ac6f441b4b448e14$export$c9fbd1f9176bc8ed.none, r.directionY = $ac6f441b4b448e14$export$c9fbd1f9176bc8ed.none, r.overlapCheckRequestTime = this._tickTime, this._itemData.set(e, r), this.items.push(e), this._isTicking || this._startTicking();\n }\n removeItem(e) {\n if (this._isDestroyed) return;\n let t = this.items.indexOf(e);\n t !== -1 && (this._requests[$ac6f441b4b448e14$export$5bbd74ab6c855dff.x].get(e) && (this._cancelItemScroll(e, $ac6f441b4b448e14$export$5bbd74ab6c855dff.x), this._requests[$ac6f441b4b448e14$export$5bbd74ab6c855dff.x].delete(e)), this._requests[$ac6f441b4b448e14$export$5bbd74ab6c855dff.y].get(e) && (this._cancelItemScroll(e, $ac6f441b4b448e14$export$5bbd74ab6c855dff.y), this._requests[$ac6f441b4b448e14$export$5bbd74ab6c855dff.y].delete(e)), this._itemData.delete(e), this.items.splice(t, 1), this._isTicking && !this.items.length && this._stopTicking());\n }\n isDestroyed() {\n return this._isDestroyed;\n }\n isItemScrollingX(e) {\n return !!this._requests[$ac6f441b4b448e14$export$5bbd74ab6c855dff.x].get(e)?.isActive;\n }\n isItemScrollingY(e) {\n return !!this._requests[$ac6f441b4b448e14$export$5bbd74ab6c855dff.y].get(e)?.isActive;\n }\n isItemScrolling(e) {\n return this.isItemScrollingX(e) || this.isItemScrollingY(e);\n }\n updateSettings(e = {}) {\n let { overlapCheckInterval: t = this.settings.overlapCheckInterval } = e;\n this.settings.overlapCheckInterval = t;\n }\n destroy() {\n if (this._isDestroyed) return;\n let e = this.items.slice(0), t = 0;\n for(; t < e.length; t++)this.removeItem(e[t]);\n this._actions.length = 0, this._requestPool.reset(), this._actionPool.reset(), this._emitter.off(), this._isDestroyed = !0;\n }\n};\nvar $ac6f441b4b448e14$export$d976747ecb966cea = new $ac6f441b4b448e14$export$3fb39aee5567f02e;\nvar $ac6f441b4b448e14$var$G = {\n x: 0,\n y: 0\n}, $ac6f441b4b448e14$var$K = {\n left: 0,\n top: 0,\n width: 0,\n height: 0\n};\nfunction $ac6f441b4b448e14$var$ft() {\n return {\n targets: [],\n inertAreaSize: .2,\n speed: $ac6f441b4b448e14$export$55a384729d91296b(),\n smoothStop: !1,\n getPosition: (i)=>{\n let { drag: e } = i, t = e?.items[0];\n if (t) $ac6f441b4b448e14$var$G.x = t.pX, $ac6f441b4b448e14$var$G.y = t.pY;\n else {\n let n = e && (e.nextMoveEvent || e.startEvent);\n $ac6f441b4b448e14$var$G.x = n ? n.x : 0, $ac6f441b4b448e14$var$G.y = n ? n.y : 0;\n }\n return $ac6f441b4b448e14$var$G;\n },\n getClientRect: (i)=>{\n let { drag: e } = i, t = e?.items[0];\n if (t && t.element) {\n let { left: n, top: r, width: s, height: o } = t.element.getBoundingClientRect();\n $ac6f441b4b448e14$var$K.left = n, $ac6f441b4b448e14$var$K.top = r, $ac6f441b4b448e14$var$K.width = s, $ac6f441b4b448e14$var$K.height = o;\n } else {\n let n = e && (e.nextMoveEvent || e.startEvent);\n $ac6f441b4b448e14$var$K.left = n ? n.x - 25 : 0, $ac6f441b4b448e14$var$K.top = n ? n.y - 25 : 0, $ac6f441b4b448e14$var$K.width = n ? 50 : 0, $ac6f441b4b448e14$var$K.height = n ? 50 : 0;\n }\n return $ac6f441b4b448e14$var$K;\n },\n onStart: null,\n onStop: null\n };\n}\nvar $ac6f441b4b448e14$var$Ae = class {\n constructor(e, t){\n this._draggableAutoScroll = e, this._draggable = t, this._position = {\n x: 0,\n y: 0\n }, this._clientRect = {\n left: 0,\n top: 0,\n width: 0,\n height: 0\n };\n }\n _getSettings() {\n return this._draggableAutoScroll.settings;\n }\n get targets() {\n let { targets: e } = this._getSettings();\n return typeof e == \"function\" && (e = e(this._draggable)), e;\n }\n get position() {\n let { getPosition: e } = this._getSettings();\n if (typeof e == \"function\") {\n let t = e(this._draggable);\n this._position.x = t.x, this._position.y = t.y;\n } else this._position.x = 0, this._position.y = 0;\n return this._position;\n }\n get clientRect() {\n let { getClientRect: e } = this._getSettings();\n if (typeof e == \"function\") {\n let { left: t, top: n, width: r, height: s } = e(this._draggable);\n this._clientRect.left = t, this._clientRect.top = n, this._clientRect.width = r, this._clientRect.height = s;\n } else this._clientRect.left = 0, this._clientRect.top = 0, this._clientRect.width = 0, this._clientRect.height = 0;\n return this._clientRect;\n }\n get inertAreaSize() {\n return this._getSettings().inertAreaSize;\n }\n get smoothStop() {\n return this._getSettings().smoothStop;\n }\n get speed() {\n return this._getSettings().speed;\n }\n get onStart() {\n return this._getSettings().onStart;\n }\n get onStop() {\n return this._getSettings().onStop;\n }\n onPrepareScrollEffect() {\n let e = this._draggable._updateId;\n $ac6f441b4b448e14$export$e94d57566be028aa.off($ac6f441b4b448e14$export$9138efc7ba4fca22, e), $ac6f441b4b448e14$export$e94d57566be028aa.off($ac6f441b4b448e14$export$5fd1e257088db342, e), this._draggable._preparePositionUpdate();\n }\n onApplyScrollEffect() {\n this._draggable._applyPositionUpdate();\n }\n}, $ac6f441b4b448e14$export$5059276ad4233de3 = class {\n constructor(e, t = {}){\n this.name = \"autoscroll\", this.version = \"0.0.2\", this.settings = this._parseSettings(t), this._autoScrollProxy = null, e.on(\"start\", ()=>{\n this._autoScrollProxy || (this._autoScrollProxy = new $ac6f441b4b448e14$var$Ae(this, e), $ac6f441b4b448e14$export$d976747ecb966cea.addItem(this._autoScrollProxy));\n }), e.on(\"end\", ()=>{\n this._autoScrollProxy && ($ac6f441b4b448e14$export$d976747ecb966cea.removeItem(this._autoScrollProxy), this._autoScrollProxy = null);\n });\n }\n _parseSettings(e, t = $ac6f441b4b448e14$var$ft()) {\n let { targets: n = t.targets, inertAreaSize: r = t.inertAreaSize, speed: s = t.speed, smoothStop: o = t.smoothStop, getPosition: c = t.getPosition, getClientRect: l = t.getClientRect, onStart: a = t.onStart, onStop: d = t.onStop } = e || {};\n return {\n targets: n,\n inertAreaSize: r,\n speed: s,\n smoothStop: o,\n getPosition: c,\n getClientRect: l,\n onStart: a,\n onStop: d\n };\n }\n updateSettings(e = {}) {\n this.settings = this._parseSettings(e, this.settings);\n }\n};\nfunction $ac6f441b4b448e14$export$c0f5c18ade842ccd(i) {\n return (e)=>{\n let t = new $ac6f441b4b448e14$export$5059276ad4233de3(e, i), n = e;\n return n.plugins[t.name] = t, n;\n };\n}\nvar $ac6f441b4b448e14$var$Qe = new Set([\n \"auto\",\n \"scroll\",\n \"overlay\"\n]);\nfunction $ac6f441b4b448e14$var$oe(i) {\n let e = $ac6f441b4b448e14$var$te(i);\n return !!($ac6f441b4b448e14$var$Qe.has(e.overflowY) || $ac6f441b4b448e14$var$Qe.has(e.overflowX));\n}\nfunction $ac6f441b4b448e14$var$Ze(i) {\n return i instanceof Document;\n}\nfunction $ac6f441b4b448e14$var$et(i, e = []) {\n let t = i?.parentNode;\n for(; t && !$ac6f441b4b448e14$var$Ze(t);)t instanceof Element ? ($ac6f441b4b448e14$var$oe(t) && e.push(t), t = t.parentNode) : t instanceof ShadowRoot ? t = t.host : t = t.parentNode;\n return e.push(window), e;\n}\nfunction $ac6f441b4b448e14$var$gt(i) {\n let e = [];\n return $ac6f441b4b448e14$var$oe(i) && e.push(i), $ac6f441b4b448e14$var$et(i, e), e;\n}\nfunction $ac6f441b4b448e14$export$88d83dc4a35d804f(i = {}) {\n let e, t = 0, n = null, r, { timeout: s = 250, fallback: o = ()=>!0 } = i, c = (d)=>d.preventDefault(), l = (d)=>{\n if (t) {\n if (e) {\n d.cancelable && d.preventDefault();\n return;\n }\n e === void 0 && (d.cancelable && d.timeStamp - t > s ? (e = !0, d.preventDefault()) : e = !1);\n }\n };\n return (d)=>{\n if (!(d.sensor instanceof $ac6f441b4b448e14$export$b26af955418d6638)) return o(d);\n let { draggable: m, sensor: y, event: g } = d, S = g;\n if (S.pointerType === \"touch\") {\n if (S.type === \"start\" && (S.srcEvent.type === \"pointerdown\" || S.srcEvent.type === \"touchstart\")) {\n n = S.target;\n let b = n ? $ac6f441b4b448e14$var$gt(n) : [];\n b.forEach((E)=>{\n E.addEventListener(\"touchmove\", l, {\n passive: !1,\n capture: !0\n });\n });\n let f = ()=>{\n t && (m.off(\"end\", f), m.sensors.forEach((E)=>{\n E instanceof $ac6f441b4b448e14$export$b26af955418d6638 && E.off(\"end\", f);\n }), n?.removeEventListener(\"contextmenu\", c), b.forEach((E)=>{\n E.removeEventListener(\"touchmove\", l, {\n capture: !0\n });\n }), t = 0, e = void 0, n = null, r = void window.clearTimeout(r));\n };\n e = void 0, t = S.srcEvent.timeStamp, n?.addEventListener(\"contextmenu\", c), m.on(\"end\", f), m.sensors.forEach((E)=>{\n E instanceof $ac6f441b4b448e14$export$b26af955418d6638 && E.off(\"end\", f);\n }), s > 0 && (r = window.setTimeout(()=>{\n m.resolveStartPredicate(y), e = !0, r = void 0;\n }, s));\n }\n return e;\n }\n return S.type === \"start\" && !S.srcEvent.button;\n };\n}\n\n\nconst $aeeec567ed097697$var$GRID_WIDTH = 40;\nconst $aeeec567ed097697$var$GRID_HEIGHT = 40;\nconst $aeeec567ed097697$var$element = document.querySelector(\".draggable\");\nconst $aeeec567ed097697$var$pointerSensor = new (0, $ac6f441b4b448e14$export$b26af955418d6638)($aeeec567ed097697$var$element);\nconst $aeeec567ed097697$var$keyboardSensor = new (0, $ac6f441b4b448e14$export$44d67f2a438aeba9)({\n moveDistance: {\n x: $aeeec567ed097697$var$GRID_WIDTH,\n y: $aeeec567ed097697$var$GRID_HEIGHT\n }\n});\nconst $aeeec567ed097697$var$draggable = new (0, $ac6f441b4b448e14$export$f2a139e5d18b9882)([\n $aeeec567ed097697$var$pointerSensor,\n $aeeec567ed097697$var$keyboardSensor\n], {\n getElements: ()=>[\n $aeeec567ed097697$var$element\n ],\n startPredicate: (0, $ac6f441b4b448e14$export$88d83dc4a35d804f)(),\n getPositionChange: ({ startEvent: startEvent, event: event, item: item })=>{\n let { prevX: prevX = startEvent.x, prevY: prevY = startEvent.y } = item.data;\n let changeX = event.x - prevX;\n let changeXAbs = Math.abs(changeX);\n if (changeXAbs >= $aeeec567ed097697$var$GRID_WIDTH) {\n const overshoot = changeXAbs % $aeeec567ed097697$var$GRID_WIDTH;\n if (changeX > 0) {\n changeX -= overshoot;\n item.data.prevX = event.x - overshoot;\n } else {\n changeX += overshoot;\n item.data.prevX = event.x + overshoot;\n }\n } else changeX = 0;\n let changeY = event.y - prevY;\n let changeYAbs = Math.abs(changeY);\n if (changeYAbs >= $aeeec567ed097697$var$GRID_HEIGHT) {\n const overshoot = changeYAbs % $aeeec567ed097697$var$GRID_HEIGHT;\n if (changeY > 0) {\n changeY -= overshoot;\n item.data.prevY = event.y - overshoot;\n } else {\n changeY += overshoot;\n item.data.prevY = event.y + overshoot;\n }\n } else changeY = 0;\n return {\n x: changeX,\n y: changeY\n };\n }\n});\n$aeeec567ed097697$var$draggable.on(\"start\", ()=>{\n $aeeec567ed097697$var$element.classList.add(\"dragging\");\n});\n$aeeec567ed097697$var$draggable.on(\"end\", ()=>{\n $aeeec567ed097697$var$element.classList.remove(\"dragging\");\n});\n\n\n//# sourceMappingURL=index.f0b19664.js.map\n","import {\n Draggable,\n PointerSensor,\n KeyboardSensor,\n createPointerSensorStartPredicate,\n} from '../../dist/dragdoll';\n\nconst GRID_WIDTH = 40;\nconst GRID_HEIGHT = 40;\n\nconst element = document.querySelector('.draggable') as HTMLElement;\nconst pointerSensor = new PointerSensor(element);\nconst keyboardSensor = new KeyboardSensor({\n moveDistance: { x: GRID_WIDTH, y: GRID_HEIGHT },\n});\nconst draggable = new Draggable([pointerSensor, keyboardSensor], {\n getElements: () => [element],\n startPredicate: createPointerSensorStartPredicate(),\n getPositionChange: ({ startEvent, event, item }) => {\n let { prevX = startEvent.x, prevY = startEvent.y } = item.data;\n\n let changeX = event.x - prevX;\n let changeXAbs = Math.abs(changeX);\n if (changeXAbs >= GRID_WIDTH) {\n const overshoot = changeXAbs % GRID_WIDTH;\n if (changeX > 0) {\n changeX -= overshoot;\n item.data.prevX = event.x - overshoot;\n } else {\n changeX += overshoot;\n item.data.prevX = event.x + overshoot;\n }\n } else {\n changeX = 0;\n }\n\n let changeY = event.y - prevY;\n let changeYAbs = Math.abs(changeY);\n if (changeYAbs >= GRID_HEIGHT) {\n const overshoot = changeYAbs % GRID_HEIGHT;\n if (changeY > 0) {\n changeY -= overshoot;\n item.data.prevY = event.y - overshoot;\n } else {\n changeY += overshoot;\n item.data.prevY = event.y + overshoot;\n }\n } else {\n changeY = 0;\n }\n\n return {\n x: changeX,\n y: changeY,\n };\n },\n});\n\ndraggable.on('start', () => {\n element.classList.add('dragging');\n});\n\ndraggable.on('end', () => {\n element.classList.remove('dragging');\n});\n","var _={start:\"start\",move:\"move\",cancel:\"cancel\",end:\"end\",destroy:\"destroy\"};import{Emitter as tt}from\"eventti\";var W=class{constructor(){this.drag=null,this.isDestroyed=!1,this._emitter=new tt}_createDragData(e){return{x:e.x,y:e.y}}_updateDragData(e){this.drag&&(this.drag.x=e.x,this.drag.y=e.y)}_resetDragData(){this.drag=null}_start(e){this.isDestroyed||this.drag||(this.drag=this._createDragData(e),this._emitter.emit(_.start,e))}_move(e){this.drag&&(this._updateDragData(e),this._emitter.emit(_.move,e))}_end(e){this.drag&&(this._updateDragData(e),this._emitter.emit(_.end,e),this._resetDragData())}_cancel(e){this.drag&&(this._updateDragData(e),this._emitter.emit(_.cancel,e),this._resetDragData())}on(e,t,n){return this._emitter.on(e,t,n)}off(e,t){this._emitter.off(e,t)}cancel(){this.drag&&(this._emitter.emit(_.cancel,{type:_.cancel,x:this.drag.x,y:this.drag.y}),this._resetDragData())}destroy(){this.isDestroyed||(this.isDestroyed=!0,this.cancel(),this._emitter.emit(_.destroy,{type:_.destroy}),this._emitter.off())}};import{Ticker as nt}from\"tikki\";var v=Symbol(),D=Symbol(),u=new nt({phases:[v,D]});function wt(i,e,t){v=e,D=t,u=i}var $=class extends W{constructor(){super();this.drag=null,this._direction={x:0,y:0},this._speed=0,this._tick=this._tick.bind(this)}_createDragData(t){return{...super._createDragData(t),time:0,deltaTime:0}}_start(t){this.isDestroyed||this.drag||(super._start(t),u.on(v,this._tick))}_end(t){this.drag&&(u.off(v,this._tick),super._end(t))}_cancel(t){this.drag&&(u.off(v,this._tick),super._cancel(t))}_tick(t){if(this.drag)if(t&&this.drag.time){this.drag.deltaTime=t-this.drag.time,this.drag.time=t;let n={type:\"tick\",time:this.drag.time,deltaTime:this.drag.deltaTime};if(this._emitter.emit(\"tick\",n),!this.drag)return;let r=this._speed*(this.drag.deltaTime/1e3),s=this._direction.x*r,o=this._direction.y*r;(s||o)&&this._move({type:\"move\",x:this.drag.x+s,y:this.drag.y+o})}else this.drag.time=t,this.drag.deltaTime=0}};import{Emitter as rt}from\"eventti\";function de(i,e){if(\"pointerId\"in i)return i.pointerId===e?i:null;if(\"changedTouches\"in i){let t=0;for(;t{let i=!1;try{let e=Object.defineProperty({},\"passive\",{get:function(){i=!0}});window.addEventListener(\"testPassive\",null,e),window.removeEventListener(\"testPassive\",null,e)}catch{}return i})(),Oe=he&&\"ontouchstart\"in window,We=he&&!!window.PointerEvent,Ot=!!(he&&navigator.vendor&&navigator.vendor.indexOf(\"Apple\")>-1&&navigator.userAgent&&navigator.userAgent.indexOf(\"CriOS\")==-1&&navigator.userAgent.indexOf(\"FxiOS\")==-1);function me(i={}){let{capture:e=!0,passive:t=!0}=i;return J?{capture:e,passive:t}:{capture:e}}function ue(i){return i===\"auto\"||i===void 0?We?\"pointer\":Oe?\"touch\":\"mouse\":i}var it={start:\"pointerdown\",move:\"pointermove\",cancel:\"pointercancel\",end:\"pointerup\"},ot={start:\"touchstart\",move:\"touchmove\",cancel:\"touchcancel\",end:\"touchend\"},st={start:\"mousedown\",move:\"mousemove\",cancel:\"\",end:\"mouseup\"},X={pointer:it,touch:ot,mouse:st},Y=class{constructor(e,t={}){let{listenerOptions:n={},sourceEvents:r=\"auto\",startPredicate:s=o=>!(\"button\"in o&&o.button>0)}=t;this.element=e,this.drag=null,this.isDestroyed=!1,this._areWindowListenersBound=!1,this._startPredicate=s,this._listenerOptions=me(n),this._sourceEvents=ue(r),this._emitter=new rt,this._onStart=this._onStart.bind(this),this._onMove=this._onMove.bind(this),this._onCancel=this._onCancel.bind(this),this._onEnd=this._onEnd.bind(this),e.addEventListener(X[this._sourceEvents].start,this._onStart,this._listenerOptions)}_getTrackedPointerEventData(e){return this.drag?de(e,this.drag.pointerId):null}_onStart(e){if(this.isDestroyed||this.drag||!this._startPredicate(e))return;let t=Me(e);if(t===null)return;let n=de(e,t);if(n===null)return;let r={pointerId:t,pointerType:Re(e),x:n.clientX,y:n.clientY};this.drag=r;let s={...r,type:_.start,srcEvent:e,target:n.target};this._emitter.emit(s.type,s),this.drag&&this._bindWindowListeners()}_onMove(e){if(!this.drag)return;let t=this._getTrackedPointerEventData(e);if(!t)return;this.drag.x=t.clientX,this.drag.y=t.clientY;let n={type:_.move,srcEvent:e,target:t.target,...this.drag};this._emitter.emit(n.type,n)}_onCancel(e){if(!this.drag)return;let t=this._getTrackedPointerEventData(e);if(!t)return;this.drag.x=t.clientX,this.drag.y=t.clientY;let n={type:_.cancel,srcEvent:e,target:t.target,...this.drag};this._emitter.emit(n.type,n),this._resetDrag()}_onEnd(e){if(!this.drag)return;let t=this._getTrackedPointerEventData(e);if(!t)return;this.drag.x=t.clientX,this.drag.y=t.clientY;let n={type:_.end,srcEvent:e,target:t.target,...this.drag};this._emitter.emit(n.type,n),this._resetDrag()}_bindWindowListeners(){if(this._areWindowListenersBound)return;let{move:e,end:t,cancel:n}=X[this._sourceEvents];window.addEventListener(e,this._onMove,this._listenerOptions),window.addEventListener(t,this._onEnd,this._listenerOptions),n&&window.addEventListener(n,this._onCancel,this._listenerOptions),this._areWindowListenersBound=!0}_unbindWindowListeners(){if(this._areWindowListenersBound){let{move:e,end:t,cancel:n}=X[this._sourceEvents];window.removeEventListener(e,this._onMove,this._listenerOptions),window.removeEventListener(t,this._onEnd,this._listenerOptions),n&&window.removeEventListener(n,this._onCancel,this._listenerOptions),this._areWindowListenersBound=!1}}_resetDrag(){this.drag=null,this._unbindWindowListeners()}cancel(){if(!this.drag)return;let e={type:_.cancel,srcEvent:null,target:null,...this.drag};this._emitter.emit(e.type,e),this._resetDrag()}updateSettings(e){if(this.isDestroyed)return;let{listenerOptions:t,sourceEvents:n,startPredicate:r}=e,s=ue(n),o=me(t);r&&this._startPredicate!==r&&(this._startPredicate=r),(t&&(this._listenerOptions.capture!==o.capture||this._listenerOptions.passive===o.passive)||n&&this._sourceEvents!==s)&&(this.element.removeEventListener(X[this._sourceEvents].start,this._onStart,this._listenerOptions),this._unbindWindowListeners(),this.cancel(),n&&(this._sourceEvents=s),t&&o&&(this._listenerOptions=o),this.element.addEventListener(X[this._sourceEvents].start,this._onStart,this._listenerOptions))}on(e,t,n){return this._emitter.on(e,t,n)}off(e,t){this._emitter.off(e,t)}destroy(){this.isDestroyed||(this.isDestroyed=!0,this.cancel(),this._emitter.emit(_.destroy,{type:_.destroy}),this._emitter.off(),this.element.removeEventListener(X[this._sourceEvents].start,this._onStart,this._listenerOptions))}};var Xe=class extends W{constructor(t={}){super();let{moveDistance:n=25,startPredicate:r=l=>{if((l.key===\"Enter\"||l.key===\" \")&&document.activeElement&&document.activeElement!==document.body){let{left:a,top:d}=document.activeElement.getBoundingClientRect();return{x:a,y:d}}return null},movePredicate:s=(l,a,d)=>{if(!a.drag)return null;switch(l.key){case\"ArrowLeft\":return{x:a.drag.x-d.x,y:a.drag.y};case\"ArrowRight\":return{x:a.drag.x+d.x,y:a.drag.y};case\"ArrowUp\":return{x:a.drag.x,y:a.drag.y-d.y};case\"ArrowDown\":return{x:a.drag.x,y:a.drag.y+d.y};default:return null}},cancelPredicate:o=(l,a)=>a.drag&&l.key===\"Escape\"?{x:a.drag.x,y:a.drag.y}:null,endPredicate:c=(l,a)=>a.drag&&(l.key===\"Enter\"||l.key===\" \")?{x:a.drag.x,y:a.drag.y}:null}=t;this._moveDistance=typeof n==\"number\"?{x:n,y:n}:{...n},this._startPredicate=r,this._movePredicate=s,this._cancelPredicate=o,this._endPredicate=c,this.cancel=this.cancel.bind(this),this._onKeyDown=this._onKeyDown.bind(this),document.addEventListener(\"keydown\",this._onKeyDown),window.addEventListener(\"blur\",this.cancel),window.addEventListener(\"visibilitychange\",this.cancel)}_onKeyDown(t){if(!this.drag){let o=this._startPredicate(t,this,this._moveDistance);o&&(t.preventDefault(),this._start({type:\"start\",x:o.x,y:o.y,srcEvent:t}));return}let n=this._cancelPredicate(t,this,this._moveDistance);if(n){t.preventDefault(),this._cancel({type:\"cancel\",x:n.x,y:n.y,srcEvent:t});return}let r=this._endPredicate(t,this,this._moveDistance);if(r){t.preventDefault(),this._end({type:\"end\",x:r.x,y:r.y,srcEvent:t});return}let s=this._movePredicate(t,this,this._moveDistance);if(s){t.preventDefault(),this._move({type:\"move\",x:s.x,y:s.y,srcEvent:t});return}}updateSettings(t={}){t.moveDistance!==void 0&&(typeof t.moveDistance==\"number\"?(this._moveDistance.x=t.moveDistance,this._moveDistance.y=t.moveDistance):(this._moveDistance.x=t.moveDistance.x,this._moveDistance.y=t.moveDistance.y)),t.startPredicate!==void 0&&(this._startPredicate=t.startPredicate),t.movePredicate!==void 0&&(this._movePredicate=t.movePredicate),t.cancelPredicate!==void 0&&(this._cancelPredicate=t.cancelPredicate),t.endPredicate!==void 0&&(this._endPredicate=t.endPredicate)}destroy(){this.isDestroyed||(super.destroy(),document.removeEventListener(\"keydown\",this._onKeyDown),window.removeEventListener(\"blur\",this.cancel),window.removeEventListener(\"visibilitychange\",this.cancel))}};var at=[\"start\",\"cancel\",\"end\",\"moveLeft\",\"moveRight\",\"moveUp\",\"moveDown\"];function Q(i,e){if(!i.size||!e.size)return 1/0;let t=1/0;for(let n of i){let r=e.get(n);r!==void 0&&r{if(document.activeElement){let{left:y,top:g}=document.activeElement.getBoundingClientRect();return{x:y,y:g}}return null},computeSpeed:r=()=>500,startKeys:s=[\" \",\"Enter\"],moveLeftKeys:o=[\"ArrowLeft\"],moveRightKeys:c=[\"ArrowRight\"],moveUpKeys:l=[\"ArrowUp\"],moveDownKeys:a=[\"ArrowDown\"],cancelKeys:d=[\"Escape\"],endKeys:m=[\" \",\"Enter\"]}=t;this._computeSpeed=r,this._startPredicate=n,this._startKeys=new Set(s),this._cancelKeys=new Set(d),this._endKeys=new Set(m),this._moveLeftKeys=new Set(o),this._moveRightKeys=new Set(c),this._moveUpKeys=new Set(l),this._moveDownKeys=new Set(a),this._moveKeys=new Set([...o,...c,...l,...a]),this._moveKeyTimestamps=new Map,this._onKeyDown=this._onKeyDown.bind(this),this._onKeyUp=this._onKeyUp.bind(this),this._onTick=this._onTick.bind(this),this.on(\"tick\",this._onTick),document.addEventListener(\"keydown\",this._onKeyDown),document.addEventListener(\"keyup\",this._onKeyUp),window.addEventListener(\"blur\",this.cancel),window.addEventListener(\"visibilitychange\",this.cancel)}_end(t){this.drag&&(this._moveKeyTimestamps.clear(),this._direction.x=0,this._direction.y=0,super._end(t))}_cancel(t){this.drag&&(this._moveKeyTimestamps.clear(),this._direction.x=0,this._direction.y=0,super._cancel(t))}_updateDirection(){let t=Q(this._moveLeftKeys,this._moveKeyTimestamps),n=Q(this._moveRightKeys,this._moveKeyTimestamps),r=Q(this._moveUpKeys,this._moveKeyTimestamps),s=Q(this._moveDownKeys,this._moveKeyTimestamps),o=t===n?0:t{let o=`${r}Keys`,c=t[o];c!==void 0&&(this[`_${o}`]=new Set(c),s>=3&&(n=!0))}),n){let r=[...this._moveLeftKeys,...this._moveRightKeys,...this._moveUpKeys,...this._moveDownKeys];[...this._moveKeys].every((o,c)=>r[c]===o)||(this._moveKeys=new Set(r),this._moveKeyTimestamps.clear(),this._updateDirection())}}destroy(){this.isDestroyed||(super.destroy(),this.off(\"tick\",this._onTick),document.removeEventListener(\"keydown\",this._onKeyDown),document.removeEventListener(\"keyup\",this._onKeyUp),window.removeEventListener(\"blur\",this.cancel),window.removeEventListener(\"visibilitychange\",this.cancel))}};import{Emitter as lt}from\"eventti\";import{getOffsetContainer as Ve}from\"mezr\";var Z=class{constructor(){this.sensor=null,this.isEnded=!1,this.isStarted=!1,this.startEvent=null,this.nextMoveEvent=null,this.prevMoveEvent=null,this.endEvent=null,this.items=[]}};var ee=class{constructor(e,t,n,r,s){this.data={},this.element=e,this.elementContainer=t,this.elementOffsetContainer=n,this.dragContainer=r,this.dragOffsetContainer=s,this.initialTransform=\"\",this.frozenProps=null,this.unfrozenProps=null,this.x=0,this.y=0,this.pX=0,this.pY=0,this._updateDiffX=0,this._updateDiffY=0,this._moveDiffX=0,this._moveDiffY=0,this._containerDiffX=0,this._containerDiffY=0}};import{getOffset as Ne}from\"mezr\";function pe(i,e,t={left:0,top:0}){if(t.left=0,t.top=0,i===e)return t;let n=Ne([i,\"padding\"]),r=Ne([e,\"padding\"]);return t.left=r.left-n.left,t.top=r.top-n.top,t}var qe=new WeakMap;function te(i){let e=qe.get(i)?.deref();return e||(e=window.getComputedStyle(i,null),qe.set(i,new WeakRef(e))),e}var ct=\"matrix(1, 0, 0, 1, 0, 0)\",dt=\"matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)\",Ue=J?{capture:!0,passive:!0}:!0,ze={left:0,top:0},fe={x:0,y:0};function ht(){return{container:null,startPredicate:()=>!0,getElements:()=>null,releaseElements:()=>null,getFrozenProps:()=>null,getStartPosition:()=>({x:0,y:0}),setPosition:({item:i,x:e,y:t})=>{i.element.style.transform=`translate(${e}px, ${t}px) ${i.initialTransform}`},getPositionChange:({event:i,prevEvent:e})=>(fe.x=i.x-e.x,fe.y=i.y-e.y,fe)}}var Be=class{constructor(e,t={}){this.sensors=e,this.settings=this._parseSettings(t),this.plugins={},this.drag=null,this.isDestroyed=!1,this._sensorData=new Map,this._emitter=new lt,this._startId=Symbol(),this._moveId=Symbol(),this._updateId=Symbol(),this._onMove=this._onMove.bind(this),this._onScroll=this._onScroll.bind(this),this._onEnd=this._onEnd.bind(this),this._prepareStart=this._prepareStart.bind(this),this._applyStart=this._applyStart.bind(this),this._prepareMove=this._prepareMove.bind(this),this._applyMove=this._applyMove.bind(this),this._preparePositionUpdate=this._preparePositionUpdate.bind(this),this._applyPositionUpdate=this._applyPositionUpdate.bind(this),this.sensors.forEach(n=>{this._sensorData.set(n,{predicateState:0,predicateEvent:null,onMove:o=>this._onMove(o,n),onEnd:o=>this._onEnd(o,n)});let{onMove:r,onEnd:s}=this._sensorData.get(n);n.on(\"start\",r),n.on(\"move\",r),n.on(\"cancel\",s),n.on(\"end\",s),n.on(\"destroy\",s)})}_parseSettings(e,t=ht()){let{container:n=t.container,startPredicate:r=t.startPredicate,getElements:s=t.getElements,releaseElements:o=t.releaseElements,getFrozenProps:c=t.getFrozenProps,getStartPosition:l=t.getStartPosition,setPosition:a=t.setPosition,getPositionChange:d=t.getPositionChange}=e||{};return{container:n,startPredicate:r,getElements:s,releaseElements:o,getFrozenProps:c,getStartPosition:l,setPosition:a,getPositionChange:d}}_emit(e,...t){this._emitter.emit(e,...t)}_onMove(e,t){let n=this._sensorData.get(t);if(n)switch(n.predicateState){case 0:{n.predicateEvent=e;let r=this.settings.startPredicate({draggable:this,sensor:t,event:e});r===!0?this.resolveStartPredicate(t):r===!1&&this.rejectStartPredicate(t);break}case 1:{this.drag&&(this.drag.nextMoveEvent=e,u.once(v,this._prepareMove,this._moveId),u.once(D,this._applyMove,this._moveId));break}}}_onScroll(){this.updatePosition()}_onEnd(e,t){let n=this._sensorData.get(t);n&&(this.drag?n.predicateState===1&&(this.drag.endEvent=e,this._sensorData.forEach(r=>{r.predicateState=0,r.predicateEvent=null}),this.stop()):(n.predicateState=0,n.predicateEvent=null))}_prepareStart(){let{drag:e}=this;if(!e||!e.startEvent)return;let t=this.settings.getElements({draggable:this,sensor:e.sensor,startEvent:e.startEvent})||[];e.items=t.map(n=>{if(!n.isConnected)throw new Error(\"Element is not connected\");let r=n.parentElement,s=Ve(n);if(!s)throw new Error(\"Offset container could not be computed for the element!\");let o=this.settings.container||r,c=o===r?s:Ve(n,{container:o});if(!c)throw new Error(\"Drag offset container could not be computed for the element!\");let l=new ee(n,r,s,o,c),a=n.getBoundingClientRect();if(l.x=a.left,l.y=a.top,s!==c){let{left:b,top:f}=pe(c,s,ze);l._containerDiffX=b,l._containerDiffY=f}let d=te(n),{transform:m}=d;m&&m!==\"none\"&&m!==ct&&m!==dt&&(l.initialTransform=m);let{x:y,y:g}=this.settings.getStartPosition({draggable:this,sensor:e.sensor,item:l,style:d});l.pX=y,l.pY=g;let S=this.settings.getFrozenProps({draggable:this,sensor:e.sensor,item:l,style:d});if(Array.isArray(S))if(S.length){let b={};for(let f of S)b[f]=d[f];l.frozenProps=b}else l.frozenProps=null;else l.frozenProps=S;if(l.frozenProps){let b={};for(let f in l.frozenProps)l.frozenProps.hasOwnProperty(f)&&(b[f]=n.style[f]);l.unfrozenProps=b}return l}),this._emit(\"preparestart\",e.startEvent)}_applyStart(){let e=this.drag;if(!e||!e.startEvent)return;let{container:t}=this.settings;for(let n of e.items)t&&n.element.parentElement!==t&&(t.appendChild(n.element),n.pX+=n._containerDiffX,n.pY+=n._containerDiffY),n.frozenProps&&Object.assign(n.element.style,n.frozenProps),this.settings.setPosition({phase:\"start\",draggable:this,sensor:e.sensor,item:n,x:n.pX,y:n.pY});window.addEventListener(\"scroll\",this._onScroll,Ue),e.isStarted=!0,this._emit(\"start\",e.startEvent)}_prepareMove(){let{drag:e}=this;if(!e||!e.startEvent)return;let t=e.nextMoveEvent,n=e.prevMoveEvent||e.startEvent;if(!(!t||t===n)){for(let r of e.items){let{x:s,y:o}=this.settings.getPositionChange({draggable:this,sensor:e.sensor,item:r,startEvent:e.startEvent,prevEvent:n,event:t});s&&(r.pX=r.pX-r._moveDiffX+s,r.x=r.x-r._moveDiffX+s,r._moveDiffX=s),o&&(r.pY=r.pY-r._moveDiffY+o,r.y=r.y-r._moveDiffY+o,r._moveDiffY=o)}e.prevMoveEvent=t,this._emit(\"preparemove\",t)}}_applyMove(){let{drag:e}=this;if(!(!e||!e.nextMoveEvent)){for(let t of e.items)t._moveDiffX=0,t._moveDiffY=0;for(let t of e.items)this.settings.setPosition({phase:\"move\",draggable:this,sensor:e.sensor,item:t,x:t.pX,y:t.pY});this._emit(\"move\",e.nextMoveEvent)}}_preparePositionUpdate(){let{drag:e}=this;if(e)for(let t of e.items){if(t.elementOffsetContainer!==t.dragOffsetContainer){let{left:c,top:l}=pe(t.dragOffsetContainer,t.elementOffsetContainer,ze);t._containerDiffX=c,t._containerDiffY=l}let{left:n,top:r}=t.element.getBoundingClientRect(),s=t.x-t._moveDiffX-n;t.pX=t.pX-t._updateDiffX+s,t._updateDiffX=s;let o=t.y-t._moveDiffY-r;t.pY=t.pY-t._updateDiffY+o,t._updateDiffY=o}}_applyPositionUpdate(){let{drag:e}=this;if(e)for(let t of e.items)t._updateDiffX=0,t._updateDiffY=0,this.settings.setPosition({phase:\"move\",draggable:this,sensor:e.sensor,item:t,x:t.pX,y:t.pY})}on(e,t,n){return this._emitter.on(e,t,n)}off(e,t){this._emitter.off(e,t)}resolveStartPredicate(e,t){let n=this._sensorData.get(e);if(!n)return;let r=t||n.predicateEvent;n.predicateState===0&&r&&(n.predicateState=1,n.predicateEvent=null,this.drag=new Z,this.drag.sensor=e,this.drag.startEvent=r,this._sensorData.forEach((s,o)=>{o!==e&&(s.predicateState=2,s.predicateEvent=null)}),u.once(v,this._prepareStart,this._startId),u.once(D,this._applyStart,this._startId))}rejectStartPredicate(e){let t=this._sensorData.get(e);t?.predicateState===0&&(t.predicateState=2,t.predicateEvent=null)}stop(){let{drag:e}=this;if(!(!e||e.isEnded)){if(e.isEnded=!0,u.off(v,this._startId),u.off(D,this._startId),u.off(v,this._moveId),u.off(D,this._moveId),u.off(v,this._updateId),u.off(D,this._updateId),e.isStarted){window.removeEventListener(\"scroll\",this._onScroll,Ue);let t=[];for(let n of e.items){if(t.push(n.element),n.elementContainer&&n.element.parentElement!==n.elementContainer&&(n.pX-=n._containerDiffX,n.pY-=n._containerDiffY,n._containerDiffX=0,n._containerDiffY=0,n.elementContainer.appendChild(n.element)),n.unfrozenProps)for(let r in n.unfrozenProps)n.element.style[r]=n.unfrozenProps[r]||\"\";this.settings.setPosition({phase:\"end\",draggable:this,sensor:e.sensor,item:n,x:n.pX,y:n.pY})}t.length&&this.settings.releaseElements({draggable:this,sensor:e.sensor,elements:t})}this._emit(\"end\",e.endEvent),this.drag=null}}updatePosition(e=!1){this.drag&&(e?(this._preparePositionUpdate(),this._applyPositionUpdate()):(u.once(v,this._preparePositionUpdate,this._updateId),u.once(D,this._applyPositionUpdate,this._updateId)))}updateSettings(e={}){this.settings=this._parseSettings(e,this.settings)}use(e){return e(this)}destroy(){this.isDestroyed||(this.isDestroyed=!0,this.stop(),this._sensorData.forEach(({onMove:e,onEnd:t},n)=>{n.off(\"start\",e),n.off(\"move\",e),n.off(\"cancel\",t),n.off(\"end\",t),n.off(\"destroy\",t)}),this._sensorData.clear(),this._emit(\"destroy\"),this._emitter.off())}};import{Emitter as ut}from\"eventti\";import{getDistance as pt,getRect as Ge}from\"mezr\";var B=class{constructor(e,t){this._data=[],this._createObject=e,this._onPut=t}pick(){return this._data.length?this._data.pop():this._createObject()}put(e){this._data.indexOf(e)===-1&&(this._onPut&&this._onPut(e),this._data.push(e))}reset(){this._data.length=0}};import{getIntersection as mt}from\"mezr\";function He(i,e){let t=mt(i,e);return t?t.width*t.height:0}function ge(i,e){let t=He(i,e);if(!t)return 0;let n=Math.min(i.width,e.width)*Math.min(i.height,e.height);return t/n*100}function w(i){return i instanceof Window}function Se(i){return w(i)||i===document.documentElement||i===document.body?window:i}function N(i){return w(i)?i.pageXOffset:i.scrollLeft}function Ee(i){return w(i)&&(i=document.documentElement),i.scrollWidth-i.clientWidth}function q(i){return w(i)?i.pageYOffset:i.scrollTop}function ve(i){return w(i)&&(i=document.documentElement),i.scrollHeight-i.clientHeight}function _e(i,e){return!(i.right<=e.left||e.right<=i.left||i.bottom<=e.top||e.bottom<=i.top)}var xe={width:0,height:0,left:0,right:0,top:0,bottom:0},Fe={...xe},je=50,I={direction:\"none\",threshold:0,distance:0,value:0,maxValue:0,duration:0,speed:0,deltaTime:0,isEnding:!1},h={x:1,y:2},M={forward:4,reverse:8},ne={none:0,left:h.x|M.reverse,right:h.x|M.forward},H={none:0,up:h.y|M.reverse,down:h.y|M.forward},p={...ne,...H};function ye(i){switch(i){case ne.none:case H.none:return\"none\";case ne.left:return\"left\";case ne.right:return\"right\";case H.up:return\"up\";case H.down:return\"down\";default:throw new Error(`Unknown direction value: ${i}`)}}function $e(i,e,t){let{left:n=0,right:r=0,top:s=0,bottom:o=0}=e;return n=Math.max(0,n),r=Math.max(0,r),s=Math.max(0,s),o=Math.max(0,o),t.width=i.width+n+r,t.height=i.height+s+o,t.left=i.left-n,t.top=i.top-s,t.right=i.right+r,t.bottom=i.bottom+o,t}function re(i,e){return Math.ceil(i)>=Math.floor(e)}function be(i,e){return Math.min(e/2,i)}function De(i,e,t,n){return Math.max(0,t+i*2+n*e-n)/2}var Pe=class{constructor(){this.positionX=0,this.positionY=0,this.directionX=p.none,this.directionY=p.none,this.overlapCheckRequestTime=0}},Te=class{constructor(){this.element=null,this.requestX=null,this.requestY=null,this.scrollLeft=0,this.scrollTop=0}reset(){this.requestX&&(this.requestX.action=null),this.requestY&&(this.requestY.action=null),this.element=null,this.requestX=null,this.requestY=null,this.scrollLeft=0,this.scrollTop=0}addRequest(e){h.x&e.direction?(this.requestX&&this.removeRequest(this.requestX),this.requestX=e):(this.requestY&&this.removeRequest(this.requestY),this.requestY=e),e.action=this}removeRequest(e){this.requestX===e?(this.requestX=null,e.action=null):this.requestY===e&&(this.requestY=null,e.action=null)}computeScrollValues(){this.element&&(this.scrollLeft=this.requestX?this.requestX.value:N(this.element),this.scrollTop=this.requestY?this.requestY.value:q(this.element))}scroll(){this.element&&(this.element.scrollTo?this.element.scrollTo(this.scrollLeft,this.scrollTop):(this.element.scrollLeft=this.scrollLeft,this.element.scrollTop=this.scrollTop))}},we=class{constructor(){this.item=null,this.element=null,this.isActive=!1,this.isEnding=!1,this.direction=0,this.value=NaN,this.maxValue=0,this.threshold=0,this.distance=0,this.deltaTime=0,this.speed=0,this.duration=0,this.action=null}reset(){this.isActive&&this.onStop(),this.item=null,this.element=null,this.isActive=!1,this.isEnding=!1,this.direction=0,this.value=NaN,this.maxValue=0,this.threshold=0,this.distance=0,this.deltaTime=0,this.speed=0,this.duration=0,this.action=null}hasReachedEnd(){return M.forward&this.direction?re(this.value,this.maxValue):this.value<=0}computeCurrentScrollValue(){return this.element?this.value!==this.value?h.x&this.direction?N(this.element):q(this.element):Math.max(0,Math.min(this.value,this.maxValue)):0}computeNextScrollValue(){let e=this.speed*(this.deltaTime/1e3),t=M.forward&this.direction?this.value+e:this.value-e;return Math.max(0,Math.min(t,this.maxValue))}computeSpeed(){if(!this.item||!this.element)return 0;let{speed:e}=this.item;return typeof e==\"function\"?(I.direction=ye(this.direction),I.threshold=this.threshold,I.distance=this.distance,I.value=this.value,I.maxValue=this.maxValue,I.duration=this.duration,I.speed=this.speed,I.deltaTime=this.deltaTime,I.isEnding=this.isEnding,e(this.element,I)):e}tick(e){return this.isActive||(this.isActive=!0,this.onStart()),this.deltaTime=e,this.value=this.computeCurrentScrollValue(),this.speed=this.computeSpeed(),this.value=this.computeNextScrollValue(),this.duration+=e,this.value}onStart(){if(!this.item||!this.element)return;let{onStart:e}=this.item;typeof e==\"function\"&&e(this.element,ye(this.direction))}onStop(){if(!this.item||!this.element)return;let{onStop:e}=this.item;typeof e==\"function\"&&e(this.element,ye(this.direction))}};function Je(i=500,e=.5,t=.25){let n=i*(e>0?1/e:1/0),r=i*(t>0?1/t:1/0);return function(s,o){let c=0;if(!o.isEnding)if(o.threshold>0){let d=o.threshold-Math.max(0,o.distance);c=i/o.threshold*d}else c=i;let l=o.speed;if(l===c)return c;let a=c;return lnew we,n=>n.reset()),this._actionPool=new B(()=>new Te,n=>n.reset()),this._emitter=new ut,this._frameRead=this._frameRead.bind(this),this._frameWrite=this._frameWrite.bind(this)}_frameRead(e){this._isDestroyed||(e&&this._tickTime?(this._tickDeltaTime=e-this._tickTime,this._tickTime=e,this._updateItems(),this._updateRequests(),this._updateActions()):(this._tickTime=e,this._tickDeltaTime=0))}_frameWrite(){this._isDestroyed||this._applyActions()}_startTicking(){this._isTicking||(this._isTicking=!0,u.on(v,this._frameRead),u.on(D,this._frameWrite))}_stopTicking(){this._isTicking&&(this._isTicking=!1,this._tickTime=0,this._tickDeltaTime=0,u.off(v,this._frameRead),u.off(D,this._frameWrite))}_getItemClientRect(e,t={width:0,height:0,left:0,right:0,top:0,bottom:0}){let{clientRect:n}=e;return t.left=n.left,t.top=n.top,t.width=n.width,t.height=n.height,t.right=n.left+n.width,t.bottom=n.top+n.height,t}_requestItemScroll(e,t,n,r,s,o,c){let l=this._requests[t],a=l.get(e);a?(a.element!==n||a.direction!==r)&&a.reset():(a=this._requestPool.pick(),l.set(e,a)),a.item=e,a.element=n,a.direction=r,a.threshold=s,a.distance=o,a.maxValue=c}_cancelItemScroll(e,t){let n=this._requests[t],r=n.get(e);r&&(r.action&&r.action.removeRequest(r),this._requestPool.put(r),n.delete(e))}_checkItemOverlap(e,t,n){let{inertAreaSize:r,targets:s}=e;if(!s.length){t&&this._cancelItemScroll(e,h.x),n&&this._cancelItemScroll(e,h.y);return}let o=this._itemData.get(e),c=o?.directionX,l=o?.directionY;if(!c&&!l){t&&this._cancelItemScroll(e,h.x),n&&this._cancelItemScroll(e,h.y);return}let a=this._getItemClientRect(e,xe),d=null,m=-1/0,y=0,g=-1/0,S=p.none,b=0,f=0,E=null,x=-1/0,V=0,U=-1/0,se=p.none,Ce=0,Le=0,ae=0;for(;ae=m&&F>0&&(R>m||O>g)){let T=0,C=p.none,L=be(Ke,P.width),z=De(L,r,a.width,P.width);c===p.right?(T=P.right+z-a.right,T<=L&&!re(N(k),F)&&(C=p.right)):c===p.left&&(T=a.left-(P.left-z),T<=L&&N(k)>0&&(C=p.left)),C&&(d=k,m=R,y=L,g=O,S=C,b=T,f=F)}if(ce&&R>=x&&j>0&&(R>x||O>U)){let T=0,C=H.none,L=be(Ke,P.height),z=De(L,r,a.height,P.height);l===p.down?(T=P.bottom+z-a.bottom,T<=L&&!re(q(k),j)&&(C=p.down)):l===p.up&&(T=a.top-(P.top-z),T<=L&&q(k)>0&&(C=p.up)),C&&(E=k,x=R,V=L,U=O,se=C,Ce=T,Le=j)}}t&&(d&&S?this._requestItemScroll(e,h.x,d,S,y,b,f):this._cancelItemScroll(e,h.x)),n&&(E&&se?this._requestItemScroll(e,h.y,E,se,V,Ce,Le):this._cancelItemScroll(e,h.y))}_updateScrollRequest(e){let t=e.item,{inertAreaSize:n,smoothStop:r,targets:s}=t,o=this._getItemClientRect(t,xe),c=null,l=0;for(;lf)break;let V=m?N(d):q(d);if(c=M.forward&e.direction?re(V,y):V<=0,c)break;return e.maxValue=y,e.threshold=f,e.distance=x,e.isEnding=!1,!0}return r===!0&&e.speed>0?(c===null&&(c=e.hasReachedEnd()),e.isEnding=!c):e.isEnding=!1,e.isEnding}_updateItems(){for(let e=0;eo?p.right:rc?p.down:s0&&this._tickTime-c>this.settings.overlapCheckInterval,a=!0,d=t.get(s);d&&d.isActive&&(a=!this._updateScrollRequest(d),a&&(l=!0,this._cancelItemScroll(s,h.x)));let m=!0,y=n.get(s);y&&y.isActive&&(m=!this._updateScrollRequest(y),m&&(l=!0,this._cancelItemScroll(s,h.y))),l&&(o.overlapCheckRequestTime=0,this._checkItemOverlap(s,a,m))}}_requestAction(e,t){let n=t===h.x,r=null,s=0;for(;s{let{drag:e}=i,t=e?.items[0];if(t)G.x=t.pX,G.y=t.pY;else{let n=e&&(e.nextMoveEvent||e.startEvent);G.x=n?n.x:0,G.y=n?n.y:0}return G},getClientRect:i=>{let{drag:e}=i,t=e?.items[0];if(t&&t.element){let{left:n,top:r,width:s,height:o}=t.element.getBoundingClientRect();K.left=n,K.top=r,K.width=s,K.height=o}else{let n=e&&(e.nextMoveEvent||e.startEvent);K.left=n?n.x-25:0,K.top=n?n.y-25:0,K.width=n?50:0,K.height=n?50:0}return K},onStart:null,onStop:null}}var Ae=class{constructor(e,t){this._draggableAutoScroll=e,this._draggable=t,this._position={x:0,y:0},this._clientRect={left:0,top:0,width:0,height:0}}_getSettings(){return this._draggableAutoScroll.settings}get targets(){let{targets:e}=this._getSettings();return typeof e==\"function\"&&(e=e(this._draggable)),e}get position(){let{getPosition:e}=this._getSettings();if(typeof e==\"function\"){let t=e(this._draggable);this._position.x=t.x,this._position.y=t.y}else this._position.x=0,this._position.y=0;return this._position}get clientRect(){let{getClientRect:e}=this._getSettings();if(typeof e==\"function\"){let{left:t,top:n,width:r,height:s}=e(this._draggable);this._clientRect.left=t,this._clientRect.top=n,this._clientRect.width=r,this._clientRect.height=s}else this._clientRect.left=0,this._clientRect.top=0,this._clientRect.width=0,this._clientRect.height=0;return this._clientRect}get inertAreaSize(){return this._getSettings().inertAreaSize}get smoothStop(){return this._getSettings().smoothStop}get speed(){return this._getSettings().speed}get onStart(){return this._getSettings().onStart}get onStop(){return this._getSettings().onStop}onPrepareScrollEffect(){let e=this._draggable._updateId;u.off(v,e),u.off(D,e),this._draggable._preparePositionUpdate()}onApplyScrollEffect(){this._draggable._applyPositionUpdate()}},ke=class{constructor(e,t={}){this.name=\"autoscroll\",this.version=\"0.0.2\",this.settings=this._parseSettings(t),this._autoScrollProxy=null,e.on(\"start\",()=>{this._autoScrollProxy||(this._autoScrollProxy=new Ae(this,e),Ie.addItem(this._autoScrollProxy))}),e.on(\"end\",()=>{this._autoScrollProxy&&(Ie.removeItem(this._autoScrollProxy),this._autoScrollProxy=null)})}_parseSettings(e,t=ft()){let{targets:n=t.targets,inertAreaSize:r=t.inertAreaSize,speed:s=t.speed,smoothStop:o=t.smoothStop,getPosition:c=t.getPosition,getClientRect:l=t.getClientRect,onStart:a=t.onStart,onStop:d=t.onStop}=e||{};return{targets:n,inertAreaSize:r,speed:s,smoothStop:o,getPosition:c,getClientRect:l,onStart:a,onStop:d}}updateSettings(e={}){this.settings=this._parseSettings(e,this.settings)}};function dr(i){return e=>{let t=new ke(e,i),n=e;return n.plugins[t.name]=t,n}}var Qe=new Set([\"auto\",\"scroll\",\"overlay\"]);function oe(i){let e=te(i);return!!(Qe.has(e.overflowY)||Qe.has(e.overflowX))}function Ze(i){return i instanceof Document}function et(i,e=[]){let t=i?.parentNode;for(;t&&!Ze(t);)t instanceof Element?(oe(t)&&e.push(t),t=t.parentNode):t instanceof ShadowRoot?t=t.host:t=t.parentNode;return e.push(window),e}function gt(i){let e=[];return oe(i)&&e.push(i),et(i,e),e}function br(i={}){let e,t=0,n=null,r,{timeout:s=250,fallback:o=()=>!0}=i,c=d=>d.preventDefault(),l=d=>{if(t){if(e){d.cancelable&&d.preventDefault();return}e===void 0&&(d.cancelable&&d.timeStamp-t>s?(e=!0,d.preventDefault()):e=!1)}};return d=>{if(!(d.sensor instanceof Y))return o(d);let{draggable:m,sensor:y,event:g}=d,S=g;if(S.pointerType===\"touch\"){if(S.type===\"start\"&&(S.srcEvent.type===\"pointerdown\"||S.srcEvent.type===\"touchstart\")){n=S.target;let b=n?gt(n):[];b.forEach(E=>{E.addEventListener(\"touchmove\",l,{passive:!1,capture:!0})});let f=()=>{t&&(m.off(\"end\",f),m.sensors.forEach(E=>{E instanceof Y&&E.off(\"end\",f)}),n?.removeEventListener(\"contextmenu\",c),b.forEach(E=>{E.removeEventListener(\"touchmove\",l,{capture:!0})}),t=0,e=void 0,n=null,r=void window.clearTimeout(r))};e=void 0,t=S.srcEvent.timeStamp,n?.addEventListener(\"contextmenu\",c),m.on(\"end\",f),m.sensors.forEach(E=>{E instanceof Y&&E.off(\"end\",f)}),s>0&&(r=window.setTimeout(()=>{m.resolveStartPredicate(y),e=!0,r=void 0},s))}return e}return S.type===\"start\"&&!S.srcEvent.button}}export{h as AUTO_SCROLL_AXIS,M as AUTO_SCROLL_AXIS_DIRECTION,p as AUTO_SCROLL_DIRECTION,ie as AutoScroll,$ as BaseMotionSensor,W as BaseSensor,Be as Draggable,ke as DraggableAutoScroll,Ye as KeyboardMotionSensor,Xe as KeyboardSensor,Y as PointerSensor,_ as SensorEventType,Ie as autoScroll,dr as autoScrollPlugin,Je as autoScrollSmoothSpeed,br as createPointerSensorStartPredicate,wt as setTicker,u as ticker,v as tickerReadPhase,D as tickerWritePhase};\n","function getOrCreateEventData(e,t){let i=e.get(t);return i||(i=new EventData,e.set(t,i)),i}class EventData{constructor(){this.idMap=new Map,this.fnMap=new Map,this.onceList=new Set,this.emitList=null}add(e,t,i,s,n){if(!n&&this.fnMap.has(e))throw new Error(\"Emitter: tried to add an existing event listener to an event!\");if(this.idMap.has(i))switch(s){case\"throw\":throw new Error(\"Emitter: tried to add an existing event listener id to an event!\");case\"ignore\":return i;default:this.delId(i,\"update\"===s)}let r=this.fnMap.get(e);return r||(r=new Set,this.fnMap.set(e,r)),r.add(i),this.idMap.set(i,e),t&&this.onceList.add(i),this.emitList&&this.emitList.push(e),i}delId(e,t=!1){const i=this.idMap.get(e);if(!i)return;const s=this.fnMap.get(i);t||this.idMap.delete(e),this.onceList.delete(e),s.delete(e),s.size||this.fnMap.delete(i),this.emitList=null}delFn(e){const t=this.fnMap.get(e);t&&(t.forEach((e=>{this.onceList.delete(e),this.idMap.delete(e)})),this.fnMap.delete(e),this.emitList=null)}}class Emitter{constructor(e={}){const{idDedupeMode:t=\"replace\",allowDuplicateListeners:i=!0}=e;this.idDedupeMode=t,this.allowDuplicateListeners=i,this._events=new Map}_getListeners(e){const t=this._events.get(e);if(!t)return null;const{idMap:i,onceList:s}=t;if(!i.size)return null;const n=t.emitList||[...i.values()];if(s.size)if(s.size===i.size)this._events.delete(e);else for(const e of s)t.delId(e);else t.emitList=n;return n}on(e,t,i=Symbol()){return getOrCreateEventData(this._events,e).add(t,!1,i,this.idDedupeMode,this.allowDuplicateListeners)}once(e,t,i=Symbol()){return getOrCreateEventData(this._events,e).add(t,!0,i,this.idDedupeMode,this.allowDuplicateListeners)}off(e,t){if(void 0===e)return void this._events.clear();if(void 0===t)return void this._events.delete(e);const i=this._events.get(e);i&&(\"function\"==typeof t?i.delFn(t):i.delId(t),i.idMap.size||this._events.delete(e))}emit(e,...t){const i=this._getListeners(e);if(!i)return;let s=0,n=i.length;for(;s{e+=this.listenerCount(i)})),e}return(null===(t=this._events.get(e))||void 0===t?void 0:t.idMap.size)||0}}export{Emitter};","import{Emitter}from\"eventti\";function createRequestFrame(e=60){if(\"function\"==typeof requestAnimationFrame&&\"function\"==typeof cancelAnimationFrame)return e=>{const t=requestAnimationFrame(e);return()=>cancelAnimationFrame(t)};{const t=1e3/e,i=\"undefined\"==typeof performance?()=>Date.now():()=>performance.now();return e=>{const r=setTimeout((()=>e(i())),t);return()=>clearTimeout(r)}}}var AutoTickState;!function(e){e[e.PAUSED=1]=\"PAUSED\",e[e.ON_DEMAND=2]=\"ON_DEMAND\",e[e.CONTINUOUS=3]=\"CONTINUOUS\"}(AutoTickState||(AutoTickState={}));class Ticker{constructor(e={}){const{phases:t=[],autoTick:i=AutoTickState.ON_DEMAND,allowDuplicateListeners:r=!0,idDedupeMode:s=\"replace\",requestFrame:n=createRequestFrame()}=e;this.phases=t,this._autoTick=i,this._requestFrame=n,this._cancelFrame=null,this._queue=[],this._emitter=new Emitter({allowDuplicateListeners:r,idDedupeMode:s}),this.tick=this.tick.bind(this)}get requestFrame(){return this._requestFrame}set requestFrame(e){this._requestFrame=e,this._kickstart()}get autoTick(){return this._autoTick}set autoTick(e){this._autoTick=e,this._kickstart()}get allowDuplicateListeners(){return this._emitter.allowDuplicateListeners}set allowDuplicateListeners(e){this._emitter.allowDuplicateListeners=e}get idDedupeMode(){return this._emitter.idDedupeMode}set idDedupeMode(e){this._emitter.idDedupeMode=e}tick(...e){this._cancelFrame=null;const{_queue:t}=this;if(t.length)throw new Error(\"Ticker: Can't tick before the previous tick has finished!\");this._request();const{phases:i,_emitter:r}=this;let s,n,a,c,u,o;for(s=0,a=i.length;s=AutoTickState.ON_DEMAND&&(this._cancelFrame=this._requestFrame(this.tick))}_cancel(){this._cancelFrame&&(this._cancelFrame(),this._cancelFrame=null)}_kickstart(){this._autoTick===AutoTickState.ON_DEMAND?this._emitter.listenerCount()&&this._request():this._autoTick===AutoTickState.CONTINUOUS?this._request():this._cancel()}}function createXrRequestFrame(e){return t=>{const i=e.requestAnimationFrame(t);return()=>e.cancelAnimationFrame(i)}}export{AutoTickState,Ticker,createRequestFrame,createXrRequestFrame};","export*from\"./getContainingBlock.js\";export*from\"./getDistance.js\";export*from\"./getHeight.js\";export*from\"./getIntersection.js\";export*from\"./getOffset.js\";export*from\"./getOffsetContainer.js\";export*from\"./getOverflow.js\";export*from\"./getRect.js\";export*from\"./getWidth.js\";","import{getStyle}from\"./utils/getStyle.js\";import{isContainingBlockForFixedElement}from\"./utils/isContainingBlockForFixedElement.js\";import{isContainingBlockForAbsoluteElement}from\"./utils/isContainingBlockForAbsoluteElement.js\";import{isBlockElement}from\"./utils/isBlockElement.js\";import{isDocumentElement}from\"./utils/isDocumentElement.js\";export function getContainingBlock(e,t={}){if(isDocumentElement(e))return e.ownerDocument.defaultView;const n=t.position||getStyle(e).position,{skipDisplayNone:i,container:o}=t;switch(n){case\"static\":case\"relative\":case\"sticky\":case\"-webkit-sticky\":{let t=o||e.parentElement;for(;t;){const e=isBlockElement(t);if(e)return t;if(null===e&&!i)return null;t=t.parentElement}return e.ownerDocument.documentElement}case\"absolute\":case\"fixed\":{const t=\"fixed\"===n;let l=o||e.parentElement;for(;l;){const e=t?isContainingBlockForFixedElement(l):isContainingBlockForAbsoluteElement(l);if(!0===e)return l;if(null===e&&!i)return null;l=l.parentElement}return e.ownerDocument.defaultView}default:return null}}","const STYLE_DECLARATION_CACHE=new WeakMap;export function getStyle(e,t){if(t)return window.getComputedStyle(e,t);let C=STYLE_DECLARATION_CACHE.get(e)?.deref();return C||(C=window.getComputedStyle(e,null),STYLE_DECLARATION_CACHE.set(e,new WeakRef(C))),C}","import{IS_SAFARI}from\"./constants.js\";import{getStyle}from\"./getStyle.js\";import{isBlockElement}from\"./isBlockElement.js\";export function isContainingBlockForFixedElement(n){const t=getStyle(n);if(!IS_SAFARI){const{filter:n}=t;if(n&&\"none\"!==n)return!0;const{backdropFilter:e}=t;if(e&&\"none\"!==e)return!0;const{willChange:i}=t;if(i&&(i.indexOf(\"filter\")>-1||i.indexOf(\"backdrop-filter\")>-1))return!0}const e=isBlockElement(n);if(!e)return e;const{transform:i}=t;if(i&&\"none\"!==i)return!0;const{perspective:r}=t;if(r&&\"none\"!==r)return!0;const{contentVisibility:o}=t;if(o&&\"auto\"===o)return!0;const{contain:f}=t;if(f&&(\"strict\"===f||\"content\"===f||f.indexOf(\"paint\")>-1||f.indexOf(\"layout\")>-1))return!0;const{willChange:c}=t;return!(!c||!(c.indexOf(\"transform\")>-1||c.indexOf(\"perspective\")>-1||c.indexOf(\"contain\")>-1))||!!(IS_SAFARI&&c&&c.indexOf(\"filter\")>-1)}","export const IS_BROWSER=\"undefined\"!=typeof window&&void 0!==window.document;export const IS_SAFARI=!!(IS_BROWSER&&navigator.vendor&&navigator.vendor.indexOf(\"Apple\")>-1&&navigator.userAgent&&-1==navigator.userAgent.indexOf(\"CriOS\")&&-1==navigator.userAgent.indexOf(\"FxiOS\"));export const BOX_EDGE={content:\"content\",padding:\"padding\",scrollbar:\"scrollbar\",border:\"border\",margin:\"margin\"};export const INCLUDE_WINDOW_SCROLLBAR={[BOX_EDGE.content]:!1,[BOX_EDGE.padding]:!1,[BOX_EDGE.scrollbar]:!0,[BOX_EDGE.border]:!0,[BOX_EDGE.margin]:!0};export const SCROLLABLE_OVERFLOWS=new Set([\"auto\",\"scroll\"]);export const IS_CHROMIUM=(()=>{try{return window.navigator.userAgentData.brands.some((({brand:n})=>\"Chromium\"===n))}catch(n){return!1}})();","import{getStyle}from\"./getStyle.js\";export function isBlockElement(e){switch(getStyle(e).display){case\"none\":return null;case\"inline\":case\"contents\":return!1;default:return!0}}","import{getStyle}from\"./getStyle.js\";import{isContainingBlockForFixedElement}from\"./isContainingBlockForFixedElement.js\";export function isContainingBlockForAbsoluteElement(t){return\"static\"!==getStyle(t).position||isContainingBlockForFixedElement(t)}","export function isDocumentElement(e){return e instanceof HTMLHtmlElement}","import{getDistanceBetweenRects}from\"./utils/getDistanceBetweenRects.js\";import{getNormalizedRect}from\"./utils/getNormalizedRect.js\";export function getDistance(e,t){const c=getNormalizedRect(e),i=getNormalizedRect(t);return getDistanceBetweenRects(c,i)}","import{isIntersecting}from\"./isIntersecting.js\";import{getDistanceBetweenPoints}from\"./getDistanceBetweenPoints.js\";export function getDistanceBetweenRects(t,e){if(isIntersecting(t,e))return null;const n=t.left+t.width,i=t.top+t.height,o=e.left+e.width,s=e.top+e.height;return n<=e.left?i<=e.top?getDistanceBetweenPoints(n,i,e.left,e.top):t.top>=s?getDistanceBetweenPoints(n,t.top,e.left,s):e.left-n:t.left>=o?i<=e.top?getDistanceBetweenPoints(t.left,i,o,e.top):t.top>=s?getDistanceBetweenPoints(t.left,t.top,o,s):t.left-o:i<=e.top?e.top-i:t.top-s}","export function isIntersecting(t,e){return!(t.left+t.width<=e.left||e.left+e.width<=t.left||t.top+t.height<=e.top||e.top+e.height<=t.top)}","export function getDistanceBetweenPoints(t,e,n,o){return Math.sqrt(Math.pow(n-t,2)+Math.pow(o-e,2))}","import{getRect}from\"../getRect.js\";import{isRectObject}from\"./isRectObject.js\";export function getNormalizedRect(t){return isRectObject(t)?t:getRect(t)}","import{getWidth}from\"./getWidth.js\";import{getHeight}from\"./getHeight.js\";import{getOffset}from\"./getOffset.js\";import{isRectObject}from\"./utils/isRectObject.js\";export function getRect(t,e){let i=0,g=0;isRectObject(t)?(i=t.width,g=t.height):Array.isArray(t)?(i=getWidth(...t),g=getHeight(...t)):(i=getWidth(t),g=getHeight(t));const r=getOffset(t,e);return{width:i,height:g,...r,right:r.left+i,bottom:r.top+g}}","import{INCLUDE_WINDOW_SCROLLBAR,BOX_EDGE}from\"./utils/constants.js\";import{isWindow}from\"./utils/isWindow.js\";import{isDocument}from\"./utils/isDocument.js\";import{getWindowWidth}from\"./utils/getWindowWidth.js\";import{getDocumentWidth}from\"./utils/getDocumentWidth.js\";import{getElementWidth}from\"./utils/getElementWidth.js\";export function getWidth(t,i=BOX_EDGE.border){return isWindow(t)?getWindowWidth(t,INCLUDE_WINDOW_SCROLLBAR[i]):isDocument(t)?getDocumentWidth(t):getElementWidth(t,i)}","export function isWindow(n){return n instanceof Window}","export function isDocument(n){return n instanceof Document}","import{getPreciseScrollbarSize}from\"./getPreciseScrollbarSize.js\";export function getWindowWidth(e,r=!1){if(r)return e.innerWidth;const{innerWidth:t,document:i}=e,{documentElement:n}=i,{clientWidth:c}=n;return t-getPreciseScrollbarSize(n,\"y\",t-c)}","import{IS_CHROMIUM}from\"./constants.js\";import{getStyle}from\"./getStyle.js\";const SUBPIXEL_OFFSET=new Map;let testStyleElement=null,testParentElement=null,testChildElement=null;function getSubpixelScrollbarSize(t,e){const n=t.split(\".\");let l=SUBPIXEL_OFFSET.get(n[1]);if(void 0===l){testStyleElement||(testStyleElement=document.createElement(\"style\")),testStyleElement.innerHTML=`\\n #mezr-scrollbar-test::-webkit-scrollbar {\\n width: ${t} !important;\\n }\\n `,testParentElement&&testChildElement||(testParentElement=document.createElement(\"div\"),testChildElement=document.createElement(\"div\"),testParentElement.appendChild(testChildElement),testParentElement.id=\"mezr-scrollbar-test\",testParentElement.style.cssText=\"\\n all: unset !important;\\n position: fixed !important;\\n top: -200px !important;\\n left: 0px !important;\\n width: 100px !important;\\n height: 100px !important;\\n overflow: scroll !important;\\n pointer-events: none !important;\\n visibility: hidden !important;\\n \",testChildElement.style.cssText=\"\\n all: unset !important;\\n position: absolute !important;\\n inset: 0 !important;\\n \"),document.body.appendChild(testStyleElement),document.body.appendChild(testParentElement);l=testParentElement.getBoundingClientRect().width-testChildElement.getBoundingClientRect().width-e,SUBPIXEL_OFFSET.set(n[1],l),document.body.removeChild(testParentElement),document.body.removeChild(testStyleElement)}return e+l}export function getPreciseScrollbarSize(t,e,n){if(n<=0)return 0;if(IS_CHROMIUM){const n=getStyle(t,\"::-webkit-scrollbar\"),l=\"x\"===e?n.height:n.width,i=parseFloat(l);if(!Number.isNaN(i)&&!Number.isInteger(i))return getSubpixelScrollbarSize(l,i)}return n}","export function getDocumentWidth({documentElement:t}){return Math.max(t.scrollWidth,t.clientWidth,t.getBoundingClientRect().width)}","import{BOX_EDGE,SCROLLABLE_OVERFLOWS}from\"./constants.js\";import{getStyle}from\"./getStyle.js\";import{getPreciseScrollbarSize}from\"./getPreciseScrollbarSize.js\";import{isDocumentElement}from\"./isDocumentElement.js\";export function getElementWidth(t,e=BOX_EDGE.border){let{width:r}=t.getBoundingClientRect();if(e===BOX_EDGE.border)return r;const o=getStyle(t);return e===BOX_EDGE.margin?(r+=Math.max(0,parseFloat(o.marginLeft)||0),r+=Math.max(0,parseFloat(o.marginRight)||0),r):(r-=parseFloat(o.borderLeftWidth)||0,r-=parseFloat(o.borderRightWidth)||0,e===BOX_EDGE.scrollbar?r:(!isDocumentElement(t)&&SCROLLABLE_OVERFLOWS.has(o.overflowY)&&(r-=getPreciseScrollbarSize(t,\"y\",Math.round(r)-t.clientWidth)),e===BOX_EDGE.padding||(r-=parseFloat(o.paddingLeft)||0,r-=parseFloat(o.paddingRight)||0),r))}","import{INCLUDE_WINDOW_SCROLLBAR,BOX_EDGE}from\"./utils/constants.js\";import{isWindow}from\"./utils/isWindow.js\";import{isDocument}from\"./utils/isDocument.js\";import{getWindowHeight}from\"./utils/getWindowHeight.js\";import{getDocumentHeight}from\"./utils/getDocumentHeight.js\";import{getElementHeight}from\"./utils/getElementHeight.js\";export function getHeight(t,e=BOX_EDGE.border){return isWindow(t)?getWindowHeight(t,INCLUDE_WINDOW_SCROLLBAR[e]):isDocument(t)?getDocumentHeight(t):getElementHeight(t,e)}","import{getPreciseScrollbarSize}from\"./getPreciseScrollbarSize.js\";export function getWindowHeight(e,r=!1){if(r)return e.innerHeight;const{innerHeight:t,document:i}=e,{documentElement:n}=i,{clientHeight:c}=n;return t-getPreciseScrollbarSize(n,\"x\",t-c)}","export function getDocumentHeight({documentElement:t}){return Math.max(t.scrollHeight,t.clientHeight,t.getBoundingClientRect().height)}","import{BOX_EDGE,SCROLLABLE_OVERFLOWS}from\"./constants.js\";import{getStyle}from\"./getStyle.js\";import{getPreciseScrollbarSize}from\"./getPreciseScrollbarSize.js\";import{isDocumentElement}from\"./isDocumentElement.js\";export function getElementHeight(t,e=BOX_EDGE.border){let{height:r}=t.getBoundingClientRect();if(e===BOX_EDGE.border)return r;const o=getStyle(t);return e===BOX_EDGE.margin?(r+=Math.max(0,parseFloat(o.marginTop)||0),r+=Math.max(0,parseFloat(o.marginBottom)||0),r):(r-=parseFloat(o.borderTopWidth)||0,r-=parseFloat(o.borderBottomWidth)||0,e===BOX_EDGE.scrollbar?r:(!isDocumentElement(t)&&SCROLLABLE_OVERFLOWS.has(o.overflowX)&&(r-=getPreciseScrollbarSize(t,\"x\",Math.round(r)-t.clientHeight)),e===BOX_EDGE.padding||(r-=parseFloat(o.paddingTop)||0,r-=parseFloat(o.paddingBottom)||0),r))}","import{isRectObject}from\"./utils/isRectObject.js\";import{isDocument}from\"./utils/isDocument.js\";import{getOffsetFromDocument}from\"./utils/getOffsetFromDocument.js\";export function getOffset(t,e){const o=isRectObject(t)?{left:t.left,top:t.top}:Array.isArray(t)?getOffsetFromDocument(...t):getOffsetFromDocument(t);if(e&&!isDocument(e)){const t=isRectObject(e)?e:Array.isArray(e)?getOffsetFromDocument(e[0],e[1]):getOffsetFromDocument(e);o.left-=t.left,o.top-=t.top}return o}","export function isRectObject(t){return t?.constructor===Object}","import{BOX_EDGE}from\"./constants.js\";import{getStyle}from\"./getStyle.js\";import{isDocument}from\"./isDocument.js\";import{isWindow}from\"./isWindow.js\";export function getOffsetFromDocument(t,o=BOX_EDGE.border){const e={left:0,top:0};if(isDocument(t))return e;if(isWindow(t))return e.left+=t.scrollX||0,e.top+=t.scrollY||0,e;const r=t.ownerDocument.defaultView;r&&(e.left+=r.scrollX||0,e.top+=r.scrollY||0);const n=t.getBoundingClientRect();if(e.left+=n.left,e.top+=n.top,o===BOX_EDGE.border)return e;const l=getStyle(t);return o===BOX_EDGE.margin?(e.left-=Math.max(0,parseFloat(l.marginLeft)||0),e.top-=Math.max(0,parseFloat(l.marginTop)||0),e):(e.left+=parseFloat(l.borderLeftWidth)||0,e.top+=parseFloat(l.borderTopWidth)||0,o===BOX_EDGE.scrollbar||o===BOX_EDGE.padding||(e.left+=parseFloat(l.paddingLeft)||0,e.top+=parseFloat(l.paddingTop)||0),e)}","import{getNormalizedRect}from\"./utils/getNormalizedRect.js\";export function getIntersection(t,...e){const o={...getNormalizedRect(t),right:0,bottom:0};for(const t of e){const e=getNormalizedRect(t),i=Math.max(o.left,e.left),h=Math.min(o.left+o.width,e.left+e.width);if(h<=i)return null;const r=Math.max(o.top,e.top),l=Math.min(o.top+o.height,e.height+e.top);if(l<=r)return null;o.left=i,o.top=r,o.width=h-i,o.height=l-r}return o.right=o.left+o.width,o.bottom=o.top+o.height,o}","import{getStyle}from\"./utils/getStyle.js\";import{getContainingBlock}from\"./getContainingBlock.js\";import{isWindow}from\"./utils/isWindow.js\";export function getOffsetContainer(n,t={}){const i=getStyle(n),{display:o}=i;if(\"none\"===o||\"contents\"===o)return null;const e=t.position||getStyle(n).position,{skipDisplayNone:s,container:r}=t;switch(e){case\"relative\":return n;case\"fixed\":return getContainingBlock(n,{container:r,position:e,skipDisplayNone:s});case\"absolute\":{const t=getContainingBlock(n,{container:r,position:e,skipDisplayNone:s});return isWindow(t)?n.ownerDocument:t}default:return null}}","import{getNormalizedRect}from\"./utils/getNormalizedRect.js\";export function getOverflow(t,e){const o=getNormalizedRect(t),i=getNormalizedRect(e);return{left:i.left-o.left,right:o.left+o.width-(i.left+i.width),top:i.top-o.top,bottom:o.top+o.height-(i.top+i.height)}}"],"names":["$882b296db6123935$var$getOrCreateEventData","e","t","i","get","$882b296db6123935$var$EventData","set","constructor","idMap","Map","fnMap","onceList","Set","emitList","add","s","n","has","Error","delId","r","push","delete","size","delFn","forEach","$882b296db6123935$export$4293555f241ae35a","idDedupeMode","allowDuplicateListeners","_events","_getListeners","values","on","Symbol","once","off","clear","emit","length","listenerCount","$df4a713e26511813$export$ef9b1dc363f184d9","PAUSED","ON_DEMAND","CONTINUOUS","$45554ebda029bd05$var$STYLE_DECLARATION_CACHE","WeakMap","$45554ebda029bd05$export$3d2f074408bd1b82","window","getComputedStyle","C","deref","WeakRef","$70e6b31ea6202e28$export$af54264dae9065e6","$70e6b31ea6202e28$export$e44ffb50cc242ec5","document","navigator","vendor","indexOf","userAgent","$70e6b31ea6202e28$export$11fd24d838ebde87","content","padding","scrollbar","border","margin","$70e6b31ea6202e28$export$76e909bcfd8ba196","$70e6b31ea6202e28$export$d2ad2856e215d28e","$70e6b31ea6202e28$export$cd414719242f618c","userAgentData","brands","some","brand","$ac4a87157cb8fded$export$fab73c3646bf1f5e","display","$19cb8cdbc5921691$export$e5ce114ae0e5f4e8","filter","backdropFilter","willChange","transform","perspective","contentVisibility","o","contain","f","c","$8d1ba90c23ec3360$export$d8a62a489b442872","HTMLHtmlElement","$1f38751365ebdabf$export$940d8225183e1404","ownerDocument","defaultView","position","skipDisplayNone","container","parentElement","documentElement","l","$6473c4721ef9a7f0$export$53137579a3174918","Math","sqrt","pow","$0dd5d633d9254ede$export$5a096129d439f843","Window","$88986006632f0ab8$export$62858bae88b53fd0","Document","$9a36d0396b9b09d4$var$SUBPIXEL_OFFSET","$9a36d0396b9b09d4$var$testStyleElement","$9a36d0396b9b09d4$var$testParentElement","$9a36d0396b9b09d4$var$testChildElement","$9a36d0396b9b09d4$export$5ad86f4734d24a64","height","width","parseFloat","Number","isNaN","isInteger","$9a36d0396b9b09d4$var$getSubpixelScrollbarSize","split","createElement","innerHTML","appendChild","id","style","cssText","body","getBoundingClientRect","removeChild","$2e59c48b8f000a71$export$3c49c185de0c2bfc","innerWidth","clientWidth","max","scrollWidth","marginLeft","marginRight","borderLeftWidth","borderRightWidth","overflowY","round","paddingLeft","paddingRight","$646cecfa59ec4923$export$c08559766941f856","innerHeight","clientHeight","scrollHeight","marginTop","marginBottom","borderTopWidth","borderBottomWidth","overflowX","paddingTop","paddingBottom","$4de8edd731addea8$export$ff047630cae37d8e","Object","$faeeed2de97ac6f7$export$9f1480883798e819","left","top","scrollX","scrollY","$d927f435c3d7e8ab$export$622cea445a1c5b7d","Array","isArray","$4fec7741c67a29fc$export$4b834cebd9e5cebe","g","right","bottom","$3fe9db1ad94d3e7c$export$e4e616e82e79ab9d","$4effe6f7501c7f59$export$243d7fadef466e38","$ac6f441b4b448e14$export$61fde4a8bbe7f5d5","start","move","cancel","end","destroy","$ac6f441b4b448e14$export$2176a6ff266bf511","drag","isDestroyed","_emitter","_createDragData","x","y","_updateDragData","_resetDragData","_start","_move","_end","_cancel","type","$ac6f441b4b448e14$export$9138efc7ba4fca22","$ac6f441b4b448e14$export$5fd1e257088db342","$ac6f441b4b448e14$export$e94d57566be028aa","phases","autoTick","requestFrame","$df4a713e26511813$export$789135d3cf084551","requestAnimationFrame","cancelAnimationFrame","performance","Date","now","setTimeout","clearTimeout","_autoTick","_requestFrame","_cancelFrame","_queue","tick","bind","_kickstart","a","u","_request","$ac6f441b4b448e14$var$de","pointerId","changedTouches","identifier","$ac6f441b4b448e14$var$he","$ac6f441b4b448e14$var$J","defineProperty","addEventListener","removeEventListener","$ac6f441b4b448e14$var$Oe","$ac6f441b4b448e14$var$We","PointerEvent","$ac6f441b4b448e14$var$me","capture","passive","$ac6f441b4b448e14$var$ue","$ac6f441b4b448e14$var$X","pointer","touch","mouse","$ac6f441b4b448e14$export$b26af955418d6638","listenerOptions","sourceEvents","startPredicate","button","element","_areWindowListenersBound","_startPredicate","_listenerOptions","_sourceEvents","_onStart","_onMove","_onCancel","_onEnd","_getTrackedPointerEventData","pointerType","clientX","clientY","srcEvent","target","_bindWindowListeners","_resetDrag","_unbindWindowListeners","updateSettings","$ac6f441b4b448e14$export$44d67f2a438aeba9","moveDistance","key","activeElement","d","movePredicate","cancelPredicate","endPredicate","_moveDistance","_movePredicate","_cancelPredicate","_endPredicate","_onKeyDown","preventDefault","$ac6f441b4b448e14$var$Z","sensor","isEnded","isStarted","startEvent","nextMoveEvent","prevMoveEvent","endEvent","items","$ac6f441b4b448e14$var$ee","data","elementContainer","elementOffsetContainer","dragContainer","dragOffsetContainer","initialTransform","frozenProps","unfrozenProps","pX","pY","_updateDiffX","_updateDiffY","_moveDiffX","_moveDiffY","_containerDiffX","_containerDiffY","$ac6f441b4b448e14$var$pe","$ac6f441b4b448e14$var$qe","$ac6f441b4b448e14$var$te","$ac6f441b4b448e14$var$Ue","$ac6f441b4b448e14$var$ze","$ac6f441b4b448e14$var$fe","$ac6f441b4b448e14$var$ht","getElements","releaseElements","getFrozenProps","getStartPosition","setPosition","item","getPositionChange","event","prevEvent","$ac6f441b4b448e14$export$f2a139e5d18b9882","sensors","settings","_parseSettings","plugins","_sensorData","_startId","_moveId","_updateId","_onScroll","_prepareStart","_applyStart","_prepareMove","_applyMove","_preparePositionUpdate","_applyPositionUpdate","predicateState","predicateEvent","onMove","onEnd","_emit","draggable","resolveStartPredicate","rejectStartPredicate","updatePosition","stop","map","isConnected","b","m","S","hasOwnProperty","assign","phase","elements","use","$ac6f441b4b448e14$var$B","_data","_createObject","_onPut","pick","pop","put","reset","$ac6f441b4b448e14$var$ge","h","min","$ac6f441b4b448e14$var$w","$ac6f441b4b448e14$var$Se","$ac6f441b4b448e14$var$N","pageXOffset","scrollLeft","$ac6f441b4b448e14$var$Ee","$ac6f441b4b448e14$var$q","pageYOffset","scrollTop","$ac6f441b4b448e14$var$ve","$ac6f441b4b448e14$var$_e","$ac6f441b4b448e14$var$xe","$ac6f441b4b448e14$var$Fe","$ac6f441b4b448e14$var$I","direction","threshold","distance","value","maxValue","duration","speed","deltaTime","isEnding","$ac6f441b4b448e14$export$5bbd74ab6c855dff","$ac6f441b4b448e14$export$3eeb7a7b68c92567","forward","reverse","$ac6f441b4b448e14$var$ne","none","$ac6f441b4b448e14$var$H","up","down","$ac6f441b4b448e14$export$c9fbd1f9176bc8ed","$ac6f441b4b448e14$var$ye","$ac6f441b4b448e14$var$$e","$ac6f441b4b448e14$var$re","ceil","floor","$ac6f441b4b448e14$var$be","$ac6f441b4b448e14$var$De","$ac6f441b4b448e14$var$Pe","positionX","positionY","directionX","directionY","overlapCheckRequestTime","$ac6f441b4b448e14$var$Te","requestX","requestY","action","addRequest","removeRequest","computeScrollValues","scroll","scrollTo","$ac6f441b4b448e14$var$we","isActive","NaN","onStop","hasReachedEnd","computeCurrentScrollValue","computeNextScrollValue","computeSpeed","onStart","overlapCheckInterval","_actions","_isDestroyed","_isTicking","_tickTime","_tickDeltaTime","_requests","_itemData","_requestPool","_actionPool","_frameRead","_frameWrite","_updateItems","_updateRequests","_updateActions","_applyActions","_startTicking","_stopTicking","_getItemClientRect","clientRect","_requestItemScroll","_cancelItemScroll","_checkItemOverlap","inertAreaSize","targets","E","V","U","se","Ce","Le","ae","A","Ke","le","axis","ce","R","priority","k","F","j","P","O","T","L","z","_updateScrollRequest","smoothStop","scrollPadding","_requestAction","onPrepareScrollEffect","onApplyScrollEffect","addItem","removeItem","splice","isItemScrollingX","isItemScrollingY","isItemScrolling","slice","$ac6f441b4b448e14$var$Qe","$ac6f441b4b448e14$var$oe","$aeeec567ed097697$var$element","querySelector","$aeeec567ed097697$var$draggable","timeout","fallback","cancelable","timeStamp","$ac6f441b4b448e14$var$et","parentNode","Element","ShadowRoot","host","prevX","prevY","changeX","changeXAbs","abs","overshoot","changeY","changeYAbs","classList","remove"],"version":3,"file":"index.f0b19664.js.map"} \ No newline at end of file diff --git a/docs/public/examples/003-draggable-snap-to-grid/index.html b/docs/public/examples/003-draggable-snap-to-grid/index.html new file mode 100644 index 0000000..ffdefc1 --- /dev/null +++ b/docs/public/examples/003-draggable-snap-to-grid/index.html @@ -0,0 +1 @@ +Draggable - Snap To Grid
\ No newline at end of file diff --git a/examples/001-draggable-basic/index.css b/examples/001-draggable-basic/index.css new file mode 100644 index 0000000..236398b --- /dev/null +++ b/examples/001-draggable-basic/index.css @@ -0,0 +1,6 @@ +.draggable { + position: absolute; + left: 50%; + top: 50%; + transform: translateX(-50%) translateY(-50%); +} diff --git a/examples/001-draggable-basic/index.html b/examples/001-draggable-basic/index.html new file mode 100644 index 0000000..aecc061 --- /dev/null +++ b/examples/001-draggable-basic/index.html @@ -0,0 +1,17 @@ + + + + + Draggable - Basic + + + + + +
+ + + diff --git a/examples/001-draggable-basic/index.ts b/examples/001-draggable-basic/index.ts new file mode 100644 index 0000000..abbba4e --- /dev/null +++ b/examples/001-draggable-basic/index.ts @@ -0,0 +1,22 @@ +import { + Draggable, + PointerSensor, + KeyboardMotionSensor, + createPointerSensorStartPredicate, +} from '../../dist/dragdoll'; + +const element = document.querySelector('.draggable') as HTMLElement; +const pointerSensor = new PointerSensor(element); +const keyboardSensor = new KeyboardMotionSensor(); +const draggable = new Draggable([pointerSensor, keyboardSensor], { + getElements: () => [element], + startPredicate: createPointerSensorStartPredicate(), +}); + +draggable.on('start', () => { + element.classList.add('dragging'); +}); + +draggable.on('end', () => { + element.classList.remove('dragging'); +}); diff --git a/examples/002-draggable-autoscroll/index.css b/examples/002-draggable-autoscroll/index.css new file mode 100644 index 0000000..1089d64 --- /dev/null +++ b/examples/002-draggable-autoscroll/index.css @@ -0,0 +1,14 @@ +body { + height: 300%; +} +.drag-container { + position: fixed; + left: 10px; + top: 10px; +} +.draggable { + position: absolute; + left: 50%; + top: 50%; + transform: translateX(-50%) translateY(-50%); +} diff --git a/examples/002-draggable-autoscroll/index.html b/examples/002-draggable-autoscroll/index.html new file mode 100644 index 0000000..a6bc2b0 --- /dev/null +++ b/examples/002-draggable-autoscroll/index.html @@ -0,0 +1,18 @@ + + + + + Draggable - Autoscroll + + + + + +
+
+ + + diff --git a/examples/002-draggable-autoscroll/index.ts b/examples/002-draggable-autoscroll/index.ts new file mode 100644 index 0000000..4d7a64f --- /dev/null +++ b/examples/002-draggable-autoscroll/index.ts @@ -0,0 +1,36 @@ +import { + Draggable, + PointerSensor, + KeyboardMotionSensor, + createPointerSensorStartPredicate, + autoScrollPlugin, +} from '../../dist/dragdoll'; + +const element = document.querySelector('.draggable') as HTMLElement; +const container = document.querySelector('.drag-container') as HTMLElement; +const pointerSensor = new PointerSensor(element); +const keyboardSensor = new KeyboardMotionSensor(); +const draggable = new Draggable([pointerSensor, keyboardSensor], { + container, + getElements: () => [element], + getFrozenProps: () => ['left', 'top'], + startPredicate: createPointerSensorStartPredicate(), +}).use( + autoScrollPlugin({ + targets: [ + { + element: window, + axis: 'y', + padding: { top: Infinity, bottom: Infinity }, + }, + ], + }), +); + +draggable.on('start', () => { + element.classList.add('dragging'); +}); + +draggable.on('end', () => { + element.classList.remove('dragging'); +}); diff --git a/examples/003-draggable-snap-to-grid/index.css b/examples/003-draggable-snap-to-grid/index.css new file mode 100644 index 0000000..ba0abed --- /dev/null +++ b/examples/003-draggable-snap-to-grid/index.css @@ -0,0 +1,7 @@ +.draggable { + position: absolute; + left: 0; + top: 0; + width: 80px; + height: 80px; +} diff --git a/examples/003-draggable-snap-to-grid/index.html b/examples/003-draggable-snap-to-grid/index.html new file mode 100644 index 0000000..0e3cc30 --- /dev/null +++ b/examples/003-draggable-snap-to-grid/index.html @@ -0,0 +1,17 @@ + + + + + Draggable - Snap To Grid + + + + + +
+ + + diff --git a/examples/003-draggable-snap-to-grid/index.ts b/examples/003-draggable-snap-to-grid/index.ts new file mode 100644 index 0000000..ce21c22 --- /dev/null +++ b/examples/003-draggable-snap-to-grid/index.ts @@ -0,0 +1,65 @@ +import { + Draggable, + PointerSensor, + KeyboardSensor, + createPointerSensorStartPredicate, +} from '../../dist/dragdoll'; + +const GRID_WIDTH = 40; +const GRID_HEIGHT = 40; + +const element = document.querySelector('.draggable') as HTMLElement; +const pointerSensor = new PointerSensor(element); +const keyboardSensor = new KeyboardSensor({ + moveDistance: { x: GRID_WIDTH, y: GRID_HEIGHT }, +}); +const draggable = new Draggable([pointerSensor, keyboardSensor], { + getElements: () => [element], + startPredicate: createPointerSensorStartPredicate(), + getPositionChange: ({ startEvent, event, item }) => { + let { prevX = startEvent.x, prevY = startEvent.y } = item.data; + + let changeX = event.x - prevX; + let changeXAbs = Math.abs(changeX); + if (changeXAbs >= GRID_WIDTH) { + const overshoot = changeXAbs % GRID_WIDTH; + if (changeX > 0) { + changeX -= overshoot; + item.data.prevX = event.x - overshoot; + } else { + changeX += overshoot; + item.data.prevX = event.x + overshoot; + } + } else { + changeX = 0; + } + + let changeY = event.y - prevY; + let changeYAbs = Math.abs(changeY); + if (changeYAbs >= GRID_HEIGHT) { + const overshoot = changeYAbs % GRID_HEIGHT; + if (changeY > 0) { + changeY -= overshoot; + item.data.prevY = event.y - overshoot; + } else { + changeY += overshoot; + item.data.prevY = event.y + overshoot; + } + } else { + changeY = 0; + } + + return { + x: changeX, + y: changeY, + }; + }, +}); + +draggable.on('start', () => { + element.classList.add('dragging'); +}); + +draggable.on('end', () => { + element.classList.remove('dragging'); +}); diff --git a/examples/assets/base.css b/examples/assets/base.css new file mode 100644 index 0000000..93a8a2a --- /dev/null +++ b/examples/assets/base.css @@ -0,0 +1,64 @@ +/* VARIABLES */ + +:root { + --bg-color: #161618; + --color: rgba(255, 255, 245, 0.86); + --theme-color: #ff5555; + --card-color: #fff; + --card-bgColor: var(--theme-color); + --card-color--focus: var(--card-color); + --card-bgColor--focus: #db55ff; + --card-color--drag: var(--card-color); + --card-bgColor--drag: #55ff9c; +} + +/* BASE */ + +* { + box-sizing: border-box; +} +html { + height: 100%; + background: var(--bg-color); + color: var(--color); + background-size: 40px 40px; + background-image: linear-gradient(to right, rgba(255, 255, 255, 0.1) 1px, transparent 1px), + linear-gradient(to bottom, rgba(255, 255, 255, 0.1) 1px, transparent 1px); +} +body { + margin: 0; +} + +/* CARD */ + +.card { + width: 100px; + height: 100px; + background-color: var(--card-bgColor); + color: var(--card-color); + border-radius: 8px; +} +@media (hover: hover) and (pointer: fine) { + .card:hover, + .card:focus-visible { + background-color: var(--card-bgColor--focus); + color: var(--card-bgColor--focus); + } + .card:focus-visible { + outline-offset: 4px; + outline: 1px solid var(--card-bgColor--focus); + } +} +.card.draggable { + cursor: grab; +} +.card.dragging { + cursor: grabbing; + background-color: var(--card-bgColor--drag); + color: var(--card-bgColor--drag); +} +@media (hover: hover) and (pointer: fine) { + .card.dragging:focus-visible { + outline: 1px solid var(--card-bgColor--drag); + } +} diff --git a/examples/basic/index.html b/examples/basic/index.html deleted file mode 100644 index 571ff32..0000000 --- a/examples/basic/index.html +++ /dev/null @@ -1,104 +0,0 @@ - - - - - DragDoll - PointerSensor - - - - -
-
-
-
-
-
-
- - - - - - diff --git a/karma.browserstack.cjs b/karma.browserstack.cjs index 6eeefdd..08d5bef 100644 --- a/karma.browserstack.cjs +++ b/karma.browserstack.cjs @@ -5,12 +5,7 @@ module.exports = function (config) { basePath: '', frameworks: ['mocha'], plugins: ['karma-mocha', 'karma-mocha-reporter', 'karma-browserstack-launcher'], - files: [ - './node_modules/chai/chai.js', - './node_modules/eventti/dist/eventti.umd.js', - './node_modules/tikki/dist/tikki.umd.js', - './tests/dist/tests.umd.js', - ], + files: ['./tests/dist/tests.global.js'], reporters: ['mocha', 'BrowserStack'], logLevel: config.LOG_INFO, colors: true, diff --git a/karma.chrome-local.cjs b/karma.chrome-local.cjs deleted file mode 100644 index a9ed93b..0000000 --- a/karma.chrome-local.cjs +++ /dev/null @@ -1,18 +0,0 @@ -module.exports = function (config) { - config.set({ - basePath: '', - frameworks: ['mocha'], - plugins: ['karma-mocha', 'karma-mocha-reporter', 'karma-chrome-launcher'], - files: [ - './node_modules/chai/chai.js', - './node_modules/eventti/dist/eventti.umd.js', - './node_modules/tikki/dist/tikki.umd.js', - './tests/dist/tests.umd.js', - ], - reporters: ['mocha'], - singleRun: true, - logLevel: config.LOG_INFO, - colors: true, - browsers: ['Chrome'], - }); -}; diff --git a/karma.cjs b/karma.cjs new file mode 100644 index 0000000..73dec1a --- /dev/null +++ b/karma.cjs @@ -0,0 +1,18 @@ +module.exports = function (config) { + config.set({ + basePath: '', + frameworks: ['mocha'], + plugins: [ + 'karma-mocha', + 'karma-mocha-reporter', + 'karma-chrome-launcher', + 'karma-firefox-launcher', + ], + files: ['./tests/dist/tests.global.js'], + reporters: ['mocha'], + singleRun: true, + logLevel: config.LOG_INFO, + colors: true, + browsers: ['Chrome', 'Firefox'], + }); +}; diff --git a/package-lock.json b/package-lock.json index a6d40f2..16677c7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,40 +1,43 @@ { "name": "dragdoll", - "version": "0.1.0", - "lockfileVersion": 2, + "version": "0.2.0", + "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "dragdoll", - "version": "0.1.0", + "version": "0.2.0", "license": "MIT", "devDependencies": { - "@rollup/plugin-typescript": "11.1.2", - "@types/chai": "4.3.5", - "@types/mocha": "10.0.1", - "chai": "4.3.7", - "csstype": "3.1.2", - "del-cli": "5.0.0", + "@parcel/config-default": "2.10.3", + "@types/chai": "4.3.11", + "@types/mocha": "10.0.6", + "chai": "4.3.10", + "cpy-cli": "5.0.0", "dotenv": "16.3.1", "eventti": "3.0.0", "gzip-size-cli": "5.1.0", + "jsdom": "23.0.1", "karma": "6.4.2", "karma-browserstack-launcher": "1.6.0", "karma-chrome-launcher": "3.2.0", + "karma-firefox-launcher": "2.1.2", "karma-mocha": "2.0.1", "karma-mocha-reporter": "2.2.5", + "mezr": "1.1.0", "mocha": "10.2.0", - "prettier": "3.0.0", - "rollup": "3.26.2", - "rollup-plugin-dts": "5.3.0", - "terser": "5.18.2", + "parcel": "2.10.3", + "prettier": "3.1.1", + "rimraf": "5.0.5", "tikki": "2.0.0", - "typescript": "5.1.6", - "vitepress": "1.0.0-beta.5", - "vue": "3.3.4" + "tsup": "8.0.1", + "typescript": "5.3.3", + "vitepress": "1.0.0-rc.32", + "vue": "3.3.12" }, "peerDependencies": { "eventti": "^3.0.0", + "mezr": "^1.1.0", "tikki": "^2.0.0" } }, @@ -84,173 +87,316 @@ } }, "node_modules/@algolia/cache-browser-local-storage": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@algolia/cache-browser-local-storage/-/cache-browser-local-storage-4.18.0.tgz", - "integrity": "sha512-rUAs49NLlO8LVLgGzM4cLkw8NJLKguQLgvFmBEe3DyzlinoqxzQMHfKZs6TSq4LZfw/z8qHvRo8NcTAAUJQLcw==", + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@algolia/cache-browser-local-storage/-/cache-browser-local-storage-4.20.0.tgz", + "integrity": "sha512-uujahcBt4DxduBTvYdwO3sBfHuJvJokiC3BP1+O70fglmE1ShkH8lpXqZBac1rrU3FnNYSUs4pL9lBdTKeRPOQ==", "dev": true, "dependencies": { - "@algolia/cache-common": "4.18.0" + "@algolia/cache-common": "4.20.0" } }, "node_modules/@algolia/cache-common": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@algolia/cache-common/-/cache-common-4.18.0.tgz", - "integrity": "sha512-BmxsicMR4doGbeEXQu8yqiGmiyvpNvejYJtQ7rvzttEAMxOPoWEHrWyzBQw4x7LrBY9pMrgv4ZlUaF8PGzewHg==", + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@algolia/cache-common/-/cache-common-4.20.0.tgz", + "integrity": "sha512-vCfxauaZutL3NImzB2G9LjLt36vKAckc6DhMp05An14kVo8F1Yofb6SIl6U3SaEz8pG2QOB9ptwM5c+zGevwIQ==", "dev": true }, "node_modules/@algolia/cache-in-memory": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@algolia/cache-in-memory/-/cache-in-memory-4.18.0.tgz", - "integrity": "sha512-evD4dA1nd5HbFdufBxLqlJoob7E2ozlqJZuV3YlirNx5Na4q1LckIuzjNYZs2ddLzuTc/Xd5O3Ibf7OwPskHxw==", + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@algolia/cache-in-memory/-/cache-in-memory-4.20.0.tgz", + "integrity": "sha512-Wm9ak/IaacAZXS4mB3+qF/KCoVSBV6aLgIGFEtQtJwjv64g4ePMapORGmCyulCFwfePaRAtcaTbMcJF+voc/bg==", "dev": true, "dependencies": { - "@algolia/cache-common": "4.18.0" + "@algolia/cache-common": "4.20.0" } }, "node_modules/@algolia/client-account": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@algolia/client-account/-/client-account-4.18.0.tgz", - "integrity": "sha512-XsDnlROr3+Z1yjxBJjUMfMazi1V155kVdte6496atvBgOEtwCzTs3A+qdhfsAnGUvaYfBrBkL0ThnhMIBCGcew==", + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@algolia/client-account/-/client-account-4.20.0.tgz", + "integrity": "sha512-GGToLQvrwo7am4zVkZTnKa72pheQeez/16sURDWm7Seyz+HUxKi3BM6fthVVPUEBhtJ0reyVtuK9ArmnaKl10Q==", "dev": true, "dependencies": { - "@algolia/client-common": "4.18.0", - "@algolia/client-search": "4.18.0", - "@algolia/transporter": "4.18.0" + "@algolia/client-common": "4.20.0", + "@algolia/client-search": "4.20.0", + "@algolia/transporter": "4.20.0" } }, "node_modules/@algolia/client-analytics": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-4.18.0.tgz", - "integrity": "sha512-chEUSN4ReqU7uRQ1C8kDm0EiPE+eJeAXiWcBwLhEynfNuTfawN9P93rSZktj7gmExz0C8XmkbBU19IQ05wCNrQ==", + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-4.20.0.tgz", + "integrity": "sha512-EIr+PdFMOallRdBTHHdKI3CstslgLORQG7844Mq84ib5oVFRVASuuPmG4bXBgiDbcsMLUeOC6zRVJhv1KWI0ug==", "dev": true, "dependencies": { - "@algolia/client-common": "4.18.0", - "@algolia/client-search": "4.18.0", - "@algolia/requester-common": "4.18.0", - "@algolia/transporter": "4.18.0" + "@algolia/client-common": "4.20.0", + "@algolia/client-search": "4.20.0", + "@algolia/requester-common": "4.20.0", + "@algolia/transporter": "4.20.0" } }, "node_modules/@algolia/client-common": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-4.18.0.tgz", - "integrity": "sha512-7N+soJFP4wn8tjTr3MSUT/U+4xVXbz4jmeRfWfVAzdAbxLAQbHa0o/POSdTvQ8/02DjCLelloZ1bb4ZFVKg7Wg==", + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-4.20.0.tgz", + "integrity": "sha512-P3WgMdEss915p+knMMSd/fwiHRHKvDu4DYRrCRaBrsfFw7EQHon+EbRSm4QisS9NYdxbS04kcvNoavVGthyfqQ==", "dev": true, "dependencies": { - "@algolia/requester-common": "4.18.0", - "@algolia/transporter": "4.18.0" + "@algolia/requester-common": "4.20.0", + "@algolia/transporter": "4.20.0" } }, "node_modules/@algolia/client-personalization": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@algolia/client-personalization/-/client-personalization-4.18.0.tgz", - "integrity": "sha512-+PeCjODbxtamHcPl+couXMeHEefpUpr7IHftj4Y4Nia1hj8gGq4VlIcqhToAw8YjLeCTfOR7r7xtj3pJcYdP8A==", + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@algolia/client-personalization/-/client-personalization-4.20.0.tgz", + "integrity": "sha512-N9+zx0tWOQsLc3K4PVRDV8GUeOLAY0i445En79Pr3zWB+m67V+n/8w4Kw1C5LlbHDDJcyhMMIlqezh6BEk7xAQ==", "dev": true, "dependencies": { - "@algolia/client-common": "4.18.0", - "@algolia/requester-common": "4.18.0", - "@algolia/transporter": "4.18.0" + "@algolia/client-common": "4.20.0", + "@algolia/requester-common": "4.20.0", + "@algolia/transporter": "4.20.0" } }, "node_modules/@algolia/client-search": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-4.18.0.tgz", - "integrity": "sha512-F9xzQXTjm6UuZtnsLIew6KSraXQ0AzS/Ee+OD+mQbtcA/K1sg89tqb8TkwjtiYZ0oij13u3EapB3gPZwm+1Y6g==", + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-4.20.0.tgz", + "integrity": "sha512-zgwqnMvhWLdpzKTpd3sGmMlr4c+iS7eyyLGiaO51zDZWGMkpgoNVmltkzdBwxOVXz0RsFMznIxB9zuarUv4TZg==", "dev": true, "dependencies": { - "@algolia/client-common": "4.18.0", - "@algolia/requester-common": "4.18.0", - "@algolia/transporter": "4.18.0" + "@algolia/client-common": "4.20.0", + "@algolia/requester-common": "4.20.0", + "@algolia/transporter": "4.20.0" } }, "node_modules/@algolia/logger-common": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@algolia/logger-common/-/logger-common-4.18.0.tgz", - "integrity": "sha512-46etYgSlkoKepkMSyaoriSn2JDgcrpc/nkOgou/lm0y17GuMl9oYZxwKKTSviLKI5Irk9nSKGwnBTQYwXOYdRg==", + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@algolia/logger-common/-/logger-common-4.20.0.tgz", + "integrity": "sha512-xouigCMB5WJYEwvoWW5XDv7Z9f0A8VoXJc3VKwlHJw/je+3p2RcDXfksLI4G4lIVncFUYMZx30tP/rsdlvvzHQ==", "dev": true }, "node_modules/@algolia/logger-console": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@algolia/logger-console/-/logger-console-4.18.0.tgz", - "integrity": "sha512-3P3VUYMl9CyJbi/UU1uUNlf6Z8N2ltW3Oqhq/nR7vH0CjWv32YROq3iGWGxB2xt3aXobdUPXs6P0tHSKRmNA6g==", + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@algolia/logger-console/-/logger-console-4.20.0.tgz", + "integrity": "sha512-THlIGG1g/FS63z0StQqDhT6bprUczBI8wnLT3JWvfAQDZX5P6fCg7dG+pIrUBpDIHGszgkqYEqECaKKsdNKOUA==", "dev": true, "dependencies": { - "@algolia/logger-common": "4.18.0" + "@algolia/logger-common": "4.20.0" } }, "node_modules/@algolia/requester-browser-xhr": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-4.18.0.tgz", - "integrity": "sha512-/AcWHOBub2U4TE/bPi4Gz1XfuLK6/7dj4HJG+Z2SfQoS1RjNLshZclU3OoKIkFp8D2NC7+BNsPvr9cPLyW8nyQ==", + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-4.20.0.tgz", + "integrity": "sha512-HbzoSjcjuUmYOkcHECkVTwAelmvTlgs48N6Owt4FnTOQdwn0b8pdht9eMgishvk8+F8bal354nhx/xOoTfwiAw==", "dev": true, "dependencies": { - "@algolia/requester-common": "4.18.0" + "@algolia/requester-common": "4.20.0" } }, "node_modules/@algolia/requester-common": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@algolia/requester-common/-/requester-common-4.18.0.tgz", - "integrity": "sha512-xlT8R1qYNRBCi1IYLsx7uhftzdfsLPDGudeQs+xvYB4sQ3ya7+ppolB/8m/a4F2gCkEO6oxpp5AGemM7kD27jA==", + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@algolia/requester-common/-/requester-common-4.20.0.tgz", + "integrity": "sha512-9h6ye6RY/BkfmeJp7Z8gyyeMrmmWsMOCRBXQDs4mZKKsyVlfIVICpcSibbeYcuUdurLhIlrOUkH3rQEgZzonng==", "dev": true }, "node_modules/@algolia/requester-node-http": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-4.18.0.tgz", - "integrity": "sha512-TGfwj9aeTVgOUhn5XrqBhwUhUUDnGIKlI0kCBMdR58XfXcfdwomka+CPIgThRbfYw04oQr31A6/95ZH2QVJ9UQ==", + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-4.20.0.tgz", + "integrity": "sha512-ocJ66L60ABSSTRFnCHIEZpNHv6qTxsBwJEPfYaSBsLQodm0F9ptvalFkHMpvj5DfE22oZrcrLbOYM2bdPJRHng==", "dev": true, "dependencies": { - "@algolia/requester-common": "4.18.0" + "@algolia/requester-common": "4.20.0" } }, "node_modules/@algolia/transporter": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@algolia/transporter/-/transporter-4.18.0.tgz", - "integrity": "sha512-xbw3YRUGtXQNG1geYFEDDuFLZt4Z8YNKbamHPkzr3rWc6qp4/BqEeXcI2u/P/oMq2yxtXgMxrCxOPA8lyIe5jw==", + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@algolia/transporter/-/transporter-4.20.0.tgz", + "integrity": "sha512-Lsii1pGWOAISbzeyuf+r/GPhvHMPHSPrTDWNcIzOE1SG1inlJHICaVe2ikuoRjcpgxZNU54Jl+if15SUCsaTUg==", "dev": true, "dependencies": { - "@algolia/cache-common": "4.18.0", - "@algolia/logger-common": "4.18.0", - "@algolia/requester-common": "4.18.0" + "@algolia/cache-common": "4.20.0", + "@algolia/logger-common": "4.20.0", + "@algolia/requester-common": "4.20.0" } }, "node_modules/@babel/code-frame": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", - "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.4.tgz", + "integrity": "sha512-r1IONyb6Ia+jYR2vvIDhdWdlTGhqbBoFqLTQidzZ4kepUFH15ejXvFHxCVbtl7BOXIudsIubf4E81xeA3h3IXA==", "dev": true, "dependencies": { - "@babel/highlight": "^7.18.6" + "@babel/highlight": "^7.23.4", + "chalk": "^2.4.2" }, "engines": { "node": ">=6.9.0" } }, + "node_modules/@babel/code-frame/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/code-frame/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/code-frame/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@babel/code-frame/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/@babel/code-frame/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@babel/code-frame/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/code-frame/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", - "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", + "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/highlight": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", - "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz", + "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.18.6", - "chalk": "^2.0.0", + "@babel/helper-validator-identifier": "^7.22.20", + "chalk": "^2.4.2", "js-tokens": "^4.0.0" }, "engines": { "node": ">=6.9.0" } }, + "node_modules/@babel/highlight/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@babel/highlight/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/@babel/highlight/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@babel/highlight/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/@babel/parser": { - "version": "7.22.4", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.22.4.tgz", - "integrity": "sha512-VLLsx06XkEYqBtE5YGPwfSGwfrjnyPP5oiGty3S8pQLFDFLaS8VwWSIxkTXpcvr5zeYLE6+MBNl2npl/YnfofA==", + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.6.tgz", + "integrity": "sha512-Z2uID7YJ7oNvAI20O9X0bblw7Qqs8Q2hFy0R9tAfnfLkp5MW0UH9eUvnDSnFwKZ0AvgS1ucqR4KzvVHgnke1VQ==", "dev": true, "bin": { "parser": "bin/babel-parser.js" @@ -269,36 +415,37 @@ } }, "node_modules/@docsearch/css": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/@docsearch/css/-/css-3.5.1.tgz", - "integrity": "sha512-2Pu9HDg/uP/IT10rbQ+4OrTQuxIWdKVUEdcw9/w7kZJv9NeHS6skJx1xuRiFyoGKwAzcHXnLp7csE99sj+O1YA==", + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/@docsearch/css/-/css-3.5.2.tgz", + "integrity": "sha512-SPiDHaWKQZpwR2siD0KQUwlStvIAnEyK6tAE2h2Wuoq8ue9skzhlyVQ1ddzOxX6khULnAALDiR/isSF3bnuciA==", "dev": true }, "node_modules/@docsearch/js": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/@docsearch/js/-/js-3.5.1.tgz", - "integrity": "sha512-EXi8de5njxgP6TV3N9ytnGRLG9zmBNTEZjR4VzwPcpPLbZxxTLG2gaFyJyKiFVQxHW/DPlMrDJA3qoRRGEkgZw==", + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/@docsearch/js/-/js-3.5.2.tgz", + "integrity": "sha512-p1YFTCDflk8ieHgFJYfmyHBki1D61+U9idwrLh+GQQMrBSP3DLGKpy0XUJtPjAOPltcVbqsTjiPFfH7JImjUNg==", "dev": true, "dependencies": { - "@docsearch/react": "3.5.1", + "@docsearch/react": "3.5.2", "preact": "^10.0.0" } }, "node_modules/@docsearch/react": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/@docsearch/react/-/react-3.5.1.tgz", - "integrity": "sha512-t5mEODdLzZq4PTFAm/dvqcvZFdPDMdfPE5rJS5SC8OUq9mPzxEy6b+9THIqNM9P0ocCb4UC5jqBrxKclnuIbzQ==", + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/@docsearch/react/-/react-3.5.2.tgz", + "integrity": "sha512-9Ahcrs5z2jq/DcAvYtvlqEBHImbm4YJI8M9y0x6Tqg598P40HTEkX7hsMcIuThI+hTFxRGZ9hll0Wygm2yEjng==", "dev": true, "dependencies": { "@algolia/autocomplete-core": "1.9.3", "@algolia/autocomplete-preset-algolia": "1.9.3", - "@docsearch/css": "3.5.1", - "algoliasearch": "^4.0.0" + "@docsearch/css": "3.5.2", + "algoliasearch": "^4.19.1" }, "peerDependencies": { "@types/react": ">= 16.8.0 < 19.0.0", "react": ">= 16.8.0 < 19.0.0", - "react-dom": ">= 16.8.0 < 19.0.0" + "react-dom": ">= 16.8.0 < 19.0.0", + "search-insights": ">= 1 < 3" }, "peerDependenciesMeta": { "@types/react": { @@ -309,13 +456,16 @@ }, "react-dom": { "optional": true + }, + "search-insights": { + "optional": true } } }, "node_modules/@esbuild/android-arm": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.17.19.tgz", - "integrity": "sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==", + "version": "0.19.7", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.7.tgz", + "integrity": "sha512-YGSPnndkcLo4PmVl2tKatEn+0mlVMr3yEpOOT0BeMria87PhvoJb5dg5f5Ft9fbCVgtAz4pWMzZVgSEGpDAlww==", "cpu": [ "arm" ], @@ -324,15 +474,14 @@ "os": [ "android" ], - "peer": true, "engines": { "node": ">=12" } }, "node_modules/@esbuild/android-arm64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.17.19.tgz", - "integrity": "sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==", + "version": "0.19.7", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.7.tgz", + "integrity": "sha512-YEDcw5IT7hW3sFKZBkCAQaOCJQLONVcD4bOyTXMZz5fr66pTHnAet46XAtbXAkJRfIn2YVhdC6R9g4xa27jQ1w==", "cpu": [ "arm64" ], @@ -341,15 +490,14 @@ "os": [ "android" ], - "peer": true, "engines": { "node": ">=12" } }, "node_modules/@esbuild/android-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.17.19.tgz", - "integrity": "sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==", + "version": "0.19.7", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.7.tgz", + "integrity": "sha512-jhINx8DEjz68cChFvM72YzrqfwJuFbfvSxZAk4bebpngGfNNRm+zRl4rtT9oAX6N9b6gBcFaJHFew5Blf6CvUw==", "cpu": [ "x64" ], @@ -358,15 +506,14 @@ "os": [ "android" ], - "peer": true, "engines": { "node": ">=12" } }, "node_modules/@esbuild/darwin-arm64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.17.19.tgz", - "integrity": "sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==", + "version": "0.19.7", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.7.tgz", + "integrity": "sha512-dr81gbmWN//3ZnBIm6YNCl4p3pjnabg1/ZVOgz2fJoUO1a3mq9WQ/1iuEluMs7mCL+Zwv7AY5e3g1hjXqQZ9Iw==", "cpu": [ "arm64" ], @@ -375,15 +522,14 @@ "os": [ "darwin" ], - "peer": true, "engines": { "node": ">=12" } }, "node_modules/@esbuild/darwin-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.17.19.tgz", - "integrity": "sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==", + "version": "0.19.7", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.7.tgz", + "integrity": "sha512-Lc0q5HouGlzQEwLkgEKnWcSazqr9l9OdV2HhVasWJzLKeOt0PLhHaUHuzb8s/UIya38DJDoUm74GToZ6Wc7NGQ==", "cpu": [ "x64" ], @@ -392,15 +538,14 @@ "os": [ "darwin" ], - "peer": true, "engines": { "node": ">=12" } }, "node_modules/@esbuild/freebsd-arm64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.19.tgz", - "integrity": "sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==", + "version": "0.19.7", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.7.tgz", + "integrity": "sha512-+y2YsUr0CxDFF7GWiegWjGtTUF6gac2zFasfFkRJPkMAuMy9O7+2EH550VlqVdpEEchWMynkdhC9ZjtnMiHImQ==", "cpu": [ "arm64" ], @@ -409,15 +554,14 @@ "os": [ "freebsd" ], - "peer": true, "engines": { "node": ">=12" } }, "node_modules/@esbuild/freebsd-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.17.19.tgz", - "integrity": "sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==", + "version": "0.19.7", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.7.tgz", + "integrity": "sha512-CdXOxIbIzPJmJhrpmJTLx+o35NoiKBIgOvmvT+jeSadYiWJn0vFKsl+0bSG/5lwjNHoIDEyMYc/GAPR9jxusTA==", "cpu": [ "x64" ], @@ -426,15 +570,14 @@ "os": [ "freebsd" ], - "peer": true, "engines": { "node": ">=12" } }, "node_modules/@esbuild/linux-arm": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.17.19.tgz", - "integrity": "sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==", + "version": "0.19.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.7.tgz", + "integrity": "sha512-Y+SCmWxsJOdQtjcBxoacn/pGW9HDZpwsoof0ttL+2vGcHokFlfqV666JpfLCSP2xLxFpF1lj7T3Ox3sr95YXww==", "cpu": [ "arm" ], @@ -443,15 +586,14 @@ "os": [ "linux" ], - "peer": true, "engines": { "node": ">=12" } }, "node_modules/@esbuild/linux-arm64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.17.19.tgz", - "integrity": "sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==", + "version": "0.19.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.7.tgz", + "integrity": "sha512-inHqdOVCkUhHNvuQPT1oCB7cWz9qQ/Cz46xmVe0b7UXcuIJU3166aqSunsqkgSGMtUCWOZw3+KMwI6otINuC9g==", "cpu": [ "arm64" ], @@ -460,15 +602,14 @@ "os": [ "linux" ], - "peer": true, "engines": { "node": ">=12" } }, "node_modules/@esbuild/linux-ia32": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.17.19.tgz", - "integrity": "sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==", + "version": "0.19.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.7.tgz", + "integrity": "sha512-2BbiL7nLS5ZO96bxTQkdO0euGZIUQEUXMTrqLxKUmk/Y5pmrWU84f+CMJpM8+EHaBPfFSPnomEaQiG/+Gmh61g==", "cpu": [ "ia32" ], @@ -477,15 +618,14 @@ "os": [ "linux" ], - "peer": true, "engines": { "node": ">=12" } }, "node_modules/@esbuild/linux-loong64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.17.19.tgz", - "integrity": "sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==", + "version": "0.19.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.7.tgz", + "integrity": "sha512-BVFQla72KXv3yyTFCQXF7MORvpTo4uTA8FVFgmwVrqbB/4DsBFWilUm1i2Oq6zN36DOZKSVUTb16jbjedhfSHw==", "cpu": [ "loong64" ], @@ -494,15 +634,14 @@ "os": [ "linux" ], - "peer": true, "engines": { "node": ">=12" } }, "node_modules/@esbuild/linux-mips64el": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.17.19.tgz", - "integrity": "sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==", + "version": "0.19.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.7.tgz", + "integrity": "sha512-DzAYckIaK+pS31Q/rGpvUKu7M+5/t+jI+cdleDgUwbU7KdG2eC3SUbZHlo6Q4P1CfVKZ1lUERRFP8+q0ob9i2w==", "cpu": [ "mips64el" ], @@ -511,15 +650,14 @@ "os": [ "linux" ], - "peer": true, "engines": { "node": ">=12" } }, "node_modules/@esbuild/linux-ppc64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.17.19.tgz", - "integrity": "sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==", + "version": "0.19.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.7.tgz", + "integrity": "sha512-JQ1p0SmUteNdUaaiRtyS59GkkfTW0Edo+e0O2sihnY4FoZLz5glpWUQEKMSzMhA430ctkylkS7+vn8ziuhUugQ==", "cpu": [ "ppc64" ], @@ -528,15 +666,14 @@ "os": [ "linux" ], - "peer": true, "engines": { "node": ">=12" } }, "node_modules/@esbuild/linux-riscv64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.17.19.tgz", - "integrity": "sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==", + "version": "0.19.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.7.tgz", + "integrity": "sha512-xGwVJ7eGhkprY/nB7L7MXysHduqjpzUl40+XoYDGC4UPLbnG+gsyS1wQPJ9lFPcxYAaDXbdRXd1ACs9AE9lxuw==", "cpu": [ "riscv64" ], @@ -545,15 +682,14 @@ "os": [ "linux" ], - "peer": true, "engines": { "node": ">=12" } }, "node_modules/@esbuild/linux-s390x": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.17.19.tgz", - "integrity": "sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==", + "version": "0.19.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.7.tgz", + "integrity": "sha512-U8Rhki5PVU0L0nvk+E8FjkV8r4Lh4hVEb9duR6Zl21eIEYEwXz8RScj4LZWA2i3V70V4UHVgiqMpszXvG0Yqhg==", "cpu": [ "s390x" ], @@ -562,15 +698,14 @@ "os": [ "linux" ], - "peer": true, "engines": { "node": ">=12" } }, "node_modules/@esbuild/linux-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.17.19.tgz", - "integrity": "sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==", + "version": "0.19.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.7.tgz", + "integrity": "sha512-ZYZopyLhm4mcoZXjFt25itRlocKlcazDVkB4AhioiL9hOWhDldU9n38g62fhOI4Pth6vp+Mrd5rFKxD0/S+7aQ==", "cpu": [ "x64" ], @@ -579,15 +714,14 @@ "os": [ "linux" ], - "peer": true, "engines": { "node": ">=12" } }, "node_modules/@esbuild/netbsd-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.17.19.tgz", - "integrity": "sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==", + "version": "0.19.7", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.7.tgz", + "integrity": "sha512-/yfjlsYmT1O3cum3J6cmGG16Fd5tqKMcg5D+sBYLaOQExheAJhqr8xOAEIuLo8JYkevmjM5zFD9rVs3VBcsjtQ==", "cpu": [ "x64" ], @@ -596,15 +730,14 @@ "os": [ "netbsd" ], - "peer": true, "engines": { "node": ">=12" } }, "node_modules/@esbuild/openbsd-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.17.19.tgz", - "integrity": "sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==", + "version": "0.19.7", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.7.tgz", + "integrity": "sha512-MYDFyV0EW1cTP46IgUJ38OnEY5TaXxjoDmwiTXPjezahQgZd+j3T55Ht8/Q9YXBM0+T9HJygrSRGV5QNF/YVDQ==", "cpu": [ "x64" ], @@ -613,15 +746,14 @@ "os": [ "openbsd" ], - "peer": true, "engines": { "node": ">=12" } }, "node_modules/@esbuild/sunos-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.17.19.tgz", - "integrity": "sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==", + "version": "0.19.7", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.7.tgz", + "integrity": "sha512-JcPvgzf2NN/y6X3UUSqP6jSS06V0DZAV/8q0PjsZyGSXsIGcG110XsdmuWiHM+pno7/mJF6fjH5/vhUz/vA9fw==", "cpu": [ "x64" ], @@ -630,15 +762,14 @@ "os": [ "sunos" ], - "peer": true, "engines": { "node": ">=12" } }, "node_modules/@esbuild/win32-arm64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.17.19.tgz", - "integrity": "sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==", + "version": "0.19.7", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.7.tgz", + "integrity": "sha512-ZA0KSYti5w5toax5FpmfcAgu3ZNJxYSRm0AW/Dao5up0YV1hDVof1NvwLomjEN+3/GMtaWDI+CIyJOMTRSTdMw==", "cpu": [ "arm64" ], @@ -647,15 +778,14 @@ "os": [ "win32" ], - "peer": true, "engines": { "node": ">=12" } }, "node_modules/@esbuild/win32-ia32": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.17.19.tgz", - "integrity": "sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==", + "version": "0.19.7", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.7.tgz", + "integrity": "sha512-CTOnijBKc5Jpk6/W9hQMMvJnsSYRYgveN6O75DTACCY18RA2nqka8dTZR+x/JqXCRiKk84+5+bRKXUSbbwsS0A==", "cpu": [ "ia32" ], @@ -664,15 +794,14 @@ "os": [ "win32" ], - "peer": true, "engines": { "node": ">=12" } }, "node_modules/@esbuild/win32-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.17.19.tgz", - "integrity": "sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==", + "version": "0.19.7", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.7.tgz", + "integrity": "sha512-gRaP2sk6hc98N734luX4VpF318l3w+ofrtTu9j5L8EQXF+FzQKV6alCOHMVoJJHvVK/mGbwBXfOL1HETQu9IGQ==", "cpu": [ "x64" ], @@ -681,11 +810,106 @@ "os": [ "win32" ], - "peer": true, "engines": { "node": ">=12" } }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dev": true, + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, + "node_modules/@isaacs/cliui/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, "node_modules/@jridgewell/gen-mapping": { "version": "0.3.3", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", @@ -701,9 +925,9 @@ } }, "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", - "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", + "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", "dev": true, "engines": { "node": ">=6.0.0" @@ -718,16 +942,6 @@ "node": ">=6.0.0" } }, - "node_modules/@jridgewell/source-map": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.3.tgz", - "integrity": "sha512-b+fsZXeLYi9fEULmfBrhxn4IrPlINf8fiNarzTof004v3lFdntdwa9PF7vFJqm3mg7s+ScJMxXaE3Acp1irZcg==", - "dev": true, - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" - } - }, "node_modules/@jridgewell/sourcemap-codec": { "version": "1.4.15", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", @@ -735,2692 +949,3209 @@ "dev": true }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.18", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz", - "integrity": "sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==", + "version": "0.3.20", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz", + "integrity": "sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==", "dev": true, "dependencies": { - "@jridgewell/resolve-uri": "3.1.0", - "@jridgewell/sourcemap-codec": "1.4.14" + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" } }, - "node_modules/@jridgewell/trace-mapping/node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", + "node_modules/@lezer/common": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@lezer/common/-/common-1.1.1.tgz", + "integrity": "sha512-aAPB9YbvZHqAW+bIwiuuTDGB4DG0sYNRObGLxud8cW7osw1ZQxfDuTZ8KQiqfZ0QJGcR34CvpTMDXEyo/+Htgg==", "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==", + "node_modules/@lezer/lr": { + "version": "1.3.14", + "resolved": "https://registry.npmjs.org/@lezer/lr/-/lr-1.3.14.tgz", + "integrity": "sha512-z5mY4LStlA3yL7aHT/rqgG614cfcvklS+8oFRFBYrs4YaWLJyKKM4+nN6KopToX0o9Hj6zmH6M5kinOYuy06ug==", "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" + "@lezer/common": "^1.0.0" } }, - "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==", + "node_modules/@lmdb/lmdb-darwin-arm64": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-darwin-arm64/-/lmdb-darwin-arm64-2.8.5.tgz", + "integrity": "sha512-KPDeVScZgA1oq0CiPBcOa3kHIqU+pTOwRFDIhxvmf8CTNvqdZQYp5cCKW0bUk69VygB2PuTiINFWbY78aR2pQw==", + "cpu": [ + "arm64" + ], "dev": true, - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } + "optional": true, + "os": [ + "darwin" + ] }, - "node_modules/@rollup/plugin-typescript": { - "version": "11.1.2", - "resolved": "https://registry.npmjs.org/@rollup/plugin-typescript/-/plugin-typescript-11.1.2.tgz", - "integrity": "sha512-0ghSOCMcA7fl1JM+0gYRf+Q/HWyg+zg7/gDSc+fRLmlJWcW5K1I+CLRzaRhXf4Y3DRyPnnDo4M2ktw+a6JcDEg==", + "node_modules/@lmdb/lmdb-darwin-x64": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-darwin-x64/-/lmdb-darwin-x64-2.8.5.tgz", + "integrity": "sha512-w/sLhN4T7MW1nB3R/U8WK5BgQLz904wh+/SmA2jD8NnF7BLLoUgflCNxOeSPOWp8geP6nP/+VjWzZVip7rZ1ug==", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "@rollup/pluginutils": "^5.0.1", - "resolve": "^1.22.1" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "rollup": "^2.14.0||^3.0.0", - "tslib": "*", - "typescript": ">=3.7.0" - }, - "peerDependenciesMeta": { - "rollup": { - "optional": true - }, - "tslib": { - "optional": true - } - } + "optional": true, + "os": [ + "darwin" + ] }, - "node_modules/@rollup/pluginutils": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.0.2.tgz", - "integrity": "sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==", + "node_modules/@lmdb/lmdb-linux-arm": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-arm/-/lmdb-linux-arm-2.8.5.tgz", + "integrity": "sha512-c0TGMbm2M55pwTDIfkDLB6BpIsgxV4PjYck2HiOX+cy/JWiBXz32lYbarPqejKs9Flm7YVAKSILUducU9g2RVg==", + "cpu": [ + "arm" + ], "dev": true, - "dependencies": { - "@types/estree": "^1.0.0", - "estree-walker": "^2.0.2", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "rollup": "^1.20.0||^2.0.0||^3.0.0" - }, - "peerDependenciesMeta": { - "rollup": { - "optional": true - } - } - }, - "node_modules/@types/chai": { - "version": "4.3.5", - "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.5.tgz", - "integrity": "sha512-mEo1sAde+UCE6b2hxn332f1g1E8WfYRu6p5SvTKr2ZKC1f7gFJXk4h5PyGP9Dt6gCaG8y8XhwnXWC6Iy2cmBng==", - "dev": true - }, - "node_modules/@types/component-emitter": { - "version": "1.2.11", - "resolved": "https://registry.npmjs.org/@types/component-emitter/-/component-emitter-1.2.11.tgz", - "integrity": "sha512-SRXjM+tfsSlA9VuG8hGO2nft2p8zjXCK1VcC6N4NXbBbYbSia9kzCChYQajIjzIqOOOuh5Ock6MmV2oux4jDZQ==", - "dev": true - }, - "node_modules/@types/cookie": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz", - "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==", - "dev": true - }, - "node_modules/@types/cors": { - "version": "2.8.12", - "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.12.tgz", - "integrity": "sha512-vt+kDhq/M2ayberEtJcIN/hxXy1Pk+59g2FV/ZQceeaTyCtCucjL2Q7FXlFjtWn4n15KCr1NE2lNNFhp0lEThw==", - "dev": true - }, - "node_modules/@types/estree": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.0.tgz", - "integrity": "sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==", - "dev": true - }, - "node_modules/@types/minimist": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz", - "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==", - "dev": true - }, - "node_modules/@types/mocha": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.1.tgz", - "integrity": "sha512-/fvYntiO1GeICvqbQ3doGDIP97vWmvFt83GKguJ6prmQM2iXZfFcq6YE8KteFyRtX2/h5Hf91BYvPodJKFYv5Q==", - "dev": true + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@types/node": { - "version": "15.12.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-15.12.2.tgz", - "integrity": "sha512-zjQ69G564OCIWIOHSXyQEEDpdpGl+G348RAKY0XXy9Z5kU9Vzv1GMNnkar/ZJ8dzXB3COzD9Mo9NtRZ4xfgUww==", - "dev": true + "node_modules/@lmdb/lmdb-linux-arm64": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-arm64/-/lmdb-linux-arm64-2.8.5.tgz", + "integrity": "sha512-vtbZRHH5UDlL01TT5jB576Zox3+hdyogvpcbvVJlmU5PdL3c5V7cj1EODdh1CHPksRl+cws/58ugEHi8bcj4Ww==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@types/normalize-package-data": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", - "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==", - "dev": true + "node_modules/@lmdb/lmdb-linux-x64": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-x64/-/lmdb-linux-x64-2.8.5.tgz", + "integrity": "sha512-Xkc8IUx9aEhP0zvgeKy7IQ3ReX2N8N1L0WPcQwnZweWmOuKfwpS3GRIYqLtK5za/w3E60zhFfNdS+3pBZPytqQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@types/web-bluetooth": { - "version": "0.0.17", - "resolved": "https://registry.npmjs.org/@types/web-bluetooth/-/web-bluetooth-0.0.17.tgz", - "integrity": "sha512-4p9vcSmxAayx72yn70joFoL44c9MO/0+iVEBIQXe3v2h2SiAsEIo/G5v6ObFWvNKRFjbrVadNf9LqEEZeQPzdA==", - "dev": true + "node_modules/@lmdb/lmdb-win32-x64": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-win32-x64/-/lmdb-win32-x64-2.8.5.tgz", + "integrity": "sha512-4wvrf5BgnR8RpogHhtpCPJMKBmvyZPhhUtEwMJbXh0ni2BucpfF07jlmyM11zRqQ2XIq6PbC2j7W7UCCcm1rRQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] }, - "node_modules/@vitejs/plugin-vue": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-4.2.3.tgz", - "integrity": "sha512-R6JDUfiZbJA9cMiguQ7jxALsgiprjBeHL5ikpXfJCH62pPHtI+JdJ5xWj6Ev73yXSlYl86+blXn1kZHQ7uElxw==", + "node_modules/@mischnic/json-sourcemap": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@mischnic/json-sourcemap/-/json-sourcemap-0.1.1.tgz", + "integrity": "sha512-iA7+tyVqfrATAIsIRWQG+a7ZLLD0VaOCKV2Wd/v4mqIU3J9c4jx9p7S0nw1XH3gJCKNBOOwACOPYYSUu9pgT+w==", "dev": true, - "engines": { - "node": "^14.18.0 || >=16.0.0" + "dependencies": { + "@lezer/common": "^1.0.0", + "@lezer/lr": "^1.0.0", + "json5": "^2.2.1" }, - "peerDependencies": { - "vite": "^4.0.0", - "vue": "^3.2.25" + "engines": { + "node": ">=12.0.0" } }, - "node_modules/@vue/compiler-core": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.3.4.tgz", - "integrity": "sha512-cquyDNvZ6jTbf/+x+AgM2Arrp6G4Dzbb0R64jiG804HRMfRiFXWI6kqUVqZ6ZR0bQhIoQjB4+2bhNtVwndW15g==", + "node_modules/@msgpackr-extract/msgpackr-extract-darwin-arm64": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-darwin-arm64/-/msgpackr-extract-darwin-arm64-3.0.2.tgz", + "integrity": "sha512-9bfjwDxIDWmmOKusUcqdS4Rw+SETlp9Dy39Xui9BEGEk19dDwH0jhipwFzEff/pFg95NKymc6TOTbRKcWeRqyQ==", + "cpu": [ + "arm64" + ], "dev": true, - "dependencies": { - "@babel/parser": "^7.21.3", - "@vue/shared": "3.3.4", - "estree-walker": "^2.0.2", - "source-map-js": "^1.0.2" - } + "optional": true, + "os": [ + "darwin" + ] }, - "node_modules/@vue/compiler-dom": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.3.4.tgz", - "integrity": "sha512-wyM+OjOVpuUukIq6p5+nwHYtj9cFroz9cwkfmP9O1nzH68BenTTv0u7/ndggT8cIQlnBeOo6sUT/gvHcIkLA5w==", + "node_modules/@msgpackr-extract/msgpackr-extract-darwin-x64": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-darwin-x64/-/msgpackr-extract-darwin-x64-3.0.2.tgz", + "integrity": "sha512-lwriRAHm1Yg4iDf23Oxm9n/t5Zpw1lVnxYU3HnJPTi2lJRkKTrps1KVgvL6m7WvmhYVt/FIsssWay+k45QHeuw==", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "@vue/compiler-core": "3.3.4", - "@vue/shared": "3.3.4" - } + "optional": true, + "os": [ + "darwin" + ] }, - "node_modules/@vue/compiler-sfc": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.3.4.tgz", - "integrity": "sha512-6y/d8uw+5TkCuzBkgLS0v3lSM3hJDntFEiUORM11pQ/hKvkhSKZrXW6i69UyXlJQisJxuUEJKAWEqWbWsLeNKQ==", + "node_modules/@msgpackr-extract/msgpackr-extract-linux-arm": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-arm/-/msgpackr-extract-linux-arm-3.0.2.tgz", + "integrity": "sha512-MOI9Dlfrpi2Cuc7i5dXdxPbFIgbDBGgKR5F2yWEa6FVEtSWncfVNKW5AKjImAQ6CZlBK9tympdsZJ2xThBiWWA==", + "cpu": [ + "arm" + ], "dev": true, - "dependencies": { - "@babel/parser": "^7.20.15", - "@vue/compiler-core": "3.3.4", - "@vue/compiler-dom": "3.3.4", - "@vue/compiler-ssr": "3.3.4", - "@vue/reactivity-transform": "3.3.4", - "@vue/shared": "3.3.4", - "estree-walker": "^2.0.2", - "magic-string": "^0.30.0", - "postcss": "^8.1.10", - "source-map-js": "^1.0.2" - } + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@vue/compiler-ssr": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.3.4.tgz", - "integrity": "sha512-m0v6oKpup2nMSehwA6Uuu+j+wEwcy7QmwMkVNVfrV9P2qE5KshC6RwOCq8fjGS/Eak/uNb8AaWekfiXxbBB6gQ==", + "node_modules/@msgpackr-extract/msgpackr-extract-linux-arm64": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-arm64/-/msgpackr-extract-linux-arm64-3.0.2.tgz", + "integrity": "sha512-FU20Bo66/f7He9Fp9sP2zaJ1Q8L9uLPZQDub/WlUip78JlPeMbVL8546HbZfcW9LNciEXc8d+tThSJjSC+tmsg==", + "cpu": [ + "arm64" + ], "dev": true, - "dependencies": { - "@vue/compiler-dom": "3.3.4", - "@vue/shared": "3.3.4" - } + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@vue/devtools-api": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.5.0.tgz", - "integrity": "sha512-o9KfBeaBmCKl10usN4crU53fYtC1r7jJwdGKjPT24t348rHxgfpZ0xL3Xm/gLUYnc0oTp8LAmrxOeLyu6tbk2Q==", - "dev": true + "node_modules/@msgpackr-extract/msgpackr-extract-linux-x64": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-x64/-/msgpackr-extract-linux-x64-3.0.2.tgz", + "integrity": "sha512-gsWNDCklNy7Ajk0vBBf9jEx04RUxuDQfBse918Ww+Qb9HCPoGzS+XJTLe96iN3BVK7grnLiYghP/M4L8VsaHeA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@vue/reactivity": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.3.4.tgz", - "integrity": "sha512-kLTDLwd0B1jG08NBF3R5rqULtv/f8x3rOFByTDz4J53ttIQEDmALqKqXY0J+XQeN0aV2FBxY8nJDf88yvOPAqQ==", + "node_modules/@msgpackr-extract/msgpackr-extract-win32-x64": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-win32-x64/-/msgpackr-extract-win32-x64-3.0.2.tgz", + "integrity": "sha512-O+6Gs8UeDbyFpbSh2CPEz/UOrrdWPTBYNblZK5CxxLisYt4kGX3Sc+czffFonyjiGSq3jWLwJS/CCJc7tBr4sQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "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": { - "@vue/shared": "3.3.4" + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" } }, - "node_modules/@vue/reactivity-transform": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.3.4.tgz", - "integrity": "sha512-MXgwjako4nu5WFLAjpBnCj/ieqcjE2aJBINUNQzkZQfzIZA4xn+0fV1tIYBJvvva3N3OvKGofRLvQIwEQPpaXw==", + "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, - "dependencies": { - "@babel/parser": "^7.20.15", - "@vue/compiler-core": "3.3.4", - "@vue/shared": "3.3.4", - "estree-walker": "^2.0.2", - "magic-string": "^0.30.0" + "engines": { + "node": ">= 8" } }, - "node_modules/@vue/runtime-core": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.3.4.tgz", - "integrity": "sha512-R+bqxMN6pWO7zGI4OMlmvePOdP2c93GsHFM/siJI7O2nxFRzj55pLwkpCedEY+bTMgp5miZ8CxfIZo3S+gFqvA==", + "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": { - "@vue/reactivity": "3.3.4", - "@vue/shared": "3.3.4" + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" } }, - "node_modules/@vue/runtime-dom": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.3.4.tgz", - "integrity": "sha512-Aj5bTJ3u5sFsUckRghsNjVTtxZQ1OyMWCr5dZRAPijF/0Vy4xEoRCwLyHXcj4D0UFbJ4lbx3gPTgg06K/GnPnQ==", + "node_modules/@parcel/bundler-default": { + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/@parcel/bundler-default/-/bundler-default-2.10.3.tgz", + "integrity": "sha512-a+yq8zH8mrg6FBgUjrC+r3z6cfK7dQVMNzduEU/LF52Z4FVAmTR8gefl/YGmAbquJL3PFAHdhICrljYnQ1WQkg==", "dev": true, "dependencies": { - "@vue/runtime-core": "3.3.4", - "@vue/shared": "3.3.4", - "csstype": "^3.1.1" + "@parcel/diagnostic": "2.10.3", + "@parcel/graph": "3.0.3", + "@parcel/plugin": "2.10.3", + "@parcel/rust": "2.10.3", + "@parcel/utils": "2.10.3", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": ">= 12.0.0", + "parcel": "^2.10.3" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/@vue/server-renderer": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.3.4.tgz", - "integrity": "sha512-Q6jDDzR23ViIb67v+vM1Dqntu+HUexQcsWKhhQa4ARVzxOY2HbC7QRW/ggkDBd5BU+uM1sV6XOAP0b216o34JQ==", + "node_modules/@parcel/cache": { + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/@parcel/cache/-/cache-2.10.3.tgz", + "integrity": "sha512-fNNOFOl4dwOlzP8iAa+evZ+3BakX0sV+3+PiYA0zaps7EmPmkTSGDhCWzaYRSO8fhmNDlrUX9Xh7b/X738LFqA==", "dev": true, "dependencies": { - "@vue/compiler-ssr": "3.3.4", - "@vue/shared": "3.3.4" + "@parcel/fs": "2.10.3", + "@parcel/logger": "2.10.3", + "@parcel/utils": "2.10.3", + "lmdb": "2.8.5" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" }, "peerDependencies": { - "vue": "3.3.4" + "@parcel/core": "^2.10.3" } }, - "node_modules/@vue/shared": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.3.4.tgz", - "integrity": "sha512-7OjdcV8vQ74eiz1TZLzZP4JwqM5fA94K6yntPS5Z25r9HDuGNzaGdgvwKYq6S+MxwF0TFRwe50fIR/MYnakdkQ==", - "dev": true - }, - "node_modules/@vueuse/core": { - "version": "10.2.1", - "resolved": "https://registry.npmjs.org/@vueuse/core/-/core-10.2.1.tgz", - "integrity": "sha512-c441bfMbkAwTNwVRHQ0zdYZNETK//P84rC01aP2Uy/aRFCiie9NE/k9KdIXbno0eDYP5NPUuWv0aA/I4Unr/7w==", + "node_modules/@parcel/codeframe": { + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/@parcel/codeframe/-/codeframe-2.10.3.tgz", + "integrity": "sha512-70ovUzeXBowDMjK+1xaLT4hm3jZUK7EbaCS6tN1cmmr0S1TDhU7g37jnpni+u9de9Lc/lErwTaDVXUf9WSQzQw==", "dev": true, "dependencies": { - "@types/web-bluetooth": "^0.0.17", - "@vueuse/metadata": "10.2.1", - "@vueuse/shared": "10.2.1", - "vue-demi": ">=0.14.5" + "chalk": "^4.1.0" + }, + "engines": { + "node": ">= 12.0.0" }, "funding": { - "url": "https://github.com/sponsors/antfu" + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/@vueuse/core/node_modules/vue-demi": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.5.tgz", - "integrity": "sha512-o9NUVpl/YlsGJ7t+xuqJKx8EBGf1quRhCiT6D/J0pfwmk9zUwYkC7yrF4SZCe6fETvSM3UNL2edcbYrSyc4QHA==", + "node_modules/@parcel/compressor-raw": { + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/@parcel/compressor-raw/-/compressor-raw-2.10.3.tgz", + "integrity": "sha512-5SUZ80uwu7o0D+0RjhjBnSUXJRgaayfqVQtBRP3U7/W/Bb1Ixm1yDGXtDlyCbzimWqWVMMJ4/eVCEW7I8Ln4Bw==", "dev": true, - "hasInstallScript": true, - "bin": { - "vue-demi-fix": "bin/vue-demi-fix.js", - "vue-demi-switch": "bin/vue-demi-switch.js" + "dependencies": { + "@parcel/plugin": "2.10.3" }, "engines": { - "node": ">=12" + "node": ">= 12.0.0", + "parcel": "^2.10.3" }, "funding": { - "url": "https://github.com/sponsors/antfu" + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/config-default": { + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/@parcel/config-default/-/config-default-2.10.3.tgz", + "integrity": "sha512-gHVw5cKZVA9h/J4E33qQLg3QG3cYMyWVruyVzF8dFy/Rar5ebXMof1f38IhR2BIavpoThbnCnxgD4SVK8xOPag==", + "dev": true, + "dependencies": { + "@parcel/bundler-default": "2.10.3", + "@parcel/compressor-raw": "2.10.3", + "@parcel/namer-default": "2.10.3", + "@parcel/optimizer-css": "2.10.3", + "@parcel/optimizer-htmlnano": "2.10.3", + "@parcel/optimizer-image": "2.10.3", + "@parcel/optimizer-svgo": "2.10.3", + "@parcel/optimizer-swc": "2.10.3", + "@parcel/packager-css": "2.10.3", + "@parcel/packager-html": "2.10.3", + "@parcel/packager-js": "2.10.3", + "@parcel/packager-raw": "2.10.3", + "@parcel/packager-svg": "2.10.3", + "@parcel/packager-wasm": "2.10.3", + "@parcel/reporter-dev-server": "2.10.3", + "@parcel/resolver-default": "2.10.3", + "@parcel/runtime-browser-hmr": "2.10.3", + "@parcel/runtime-js": "2.10.3", + "@parcel/runtime-react-refresh": "2.10.3", + "@parcel/runtime-service-worker": "2.10.3", + "@parcel/transformer-babel": "2.10.3", + "@parcel/transformer-css": "2.10.3", + "@parcel/transformer-html": "2.10.3", + "@parcel/transformer-image": "2.10.3", + "@parcel/transformer-js": "2.10.3", + "@parcel/transformer-json": "2.10.3", + "@parcel/transformer-postcss": "2.10.3", + "@parcel/transformer-posthtml": "2.10.3", + "@parcel/transformer-raw": "2.10.3", + "@parcel/transformer-react-refresh-wrap": "2.10.3", + "@parcel/transformer-svg": "2.10.3" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" }, "peerDependencies": { - "@vue/composition-api": "^1.0.0-rc.1", - "vue": "^3.0.0-0 || ^2.6.0" + "@parcel/core": "^2.10.3" + } + }, + "node_modules/@parcel/core": { + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/@parcel/core/-/core-2.10.3.tgz", + "integrity": "sha512-b64FdqJi4CX6iWeLZNfmwdTrC1VLPXHMuFusf1sTZTuRBFw2oRpgJvuiqsrInaZ82o3lbLMo4a9/5LtNaZKa+Q==", + "dev": true, + "dependencies": { + "@mischnic/json-sourcemap": "^0.1.0", + "@parcel/cache": "2.10.3", + "@parcel/diagnostic": "2.10.3", + "@parcel/events": "2.10.3", + "@parcel/fs": "2.10.3", + "@parcel/graph": "3.0.3", + "@parcel/logger": "2.10.3", + "@parcel/package-manager": "2.10.3", + "@parcel/plugin": "2.10.3", + "@parcel/profiler": "2.10.3", + "@parcel/rust": "2.10.3", + "@parcel/source-map": "^2.1.1", + "@parcel/types": "2.10.3", + "@parcel/utils": "2.10.3", + "@parcel/workers": "2.10.3", + "abortcontroller-polyfill": "^1.1.9", + "base-x": "^3.0.8", + "browserslist": "^4.6.6", + "clone": "^2.1.1", + "dotenv": "^7.0.0", + "dotenv-expand": "^5.1.0", + "json5": "^2.2.0", + "msgpackr": "^1.9.9", + "nullthrows": "^1.1.1", + "semver": "^7.5.2" + }, + "engines": { + "node": ">= 12.0.0" }, - "peerDependenciesMeta": { - "@vue/composition-api": { - "optional": true - } + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/@vueuse/integrations": { - "version": "10.2.1", - "resolved": "https://registry.npmjs.org/@vueuse/integrations/-/integrations-10.2.1.tgz", - "integrity": "sha512-FDP5lni+z9FjHE9H3xuvwSjoRV9U8jmDvJpmHPCBjUgPGYRynwb60eHWXCFJXLUtb4gSIHy0e+iaEbrKdalCkQ==", + "node_modules/@parcel/core/node_modules/dotenv": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-7.0.0.tgz", + "integrity": "sha512-M3NhsLbV1i6HuGzBUH8vXrtxOk+tWmzWKDMbAVSUp3Zsjm7ywFeuwrUXhmhQyRK1q5B5GGy7hcXPbj3bnfZg2g==", "dev": true, - "dependencies": { - "@vueuse/core": "10.2.1", - "@vueuse/shared": "10.2.1", - "vue-demi": ">=0.14.5" + "engines": { + "node": ">=6" + } + }, + "node_modules/@parcel/diagnostic": { + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/@parcel/diagnostic/-/diagnostic-2.10.3.tgz", + "integrity": "sha512-Hf3xG9UVkDABDXWi89TjEP5U1CLUUj81kx/QFeupBXnzt5GEQZBhkxdBq6+4w17Mmuvk7H5uumNsSptkWq9PCA==", + "dev": true, + "dependencies": { + "@mischnic/json-sourcemap": "^0.1.0", + "nullthrows": "^1.1.1" }, - "funding": { - "url": "https://github.com/sponsors/antfu" + "engines": { + "node": ">= 12.0.0" }, - "peerDependencies": { - "async-validator": "*", - "axios": "*", - "change-case": "*", - "drauu": "*", - "focus-trap": "*", - "fuse.js": "*", - "idb-keyval": "*", - "jwt-decode": "*", - "nprogress": "*", - "qrcode": "*", - "sortablejs": "*", - "universal-cookie": "*" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/events": { + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/@parcel/events/-/events-2.10.3.tgz", + "integrity": "sha512-I3FsZYmKzgvo1f6frUWdF7hWwpeWTshPrFqpn9ICDXs/1Hjlf32jNXLBqon9b9XUDfMw4nSRMFMzMLJpbdheGA==", + "dev": true, + "engines": { + "node": ">= 12.0.0" }, - "peerDependenciesMeta": { - "async-validator": { - "optional": true - }, - "axios": { - "optional": true - }, - "change-case": { - "optional": true - }, - "drauu": { - "optional": true - }, - "focus-trap": { - "optional": true - }, - "fuse.js": { - "optional": true - }, - "idb-keyval": { - "optional": true - }, - "jwt-decode": { - "optional": true - }, - "nprogress": { - "optional": true - }, - "qrcode": { - "optional": true - }, - "sortablejs": { - "optional": true - }, - "universal-cookie": { - "optional": true - } + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/@vueuse/integrations/node_modules/vue-demi": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.5.tgz", - "integrity": "sha512-o9NUVpl/YlsGJ7t+xuqJKx8EBGf1quRhCiT6D/J0pfwmk9zUwYkC7yrF4SZCe6fETvSM3UNL2edcbYrSyc4QHA==", + "node_modules/@parcel/fs": { + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/@parcel/fs/-/fs-2.10.3.tgz", + "integrity": "sha512-0w4+Lc7B5VpwqX4GQfjnI5qN7tc9qbGPSPsf/6U2YPWU4dkGsMfPEmLBx7dZvJy3UiGxpsjMMuRHa14+jJ5QrQ==", "dev": true, - "hasInstallScript": true, - "bin": { - "vue-demi-fix": "bin/vue-demi-fix.js", - "vue-demi-switch": "bin/vue-demi-switch.js" + "dependencies": { + "@parcel/rust": "2.10.3", + "@parcel/types": "2.10.3", + "@parcel/utils": "2.10.3", + "@parcel/watcher": "^2.0.7", + "@parcel/workers": "2.10.3" }, "engines": { - "node": ">=12" + "node": ">= 12.0.0" }, "funding": { - "url": "https://github.com/sponsors/antfu" + "type": "opencollective", + "url": "https://opencollective.com/parcel" }, "peerDependencies": { - "@vue/composition-api": "^1.0.0-rc.1", - "vue": "^3.0.0-0 || ^2.6.0" - }, - "peerDependenciesMeta": { - "@vue/composition-api": { - "optional": true - } + "@parcel/core": "^2.10.3" } }, - "node_modules/@vueuse/metadata": { - "version": "10.2.1", - "resolved": "https://registry.npmjs.org/@vueuse/metadata/-/metadata-10.2.1.tgz", - "integrity": "sha512-3Gt68mY/i6bQvFqx7cuGBzrCCQu17OBaGWS5JdwISpMsHnMKKjC2FeB5OAfMcCQ0oINfADP3i9A4PPRo0peHdQ==", + "node_modules/@parcel/graph": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@parcel/graph/-/graph-3.0.3.tgz", + "integrity": "sha512-zUA8KsjR2+v2Q2bFBF7zBk33ejriDiRA/+LK5QE8LrFpkaDa+gjkx76h2x7JqGXIDHNos446KX4nz2OUCVwrNQ==", "dev": true, + "dependencies": { + "nullthrows": "^1.1.1" + }, + "engines": { + "node": ">= 12.0.0" + }, "funding": { - "url": "https://github.com/sponsors/antfu" + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/@vueuse/shared": { - "version": "10.2.1", - "resolved": "https://registry.npmjs.org/@vueuse/shared/-/shared-10.2.1.tgz", - "integrity": "sha512-QWHq2bSuGptkcxx4f4M/fBYC3Y8d3M2UYyLsyzoPgEoVzJURQ0oJeWXu79OiLlBb8gTKkqe4mO85T/sf39mmiw==", + "node_modules/@parcel/logger": { + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/@parcel/logger/-/logger-2.10.3.tgz", + "integrity": "sha512-mAVTA0NgbbwEUzkzjBqjqyBBax+8bscRaZIAsEqMiSFWGcUmRgwVlH/jy3QDkFc7OHzwvdPK+XlMLV7s/3DJNw==", "dev": true, "dependencies": { - "vue-demi": ">=0.14.5" + "@parcel/diagnostic": "2.10.3", + "@parcel/events": "2.10.3" + }, + "engines": { + "node": ">= 12.0.0" }, "funding": { - "url": "https://github.com/sponsors/antfu" + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/@vueuse/shared/node_modules/vue-demi": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.5.tgz", - "integrity": "sha512-o9NUVpl/YlsGJ7t+xuqJKx8EBGf1quRhCiT6D/J0pfwmk9zUwYkC7yrF4SZCe6fETvSM3UNL2edcbYrSyc4QHA==", + "node_modules/@parcel/markdown-ansi": { + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/@parcel/markdown-ansi/-/markdown-ansi-2.10.3.tgz", + "integrity": "sha512-uzN1AJmp1oYh/ZLdD9WA7xP5u/L3Bs/6AFZz5s695zus74RCx9OtQcF0Yyl1hbKVJDfuw9WFuzMfPL/9p/C5DQ==", "dev": true, - "hasInstallScript": true, - "bin": { - "vue-demi-fix": "bin/vue-demi-fix.js", - "vue-demi-switch": "bin/vue-demi-switch.js" + "dependencies": { + "chalk": "^4.1.0" }, "engines": { - "node": ">=12" + "node": ">= 12.0.0" }, "funding": { - "url": "https://github.com/sponsors/antfu" - }, - "peerDependencies": { - "@vue/composition-api": "^1.0.0-rc.1", - "vue": "^3.0.0-0 || ^2.6.0" - }, - "peerDependenciesMeta": { - "@vue/composition-api": { - "optional": true - } + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/accepts": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", - "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "node_modules/@parcel/namer-default": { + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/@parcel/namer-default/-/namer-default-2.10.3.tgz", + "integrity": "sha512-s7kgB/x7TISIHhen9IK4+CBXgmRJYahVS+oiAbMm18vcUVuXeZDBeTedOco6zUQIKuB71vx/4DBIuiIp6Q9hpg==", "dev": true, "dependencies": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" + "@parcel/diagnostic": "2.10.3", + "@parcel/plugin": "2.10.3", + "nullthrows": "^1.1.1" }, "engines": { - "node": ">= 0.6" + "node": ">= 12.0.0", + "parcel": "^2.10.3" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/acorn": { - "version": "8.8.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", - "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", + "node_modules/@parcel/node-resolver-core": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/@parcel/node-resolver-core/-/node-resolver-core-3.1.3.tgz", + "integrity": "sha512-o7XK1KiK3ymO39bhc5qfDQiZpKA1xQmKg0TEPDNiLIXHKLEBheqarhw3Nwwt9MOFibfwsisQtDTIS+2v9A640A==", "dev": true, - "bin": { - "acorn": "bin/acorn" + "dependencies": { + "@mischnic/json-sourcemap": "^0.1.0", + "@parcel/diagnostic": "2.10.3", + "@parcel/fs": "2.10.3", + "@parcel/rust": "2.10.3", + "@parcel/utils": "2.10.3", + "nullthrows": "^1.1.1", + "semver": "^7.5.2" }, "engines": { - "node": ">=0.4.0" + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "node_modules/@parcel/optimizer-css": { + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/@parcel/optimizer-css/-/optimizer-css-2.10.3.tgz", + "integrity": "sha512-Pc8jwV3U9w5DJDNcRQML5FlKdpPGnuCTtk1P+9FfyEUjdxoVxC+YeMIQcE961clAgl47qh7eNObXtsX/lb04Dg==", "dev": true, "dependencies": { - "debug": "4" + "@parcel/diagnostic": "2.10.3", + "@parcel/plugin": "2.10.3", + "@parcel/source-map": "^2.1.1", + "@parcel/utils": "2.10.3", + "browserslist": "^4.6.6", + "lightningcss": "^1.16.1", + "nullthrows": "^1.1.1" }, "engines": { - "node": ">= 6.0.0" + "node": ">= 12.0.0", + "parcel": "^2.10.3" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/aggregate-error": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-4.0.1.tgz", - "integrity": "sha512-0poP0T7el6Vq3rstR8Mn4V/IQrpBLO6POkUSrN7RhyY+GF/InCFShQzsQ39T25gkHhLgSLByyAz+Kjb+c2L98w==", + "node_modules/@parcel/optimizer-htmlnano": { + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/@parcel/optimizer-htmlnano/-/optimizer-htmlnano-2.10.3.tgz", + "integrity": "sha512-KTIZOy19tYeG0j3JRv435A6jnTh3O1LPhsUfo6Xlea7Cz1yUUxAANl9MG8lHZKYbZCFFKbfk2I9QBycmcYxAAw==", "dev": true, "dependencies": { - "clean-stack": "^4.0.0", - "indent-string": "^5.0.0" + "@parcel/plugin": "2.10.3", + "htmlnano": "^2.0.0", + "nullthrows": "^1.1.1", + "posthtml": "^0.16.5", + "svgo": "^2.4.0" }, "engines": { - "node": ">=12" + "node": ">= 12.0.0", + "parcel": "^2.10.3" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/algoliasearch": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-4.18.0.tgz", - "integrity": "sha512-pCuVxC1SVcpc08ENH32T4sLKSyzoU7TkRIDBMwSLfIiW+fq4znOmWDkAygHZ6pRcO9I1UJdqlfgnV7TRj+MXrA==", - "dev": true, - "dependencies": { - "@algolia/cache-browser-local-storage": "4.18.0", - "@algolia/cache-common": "4.18.0", - "@algolia/cache-in-memory": "4.18.0", - "@algolia/client-account": "4.18.0", - "@algolia/client-analytics": "4.18.0", - "@algolia/client-common": "4.18.0", - "@algolia/client-personalization": "4.18.0", - "@algolia/client-search": "4.18.0", - "@algolia/logger-common": "4.18.0", - "@algolia/logger-console": "4.18.0", - "@algolia/requester-browser-xhr": "4.18.0", - "@algolia/requester-common": "4.18.0", - "@algolia/requester-node-http": "4.18.0", - "@algolia/transporter": "4.18.0" + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/ansi-colors": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "node_modules/@parcel/optimizer-htmlnano/node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", "dev": true, "engines": { - "node": ">=6" + "node": ">= 10" } }, - "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==", + "node_modules/@parcel/optimizer-htmlnano/node_modules/css-select": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", + "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", "dev": true, - "engines": { - "node": ">=8" + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.0.1", + "domhandler": "^4.3.1", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" } }, - "node_modules/ansi-sequence-parser": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/ansi-sequence-parser/-/ansi-sequence-parser-1.1.0.tgz", - "integrity": "sha512-lEm8mt52to2fT8GhciPCGeCXACSz2UwIN4X2e2LJSnZ5uAbn2/dsYdOmUXq0AtWS5cpAupysIneExOgH0Vd2TQ==", - "dev": true - }, - "node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "node_modules/@parcel/optimizer-htmlnano/node_modules/css-tree": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", + "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", "dev": true, "dependencies": { - "color-convert": "^1.9.0" + "mdn-data": "2.0.14", + "source-map": "^0.6.1" }, "engines": { - "node": ">=4" + "node": ">=8.0.0" } }, - "node_modules/anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "node_modules/@parcel/optimizer-htmlnano/node_modules/csso": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", + "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", "dev": true, "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" + "css-tree": "^1.1.2" }, "engines": { - "node": ">= 8" + "node": ">=8.0.0" } }, - "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==", + "node_modules/@parcel/optimizer-htmlnano/node_modules/mdn-data": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", + "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", "dev": true }, - "node_modules/arrify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", + "node_modules/@parcel/optimizer-htmlnano/node_modules/svgo": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz", + "integrity": "sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==", "dev": true, + "dependencies": { + "@trysound/sax": "0.2.0", + "commander": "^7.2.0", + "css-select": "^4.1.3", + "css-tree": "^1.1.3", + "csso": "^4.2.0", + "picocolors": "^1.0.0", + "stable": "^0.1.8" + }, + "bin": { + "svgo": "bin/svgo" + }, "engines": { - "node": ">=0.10.0" + "node": ">=10.13.0" } }, - "node_modules/assertion-error": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", - "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", + "node_modules/@parcel/optimizer-image": { + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/@parcel/optimizer-image/-/optimizer-image-2.10.3.tgz", + "integrity": "sha512-hbeI6+GoddJxib8MlK5iafbCm1oy3p0UL9bb8s5mjTZiHtj1PORlH8gP7mT1WlYOCgoy45QdHelcrmL9fJ8kBA==", "dev": true, + "dependencies": { + "@parcel/diagnostic": "2.10.3", + "@parcel/plugin": "2.10.3", + "@parcel/rust": "2.10.3", + "@parcel/utils": "2.10.3", + "@parcel/workers": "2.10.3" + }, "engines": { - "node": "*" + "node": ">= 12.0.0", + "parcel": "^2.10.3" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "peerDependencies": { + "@parcel/core": "^2.10.3" } }, - "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/base64id": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz", - "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==", + "node_modules/@parcel/optimizer-svgo": { + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/@parcel/optimizer-svgo/-/optimizer-svgo-2.10.3.tgz", + "integrity": "sha512-STN7sdjz6wGnQnvy22SkQaLi5C1E+j7J0xy96T0/mCP9KoIsBDE7panCtf53p4sWCNRsXNVrXt5KrpCC+u0LHg==", "dev": true, + "dependencies": { + "@parcel/diagnostic": "2.10.3", + "@parcel/plugin": "2.10.3", + "@parcel/utils": "2.10.3", + "svgo": "^2.4.0" + }, "engines": { - "node": "^4.5.0 || >= 5.9" + "node": ">= 12.0.0", + "parcel": "^2.10.3" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "node_modules/@parcel/optimizer-svgo/node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", "dev": true, "engines": { - "node": ">=8" + "node": ">= 10" } }, - "node_modules/body-parser": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.0.tgz", - "integrity": "sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg==", + "node_modules/@parcel/optimizer-svgo/node_modules/css-select": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", + "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", "dev": true, "dependencies": { - "bytes": "3.1.2", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "on-finished": "2.4.1", - "qs": "6.10.3", - "raw-body": "2.5.1", - "type-is": "~1.6.18", - "unpipe": "1.0.0" + "boolbase": "^1.0.0", + "css-what": "^6.0.1", + "domhandler": "^4.3.1", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" }, - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" + "funding": { + "url": "https://github.com/sponsors/fb55" } }, - "node_modules/body-parser/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "node_modules/@parcel/optimizer-svgo/node_modules/css-tree": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", + "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", "dev": true, "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/body-parser/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "node_modules/body-scroll-lock": { - "version": "4.0.0-beta.0", - "resolved": "https://registry.npmjs.org/body-scroll-lock/-/body-scroll-lock-4.0.0-beta.0.tgz", - "integrity": "sha512-a7tP5+0Mw3YlUJcGAKUqIBkYYGlYxk2fnCasq/FUph1hadxlTRjF+gAcZksxANnaMnALjxEddmSi/H3OR8ugcQ==", - "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" + "mdn-data": "2.0.14", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=8.0.0" } }, - "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "node_modules/@parcel/optimizer-svgo/node_modules/csso": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", + "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", "dev": true, "dependencies": { - "fill-range": "^7.0.1" + "css-tree": "^1.1.2" }, "engines": { - "node": ">=8" + "node": ">=8.0.0" } }, - "node_modules/browser-stdout": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", - "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", + "node_modules/@parcel/optimizer-svgo/node_modules/mdn-data": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", + "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", "dev": true }, - "node_modules/browserstack": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/browserstack/-/browserstack-1.5.3.tgz", - "integrity": "sha512-AO+mECXsW4QcqC9bxwM29O7qWa7bJT94uBFzeb5brylIQwawuEziwq20dPYbins95GlWzOawgyDNdjYAo32EKg==", + "node_modules/@parcel/optimizer-svgo/node_modules/svgo": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz", + "integrity": "sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==", "dev": true, "dependencies": { - "https-proxy-agent": "^2.2.1" + "@trysound/sax": "0.2.0", + "commander": "^7.2.0", + "css-select": "^4.1.3", + "css-tree": "^1.1.3", + "csso": "^4.2.0", + "picocolors": "^1.0.0", + "stable": "^0.1.8" + }, + "bin": { + "svgo": "bin/svgo" + }, + "engines": { + "node": ">=10.13.0" } }, - "node_modules/browserstack-local": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/browserstack-local/-/browserstack-local-1.5.1.tgz", - "integrity": "sha512-T/wxyWDzvBHbDvl7fZKpFU7mYze6nrUkBhNy+d+8bXBqgQX10HTYvajIGO0wb49oGSLCPM0CMZTV/s7e6LF0sA==", + "node_modules/@parcel/optimizer-swc": { + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/@parcel/optimizer-swc/-/optimizer-swc-2.10.3.tgz", + "integrity": "sha512-Cxy05CysiKbv/PtX++ETje4cbhCJySmN6EmFyQBs0jvzsUdWwqnsttavYRoMviUUK9mjm/i5q+cyewBO/8Oc5g==", "dev": true, "dependencies": { - "agent-base": "^6.0.2", - "https-proxy-agent": "^5.0.1", - "is-running": "^2.1.0", - "ps-tree": "=1.2.0", - "temp-fs": "^0.9.9" + "@parcel/diagnostic": "2.10.3", + "@parcel/plugin": "2.10.3", + "@parcel/source-map": "^2.1.1", + "@parcel/utils": "2.10.3", + "@swc/core": "^1.3.36", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": ">= 12.0.0", + "parcel": "^2.10.3" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/browserstack-local/node_modules/https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "node_modules/@parcel/package-manager": { + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/@parcel/package-manager/-/package-manager-2.10.3.tgz", + "integrity": "sha512-KqOW5oUmElrcb7d+hOC68ja1PI2qbPZTwdduduRvB90DAweMt7r1046+W2Df5bd+p9iv72DxGEn9xomX+qz9MA==", "dev": true, "dependencies": { - "agent-base": "6", - "debug": "4" + "@parcel/diagnostic": "2.10.3", + "@parcel/fs": "2.10.3", + "@parcel/logger": "2.10.3", + "@parcel/node-resolver-core": "3.1.3", + "@parcel/types": "2.10.3", + "@parcel/utils": "2.10.3", + "@parcel/workers": "2.10.3", + "semver": "^7.5.2" }, "engines": { - "node": ">= 6" + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "peerDependencies": { + "@parcel/core": "^2.10.3" } }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true - }, - "node_modules/bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "node_modules/@parcel/packager-css": { + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/@parcel/packager-css/-/packager-css-2.10.3.tgz", + "integrity": "sha512-Jk165fFU2XyWjN7agKy+YvvRoOJbWIb57VlVDgBHanB5ptS7aCildambrljGNTivatr+zFrchE5ZDNUFXZhYnw==", "dev": true, + "dependencies": { + "@parcel/diagnostic": "2.10.3", + "@parcel/plugin": "2.10.3", + "@parcel/source-map": "^2.1.1", + "@parcel/utils": "2.10.3", + "nullthrows": "^1.1.1" + }, "engines": { - "node": ">= 0.8" + "node": ">= 12.0.0", + "parcel": "^2.10.3" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "node_modules/@parcel/packager-html": { + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/@parcel/packager-html/-/packager-html-2.10.3.tgz", + "integrity": "sha512-bEI6FhBvERuoqyi/h681qGImTRBUnqNW4sKoFO67q/bxWLevXtEGMFOeqridiVOjYQH9s1kKwM/ln/UwKVazZw==", "dev": true, "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" + "@parcel/plugin": "2.10.3", + "@parcel/types": "2.10.3", + "@parcel/utils": "2.10.3", + "nullthrows": "^1.1.1", + "posthtml": "^0.16.5" + }, + "engines": { + "node": ">= 12.0.0", + "parcel": "^2.10.3" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "node_modules/@parcel/packager-js": { + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/@parcel/packager-js/-/packager-js-2.10.3.tgz", + "integrity": "sha512-SjLSDw0juC7bEk/0geUtSVXaZqm2SgHL2IZaPnkoBQxVqzh2MdvAxJCrS2LxiR/cuQRfvQ5bnoJA7Kk1w2VNAg==", "dev": true, + "dependencies": { + "@parcel/diagnostic": "2.10.3", + "@parcel/plugin": "2.10.3", + "@parcel/rust": "2.10.3", + "@parcel/source-map": "^2.1.1", + "@parcel/types": "2.10.3", + "@parcel/utils": "2.10.3", + "globals": "^13.2.0", + "nullthrows": "^1.1.1" + }, "engines": { - "node": ">=10" + "node": ">= 12.0.0", + "parcel": "^2.10.3" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/camelcase-keys": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-7.0.2.tgz", - "integrity": "sha512-Rjs1H+A9R+Ig+4E/9oyB66UC5Mj9Xq3N//vcLf2WzgdTi/3gUu3Z9KoqmlrEG4VuuLK8wJHofxzdQXz/knhiYg==", + "node_modules/@parcel/packager-raw": { + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/@parcel/packager-raw/-/packager-raw-2.10.3.tgz", + "integrity": "sha512-d236tnP2ViOnUJR0+qG6EHw7MUWSA14fLKnYYzL5SRQ4BVo5XC+CM9HKN5O4YCCVu3+9Su2X1+RESo5sxbFq7w==", "dev": true, "dependencies": { - "camelcase": "^6.3.0", - "map-obj": "^4.1.0", - "quick-lru": "^5.1.1", - "type-fest": "^1.2.1" + "@parcel/plugin": "2.10.3" }, "engines": { - "node": ">=12" + "node": ">= 12.0.0", + "parcel": "^2.10.3" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/chai": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.7.tgz", - "integrity": "sha512-HLnAzZ2iupm25PlN0xFreAlBA5zaBSv3og0DdeGA4Ar6h6rJ3A0rolRUKJhSF2V10GZKDgWF/VmAEsNWjCRB+A==", + "node_modules/@parcel/packager-svg": { + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/@parcel/packager-svg/-/packager-svg-2.10.3.tgz", + "integrity": "sha512-Rk/GokkNs9uLwiy6Ux/xXpD8nMVhA9LN9eIbVqi8+eR42xUmICmEoUoSm+CnekkXxY2a5e3mKpL7JZbT9vOEhA==", "dev": true, "dependencies": { - "assertion-error": "^1.1.0", - "check-error": "^1.0.2", - "deep-eql": "^4.1.2", - "get-func-name": "^2.0.0", - "loupe": "^2.3.1", - "pathval": "^1.1.1", - "type-detect": "^4.0.5" + "@parcel/plugin": "2.10.3", + "@parcel/types": "2.10.3", + "@parcel/utils": "2.10.3", + "posthtml": "^0.16.4" }, "engines": { - "node": ">=4" + "node": ">= 12.0.0", + "parcel": "^2.10.3" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "node_modules/@parcel/packager-wasm": { + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/@parcel/packager-wasm/-/packager-wasm-2.10.3.tgz", + "integrity": "sha512-j6VmU84LKy+XRHgZQFoASG98P50a9tkeT3LYRrol3RGGQrvx7PT3/D6rOqbnQjR2iGnaHzYoAlgg9jIMmWXYiA==", "dev": true, "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "@parcel/plugin": "2.10.3" }, "engines": { - "node": ">=4" + "node": ">=12.0.0", + "parcel": "^2.10.3" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/chalk/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "node_modules/@parcel/plugin": { + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/@parcel/plugin/-/plugin-2.10.3.tgz", + "integrity": "sha512-FgsfGKSdtSV1EcO2NWFCZaY14W0PnEEF8vZaRCTML3vKfUbilYs/biaqf5geFOu4DwRuCC8unOTqFy7dLwcK/A==", "dev": true, + "dependencies": { + "@parcel/types": "2.10.3" + }, "engines": { - "node": ">=0.8.0" + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/check-error": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", - "integrity": "sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==", + "node_modules/@parcel/profiler": { + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/@parcel/profiler/-/profiler-2.10.3.tgz", + "integrity": "sha512-yikaM6/vsvjDCcBHAXTKmDsWUF3UvC0lMG8RpnuVSN+R40MGH1vyrR4vNnqhkiCcs0RkVXm7bpuz3cDJLNLYSQ==", "dev": true, + "dependencies": { + "@parcel/diagnostic": "2.10.3", + "@parcel/events": "2.10.3", + "chrome-trace-event": "^1.0.2" + }, "engines": { - "node": "*" + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "node_modules/@parcel/reporter-cli": { + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/@parcel/reporter-cli/-/reporter-cli-2.10.3.tgz", + "integrity": "sha512-p5xQTPRuB1K3eI3Ro90vcdxpdt0VqIgrUP/VJKtSI8I3fLLGgPBNmSZejqqLup3jFRzUttQPHYkWl/R14LHjAQ==", "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" + "@parcel/plugin": "2.10.3", + "@parcel/types": "2.10.3", + "@parcel/utils": "2.10.3", + "chalk": "^4.1.0", + "term-size": "^2.2.1" }, "engines": { - "node": ">= 8.10.0" + "node": ">= 12.0.0", + "parcel": "^2.10.3" }, - "optionalDependencies": { - "fsevents": "~2.3.2" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/clean-stack": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-4.2.0.tgz", - "integrity": "sha512-LYv6XPxoyODi36Dp976riBtSY27VmFo+MKqEU9QCCWyTrdEPDog+RWA7xQWHi6Vbp61j5c4cdzzX1NidnwtUWg==", + "node_modules/@parcel/reporter-dev-server": { + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/@parcel/reporter-dev-server/-/reporter-dev-server-2.10.3.tgz", + "integrity": "sha512-1Kzb2TrlnOYhGwFXZYCeoO18hpVhI3pRXnN22li9ZmdpeugZ0zZJamfPV8Duj4sBvBoSajbZhiPAe/6tQgWDSA==", "dev": true, "dependencies": { - "escape-string-regexp": "5.0.0" + "@parcel/plugin": "2.10.3", + "@parcel/utils": "2.10.3" }, "engines": { - "node": ">=12" + "node": ">= 12.0.0", + "parcel": "^2.10.3" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/clean-stack/node_modules/escape-string-regexp": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", - "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", + "node_modules/@parcel/reporter-tracer": { + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/@parcel/reporter-tracer/-/reporter-tracer-2.10.3.tgz", + "integrity": "sha512-53T9VPJvCi4Co0iTmNN+nqFD+Fkt3QFW8CPXBVlmlQzOtufVjDb01VsE1NPD8/J7O0jd548HJX/s5uqT0380jg==", "dev": true, + "dependencies": { + "@parcel/plugin": "2.10.3", + "@parcel/utils": "2.10.3", + "chrome-trace-event": "^1.0.3", + "nullthrows": "^1.1.1" + }, "engines": { - "node": ">=12" + "node": ">= 12.0.0", + "parcel": "^2.10.3" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "node_modules/@parcel/resolver-default": { + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/@parcel/resolver-default/-/resolver-default-2.10.3.tgz", + "integrity": "sha512-TQc1LwpvEKyF3CnU9ifHOKV2usFLVYmMAVAkxyKKGTbnJGEqBDQ0ITqTapA6bJLvZ6d2eUT7guqd4nrBEjeZpw==", "dev": true, "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" + "@parcel/node-resolver-core": "3.1.3", + "@parcel/plugin": "2.10.3" + }, + "engines": { + "node": ">= 12.0.0", + "parcel": "^2.10.3" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "node_modules/@parcel/runtime-browser-hmr": { + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/@parcel/runtime-browser-hmr/-/runtime-browser-hmr-2.10.3.tgz", + "integrity": "sha512-+6+mlJiLL3aNVIEyXMUPbPSgljYgnbl9JNMbEXikDQpGGiXTZ7gNNKsqwYeYzgQBYwgqRfR2ir6Bznc2R7dvxg==", "dev": true, "dependencies": { - "color-name": "1.1.3" + "@parcel/plugin": "2.10.3", + "@parcel/utils": "2.10.3" + }, + "engines": { + "node": ">= 12.0.0", + "parcel": "^2.10.3" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true - }, - "node_modules/component-emitter": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", - "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", - "dev": true - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true - }, - "node_modules/connect": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", - "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", + "node_modules/@parcel/runtime-js": { + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/@parcel/runtime-js/-/runtime-js-2.10.3.tgz", + "integrity": "sha512-EMLgZzBGf5ylOT5U/N2rBK5ZZxnmEM4aJsissEAxcE/2cgE8TyhSng6p3A88vVJlO/unHcwRuFGlxKCueugGsQ==", "dev": true, "dependencies": { - "debug": "2.6.9", - "finalhandler": "1.1.2", - "parseurl": "~1.3.3", - "utils-merge": "1.0.1" + "@parcel/diagnostic": "2.10.3", + "@parcel/plugin": "2.10.3", + "@parcel/utils": "2.10.3", + "nullthrows": "^1.1.1" }, "engines": { - "node": ">= 0.10.0" + "node": ">= 12.0.0", + "parcel": "^2.10.3" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/connect/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "node_modules/@parcel/runtime-react-refresh": { + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/@parcel/runtime-react-refresh/-/runtime-react-refresh-2.10.3.tgz", + "integrity": "sha512-l03mni8XJq3fmeAV8UYlKJ/+u0LYRuk6ZVP0VLYLwgK4O0mlRuxwaZWYUeB8r/kTsEjB3gF/9AAtUZdAC7Swow==", "dev": true, "dependencies": { - "ms": "2.0.0" + "@parcel/plugin": "2.10.3", + "@parcel/utils": "2.10.3", + "react-error-overlay": "6.0.9", + "react-refresh": "^0.9.0" + }, + "engines": { + "node": ">= 12.0.0", + "parcel": "^2.10.3" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/connect/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "node_modules/content-type": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "node_modules/@parcel/runtime-service-worker": { + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/@parcel/runtime-service-worker/-/runtime-service-worker-2.10.3.tgz", + "integrity": "sha512-NjhS80t+O5iBgKXIQ+i07ZEh/VW8XHzanwTHmznJXEoIjLoBpELZ9r6bV/eUD3mYgM1vmW9Aijdu5xtsd0JW6A==", "dev": true, + "dependencies": { + "@parcel/plugin": "2.10.3", + "@parcel/utils": "2.10.3", + "nullthrows": "^1.1.1" + }, "engines": { - "node": ">= 0.6" + "node": ">= 12.0.0", + "parcel": "^2.10.3" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/cookie": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", - "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", + "node_modules/@parcel/rust": { + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/@parcel/rust/-/rust-2.10.3.tgz", + "integrity": "sha512-s1dD1QI/6JkWLICsFh8/iUvO7W1aj/avx+2mCSzuwEIsMywexpBf56qhVYMa3D9D50hS1h5FMk9RrSnSiPf8WA==", "dev": true, "engines": { - "node": ">= 0.6" - } - }, - "node_modules/cors": { - "version": "2.8.5", - "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", - "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", - "dev": true, - "dependencies": { - "object-assign": "^4", - "vary": "^1" + "node": ">= 12.0.0" }, - "engines": { - "node": ">= 0.10" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/csstype": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz", - "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==", - "dev": true - }, - "node_modules/custom-event": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.1.tgz", - "integrity": "sha512-GAj5FOq0Hd+RsCGVJxZuKaIDXDf3h6GQoNEjFgbLLI/trgtavwUbSnZ5pVfg27DVCaWjIohryS0JFwIJyT2cMg==", - "dev": true - }, - "node_modules/date-format": { - "version": "4.0.13", - "resolved": "https://registry.npmjs.org/date-format/-/date-format-4.0.13.tgz", - "integrity": "sha512-bnYCwf8Emc3pTD8pXnre+wfnjGtfi5ncMDKy7+cWZXbmRAsdWkOQHrfC1yz/KiwP5thDp2kCHWYWKBX4HP1hoQ==", + "node_modules/@parcel/source-map": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@parcel/source-map/-/source-map-2.1.1.tgz", + "integrity": "sha512-Ejx1P/mj+kMjQb8/y5XxDUn4reGdr+WyKYloBljpppUy8gs42T+BNoEOuRYqDVdgPc6NxduzIDoJS9pOFfV5Ew==", "dev": true, + "dependencies": { + "detect-libc": "^1.0.3" + }, "engines": { - "node": ">=4.0" + "node": "^12.18.3 || >=14" } }, - "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "node_modules/@parcel/transformer-babel": { + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/@parcel/transformer-babel/-/transformer-babel-2.10.3.tgz", + "integrity": "sha512-SDTyDZX3WTkX7WS5Dg5cBLjWtIkUeeHezIjeOI4cw40tBjj5bXRR2TBfPsqwOnpTHr5jhNSicD6DN+XfTI2MMw==", "dev": true, "dependencies": { - "ms": "2.1.2" + "@parcel/diagnostic": "2.10.3", + "@parcel/plugin": "2.10.3", + "@parcel/source-map": "^2.1.1", + "@parcel/utils": "2.10.3", + "browserslist": "^4.6.6", + "json5": "^2.2.0", + "nullthrows": "^1.1.1", + "semver": "^7.5.2" }, "engines": { - "node": ">=6.0" + "node": ">= 12.0.0", + "parcel": "^2.10.3" }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/decamelize": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-5.0.1.tgz", - "integrity": "sha512-VfxadyCECXgQlkoEAjeghAr5gY3Hf+IKjKb+X8tGVDtveCjN+USwprd2q3QXBR9T1+x2DG0XZF5/w+7HAtSaXA==", + "node_modules/@parcel/transformer-css": { + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/@parcel/transformer-css/-/transformer-css-2.10.3.tgz", + "integrity": "sha512-qlPYcwVgbqFHrec6CKcTQ4hY7EkjvH40Wyqf0xjAyIoIuOPmrpSUOp+VKjeRdbyFwH/4GBjrDZMBvCUsgeM2GA==", "dev": true, + "dependencies": { + "@parcel/diagnostic": "2.10.3", + "@parcel/plugin": "2.10.3", + "@parcel/source-map": "^2.1.1", + "@parcel/utils": "2.10.3", + "browserslist": "^4.6.6", + "lightningcss": "^1.16.1", + "nullthrows": "^1.1.1" + }, "engines": { - "node": ">=10" + "node": ">= 12.0.0", + "parcel": "^2.10.3" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/decamelize-keys": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.0.tgz", - "integrity": "sha512-ocLWuYzRPoS9bfiSdDd3cxvrzovVMZnRDVEzAs+hWIVXGDbHxWMECij2OBuyB/An0FFW/nLuq6Kv1i/YC5Qfzg==", + "node_modules/@parcel/transformer-html": { + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/@parcel/transformer-html/-/transformer-html-2.10.3.tgz", + "integrity": "sha512-u0uklWpliEcPADtBlboxhxBvlGrP0yPRZk/A2iL0VhfAi9ONFEuJkEoesispNhAg3KiojEh0Ddzu7bYp9U0yww==", "dev": true, "dependencies": { - "decamelize": "^1.1.0", - "map-obj": "^1.0.0" + "@parcel/diagnostic": "2.10.3", + "@parcel/plugin": "2.10.3", + "@parcel/rust": "2.10.3", + "nullthrows": "^1.1.1", + "posthtml": "^0.16.5", + "posthtml-parser": "^0.10.1", + "posthtml-render": "^3.0.0", + "semver": "^7.5.2", + "srcset": "4" }, "engines": { - "node": ">=0.10.0" + "node": ">= 12.0.0", + "parcel": "^2.10.3" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/decamelize-keys/node_modules/decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "node_modules/@parcel/transformer-image": { + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/@parcel/transformer-image/-/transformer-image-2.10.3.tgz", + "integrity": "sha512-At7D7eMauE+/EnlXiDfNSap2te11L0TIW55SC9iTRTI/CqesWfT96ZB/LcH3HXckYy/GJi0xyTjYxC/YjUqDog==", "dev": true, + "dependencies": { + "@parcel/plugin": "2.10.3", + "@parcel/utils": "2.10.3", + "@parcel/workers": "2.10.3", + "nullthrows": "^1.1.1" + }, "engines": { - "node": ">=0.10.0" + "node": ">= 12.0.0", + "parcel": "^2.10.3" + }, + "peerDependencies": { + "@parcel/core": "^2.10.3" } }, - "node_modules/decamelize-keys/node_modules/map-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", - "integrity": "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==", + "node_modules/@parcel/transformer-js": { + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/@parcel/transformer-js/-/transformer-js-2.10.3.tgz", + "integrity": "sha512-9pGqrCSLlipXvL7hOrLsaW5Pq4bjFBOTiZ5k5kizk1qeuHKMIHxySGdy0E35eSsJ6JzXP0lTXPywMPysSI6owQ==", "dev": true, + "dependencies": { + "@parcel/diagnostic": "2.10.3", + "@parcel/plugin": "2.10.3", + "@parcel/rust": "2.10.3", + "@parcel/source-map": "^2.1.1", + "@parcel/utils": "2.10.3", + "@parcel/workers": "2.10.3", + "@swc/helpers": "^0.5.0", + "browserslist": "^4.6.6", + "nullthrows": "^1.1.1", + "regenerator-runtime": "^0.13.7", + "semver": "^7.5.2" + }, "engines": { - "node": ">=0.10.0" + "node": ">= 12.0.0", + "parcel": "^2.10.3" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "peerDependencies": { + "@parcel/core": "^2.10.3" } }, - "node_modules/deep-eql": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.2.tgz", - "integrity": "sha512-gT18+YW4CcW/DBNTwAmqTtkJh7f9qqScu2qFVlx7kCoeY9tlBu9cUcr7+I+Z/noG8INehS3xQgLpTtd/QUTn4w==", + "node_modules/@parcel/transformer-json": { + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/@parcel/transformer-json/-/transformer-json-2.10.3.tgz", + "integrity": "sha512-cPhiQNgrX92VEATuxf3GCPQnlfnZW1iCsOHMT1CzgmofE7tVlW1hOOokWw21/8spG44Zax0SrRW0udi9TdmpQA==", "dev": true, "dependencies": { - "type-detect": "^4.0.0" + "@parcel/plugin": "2.10.3", + "json5": "^2.2.0" }, "engines": { - "node": ">=6" + "node": ">= 12.0.0", + "parcel": "^2.10.3" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/del": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/del/-/del-7.0.0.tgz", - "integrity": "sha512-tQbV/4u5WVB8HMJr08pgw0b6nG4RGt/tj+7Numvq+zqcvUFeMaIWWOUFltiU+6go8BSO2/ogsB4EasDaj0y68Q==", + "node_modules/@parcel/transformer-postcss": { + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/@parcel/transformer-postcss/-/transformer-postcss-2.10.3.tgz", + "integrity": "sha512-SpTZQdGQ3aVvl6+3tLlw/txUyzZSsv8t+hcfc9PM0n1rd4mfjWxVKmgNC1Y3nFoSubLMp+03GbMq16ym8t89WQ==", "dev": true, "dependencies": { - "globby": "^13.1.2", - "graceful-fs": "^4.2.10", - "is-glob": "^4.0.3", - "is-path-cwd": "^3.0.0", - "is-path-inside": "^4.0.0", - "p-map": "^5.5.0", - "rimraf": "^3.0.2", - "slash": "^4.0.0" + "@parcel/diagnostic": "2.10.3", + "@parcel/plugin": "2.10.3", + "@parcel/rust": "2.10.3", + "@parcel/utils": "2.10.3", + "clone": "^2.1.1", + "nullthrows": "^1.1.1", + "postcss-value-parser": "^4.2.0", + "semver": "^7.5.2" }, "engines": { - "node": ">=14.16" + "node": ">= 12.0.0", + "parcel": "^2.10.3" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/del-cli": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/del-cli/-/del-cli-5.0.0.tgz", - "integrity": "sha512-rENFhUaYcjoMODwFhhlON+ogN7DoG+4+GFN+bsA1XeDt4w2OKQnQadFP1thHSAlK9FAtl88qgP66wOV+eFZZiQ==", + "node_modules/@parcel/transformer-posthtml": { + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/@parcel/transformer-posthtml/-/transformer-posthtml-2.10.3.tgz", + "integrity": "sha512-k6pz0H/W1k+i9uDNXjum7XkaFYKvSSrgEsmhoh7OriXPrLunboIzMBXFQcQSCyxCpw/kLuKFBLP38mQnYC5BbQ==", "dev": true, "dependencies": { - "del": "^7.0.0", - "meow": "^10.1.3" - }, - "bin": { - "del": "cli.js", - "del-cli": "cli.js" + "@parcel/plugin": "2.10.3", + "@parcel/utils": "2.10.3", + "nullthrows": "^1.1.1", + "posthtml": "^0.16.5", + "posthtml-parser": "^0.10.1", + "posthtml-render": "^3.0.0", + "semver": "^7.5.2" }, "engines": { - "node": ">=14.16" + "node": ">= 12.0.0", + "parcel": "^2.10.3" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/del/node_modules/slash": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", - "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", + "node_modules/@parcel/transformer-raw": { + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/@parcel/transformer-raw/-/transformer-raw-2.10.3.tgz", + "integrity": "sha512-r//P2Hg14m/vJK/XJyq0cmcS4RTRy4bPSL4c0FxbEdDRrSm0Hcd1gdfgl0HeqSQQfcz0Xu4nCM5zAhg6FUpiXQ==", "dev": true, + "dependencies": { + "@parcel/plugin": "2.10.3" + }, "engines": { - "node": ">=12" + "node": ">= 12.0.0", + "parcel": "^2.10.3" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "node_modules/@parcel/transformer-react-refresh-wrap": { + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/@parcel/transformer-react-refresh-wrap/-/transformer-react-refresh-wrap-2.10.3.tgz", + "integrity": "sha512-Sc6ExGQy/YhNYFxRgEyi4SikYmV3wbATYo/VzqUjvZ4vE9YXM0sC5CyJhcoWVHmMPhm5eowOwFA6UrTsgHd2+g==", "dev": true, + "dependencies": { + "@parcel/plugin": "2.10.3", + "@parcel/utils": "2.10.3", + "react-refresh": "^0.9.0" + }, "engines": { - "node": ">= 0.8" + "node": ">= 12.0.0", + "parcel": "^2.10.3" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/destroy": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", - "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "node_modules/@parcel/transformer-svg": { + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/@parcel/transformer-svg/-/transformer-svg-2.10.3.tgz", + "integrity": "sha512-fjkTdPB8y467I/yHPEaNxNxoGtRIgEqNjVkBhtE/ibhF/YfqIEpDlJyI7G5G71pt2peLMLXZnJowzHqeoEUHOQ==", "dev": true, + "dependencies": { + "@parcel/diagnostic": "2.10.3", + "@parcel/plugin": "2.10.3", + "@parcel/rust": "2.10.3", + "nullthrows": "^1.1.1", + "posthtml": "^0.16.5", + "posthtml-parser": "^0.10.1", + "posthtml-render": "^3.0.0", + "semver": "^7.5.2" + }, "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" + "node": ">= 12.0.0", + "parcel": "^2.10.3" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/di": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/di/-/di-0.0.1.tgz", - "integrity": "sha512-uJaamHkagcZtHPqCIHZxnFrXlunQXgBOsZSUOWwFw31QJCAbyTBoHMW75YOTur5ZNx8pIeAKgf6GWIgaqqiLhA==", - "dev": true - }, - "node_modules/diff": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", - "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", + "node_modules/@parcel/types": { + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/@parcel/types/-/types-2.10.3.tgz", + "integrity": "sha512-4ISgDKcbJsR7NKj2jquPUPQWc/b2x6zHb/jZVdHVzMQxJp98DX+cvQR137iOTXUAFtwkKVjFcHWfejwGdGf9bw==", "dev": true, - "engines": { - "node": ">=0.3.1" + "dependencies": { + "@parcel/cache": "2.10.3", + "@parcel/diagnostic": "2.10.3", + "@parcel/fs": "2.10.3", + "@parcel/package-manager": "2.10.3", + "@parcel/source-map": "^2.1.1", + "@parcel/workers": "2.10.3", + "utility-types": "^3.10.0" } }, - "node_modules/dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "node_modules/@parcel/utils": { + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/@parcel/utils/-/utils-2.10.3.tgz", + "integrity": "sha512-l9pEQgq+D57t42m2sJkdU08Dpp0HVzDEwVrp/by/l37ZkYPJ2Me3oXtsJhvA+hej2kO8+FuKPm64FaUVaA2g+w==", "dev": true, "dependencies": { - "path-type": "^4.0.0" + "@parcel/codeframe": "2.10.3", + "@parcel/diagnostic": "2.10.3", + "@parcel/logger": "2.10.3", + "@parcel/markdown-ansi": "2.10.3", + "@parcel/rust": "2.10.3", + "@parcel/source-map": "^2.1.1", + "chalk": "^4.1.0", + "nullthrows": "^1.1.1" }, "engines": { - "node": ">=8" + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/dom-serialize": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/dom-serialize/-/dom-serialize-2.2.1.tgz", - "integrity": "sha512-Yra4DbvoW7/Z6LBN560ZwXMjoNOSAN2wRsKFGc4iBeso+mpIA6qj1vfdf9HpMaKAqG6wXTy+1SYEzmNpKXOSsQ==", + "node_modules/@parcel/watcher": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.3.0.tgz", + "integrity": "sha512-pW7QaFiL11O0BphO+bq3MgqeX/INAk9jgBldVDYjlQPO4VddoZnF22TcF9onMhnLVHuNqBJeRf+Fj7eezi/+rQ==", "dev": true, + "hasInstallScript": true, "dependencies": { - "custom-event": "~1.0.0", - "ent": "~2.2.0", - "extend": "^3.0.0", - "void-elements": "^2.0.0" - } - }, - "node_modules/dotenv": { - "version": "16.3.1", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.3.1.tgz", - "integrity": "sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ==", + "detect-libc": "^1.0.3", + "is-glob": "^4.0.3", + "micromatch": "^4.0.5", + "node-addon-api": "^7.0.0" + }, + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "@parcel/watcher-android-arm64": "2.3.0", + "@parcel/watcher-darwin-arm64": "2.3.0", + "@parcel/watcher-darwin-x64": "2.3.0", + "@parcel/watcher-freebsd-x64": "2.3.0", + "@parcel/watcher-linux-arm-glibc": "2.3.0", + "@parcel/watcher-linux-arm64-glibc": "2.3.0", + "@parcel/watcher-linux-arm64-musl": "2.3.0", + "@parcel/watcher-linux-x64-glibc": "2.3.0", + "@parcel/watcher-linux-x64-musl": "2.3.0", + "@parcel/watcher-win32-arm64": "2.3.0", + "@parcel/watcher-win32-ia32": "2.3.0", + "@parcel/watcher-win32-x64": "2.3.0" + } + }, + "node_modules/@parcel/watcher-android-arm64": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.3.0.tgz", + "integrity": "sha512-f4o9eA3dgk0XRT3XhB0UWpWpLnKgrh1IwNJKJ7UJek7eTYccQ8LR7XUWFKqw6aEq5KUNlCcGvSzKqSX/vtWVVA==", + "cpu": [ + "arm64" + ], "dev": true, + "optional": true, + "os": [ + "android" + ], "engines": { - "node": ">=12" + "node": ">= 10.0.0" }, "funding": { - "url": "https://github.com/motdotla/dotenv?sponsor=1" + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/duplexer": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", - "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=", - "dev": true - }, - "node_modules/ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", - "dev": true - }, - "node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "node_modules/encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "node_modules/@parcel/watcher-darwin-arm64": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.3.0.tgz", + "integrity": "sha512-mKY+oijI4ahBMc/GygVGvEdOq0L4DxhYgwQqYAz/7yPzuGi79oXrZG52WdpGA1wLBPrYb0T8uBaGFo7I6rvSKw==", + "cpu": [ + "arm64" + ], "dev": true, + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">= 0.8" + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/engine.io": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.2.1.tgz", - "integrity": "sha512-ECceEFcAaNRybd3lsGQKas3ZlMVjN3cyWwMP25D2i0zWfyiytVbTpRPa34qrr+FHddtpBVOmq4H/DCv1O0lZRA==", + "node_modules/@parcel/watcher-darwin-x64": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.3.0.tgz", + "integrity": "sha512-20oBj8LcEOnLE3mgpy6zuOq8AplPu9NcSSSfyVKgfOhNAc4eF4ob3ldj0xWjGGbOF7Dcy1Tvm6ytvgdjlfUeow==", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "@types/cookie": "^0.4.1", - "@types/cors": "^2.8.12", - "@types/node": ">=10.0.0", - "accepts": "~1.3.4", - "base64id": "2.0.0", - "cookie": "~0.4.1", - "cors": "~2.8.5", - "debug": "~4.3.1", - "engine.io-parser": "~5.0.3", - "ws": "~8.2.3" - }, + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">=10.0.0" + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/engine.io-parser": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.0.4.tgz", - "integrity": "sha512-+nVFp+5z1E3HcToEnO7ZIj3g+3k9389DvWtvJZz0T6/eOCPIyyxehFcedoYrZQrp0LgQbD9pPXhpMBKMd5QURg==", + "node_modules/@parcel/watcher-freebsd-x64": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.3.0.tgz", + "integrity": "sha512-7LftKlaHunueAEiojhCn+Ef2CTXWsLgTl4hq0pkhkTBFI3ssj2bJXmH2L67mKpiAD5dz66JYk4zS66qzdnIOgw==", + "cpu": [ + "x64" + ], "dev": true, + "optional": true, + "os": [ + "freebsd" + ], "engines": { - "node": ">=10.0.0" + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/ent": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz", - "integrity": "sha512-GHrMyVZQWvTIdDtpiEXdHZnFQKzeO09apj8Cbl4pKWy4i0Oprcq17usfDt5aO63swf0JOeMWjWQE/LzgSRuWpA==", - "dev": true - }, - "node_modules/error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, - "dependencies": { - "is-arrayish": "^0.2.1" - } - }, - "node_modules/es6-promise": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", - "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==", - "dev": true - }, - "node_modules/es6-promisify": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", - "integrity": "sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ==", - "dev": true, - "dependencies": { - "es6-promise": "^4.0.3" - } - }, - "node_modules/esbuild": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.17.19.tgz", - "integrity": "sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==", + "node_modules/@parcel/watcher-linux-arm-glibc": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.3.0.tgz", + "integrity": "sha512-1apPw5cD2xBv1XIHPUlq0cO6iAaEUQ3BcY0ysSyD9Kuyw4MoWm1DV+W9mneWI+1g6OeP6dhikiFE6BlU+AToTQ==", + "cpu": [ + "arm" + ], "dev": true, - "hasInstallScript": true, - "peer": true, - "bin": { - "esbuild": "bin/esbuild" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=12" + "node": ">= 10.0.0" }, - "optionalDependencies": { - "@esbuild/android-arm": "0.17.19", - "@esbuild/android-arm64": "0.17.19", - "@esbuild/android-x64": "0.17.19", - "@esbuild/darwin-arm64": "0.17.19", - "@esbuild/darwin-x64": "0.17.19", - "@esbuild/freebsd-arm64": "0.17.19", - "@esbuild/freebsd-x64": "0.17.19", - "@esbuild/linux-arm": "0.17.19", - "@esbuild/linux-arm64": "0.17.19", - "@esbuild/linux-ia32": "0.17.19", - "@esbuild/linux-loong64": "0.17.19", - "@esbuild/linux-mips64el": "0.17.19", - "@esbuild/linux-ppc64": "0.17.19", - "@esbuild/linux-riscv64": "0.17.19", - "@esbuild/linux-s390x": "0.17.19", - "@esbuild/linux-x64": "0.17.19", - "@esbuild/netbsd-x64": "0.17.19", - "@esbuild/openbsd-x64": "0.17.19", - "@esbuild/sunos-x64": "0.17.19", - "@esbuild/win32-arm64": "0.17.19", - "@esbuild/win32-ia32": "0.17.19", - "@esbuild/win32-x64": "0.17.19" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "node_modules/@parcel/watcher-linux-arm64-glibc": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.3.0.tgz", + "integrity": "sha512-mQ0gBSQEiq1k/MMkgcSB0Ic47UORZBmWoAWlMrTW6nbAGoLZP+h7AtUM7H3oDu34TBFFvjy4JCGP43JlylkTQA==", + "cpu": [ + "arm64" + ], "dev": true, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=6" + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", - "dev": true - }, - "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==", + "node_modules/@parcel/watcher-linux-arm64-musl": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.3.0.tgz", + "integrity": "sha512-LXZAExpepJew0Gp8ZkJ+xDZaTQjLHv48h0p0Vw2VMFQ8A+RKrAvpFuPVCVwKJCr5SE+zvaG+Etg56qXvTDIedw==", + "cpu": [ + "arm64" + ], "dev": true, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=10" + "node": ">= 10.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/estree-walker": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", - "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", - "dev": true - }, - "node_modules/event-stream": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/event-stream/-/event-stream-3.3.4.tgz", - "integrity": "sha512-QHpkERcGsR0T7Qm3HNJSyXKEEj8AHNxkY3PK8TS2KJvQ7NiSHe3DDpwVKKtoYprL/AreyzFBeIkBIWChAqn60g==", - "dev": true, - "dependencies": { - "duplexer": "~0.1.1", - "from": "~0", - "map-stream": "~0.1.0", - "pause-stream": "0.0.11", - "split": "0.3", - "stream-combiner": "~0.0.4", - "through": "~2.3.1" + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/eventemitter3": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", - "dev": true - }, - "node_modules/eventti": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eventti/-/eventti-3.0.0.tgz", - "integrity": "sha512-3+eInZ4r1tOoeBQzG/3E2CvTcdkoMSipp3PEfWdNmniMu14pUCUpmHmyC0DrgVQDhLxN+TpS3HcXFi17Fmup5g==", - "dev": true - }, - "node_modules/extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "dev": true - }, - "node_modules/fast-glob": { - "version": "3.2.11", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", - "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", + "node_modules/@parcel/watcher-linux-x64-glibc": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.3.0.tgz", + "integrity": "sha512-P7Wo91lKSeSgMTtG7CnBS6WrA5otr1K7shhSjKHNePVmfBHDoAOHYRXgUmhiNfbcGk0uMCHVcdbfxtuiZCHVow==", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=8.6.0" - } - }, - "node_modules/fastq": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", - "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", - "dev": true, - "dependencies": { - "reusify": "^1.0.4" + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "node_modules/@parcel/watcher-linux-x64-musl": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.3.0.tgz", + "integrity": "sha512-+kiRE1JIq8QdxzwoYY+wzBs9YbJ34guBweTK8nlzLKimn5EQ2b2FSC+tAOpq302BuIMjyuUGvBiUhEcLIGMQ5g==", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=8" + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/finalhandler": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", - "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "node_modules/@parcel/watcher-win32-arm64": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.3.0.tgz", + "integrity": "sha512-35gXCnaz1AqIXpG42evcoP2+sNL62gZTMZne3IackM+6QlfMcJLy3DrjuL6Iks7Czpd3j4xRBzez3ADCj1l7Aw==", + "cpu": [ + "arm64" + ], "dev": true, - "dependencies": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "statuses": "~1.5.0", - "unpipe": "~1.0.0" - }, + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": ">= 0.8" + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/finalhandler/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "node_modules/@parcel/watcher-win32-ia32": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.3.0.tgz", + "integrity": "sha512-FJS/IBQHhRpZ6PiCjFt1UAcPr0YmCLHRbTc00IBTrelEjlmmgIVLeOx4MSXzx2HFEy5Jo5YdhGpxCuqCyDJ5ow==", + "cpu": [ + "ia32" + ], "dev": true, - "dependencies": { - "ms": "2.0.0" + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/finalhandler/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "node_modules/finalhandler/node_modules/on-finished": { + "node_modules/@parcel/watcher-win32-x64": { "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.3.0.tgz", + "integrity": "sha512-dLx+0XRdMnVI62kU3wbXvbIRhLck4aE28bIGKbRGS7BJNt54IIj9+c/Dkqb+7DJEbHUZAX1bwaoM8PqVlHJmCA==", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "ee-first": "1.1.1" - }, + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": ">= 0.8" + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "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==", + "node_modules/@parcel/workers": { + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/@parcel/workers/-/workers-2.10.3.tgz", + "integrity": "sha512-qlN8G3VybPHVIbD6fsZr2gmrXG2UlROUQIPW/kkAvjQ29uRfFn7YEC8CHTICt8M1HhCNkr0cMXkuXQBi0l3kAg==", "dev": true, "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" + "@parcel/diagnostic": "2.10.3", + "@parcel/logger": "2.10.3", + "@parcel/profiler": "2.10.3", + "@parcel/types": "2.10.3", + "@parcel/utils": "2.10.3", + "nullthrows": "^1.1.1" }, "engines": { - "node": ">=10" + "node": ">= 12.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "peerDependencies": { + "@parcel/core": "^2.10.3" } }, - "node_modules/flat": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", - "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", "dev": true, - "bin": { - "flat": "cli.js" + "optional": true, + "engines": { + "node": ">=14" } }, - "node_modules/flatted": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", - "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", - "dev": true - }, - "node_modules/focus-trap": { - "version": "7.5.1", - "resolved": "https://registry.npmjs.org/focus-trap/-/focus-trap-7.5.1.tgz", - "integrity": "sha512-Xm2j/zkKGc9ORKrVrbOqwCiJc5XnQOiBtmpa1YmEW0jqmkJ4ZJnRShuMYnEuho6LO8KKsbrqjir89KQLIDKKqA==", + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.5.1.tgz", + "integrity": "sha512-YaN43wTyEBaMqLDYeze+gQ4ZrW5RbTEGtT5o1GVDkhpdNcsLTnLRcLccvwy3E9wiDKWg9RIhuoy3JQKDRBfaZA==", + "cpu": [ + "arm" + ], "dev": true, - "dependencies": { - "tabbable": "^6.2.0" - } + "optional": true, + "os": [ + "android" + ] }, - "node_modules/follow-redirects": { - "version": "1.15.1", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.1.tgz", - "integrity": "sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.5.1.tgz", + "integrity": "sha512-n1bX+LCGlQVuPlCofO0zOKe1b2XkFozAVRoczT+yxWZPGnkEAKTTYVOGZz8N4sKuBnKMxDbfhUsB1uwYdup/sw==", + "cpu": [ + "arm64" ], - "engines": { - "node": ">=4.0" - }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } - } + "dev": true, + "optional": true, + "os": [ + "android" + ] }, - "node_modules/from": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/from/-/from-0.1.7.tgz", - "integrity": "sha512-twe20eF1OxVxp/ML/kq2p1uc6KvFK/+vs8WjEbeKmV2He22MKm7YF2ANIt+EOqhJ5L3K/SuuPhk0hWQDjOM23g==", - "dev": true + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.5.1.tgz", + "integrity": "sha512-QqJBumdvfBqBBmyGHlKxje+iowZwrHna7pokj/Go3dV1PJekSKfmjKrjKQ/e6ESTGhkfPNLq3VXdYLAc+UtAQw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] }, - "node_modules/fs-extra": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.5.1.tgz", + "integrity": "sha512-RrkDNkR/P5AEQSPkxQPmd2ri8WTjSl0RYmuFOiEABkEY/FSg0a4riihWQGKDJ4LnV9gigWZlTMx2DtFGzUrYQw==", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - }, - "engines": { - "node": ">=6 <7 || >=8" - } + "optional": true, + "os": [ + "darwin" + ] }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.5.1.tgz", + "integrity": "sha512-ZFPxvUZmE+fkB/8D9y/SWl/XaDzNSaxd1TJUSE27XAKlRpQ2VNce/86bGd9mEUgL3qrvjJ9XTGwoX0BrJkYK/A==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.5.1.tgz", + "integrity": "sha512-FEuAjzVIld5WVhu+M2OewLmjmbXWd3q7Zcx+Rwy4QObQCqfblriDMMS7p7+pwgjZoo9BLkP3wa9uglQXzsB9ww==", + "cpu": [ + "arm64" + ], "dev": true, - "hasInstallScript": true, "optional": true, "os": [ - "darwin" + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.5.1.tgz", + "integrity": "sha512-f5Gs8WQixqGRtI0Iq/cMqvFYmgFzMinuJO24KRfnv7Ohi/HQclwrBCYkzQu1XfLEEt3DZyvveq9HWo4bLJf1Lw==", + "cpu": [ + "arm64" ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } + "dev": true, + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.5.1.tgz", + "integrity": "sha512-CWPkPGrFfN2vj3mw+S7A/4ZaU3rTV7AkXUr08W9lNP+UzOvKLVf34tWCqrKrfwQ0NTk5GFqUr2XGpeR2p6R4gw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.5.1.tgz", + "integrity": "sha512-ZRETMFA0uVukUC9u31Ed1nx++29073goCxZtmZARwk5aF/ltuENaeTtRVsSQzFlzdd4J6L3qUm+EW8cbGt0CKQ==", + "cpu": [ + "x64" + ], "dev": true, - "engines": { - "node": "6.* || 8.* || >= 10.*" - } + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/get-func-name": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", - "integrity": "sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==", + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.5.1.tgz", + "integrity": "sha512-ihqfNJNb2XtoZMSCPeoo0cYMgU04ksyFIoOw5S0JUVbOhafLot+KD82vpKXOurE2+9o/awrqIxku9MRR9hozHQ==", + "cpu": [ + "arm64" + ], "dev": true, - "engines": { - "node": "*" - } + "optional": true, + "os": [ + "win32" + ] }, - "node_modules/get-intrinsic": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz", - "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==", + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.5.1.tgz", + "integrity": "sha512-zK9MRpC8946lQ9ypFn4gLpdwr5a01aQ/odiIJeL9EbgZDMgbZjjT/XzTqJvDfTmnE1kHdbG20sAeNlpc91/wbg==", + "cpu": [ + "ia32" + ], "dev": true, - "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } + "optional": true, + "os": [ + "win32" + ] }, - "node_modules/get-stdin": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-9.0.0.tgz", - "integrity": "sha512-dVKBjfWisLAicarI2Sf+JuBE/DghV4UzNAVe9yhEJuzeREd3JhOTE9cUaJTeSa77fsbQUK3pcOpJfM59+VKZaA==", + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.5.1.tgz", + "integrity": "sha512-5I3Nz4Sb9TYOtkRwlH0ow+BhMH2vnh38tZ4J4mggE48M/YyJyp/0sPSxhw1UeS1+oBgQ8q7maFtSeKpeRJu41Q==", + "cpu": [ + "x64" + ], "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } + "optional": true, + "os": [ + "win32" + ] }, - "node_modules/glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "node_modules/@socket.io/component-emitter": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz", + "integrity": "sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==", + "dev": true + }, + "node_modules/@swc/core": { + "version": "1.3.100", + "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.3.100.tgz", + "integrity": "sha512-7dKgTyxJjlrMwFZYb1auj3Xq0D8ZBe+5oeIgfMlRU05doXZypYJe0LAk0yjj3WdbwYzpF+T1PLxwTWizI0pckw==", "dev": true, + "hasInstallScript": true, "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "@swc/counter": "^0.1.1", + "@swc/types": "^0.1.5" }, "engines": { - "node": "*" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "type": "opencollective", + "url": "https://opencollective.com/swc" + }, + "optionalDependencies": { + "@swc/core-darwin-arm64": "1.3.100", + "@swc/core-darwin-x64": "1.3.100", + "@swc/core-linux-arm64-gnu": "1.3.100", + "@swc/core-linux-arm64-musl": "1.3.100", + "@swc/core-linux-x64-gnu": "1.3.100", + "@swc/core-linux-x64-musl": "1.3.100", + "@swc/core-win32-arm64-msvc": "1.3.100", + "@swc/core-win32-ia32-msvc": "1.3.100", + "@swc/core-win32-x64-msvc": "1.3.100" + }, + "peerDependencies": { + "@swc/helpers": "^0.5.0" + }, + "peerDependenciesMeta": { + "@swc/helpers": { + "optional": true + } } }, - "node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "node_modules/@swc/core-darwin-arm64": { + "version": "1.3.100", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.3.100.tgz", + "integrity": "sha512-XVWFsKe6ei+SsDbwmsuRkYck1SXRpO60Hioa4hoLwR8fxbA9eVp6enZtMxzVVMBi8ej5seZ4HZQeAWepbukiBw==", + "cpu": [ + "arm64" + ], "dev": true, - "dependencies": { - "is-glob": "^4.0.1" - }, + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">= 6" + "node": ">=10" } }, - "node_modules/globby": { - "version": "13.1.2", - "resolved": "https://registry.npmjs.org/globby/-/globby-13.1.2.tgz", - "integrity": "sha512-LKSDZXToac40u8Q1PQtZihbNdTYSNMuWe+K5l+oa6KgDzSvVrHXlJy40hUP522RjAIoNLJYBJi7ow+rbFpIhHQ==", + "node_modules/@swc/core-darwin-x64": { + "version": "1.3.100", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.3.100.tgz", + "integrity": "sha512-KF/MXrnH1nakm1wbt4XV8FS7kvqD9TGmVxeJ0U4bbvxXMvzeYUurzg3AJUTXYmXDhH/VXOYJE5N5RkwZZPs5iA==", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.11", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^4.0.0" - }, + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=10" } }, - "node_modules/globby/node_modules/slash": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", - "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", + "node_modules/@swc/core-linux-arm64-gnu": { + "version": "1.3.100", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.3.100.tgz", + "integrity": "sha512-p8hikNnAEJrw5vHCtKiFT4hdlQxk1V7vqPmvUDgL/qe2menQDK/i12tbz7/3BEQ4UqUPnvwpmVn2d19RdEMNxw==", + "cpu": [ + "arm64" + ], "dev": true, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=10" } }, - "node_modules/graceful-fs": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", - "dev": true - }, - "node_modules/gzip-size-cli": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/gzip-size-cli/-/gzip-size-cli-5.1.0.tgz", - "integrity": "sha512-XBC1Ia0IWm0/cbiU33fPfNL6uFCq7IjngRkFCelullMBcEna9Re4DNPfpsRgREDpOR5FGNupBfdb377uI5o7iQ==", + "node_modules/@swc/core-linux-arm64-musl": { + "version": "1.3.100", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.3.100.tgz", + "integrity": "sha512-BWx/0EeY89WC4q3AaIaBSGfQxkYxIlS3mX19dwy2FWJs/O+fMvF9oLk/CyJPOZzbp+1DjGeeoGFuDYpiNO91JA==", + "cpu": [ + "arm64" + ], "dev": true, - "dependencies": { - "chalk": "^4.1.2", - "get-stdin": "^9.0.0", - "gzip-size": "^7.0.0", - "meow": "^10.1.2", - "pretty-bytes": "^5.6.0" - }, - "bin": { - "gzip-size": "cli.js" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=10" } }, - "node_modules/gzip-size-cli/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==", + "node_modules/@swc/core-linux-x64-gnu": { + "version": "1.3.100", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.3.100.tgz", + "integrity": "sha512-XUdGu3dxAkjsahLYnm8WijPfKebo+jHgHphDxaW0ovI6sTdmEGFDew7QzKZRlbYL2jRkUuuKuDGvD6lO5frmhA==", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">=10" } }, - "node_modules/gzip-size-cli/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/@swc/core-linux-x64-musl": { + "version": "1.3.100", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.3.100.tgz", + "integrity": "sha512-PhoXKf+f0OaNW/GCuXjJ0/KfK9EJX7z2gko+7nVnEA0p3aaPtbP6cq1Ubbl6CMoPL+Ci3gZ7nYumDqXNc3CtLQ==", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/gzip-size-cli/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==", + "node_modules/@swc/core-win32-arm64-msvc": { + "version": "1.3.100", + "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.3.100.tgz", + "integrity": "sha512-PwLADZN6F9cXn4Jw52FeP/MCLVHm8vwouZZSOoOScDtihjY495SSjdPnlosMaRSR4wJQssGwiD/4MbpgQPqbAw==", + "cpu": [ + "arm64" + ], "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": ">=7.0.0" + "node": ">=10" } }, - "node_modules/gzip-size-cli/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/@swc/core-win32-ia32-msvc": { + "version": "1.3.100", + "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.3.100.tgz", + "integrity": "sha512-0f6nicKSLlDKlyPRl2JEmkpBV4aeDfRQg6n8mPqgL7bliZIcDahG0ej+HxgNjZfS3e0yjDxsNRa6sAqWU2Z60A==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-win32-x64-msvc": { + "version": "1.3.100", + "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.3.100.tgz", + "integrity": "sha512-b7J0rPoMkRTa3XyUGt8PwCaIBuYWsL2DqbirrQKRESzgCvif5iNpqaM6kjIjI/5y5q1Ycv564CB51YDpiS8EtQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } }, - "node_modules/gzip-size-cli/node_modules/duplexer": { + "node_modules/@swc/counter": { "version": "0.1.2", - "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", - "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", + "resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.2.tgz", + "integrity": "sha512-9F4ys4C74eSTEUNndnER3VJ15oru2NumfQxS8geE+f3eB5xvfxpWyqE5XlVnxb/R14uoXi6SLbBwwiDSkv+XEw==", "dev": true }, - "node_modules/gzip-size-cli/node_modules/gzip-size": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-7.0.0.tgz", - "integrity": "sha512-O1Ld7Dr+nqPnmGpdhzLmMTQ4vAsD+rHwMm1NLUmoUFFymBOMKxCCrtDxqdBRYXdeEPEi3SyoR4TizJLQrnKBNA==", + "node_modules/@swc/helpers": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.3.tgz", + "integrity": "sha512-FaruWX6KdudYloq1AHD/4nU+UsMTdNE8CKyrseXWEcgjDAbvkwJg2QGPAnfIJLIWsjZOSPLOAykK6fuYp4vp4A==", "dev": true, "dependencies": { - "duplexer": "^0.1.2" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "tslib": "^2.4.0" } }, - "node_modules/gzip-size-cli/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==", + "node_modules/@swc/types": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@swc/types/-/types-0.1.5.tgz", + "integrity": "sha512-myfUej5naTBWnqOCc/MdVOLVjXUXtIA+NpDrDBKJtLLg2shUjBu3cZmB/85RyitKc55+lUUyl7oRfLOvkr2hsw==", + "dev": true + }, + "node_modules/@trysound/sax": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", + "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==", "dev": true, "engines": { - "node": ">=8" + "node": ">=10.13.0" } }, - "node_modules/gzip-size-cli/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==", + "node_modules/@types/chai": { + "version": "4.3.11", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.11.tgz", + "integrity": "sha512-qQR1dr2rGIHYlJulmr8Ioq3De0Le9E4MJ5AiaeAETJJpndT1uUNHsGFK3L/UIu+rbkQSdj8J/w2bCsBZc/Y5fQ==", + "dev": true + }, + "node_modules/@types/cookie": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz", + "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==", + "dev": true + }, + "node_modules/@types/cors": { + "version": "2.8.17", + "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.17.tgz", + "integrity": "sha512-8CGDvrBj1zgo2qE+oS3pOCyYNqCPryMWY2bGfwA0dcfopWGgxs+78df0Rs3rc9THP4JkOhLsAa+15VdpAqkcUA==", "dev": true, "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" + "@types/node": "*" } }, - "node_modules/hard-rejection": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", - "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==", + "node_modules/@types/hast": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.3.tgz", + "integrity": "sha512-2fYGlaDy/qyLlhidX42wAH0KBi2TCjKMH8CHmBXgRlJ3Y+OXTiqsPQ6IWarZKwF1JoUcAJdPogv1d4b0COTpmQ==", "dev": true, - "engines": { - "node": ">=6" + "dependencies": { + "@types/unist": "*" } }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "node_modules/@types/linkify-it": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@types/linkify-it/-/linkify-it-3.0.5.tgz", + "integrity": "sha512-yg6E+u0/+Zjva+buc3EIb+29XEg4wltq7cSmd4Uc2EE/1nUVmxyzpX6gUXD0V8jIrG0r7YeOGVIbYRkxeooCtw==", + "dev": true + }, + "node_modules/@types/markdown-it": { + "version": "13.0.7", + "resolved": "https://registry.npmjs.org/@types/markdown-it/-/markdown-it-13.0.7.tgz", + "integrity": "sha512-U/CBi2YUUcTHBt5tjO2r5QV/x0Po6nsYwQU4Y04fBS6vfoImaiZ6f8bi3CjTCxBPQSO1LMyUqkByzi8AidyxfA==", "dev": true, "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" + "@types/linkify-it": "*", + "@types/mdurl": "*" } }, - "node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "node_modules/@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", "dev": true, - "engines": { - "node": ">=4" + "dependencies": { + "@types/unist": "*" } }, - "node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "node_modules/@types/mdurl": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/mdurl/-/mdurl-1.0.5.tgz", + "integrity": "sha512-6L6VymKTzYSrEf4Nev4Xa1LCHKrlTlYCBMTlQKFuddo1CvQcE52I0mwfOJayueUC7MJuXOeHTcIU683lzd0cUA==", + "dev": true + }, + "node_modules/@types/minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==", + "dev": true + }, + "node_modules/@types/mocha": { + "version": "10.0.6", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.6.tgz", + "integrity": "sha512-dJvrYWxP/UcXm36Qn36fxhUKu8A/xMRXVT2cliFF1Z7UA9liG5Psj3ezNSZw+5puH2czDXRLcXQxf8JbJt0ejg==", + "dev": true + }, + "node_modules/@types/node": { + "version": "20.9.4", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.9.4.tgz", + "integrity": "sha512-wmyg8HUhcn6ACjsn8oKYjkN/zUzQeNtMy44weTJSM6p4MMzEOuKbA3OjJ267uPCOW7Xex9dyrNTful8XTQYoDA==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "node_modules/@types/normalize-package-data": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz", + "integrity": "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==", + "dev": true + }, + "node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==", + "dev": true + }, + "node_modules/@types/web-bluetooth": { + "version": "0.0.20", + "resolved": "https://registry.npmjs.org/@types/web-bluetooth/-/web-bluetooth-0.0.20.tgz", + "integrity": "sha512-g9gZnnXVq7gM7v3tJCWV/qw7w+KeOlSHAhgF9RytFyifW6AF61hdT2ucrYhPq9hLs5JIryeupHV3qGk95dH9ow==", + "dev": true + }, + "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/@vitejs/plugin-vue": { + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-4.5.2.tgz", + "integrity": "sha512-UGR3DlzLi/SaVBPX0cnSyE37vqxU3O6chn8l0HJNzQzDia6/Au2A4xKv+iIJW8w2daf80G7TYHhi1pAUjdZ0bQ==", "dev": true, "engines": { - "node": ">= 0.4" + "node": "^14.18.0 || >=16.0.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "peerDependencies": { + "vite": "^4.0.0 || ^5.0.0", + "vue": "^3.2.25" } }, - "node_modules/he": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "node_modules/@vue/compiler-core": { + "version": "3.3.12", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.3.12.tgz", + "integrity": "sha512-qAtjyG3GBLG0chzp5xGCyRLLe6wFCHmjI82aGzwuGKyznNP+GJJMxjc0wOYWDB2YKfho7niJFdoFpo0CZZQg9w==", "dev": true, - "bin": { - "he": "bin/he" + "dependencies": { + "@babel/parser": "^7.23.5", + "@vue/shared": "3.3.12", + "estree-walker": "^2.0.2", + "source-map-js": "^1.0.2" } }, - "node_modules/hosted-git-info": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", - "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", + "node_modules/@vue/compiler-dom": { + "version": "3.3.12", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.3.12.tgz", + "integrity": "sha512-RdJU9oEYaoPKUdGXCy0l+i4clesdDeLmbvRlszoc9iagsnBnMmQtYfCPVQ5BHB6o7K4SCucDdJM2Dh3oXB0D6g==", "dev": true, "dependencies": { - "lru-cache": "^6.0.0" - }, - "engines": { - "node": ">=10" + "@vue/compiler-core": "3.3.12", + "@vue/shared": "3.3.12" } }, - "node_modules/http-errors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "node_modules/@vue/compiler-sfc": { + "version": "3.3.12", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.3.12.tgz", + "integrity": "sha512-yy5b9e7b79dsGbMmglCe/YnhCQgBkHO7Uf6JfjWPSf2/5XH+MKn18LhzhHyxbHdJgnA4lZCqtXzLaJz8Pd8lMw==", "dev": true, "dependencies": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" - }, - "engines": { - "node": ">= 0.8" + "@babel/parser": "^7.23.5", + "@vue/compiler-core": "3.3.12", + "@vue/compiler-dom": "3.3.12", + "@vue/compiler-ssr": "3.3.12", + "@vue/reactivity-transform": "3.3.12", + "@vue/shared": "3.3.12", + "estree-walker": "^2.0.2", + "magic-string": "^0.30.5", + "postcss": "^8.4.32", + "source-map-js": "^1.0.2" } }, - "node_modules/http-errors/node_modules/statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "node_modules/@vue/compiler-ssr": { + "version": "3.3.12", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.3.12.tgz", + "integrity": "sha512-adCiMJPznfWcQyk/9HSuXGja859IaMV+b8UNSVzDatqv7h0PvT9BEeS22+gjkWofDiSg5d78/ZLls3sLA+cn3A==", "dev": true, - "engines": { - "node": ">= 0.8" + "dependencies": { + "@vue/compiler-dom": "3.3.12", + "@vue/shared": "3.3.12" } }, - "node_modules/http-proxy": { - "version": "1.18.1", - "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", - "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "node_modules/@vue/devtools-api": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.5.1.tgz", + "integrity": "sha512-+KpckaAQyfbvshdDW5xQylLni1asvNSGme1JFs8I1+/H5pHEhqUKMEQD/qn3Nx5+/nycBq11qAEi8lk+LXI2dA==", + "dev": true + }, + "node_modules/@vue/reactivity": { + "version": "3.3.12", + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.3.12.tgz", + "integrity": "sha512-vOJORzO8DlIx88cgTnMLIf2GlLYpoXAKsuoQsK6SGdaqODjxO129pVPTd2s/N/Mb6KKZEFIHIEwWGmtN4YPs+g==", "dev": true, "dependencies": { - "eventemitter3": "^4.0.0", - "follow-redirects": "^1.0.0", - "requires-port": "^1.0.0" - }, - "engines": { - "node": ">=8.0.0" + "@vue/shared": "3.3.12" } }, - "node_modules/https-proxy-agent": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz", - "integrity": "sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg==", + "node_modules/@vue/reactivity-transform": { + "version": "3.3.12", + "resolved": "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.3.12.tgz", + "integrity": "sha512-g5TijmML7FyKkLt6QnpqNmA4KD7K/T5SbXa88Bhq+hydNQEkzA8veVXWAQuNqg9rjaFYD0rPf0a9NofKA0ENgg==", "dev": true, "dependencies": { - "agent-base": "^4.3.0", - "debug": "^3.1.0" - }, - "engines": { - "node": ">= 4.5.0" + "@babel/parser": "^7.23.5", + "@vue/compiler-core": "3.3.12", + "@vue/shared": "3.3.12", + "estree-walker": "^2.0.2", + "magic-string": "^0.30.5" } }, - "node_modules/https-proxy-agent/node_modules/agent-base": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz", - "integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==", + "node_modules/@vue/runtime-core": { + "version": "3.3.12", + "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.3.12.tgz", + "integrity": "sha512-5iL4w7MZrSGKEZU2wFAYhDZdZmgn+s//73EfgDXW1M+ZUOl36md7tlWp1QFK/ladiq4FvQ82shVjo0KiPDPr0A==", "dev": true, "dependencies": { - "es6-promisify": "^5.0.0" - }, - "engines": { - "node": ">= 4.0.0" + "@vue/reactivity": "3.3.12", + "@vue/shared": "3.3.12" } }, - "node_modules/https-proxy-agent/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "node_modules/@vue/runtime-dom": { + "version": "3.3.12", + "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.3.12.tgz", + "integrity": "sha512-8mMzqiIdl+IYa/OXwKwk6/4ebLq7cYV1pUcwCSwBK2KerUa6cwGosen5xrCL9f8o2DJ9TfPFwbPEvH7OXzUpoA==", "dev": true, "dependencies": { - "ms": "^2.1.1" + "@vue/runtime-core": "3.3.12", + "@vue/shared": "3.3.12", + "csstype": "^3.1.3" } }, - "node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "node_modules/@vue/server-renderer": { + "version": "3.3.12", + "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.3.12.tgz", + "integrity": "sha512-OZ0IEK5TU5GXb5J8/wSplyxvGGdIcwEmS8EIO302Vz8K6fGSgSJTU54X0Sb6PaefzZdiN3vHsLXO8XIeF8crQQ==", "dev": true, "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" + "@vue/compiler-ssr": "3.3.12", + "@vue/shared": "3.3.12" }, - "engines": { - "node": ">=0.10.0" + "peerDependencies": { + "vue": "3.3.12" } }, - "node_modules/ignore": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", - "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "node_modules/@vue/shared": { + "version": "3.3.12", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.3.12.tgz", + "integrity": "sha512-6p0Yin0pclvnER7BLNOQuod9Z+cxSYh8pSh7CzHnWNjAIP6zrTlCdHRvSCb1aYEx6i3Q3kvfuWU7nG16CgG1ag==", + "dev": true + }, + "node_modules/@vueuse/core": { + "version": "10.7.0", + "resolved": "https://registry.npmjs.org/@vueuse/core/-/core-10.7.0.tgz", + "integrity": "sha512-4EUDESCHtwu44ZWK3Gc/hZUVhVo/ysvdtwocB5vcauSV4B7NiGY5972WnsojB3vRNdxvAt7kzJWE2h9h7C9d5w==", "dev": true, - "engines": { - "node": ">= 4" + "dependencies": { + "@types/web-bluetooth": "^0.0.20", + "@vueuse/metadata": "10.7.0", + "@vueuse/shared": "10.7.0", + "vue-demi": ">=0.14.6" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" } }, - "node_modules/indent-string": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz", - "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==", + "node_modules/@vueuse/core/node_modules/vue-demi": { + "version": "0.14.6", + "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.6.tgz", + "integrity": "sha512-8QA7wrYSHKaYgUxDA5ZC24w+eHm3sYCbp0EzcDwKqN3p6HqtTCGR/GVsPyZW92unff4UlcSh++lmqDWN3ZIq4w==", "dev": true, + "hasInstallScript": true, + "bin": { + "vue-demi-fix": "bin/vue-demi-fix.js", + "vue-demi-switch": "bin/vue-demi-switch.js" + }, "engines": { "node": ">=12" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "@vue/composition-api": "^1.0.0-rc.1", + "vue": "^3.0.0-0 || ^2.6.0" + }, + "peerDependenciesMeta": { + "@vue/composition-api": { + "optional": true + } } }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "node_modules/@vueuse/integrations": { + "version": "10.7.0", + "resolved": "https://registry.npmjs.org/@vueuse/integrations/-/integrations-10.7.0.tgz", + "integrity": "sha512-rxiMYgS+91n93qXpHZF9NbHhppWY6IJyVTDxt4acyChL0zZVx7P8FAAfpF1qVK8e4wfjerhpEiMJ0IZ1GWUZ2A==", "dev": true, "dependencies": { - "once": "^1.3.0", - "wrappy": "1" + "@vueuse/core": "10.7.0", + "@vueuse/shared": "10.7.0", + "vue-demi": ">=0.14.6" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "async-validator": "*", + "axios": "*", + "change-case": "*", + "drauu": "*", + "focus-trap": "*", + "fuse.js": "*", + "idb-keyval": "*", + "jwt-decode": "*", + "nprogress": "*", + "qrcode": "*", + "sortablejs": "*", + "universal-cookie": "*" + }, + "peerDependenciesMeta": { + "async-validator": { + "optional": true + }, + "axios": { + "optional": true + }, + "change-case": { + "optional": true + }, + "drauu": { + "optional": true + }, + "focus-trap": { + "optional": true + }, + "fuse.js": { + "optional": true + }, + "idb-keyval": { + "optional": true + }, + "jwt-decode": { + "optional": true + }, + "nprogress": { + "optional": true + }, + "qrcode": { + "optional": true + }, + "sortablejs": { + "optional": true + }, + "universal-cookie": { + "optional": true + } } }, - "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-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", - "dev": true - }, - "node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "node_modules/@vueuse/integrations/node_modules/vue-demi": { + "version": "0.14.6", + "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.6.tgz", + "integrity": "sha512-8QA7wrYSHKaYgUxDA5ZC24w+eHm3sYCbp0EzcDwKqN3p6HqtTCGR/GVsPyZW92unff4UlcSh++lmqDWN3ZIq4w==", "dev": true, - "dependencies": { - "binary-extensions": "^2.0.0" + "hasInstallScript": true, + "bin": { + "vue-demi-fix": "bin/vue-demi-fix.js", + "vue-demi-switch": "bin/vue-demi-switch.js" }, "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "@vue/composition-api": "^1.0.0-rc.1", + "vue": "^3.0.0-0 || ^2.6.0" + }, + "peerDependenciesMeta": { + "@vue/composition-api": { + "optional": true + } } }, - "node_modules/is-core-module": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz", - "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==", + "node_modules/@vueuse/metadata": { + "version": "10.7.0", + "resolved": "https://registry.npmjs.org/@vueuse/metadata/-/metadata-10.7.0.tgz", + "integrity": "sha512-GlaH7tKP2iBCZ3bHNZ6b0cl9g0CJK8lttkBNUX156gWvNYhTKEtbweWLm9rxCPIiwzYcr/5xML6T8ZUEt+DkvA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@vueuse/shared": { + "version": "10.7.0", + "resolved": "https://registry.npmjs.org/@vueuse/shared/-/shared-10.7.0.tgz", + "integrity": "sha512-kc00uV6CiaTdc3i1CDC4a3lBxzaBE9AgYNtFN87B5OOscqeWElj/uza8qVDmk7/U8JbqoONLbtqiLJ5LGRuqlw==", "dev": true, "dependencies": { - "has": "^1.0.3" + "vue-demi": ">=0.14.6" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/antfu" } }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "node_modules/@vueuse/shared/node_modules/vue-demi": { + "version": "0.14.6", + "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.6.tgz", + "integrity": "sha512-8QA7wrYSHKaYgUxDA5ZC24w+eHm3sYCbp0EzcDwKqN3p6HqtTCGR/GVsPyZW92unff4UlcSh++lmqDWN3ZIq4w==", "dev": true, + "hasInstallScript": true, + "bin": { + "vue-demi-fix": "bin/vue-demi-fix.js", + "vue-demi-switch": "bin/vue-demi-switch.js" + }, "engines": { - "node": ">=0.10.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "@vue/composition-api": "^1.0.0-rc.1", + "vue": "^3.0.0-0 || ^2.6.0" + }, + "peerDependenciesMeta": { + "@vue/composition-api": { + "optional": true + } } }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "node_modules/abortcontroller-polyfill": { + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/abortcontroller-polyfill/-/abortcontroller-polyfill-1.7.5.tgz", + "integrity": "sha512-JMJ5soJWP18htbbxJjG7bG6yuI6pRhgJ0scHHTfkUjf6wjP912xZWvM+A4sJK3gqd9E8fcPbDnOefbA9Th/FIQ==", + "dev": true + }, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", "dev": true, + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, "engines": { - "node": ">=8" + "node": ">= 0.6" } }, - "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==", + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", "dev": true, "dependencies": { - "is-extglob": "^2.1.1" + "debug": "4" }, "engines": { - "node": ">=0.10.0" + "node": ">= 6.0.0" } }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "node_modules/agent-base/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": ">=0.12.0" + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/is-path-cwd": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-3.0.0.tgz", - "integrity": "sha512-kyiNFFLU0Ampr6SDZitD/DwUo4Zs1nSdnygUBqsu3LooL00Qvb5j+UnvApUn/TTj1J3OuE6BTdQ5rudKmU2ZaA==", + "node_modules/agent-base/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/aggregate-error": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-4.0.1.tgz", + "integrity": "sha512-0poP0T7el6Vq3rstR8Mn4V/IQrpBLO6POkUSrN7RhyY+GF/InCFShQzsQ39T25gkHhLgSLByyAz+Kjb+c2L98w==", "dev": true, + "dependencies": { + "clean-stack": "^4.0.0", + "indent-string": "^5.0.0" + }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-path-inside": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-4.0.0.tgz", - "integrity": "sha512-lJJV/5dYS+RcL8uQdBDW9c9uWFLLBNRyFhnAKXw5tVqLlKZ4RMGZKv+YQ/IA3OhD+RpbJa1LLFM1FQPGyIXvOA==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node_modules/algoliasearch": { + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-4.20.0.tgz", + "integrity": "sha512-y+UHEjnOItoNy0bYO+WWmLWBlPwDjKHW6mNHrPi0NkuhpQOOEbrkwQH/wgKFDLh7qlKjzoKeiRtlpewDPDG23g==", + "dev": true, + "dependencies": { + "@algolia/cache-browser-local-storage": "4.20.0", + "@algolia/cache-common": "4.20.0", + "@algolia/cache-in-memory": "4.20.0", + "@algolia/client-account": "4.20.0", + "@algolia/client-analytics": "4.20.0", + "@algolia/client-common": "4.20.0", + "@algolia/client-personalization": "4.20.0", + "@algolia/client-search": "4.20.0", + "@algolia/logger-common": "4.20.0", + "@algolia/logger-console": "4.20.0", + "@algolia/requester-browser-xhr": "4.20.0", + "@algolia/requester-common": "4.20.0", + "@algolia/requester-node-http": "4.20.0", + "@algolia/transporter": "4.20.0" } }, - "node_modules/is-plain-obj": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", - "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", + "node_modules/ansi-colors": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">=6" } }, - "node_modules/is-running": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-running/-/is-running-2.1.0.tgz", - "integrity": "sha512-mjJd3PujZMl7j+D395WTIO5tU5RIDBfVSRtRR4VOJou3H66E38UjbjvDGh3slJzPuolsb+yQFqwHNNdyp5jg3w==", - "dev": true - }, - "node_modules/is-unicode-supported": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "node_modules/ansi-regex": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", + "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", "dev": true, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=4" } }, - "node_modules/isbinaryfile": { - "version": "4.0.10", - "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.10.tgz", - "integrity": "sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==", + "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.0.0" + "node": ">=8" }, "funding": { - "url": "https://github.com/sponsors/gjtorikian/" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "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-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "node_modules/any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", "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==", + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", "dev": true, "dependencies": { - "argparse": "^2.0.1" + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" }, - "bin": { - "js-yaml": "bin/js-yaml.js" + "engines": { + "node": ">= 8" } }, - "node_modules/json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true - }, - "node_modules/jsonc-parser": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", - "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==", + "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/jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", - "dev": true, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/karma": { - "version": "6.4.2", - "resolved": "https://registry.npmjs.org/karma/-/karma-6.4.2.tgz", - "integrity": "sha512-C6SU/53LB31BEgRg+omznBEMY4SjHU3ricV6zBcAe1EeILKkeScr+fZXtaI5WyDbkVowJxxAI6h73NcFPmXolQ==", + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", "dev": true, - "dependencies": { - "@colors/colors": "1.5.0", - "body-parser": "^1.19.0", - "braces": "^3.0.2", - "chokidar": "^3.5.1", - "connect": "^3.7.0", - "di": "^0.0.1", - "dom-serialize": "^2.2.1", - "glob": "^7.1.7", - "graceful-fs": "^4.2.6", - "http-proxy": "^1.18.1", - "isbinaryfile": "^4.0.8", - "lodash": "^4.17.21", - "log4js": "^6.4.1", - "mime": "^2.5.2", - "minimatch": "^3.0.4", - "mkdirp": "^0.5.5", - "qjobs": "^1.2.0", - "range-parser": "^1.2.1", - "rimraf": "^3.0.2", - "socket.io": "^4.4.1", - "source-map": "^0.6.1", - "tmp": "^0.2.1", - "ua-parser-js": "^0.7.30", - "yargs": "^16.1.1" - }, - "bin": { - "karma": "bin/karma" - }, "engines": { - "node": ">= 10" + "node": ">=8" } }, - "node_modules/karma-browserstack-launcher": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/karma-browserstack-launcher/-/karma-browserstack-launcher-1.6.0.tgz", - "integrity": "sha512-Y/UWPdHZkHIVH2To4GWHCTzmrsB6H7PBWy6pw+TWz5sr4HW2mcE+Uj6qWgoVNxvQU1Pfn5LQQzI6EQ65p8QbiQ==", + "node_modules/arrify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-3.0.0.tgz", + "integrity": "sha512-tLkvA81vQG/XqE2mjDkGQHoOINtMHtysSnemrmoGe6PydDPMRbVugqyk4A6V/WDWEfm3l+0d8anA9r8cv/5Jaw==", "dev": true, - "dependencies": { - "browserstack": "~1.5.1", - "browserstack-local": "^1.3.7", - "q": "~1.5.0" + "engines": { + "node": ">=12" }, - "peerDependencies": { - "karma": ">=0.9" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/karma-chrome-launcher": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/karma-chrome-launcher/-/karma-chrome-launcher-3.2.0.tgz", - "integrity": "sha512-rE9RkUPI7I9mAxByQWkGJFXfFD6lE4gC5nPuZdobf/QdTEJI6EU4yIay/cfU/xV4ZxlM5JiTv7zWYgA64NpS5Q==", + "node_modules/assertion-error": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", + "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", "dev": true, - "dependencies": { - "which": "^1.2.1" + "engines": { + "node": "*" } }, - "node_modules/karma-mocha": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/karma-mocha/-/karma-mocha-2.0.1.tgz", - "integrity": "sha512-Tzd5HBjm8his2OA4bouAsATYEpZrp9vC7z5E5j4C5Of5Rrs1jY67RAwXNcVmd/Bnk1wgvQRou0zGVLey44G4tQ==", + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "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/base-x": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.9.tgz", + "integrity": "sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ==", "dev": true, "dependencies": { - "minimist": "^1.2.3" + "safe-buffer": "^5.0.1" } }, - "node_modules/karma-mocha-reporter": { - "version": "2.2.5", - "resolved": "https://registry.npmjs.org/karma-mocha-reporter/-/karma-mocha-reporter-2.2.5.tgz", - "integrity": "sha512-Hr6nhkIp0GIJJrvzY8JFeHpQZNseuIakGac4bpw8K1+5F0tLb6l7uvXRa8mt2Z+NVwYgCct4QAfp2R2QP6o00w==", + "node_modules/base64id": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz", + "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==", "dev": true, - "dependencies": { - "chalk": "^2.1.0", - "log-symbols": "^2.1.0", - "strip-ansi": "^4.0.0" - }, - "peerDependencies": { - "karma": ">=0.13" + "engines": { + "node": "^4.5.0 || >= 5.9" } }, - "node_modules/karma-mocha-reporter/node_modules/ansi-regex": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", - "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", "dev": true, "engines": { - "node": ">=4" + "node": ">=8" } }, - "node_modules/karma-mocha-reporter/node_modules/strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", + "node_modules/body-parser": { + "version": "1.20.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", + "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", "dev": true, "dependencies": { - "ansi-regex": "^3.0.0" + "bytes": "3.1.2", + "content-type": "~1.0.5", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.2", + "type-is": "~1.6.18", + "unpipe": "1.0.0" }, "engines": { - "node": ">=4" + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" } }, - "node_modules/karma/node_modules/yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "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": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - }, - "engines": { - "node": ">=10" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/lines-and-columns": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", - "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=", + "node_modules/browser-stdout": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", + "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", "dev": true }, - "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==", + "node_modules/browserslist": { + "version": "4.22.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.1.tgz", + "integrity": "sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ==", "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], "dependencies": { - "p-locate": "^5.0.0" + "caniuse-lite": "^1.0.30001541", + "electron-to-chromium": "^1.4.535", + "node-releases": "^2.0.13", + "update-browserslist-db": "^1.0.13" }, - "engines": { - "node": ">=10" + "bin": { + "browserslist": "cli.js" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true + "node_modules/browserstack": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/browserstack/-/browserstack-1.5.3.tgz", + "integrity": "sha512-AO+mECXsW4QcqC9bxwM29O7qWa7bJT94uBFzeb5brylIQwawuEziwq20dPYbins95GlWzOawgyDNdjYAo32EKg==", + "dev": true, + "dependencies": { + "https-proxy-agent": "^2.2.1" + } }, - "node_modules/log-symbols": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", - "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", + "node_modules/browserstack-local": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/browserstack-local/-/browserstack-local-1.5.5.tgz", + "integrity": "sha512-jKne7yosrMcptj3hqxp36TP9k0ZW2sCqhyurX24rUL4G3eT7OLgv+CSQN8iq5dtkv5IK+g+v8fWvsiC/S9KxMg==", "dev": true, "dependencies": { - "chalk": "^2.0.1" - }, - "engines": { - "node": ">=4" + "agent-base": "^6.0.2", + "https-proxy-agent": "^5.0.1", + "is-running": "^2.1.0", + "ps-tree": "=1.2.0", + "temp-fs": "^0.9.9" } }, - "node_modules/log4js": { - "version": "6.6.1", - "resolved": "https://registry.npmjs.org/log4js/-/log4js-6.6.1.tgz", - "integrity": "sha512-J8VYFH2UQq/xucdNu71io4Fo+purYYudyErgBbswWKO0MC6QVOERRomt5su/z6d3RJSmLyTGmXl3Q/XjKCf+/A==", + "node_modules/browserstack-local/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": { - "date-format": "^4.0.13", - "debug": "^4.3.4", - "flatted": "^3.2.6", - "rfdc": "^1.3.0", - "streamroller": "^3.1.2" + "ms": "2.1.2" }, "engines": { - "node": ">=8.0" + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/loupe": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.4.tgz", - "integrity": "sha512-OvKfgCC2Ndby6aSTREl5aCCPTNIzlDfQZvZxNUrBrihDhL3xcrYegTblhmEiCrg2kKQz4XsFIaemE5BF4ybSaQ==", + "node_modules/browserstack-local/node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", "dev": true, "dependencies": { - "get-func-name": "^2.0.0" + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" } }, - "node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "node_modules/browserstack-local/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/bundle-require": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/bundle-require/-/bundle-require-4.0.2.tgz", + "integrity": "sha512-jwzPOChofl67PSTW2SGubV9HBQAhhR2i6nskiOThauo9dzwDUgOWQScFVaJkjEfYX+UXiD+LEx8EblQMc2wIag==", "dev": true, "dependencies": { - "yallist": "^4.0.0" + "load-tsconfig": "^0.2.3" }, "engines": { - "node": ">=10" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "peerDependencies": { + "esbuild": ">=0.17" } }, - "node_modules/magic-string": { - "version": "0.30.0", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.0.tgz", - "integrity": "sha512-LA+31JYDJLs82r2ScLrlz1GjSgu66ZV518eyWT+S8VhyQn/JL0u9MeBOvQMGYiPk1DBiSN9DDMOcXvigJZaViQ==", + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", "dev": true, - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.4.13" - }, "engines": { - "node": ">=12" + "node": ">= 0.8" } }, - "node_modules/map-obj": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz", - "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==", + "node_modules/cac": { + "version": "6.7.14", + "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz", + "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==", "dev": true, "engines": { "node": ">=8" + } + }, + "node_modules/call-bind": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz", + "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.1", + "set-function-length": "^1.1.1" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/map-stream": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/map-stream/-/map-stream-0.1.0.tgz", - "integrity": "sha512-CkYQrPYZfWnu/DAmVCpTSX/xHpKZ80eKh2lAkyA6AJTef6bW+6JpbQZN5rofum7da+SyN1bi5ctTm+lTfcCW3g==", - "dev": true - }, - "node_modules/mark.js": { - "version": "8.11.1", - "resolved": "https://registry.npmjs.org/mark.js/-/mark.js-8.11.1.tgz", - "integrity": "sha512-1I+1qpDt4idfgLQG+BNWmrqku+7/2bi5nLf4YwF8y8zXvmfiTBY3PV3ZibfrjBueCByROpuBjLLFCajqkgYoLQ==", - "dev": true + "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/media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", "dev": true, "engines": { - "node": ">= 0.6" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/meow": { - "version": "10.1.3", - "resolved": "https://registry.npmjs.org/meow/-/meow-10.1.3.tgz", - "integrity": "sha512-0WL7RMCPPdUTE00+GxJjL4d5Dm6eUbmAzxlzywJWiRUKCW093owmZ7/q74tH9VI91vxw9KJJNxAcvdpxb2G4iA==", + "node_modules/camelcase-keys": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-7.0.2.tgz", + "integrity": "sha512-Rjs1H+A9R+Ig+4E/9oyB66UC5Mj9Xq3N//vcLf2WzgdTi/3gUu3Z9KoqmlrEG4VuuLK8wJHofxzdQXz/knhiYg==", "dev": true, "dependencies": { - "@types/minimist": "^1.2.2", - "camelcase-keys": "^7.0.0", - "decamelize": "^5.0.0", - "decamelize-keys": "^1.1.0", - "hard-rejection": "^2.1.0", - "minimist-options": "4.1.0", - "normalize-package-data": "^3.0.2", - "read-pkg-up": "^8.0.0", - "redent": "^4.0.0", - "trim-newlines": "^4.0.2", - "type-fest": "^1.2.2", - "yargs-parser": "^20.2.9" + "camelcase": "^6.3.0", + "map-obj": "^4.1.0", + "quick-lru": "^5.1.1", + "type-fest": "^1.2.1" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "node_modules/caniuse-lite": { + "version": "1.0.30001565", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001565.tgz", + "integrity": "sha512-xrE//a3O7TP0vaJ8ikzkD2c2NgcVUvsEe2IvFTntV4Yd1Z9FVzh+gW+enX96L0psrbaFMcVcH2l90xNuGDWc8w==", "dev": true, - "engines": { - "node": ">= 8" - } + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ] }, - "node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "node_modules/ccount": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz", + "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==", "dev": true, - "dependencies": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/mime": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", - "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", + "node_modules/chai": { + "version": "4.3.10", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.10.tgz", + "integrity": "sha512-0UXG04VuVbruMUYbJ6JctvH0YnC/4q3/AkT18q4NaITo91CUm0liMS9VqzT9vZhVQ/1eqPanMWjBM+Juhfb/9g==", "dev": true, - "bin": { - "mime": "cli.js" + "dependencies": { + "assertion-error": "^1.1.0", + "check-error": "^1.0.3", + "deep-eql": "^4.1.3", + "get-func-name": "^2.0.2", + "loupe": "^2.3.6", + "pathval": "^1.1.1", + "type-detect": "^4.0.8" }, "engines": { - "node": ">=4.0.0" + "node": ">=4" } }, - "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "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": ">= 0.6" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "node_modules/character-entities-html4": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz", + "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==", "dev": true, - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/min-indent": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", - "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", + "node_modules/character-entities-legacy": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz", + "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==", "dev": true, - "engines": { - "node": ">=4" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "node_modules/check-error": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz", + "integrity": "sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==", "dev": true, "dependencies": { - "brace-expansion": "^1.1.7" + "get-func-name": "^2.0.2" }, "engines": { "node": "*" } }, - "node_modules/minimist": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", - "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", - "dev": true - }, - "node_modules/minimist-options": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz", - "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==", - "dev": true, - "dependencies": { - "arrify": "^1.0.1", - "is-plain-obj": "^1.1.0", - "kind-of": "^6.0.3" + "node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" }, "engines": { - "node": ">= 6" + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" } }, - "node_modules/minisearch": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/minisearch/-/minisearch-6.1.0.tgz", - "integrity": "sha512-PNxA/X8pWk+TiqPbsoIYH0GQ5Di7m6326/lwU/S4mlo4wGQddIcf/V//1f9TB0V4j59b57b+HZxt8h3iMROGvg==", - "dev": true - }, - "node_modules/mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "node_modules/chrome-trace-event": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", + "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", "dev": true, - "dependencies": { - "minimist": "^1.2.6" - }, - "bin": { - "mkdirp": "bin/cmd.js" + "engines": { + "node": ">=6.0" } }, - "node_modules/mocha": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.2.0.tgz", - "integrity": "sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg==", + "node_modules/clean-stack": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-4.2.0.tgz", + "integrity": "sha512-LYv6XPxoyODi36Dp976riBtSY27VmFo+MKqEU9QCCWyTrdEPDog+RWA7xQWHi6Vbp61j5c4cdzzX1NidnwtUWg==", "dev": true, "dependencies": { - "ansi-colors": "4.1.1", - "browser-stdout": "1.3.1", - "chokidar": "3.5.3", - "debug": "4.3.4", - "diff": "5.0.0", - "escape-string-regexp": "4.0.0", - "find-up": "5.0.0", - "glob": "7.2.0", - "he": "1.2.0", - "js-yaml": "4.1.0", - "log-symbols": "4.1.0", - "minimatch": "5.0.1", - "ms": "2.1.3", - "nanoid": "3.3.3", - "serialize-javascript": "6.0.0", - "strip-json-comments": "3.1.1", - "supports-color": "8.1.1", - "workerpool": "6.2.1", - "yargs": "16.2.0", - "yargs-parser": "20.2.4", - "yargs-unparser": "2.0.0" - }, - "bin": { - "_mocha": "bin/_mocha", - "mocha": "bin/mocha.js" + "escape-string-regexp": "5.0.0" }, "engines": { - "node": ">= 14.0.0" + "node": ">=12" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mochajs" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/mocha/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==", + "node_modules/clean-stack/node_modules/escape-string-regexp": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, "engines": { - "node": ">=8" + "node": ">=12" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/mocha/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", "dev": true, "dependencies": { - "balanced-match": "^1.0.0" + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" } }, - "node_modules/mocha/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/cliui/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, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": ">=8" } }, - "node_modules/mocha/node_modules/chalk/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==", + "node_modules/cliui/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": { - "has-flag": "^4.0.0" + "ansi-regex": "^5.0.1" }, "engines": { "node": ">=8" } }, - "node_modules/mocha/node_modules/color-convert": { + "node_modules/clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, + "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==", @@ -3432,5665 +4163,6262 @@ "node": ">=7.0.0" } }, - "node_modules/mocha/node_modules/color-name": { + "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/mocha/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==", + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", "dev": true, + "dependencies": { + "delayed-stream": "~1.0.0" + }, "engines": { - "node": ">=8" + "node": ">= 0.8" } }, - "node_modules/mocha/node_modules/log-symbols": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "node_modules/comma-separated-tokens": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz", + "integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==", "dev": true, - "dependencies": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/mocha/node_modules/minimatch": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", - "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", + "node_modules/commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "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/connect": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", + "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", "dev": true, "dependencies": { - "brace-expansion": "^2.0.1" + "debug": "2.6.9", + "finalhandler": "1.1.2", + "parseurl": "~1.3.3", + "utils-merge": "1.0.1" }, "engines": { - "node": ">=10" + "node": ">= 0.10.0" } }, - "node_modules/mocha/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "dev": true, + "engines": { + "node": ">= 0.6" + } }, - "node_modules/mocha/node_modules/serialize-javascript": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", - "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "node_modules/cookie": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", + "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", "dev": true, "dependencies": { - "randombytes": "^2.1.0" + "object-assign": "^4", + "vary": "^1" + }, + "engines": { + "node": ">= 0.10" } }, - "node_modules/mocha/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "node_modules/cosmiconfig": { + "version": "8.3.6", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz", + "integrity": "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==", "dev": true, "dependencies": { - "has-flag": "^4.0.0" + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0", + "path-type": "^4.0.0" }, "engines": { - "node": ">=10" + "node": ">=14" }, "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" + "url": "https://github.com/sponsors/d-fischer" + }, + "peerDependencies": { + "typescript": ">=4.9.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/mocha/node_modules/yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "node_modules/cp-file": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/cp-file/-/cp-file-10.0.0.tgz", + "integrity": "sha512-vy2Vi1r2epK5WqxOLnskeKeZkdZvTKfFZQCplE3XWsP+SUJyd5XAUFC9lFgTjjXJF2GMne/UML14iEmkAaDfFg==", "dev": true, "dependencies": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" + "graceful-fs": "^4.2.10", + "nested-error-stacks": "^2.1.1", + "p-event": "^5.0.1" }, "engines": { - "node": ">=10" + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/mocha/node_modules/yargs-parser": { - "version": "20.2.4", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", - "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", + "node_modules/cpy": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/cpy/-/cpy-10.1.0.tgz", + "integrity": "sha512-VC2Gs20JcTyeQob6UViBLnyP0bYHkBh6EiKzot9vi2DmeGlFT9Wd7VG3NBrkNx/jYvFBeyDOMMHdHQhbtKLgHQ==", "dev": true, + "dependencies": { + "arrify": "^3.0.0", + "cp-file": "^10.0.0", + "globby": "^13.1.4", + "junk": "^4.0.1", + "micromatch": "^4.0.5", + "nested-error-stacks": "^2.1.1", + "p-filter": "^3.0.0", + "p-map": "^6.0.0" + }, "engines": { - "node": ">=10" + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "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/nanoid": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz", - "integrity": "sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==", + "node_modules/cpy-cli": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cpy-cli/-/cpy-cli-5.0.0.tgz", + "integrity": "sha512-fb+DZYbL9KHc0BC4NYqGRrDIJZPXUmjjtqdw4XRRg8iV8dIfghUX/WiL+q4/B/KFTy3sK6jsbUhBaz0/Hxg7IQ==", "dev": true, + "dependencies": { + "cpy": "^10.1.0", + "meow": "^12.0.1" + }, "bin": { - "nanoid": "bin/nanoid.cjs" + "cpy": "cli.js" }, "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "node_modules/negotiator": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", - "dev": true, - "engines": { - "node": ">= 0.6" + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/normalize-package-data": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", - "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", + "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": { - "hosted-git-info": "^4.0.1", - "is-core-module": "^2.5.0", - "semver": "^7.3.4", - "validate-npm-package-license": "^3.0.1" + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" }, "engines": { - "node": ">=10" + "node": ">= 8" } }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "node_modules/cross-spawn/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": ">=0.10.0" + "node": ">= 8" } }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "node_modules/css-select": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz", + "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==", "dev": true, - "engines": { - "node": ">=0.10.0" + "optional": true, + "peer": true, + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.1.0", + "domhandler": "^5.0.2", + "domutils": "^3.0.1", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" } }, - "node_modules/object-inspect": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.0.tgz", - "integrity": "sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==", + "node_modules/css-select/node_modules/dom-serializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", "dev": true, + "optional": true, + "peer": true, + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" + }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" } }, - "node_modules/on-finished": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", - "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "node_modules/css-select/node_modules/domhandler": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", "dev": true, + "optional": true, + "peer": true, "dependencies": { - "ee-first": "1.1.1" + "domelementtype": "^2.3.0" }, "engines": { - "node": ">= 0.8" + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" } }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "node_modules/css-select/node_modules/domutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz", + "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==", "dev": true, + "optional": true, + "peer": true, "dependencies": { - "wrappy": "1" + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" } }, - "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==", + "node_modules/css-select/node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", "dev": true, - "dependencies": { - "yocto-queue": "^0.1.0" - }, + "optional": true, + "peer": true, "engines": { - "node": ">=10" + "node": ">=0.12" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/fb55/entities?sponsor=1" } }, - "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==", + "node_modules/css-tree": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz", + "integrity": "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==", "dev": true, + "optional": true, + "peer": true, "dependencies": { - "p-limit": "^3.0.2" + "mdn-data": "2.0.30", + "source-map-js": "^1.0.1" }, "engines": { - "node": ">=10" + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" + } + }, + "node_modules/css-what": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "dev": true, + "engines": { + "node": ">= 6" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/fb55" } }, - "node_modules/p-map": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-5.5.0.tgz", - "integrity": "sha512-VFqfGDHlx87K66yZrNdI4YGtD70IRyd+zSvgks6mzHPRNkoKy+9EKP4SFC77/vTTQYmRmti7dvqC+m5jBrBAcg==", + "node_modules/csso": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/csso/-/csso-5.0.5.tgz", + "integrity": "sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==", "dev": true, + "optional": true, + "peer": true, "dependencies": { - "aggregate-error": "^4.0.0" + "css-tree": "~2.2.0" }, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0", + "npm": ">=7.0.0" } }, - "node_modules/parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "node_modules/csso/node_modules/css-tree": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.2.1.tgz", + "integrity": "sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==", "dev": true, + "optional": true, + "peer": true, "dependencies": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" + "mdn-data": "2.0.28", + "source-map-js": "^1.0.1" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0", + "npm": ">=7.0.0" } }, - "node_modules/parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "node_modules/csso/node_modules/mdn-data": { + "version": "2.0.28", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.28.tgz", + "integrity": "sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==", "dev": true, + "optional": true, + "peer": true + }, + "node_modules/cssstyle": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-3.0.0.tgz", + "integrity": "sha512-N4u2ABATi3Qplzf0hWbVCdjenim8F3ojEXpBDF5hBpjzW182MjNGLqfmQ0SkSPeQ+V86ZXgeH8aXj6kayd4jgg==", + "dev": true, + "dependencies": { + "rrweb-cssom": "^0.6.0" + }, "engines": { - "node": ">= 0.8" + "node": ">=14" } }, - "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==", + "node_modules/csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", + "dev": true + }, + "node_modules/custom-event": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.1.tgz", + "integrity": "sha512-GAj5FOq0Hd+RsCGVJxZuKaIDXDf3h6GQoNEjFgbLLI/trgtavwUbSnZ5pVfg27DVCaWjIohryS0JFwIJyT2cMg==", + "dev": true + }, + "node_modules/data-urls": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-5.0.0.tgz", + "integrity": "sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==", "dev": true, + "dependencies": { + "whatwg-mimetype": "^4.0.0", + "whatwg-url": "^14.0.0" + }, "engines": { - "node": ">=8" + "node": ">=18" } }, - "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": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "node_modules/data-urls/node_modules/tr46": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-5.0.0.tgz", + "integrity": "sha512-tk2G5R2KRwBd+ZN0zaEXpmzdKyOYksXwywulIX95MBODjSzMIuQnQ3m8JxgbhnL1LeVo7lqQKsYa1O3Htl7K5g==", "dev": true, + "dependencies": { + "punycode": "^2.3.1" + }, "engines": { - "node": ">=0.10.0" + "node": ">=18" } }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true + "node_modules/data-urls/node_modules/webidl-conversions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", + "dev": true, + "engines": { + "node": ">=12" + } }, - "node_modules/path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "node_modules/data-urls/node_modules/whatwg-url": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-14.0.0.tgz", + "integrity": "sha512-1lfMEm2IEr7RIV+f4lUNPOqfFL+pO+Xw3fJSqmjX9AbXcXcYOkCe1P6+9VBZB6n94af16NfZf+sSk0JCBZC9aw==", "dev": true, + "dependencies": { + "tr46": "^5.0.0", + "webidl-conversions": "^7.0.0" + }, "engines": { - "node": ">=8" + "node": ">=18" } }, - "node_modules/pathval": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", - "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", + "node_modules/date-format": { + "version": "4.0.14", + "resolved": "https://registry.npmjs.org/date-format/-/date-format-4.0.14.tgz", + "integrity": "sha512-39BOQLs9ZjKh0/patS9nrT8wc3ioX3/eA/zgbKNopnF2wCqJEoxywwwElATYvRsXdnOxA/OQeQoFZ3rFjVajhg==", "dev": true, "engines": { - "node": "*" + "node": ">=4.0" } }, - "node_modules/pause-stream": { - "version": "0.0.11", - "resolved": "https://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz", - "integrity": "sha512-e3FBlXLmN/D1S+zHzanP4E/4Z60oFAa3O051qt1pxa7DEJWKAyil6upYVXCWadEnuoqa4Pkc9oUx9zsxYeRv8A==", + "node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, "dependencies": { - "through": "~2.3" + "ms": "2.0.0" } }, - "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true - }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "node_modules/decamelize": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", + "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", "dev": true, "engines": { - "node": ">=8.6" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/postcss": { - "version": "8.4.24", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.24.tgz", - "integrity": "sha512-M0RzbcI0sO/XJNucsGjvWU9ERWxb/ytp1w6dKtxTKgixdtQDq4rmx/g8W1hnaheq9jgwL/oyEdH5Bc4WwJKMqg==", + "node_modules/decamelize-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.1.tgz", + "integrity": "sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==", "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], "dependencies": { - "nanoid": "^3.3.6", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" + "decamelize": "^1.1.0", + "map-obj": "^1.0.0" }, "engines": { - "node": "^10 || ^12 || >=14" + "node": ">=0.10.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/postcss/node_modules/nanoid": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", - "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", + "node_modules/decamelize-keys/node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "bin": { - "nanoid": "bin/nanoid.cjs" - }, "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "node_modules/preact": { - "version": "10.15.1", - "resolved": "https://registry.npmjs.org/preact/-/preact-10.15.1.tgz", - "integrity": "sha512-qs2ansoQEwzNiV5eAcRT1p1EC/dmEzaATVDJNiB3g2sRDWdA7b7MurXdJjB2+/WQktGWZwxvDrnuRFbWuIr64g==", - "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/preact" + "node": ">=0.10.0" } }, - "node_modules/prettier": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.0.0.tgz", - "integrity": "sha512-zBf5eHpwHOGPC47h0zrPyNn+eAEIdEzfywMoYn2XPi0P44Zp0tSq64rq0xAREh4auw2cJZHo9QUob+NqCQky4g==", + "node_modules/decamelize-keys/node_modules/map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==", "dev": true, - "bin": { - "prettier": "bin/prettier.cjs" - }, "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" + "node": ">=0.10.0" } }, - "node_modules/pretty-bytes": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", - "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", + "node_modules/decimal.js": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz", + "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==", + "dev": true + }, + "node_modules/deep-eql": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.3.tgz", + "integrity": "sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==", "dev": true, + "dependencies": { + "type-detect": "^4.0.0" + }, "engines": { "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/ps-tree": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/ps-tree/-/ps-tree-1.2.0.tgz", - "integrity": "sha512-0VnamPPYHl4uaU/nSFeZZpR21QAWRz+sRv4iW9+v/GS/J5U5iZB5BNN6J0RMoOvdx2gWM2+ZFMIm58q24e4UYA==", + "node_modules/define-data-property": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", + "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", "dev": true, "dependencies": { - "event-stream": "=3.3.4" - }, - "bin": { - "ps-tree": "bin/ps-tree.js" + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" }, "engines": { - "node": ">= 0.10" + "node": ">= 0.4" } }, - "node_modules/q": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", - "integrity": "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==", + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", "dev": true, "engines": { - "node": ">=0.6.0", - "teleport": ">=0.2.0" + "node": ">=0.4.0" } }, - "node_modules/qjobs": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/qjobs/-/qjobs-1.2.0.tgz", - "integrity": "sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg==", + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", "dev": true, "engines": { - "node": ">=0.9" + "node": ">= 0.8" } }, - "node_modules/qs": { - "version": "6.10.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", - "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", + "node_modules/dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", "dev": true, - "dependencies": { - "side-channel": "^1.0.4" - }, "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "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==", + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", "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" - } - ] + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } }, - "node_modules/quick-lru": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", - "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", + "node_modules/detect-libc": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", + "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==", "dev": true, - "engines": { - "node": ">=10" + "bin": { + "detect-libc": "bin/detect-libc.js" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">=0.10" } }, - "node_modules/randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "node_modules/devlop": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz", + "integrity": "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==", "dev": true, "dependencies": { - "safe-buffer": "^5.1.0" + "dequal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "node_modules/di": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/di/-/di-0.0.1.tgz", + "integrity": "sha512-uJaamHkagcZtHPqCIHZxnFrXlunQXgBOsZSUOWwFw31QJCAbyTBoHMW75YOTur5ZNx8pIeAKgf6GWIgaqqiLhA==", + "dev": true + }, + "node_modules/diff": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", + "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", "dev": true, "engines": { - "node": ">= 0.6" + "node": ">=0.3.1" } }, - "node_modules/raw-body": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", - "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", "dev": true, "dependencies": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" + "path-type": "^4.0.0" }, "engines": { - "node": ">= 0.8" + "node": ">=8" } }, - "node_modules/read-pkg": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-6.0.0.tgz", - "integrity": "sha512-X1Fu3dPuk/8ZLsMhEj5f4wFAF0DWoK7qhGJvgaijocXxBmSToKfbFtqbxMO7bVjNA1dmE5huAzjXj/ey86iw9Q==", + "node_modules/dom-serialize": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/dom-serialize/-/dom-serialize-2.2.1.tgz", + "integrity": "sha512-Yra4DbvoW7/Z6LBN560ZwXMjoNOSAN2wRsKFGc4iBeso+mpIA6qj1vfdf9HpMaKAqG6wXTy+1SYEzmNpKXOSsQ==", "dev": true, "dependencies": { - "@types/normalize-package-data": "^2.4.0", - "normalize-package-data": "^3.0.2", - "parse-json": "^5.2.0", - "type-fest": "^1.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "custom-event": "~1.0.0", + "ent": "~2.2.0", + "extend": "^3.0.0", + "void-elements": "^2.0.0" } }, - "node_modules/read-pkg-up": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-8.0.0.tgz", - "integrity": "sha512-snVCqPczksT0HS2EC+SxUndvSzn6LRCwpfSvLrIfR5BKDQQZMaI6jPRC9dYvYFDRAuFEAnkwww8kBBNE/3VvzQ==", + "node_modules/dom-serializer": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", "dev": true, "dependencies": { - "find-up": "^5.0.0", - "read-pkg": "^6.0.0", - "type-fest": "^1.0.1" - }, - "engines": { - "node": ">=12" + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" } }, - "node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "node_modules/dom-serializer/node_modules/entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", "dev": true, - "dependencies": { - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" } }, - "node_modules/redent": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/redent/-/redent-4.0.0.tgz", - "integrity": "sha512-tYkDkVVtYkSVhuQ4zBgfvciymHaeuel+zFKXShfDnFP5SyVEP7qo70Rf1jTOTCx3vGNAbnEi/xFkcfQVMIBWag==", + "node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ] + }, + "node_modules/domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", "dev": true, "dependencies": { - "indent-string": "^5.0.0", - "strip-indent": "^4.0.0" + "domelementtype": "^2.2.0" }, "engines": { - "node": ">=12" + "node": ">= 4" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", - "dev": true, - "engines": { - "node": ">=0.10.0" + "url": "https://github.com/fb55/domhandler?sponsor=1" } }, - "node_modules/requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", - "dev": true - }, - "node_modules/resolve": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", - "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "node_modules/domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", "dev": true, "dependencies": { - "is-core-module": "^2.9.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/fb55/domutils?sponsor=1" } }, - "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "node_modules/dotenv": { + "version": "16.3.1", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.3.1.tgz", + "integrity": "sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ==", "dev": true, "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/motdotla/dotenv?sponsor=1" } }, - "node_modules/rfdc": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", - "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==", + "node_modules/dotenv-expand": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-5.1.0.tgz", + "integrity": "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==", "dev": true }, - "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/duplexer": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", + "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", + "dev": true }, - "node_modules/rollup": { - "version": "3.26.2", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.26.2.tgz", - "integrity": "sha512-6umBIGVz93er97pMgQO08LuH3m6PUb3jlDUUGFsNJB6VgTCUaDFpupf5JfU30529m/UKOgmiX+uY6Sx8cOYpLA==", + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "dev": true + }, + "node_modules/electron-to-chromium": { + "version": "1.4.598", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.598.tgz", + "integrity": "sha512-0JnipX0scPUlwsptQVCZggoCpREv+IrVD3h0ZG+sldmK9L27tSV3QjV8+QdaA4qQTzDf3PluNS45YYJky1oASw==", + "dev": true + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", "dev": true, - "bin": { - "rollup": "dist/bin/rollup" - }, "engines": { - "node": ">=14.18.0", - "npm": ">=8.0.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" + "node": ">= 0.8" } }, - "node_modules/rollup-plugin-dts": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-dts/-/rollup-plugin-dts-5.3.0.tgz", - "integrity": "sha512-8FXp0ZkyZj1iU5klkIJYLjIq/YZSwBoERu33QBDxm/1yw5UU4txrEtcmMkrq+ZiKu3Q4qvPCNqc3ovX6rjqzbQ==", + "node_modules/engine.io": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.5.4.tgz", + "integrity": "sha512-KdVSDKhVKyOi+r5uEabrDLZw2qXStVvCsEB/LN3mw4WFi6Gx50jTyuxYVCwAAC0U46FdnzP/ScKRBTXb/NiEOg==", "dev": true, "dependencies": { - "magic-string": "^0.30.0" + "@types/cookie": "^0.4.1", + "@types/cors": "^2.8.12", + "@types/node": ">=10.0.0", + "accepts": "~1.3.4", + "base64id": "2.0.0", + "cookie": "~0.4.1", + "cors": "~2.8.5", + "debug": "~4.3.1", + "engine.io-parser": "~5.2.1", + "ws": "~8.11.0" }, "engines": { - "node": ">=v14" - }, - "funding": { - "url": "https://github.com/sponsors/Swatinem" - }, - "optionalDependencies": { - "@babel/code-frame": "^7.18.6" - }, - "peerDependencies": { - "rollup": "^3.0.0", - "typescript": "^4.1 || ^5.0" - } - }, - "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": ">=10.2.0" } }, - "node_modules/safe-buffer": { + "node_modules/engine.io-parser": { "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "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/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true - }, - "node_modules/search-insights": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/search-insights/-/search-insights-2.6.0.tgz", - "integrity": "sha512-vU2/fJ+h/Mkm/DJOe+EaM5cafJv/1rRTZpGJTuFPf/Q5LjzgMDsqPdSaZsAe+GAWHHsfsu+rQSAn6c8IGtBEVw==", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.2.1.tgz", + "integrity": "sha512-9JktcM3u18nU9N2Lz3bWeBgxVgOKpw7yhRaoxQA3FUDZzzw+9WlA6p4G4u0RixNkg14fH7EfEc/RhpurtiROTQ==", "dev": true, - "peer": true, "engines": { - "node": ">=8.16.0" + "node": ">=10.0.0" } }, - "node_modules/semver": { - "version": "7.5.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.1.tgz", - "integrity": "sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==", + "node_modules/engine.io/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": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" + "ms": "2.1.2" }, "engines": { - "node": ">=10" + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "node_modules/engine.io/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/shiki": { - "version": "0.14.3", - "resolved": "https://registry.npmjs.org/shiki/-/shiki-0.14.3.tgz", - "integrity": "sha512-U3S/a+b0KS+UkTyMjoNojvTgrBHjgp7L6ovhFVZsXmBGnVdQ4K4U9oK0z63w538S91ATngv1vXigHCSWOwnr+g==", - "dev": true, - "dependencies": { - "ansi-sequence-parser": "^1.1.0", - "jsonc-parser": "^3.2.0", - "vscode-oniguruma": "^1.7.0", - "vscode-textmate": "^8.0.0" - } + "node_modules/ent": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz", + "integrity": "sha512-GHrMyVZQWvTIdDtpiEXdHZnFQKzeO09apj8Cbl4pKWy4i0Oprcq17usfDt5aO63swf0JOeMWjWQE/LzgSRuWpA==", + "dev": true }, - "node_modules/side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "node_modules/entities": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-3.0.1.tgz", + "integrity": "sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==", "dev": true, - "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" + "engines": { + "node": ">=0.12" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/fb55/entities?sponsor=1" } }, - "node_modules/socket.io": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.5.1.tgz", - "integrity": "sha512-0y9pnIso5a9i+lJmsCdtmTTgJFFSvNQKDnPQRz28mGNnxbmqYg2QPtJTLFxhymFZhAIn50eHAKzJeiNaKr+yUQ==", + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", "dev": true, "dependencies": { - "accepts": "~1.3.4", - "base64id": "~2.0.0", - "debug": "~4.3.2", - "engine.io": "~6.2.0", - "socket.io-adapter": "~2.4.0", - "socket.io-parser": "~4.0.4" - }, - "engines": { - "node": ">=10.0.0" + "is-arrayish": "^0.2.1" } }, - "node_modules/socket.io-adapter": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.4.0.tgz", - "integrity": "sha512-W4N+o69rkMEGVuk2D/cvca3uYsvGlMwsySWV447y99gUPghxq42BxqLNMndb+a1mm/5/7NeXVQS7RLa2XyXvYg==", + "node_modules/es6-promise": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", + "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==", "dev": true }, - "node_modules/socket.io-parser": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.0.5.tgz", - "integrity": "sha512-sNjbT9dX63nqUFIOv95tTVm6elyIU4RvB1m8dOeZt+IgWwcWklFDOdmGcfo3zSiRsnR/3pJkjY5lfoGqEe4Eig==", + "node_modules/es6-promisify": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", + "integrity": "sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ==", "dev": true, "dependencies": { - "@types/component-emitter": "^1.2.10", - "component-emitter": "~1.3.0", - "debug": "~4.3.1" - }, - "engines": { - "node": ">=10.0.0" + "es6-promise": "^4.0.3" } }, - "node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "node_modules/esbuild": { + "version": "0.19.7", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.7.tgz", + "integrity": "sha512-6brbTZVqxhqgbpqBR5MzErImcpA0SQdoKOkcWK/U30HtQxnokIpG3TX2r0IJqbFUzqLjhU/zC1S5ndgakObVCQ==", "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, "engines": { - "node": ">=0.10.0" + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/android-arm": "0.19.7", + "@esbuild/android-arm64": "0.19.7", + "@esbuild/android-x64": "0.19.7", + "@esbuild/darwin-arm64": "0.19.7", + "@esbuild/darwin-x64": "0.19.7", + "@esbuild/freebsd-arm64": "0.19.7", + "@esbuild/freebsd-x64": "0.19.7", + "@esbuild/linux-arm": "0.19.7", + "@esbuild/linux-arm64": "0.19.7", + "@esbuild/linux-ia32": "0.19.7", + "@esbuild/linux-loong64": "0.19.7", + "@esbuild/linux-mips64el": "0.19.7", + "@esbuild/linux-ppc64": "0.19.7", + "@esbuild/linux-riscv64": "0.19.7", + "@esbuild/linux-s390x": "0.19.7", + "@esbuild/linux-x64": "0.19.7", + "@esbuild/netbsd-x64": "0.19.7", + "@esbuild/openbsd-x64": "0.19.7", + "@esbuild/sunos-x64": "0.19.7", + "@esbuild/win32-arm64": "0.19.7", + "@esbuild/win32-ia32": "0.19.7", + "@esbuild/win32-x64": "0.19.7" } }, - "node_modules/source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">=6" } }, - "node_modules/source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "dev": true + }, + "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, - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/spdx-correct": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", - "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true + }, + "node_modules/event-stream": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/event-stream/-/event-stream-3.3.4.tgz", + "integrity": "sha512-QHpkERcGsR0T7Qm3HNJSyXKEEj8AHNxkY3PK8TS2KJvQ7NiSHe3DDpwVKKtoYprL/AreyzFBeIkBIWChAqn60g==", "dev": true, "dependencies": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" + "duplexer": "~0.1.1", + "from": "~0", + "map-stream": "~0.1.0", + "pause-stream": "0.0.11", + "split": "0.3", + "stream-combiner": "~0.0.4", + "through": "~2.3.1" } }, - "node_modules/spdx-exceptions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", - "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", "dev": true }, - "node_modules/spdx-expression-parse": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", - "dev": true, - "dependencies": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/spdx-license-ids": { - "version": "3.0.11", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.11.tgz", - "integrity": "sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==", + "node_modules/eventti": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eventti/-/eventti-3.0.0.tgz", + "integrity": "sha512-3+eInZ4r1tOoeBQzG/3E2CvTcdkoMSipp3PEfWdNmniMu14pUCUpmHmyC0DrgVQDhLxN+TpS3HcXFi17Fmup5g==", "dev": true }, - "node_modules/split": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/split/-/split-0.3.3.tgz", - "integrity": "sha512-wD2AeVmxXRBoX44wAycgjVpMhvbwdI2aZjCkvfNcH1YqHQvJVa1duWc73OyVGJUc05fhFaTZeQ/PYsrmyH0JVA==", + "node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", "dev": true, "dependencies": { - "through": "2" + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" }, "engines": { - "node": "*" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, - "node_modules/statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true + }, + "node_modules/fast-glob": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, "engines": { - "node": ">= 0.6" + "node": ">=8.6.0" } }, - "node_modules/stream-combiner": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.0.4.tgz", - "integrity": "sha512-rT00SPnTVyRsaSz5zgSPma/aHSOic5U1prhYdRy5HS2kTZviFpmDgzilbtsJsxiroqACmayynDN/9VzIbX5DOw==", + "node_modules/fastq": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", + "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", "dev": true, "dependencies": { - "duplexer": "~0.1.1" + "reusify": "^1.0.4" } }, - "node_modules/streamroller": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-3.1.2.tgz", - "integrity": "sha512-wZswqzbgGGsXYIrBYhOE0yP+nQ6XRk7xDcYwuQAGTYXdyAUmvgVFE0YU1g5pvQT0m7GBaQfYcSnlHbapuK0H0A==", + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", "dev": true, "dependencies": { - "date-format": "^4.0.13", - "debug": "^4.3.4", - "fs-extra": "^8.1.0" + "to-regex-range": "^5.0.1" }, "engines": { - "node": ">=8.0" + "node": ">=8" } }, - "node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "node_modules/finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", "dev": true, "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" }, "engines": { - "node": ">=8" + "node": ">= 0.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==", + "node_modules/finalhandler/node_modules/on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", "dev": true, "dependencies": { - "ansi-regex": "^5.0.1" + "ee-first": "1.1.1" }, "engines": { - "node": ">=8" + "node": ">= 0.8" } }, - "node_modules/strip-indent": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-4.0.0.tgz", - "integrity": "sha512-mnVSV2l+Zv6BLpSD/8V87CW/y9EmmbYzGCIavsnsI6/nwn26DwffM/yztm30Z/I2DY9wdS3vXVCMnHDgZaVNoA==", + "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": { - "min-indent": "^1.0.1" + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" }, "engines": { - "node": ">=12" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "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==", + "node_modules/flat": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "bin": { + "flat": "cli.js" } }, - "node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "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/focus-trap": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/focus-trap/-/focus-trap-7.5.4.tgz", + "integrity": "sha512-N7kHdlgsO/v+iD/dMoJKtsSqs5Dz/dXZVebRgJw23LDk+jMi/974zyiOYDziY2JPp8xivq9BmUGwIJMiuSBi7w==", "dev": true, "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" + "tabbable": "^6.2.0" } }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "node_modules/follow-redirects": { + "version": "1.15.3", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.3.tgz", + "integrity": "sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==", "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], "engines": { - "node": ">= 0.4" + "node": ">=4.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "peerDependenciesMeta": { + "debug": { + "optional": true + } } }, - "node_modules/tabbable": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-6.2.0.tgz", - "integrity": "sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==", - "dev": true - }, - "node_modules/temp-fs": { - "version": "0.9.9", - "resolved": "https://registry.npmjs.org/temp-fs/-/temp-fs-0.9.9.tgz", - "integrity": "sha512-WfecDCR1xC9b0nsrzSaxPf3ZuWeWLUWblW4vlDQAa1biQaKHiImHnJfeQocQe/hXKMcolRzgkcVX/7kK4zoWbw==", + "node_modules/foreground-child": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", + "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", "dev": true, "dependencies": { - "rimraf": "~2.5.2" + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" }, "engines": { - "node": ">=0.8.0" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/temp-fs/node_modules/rimraf": { - "version": "2.5.4", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.5.4.tgz", - "integrity": "sha512-Lw7SHMjssciQb/rRz7JyPIy9+bbUshEucPoLRvWqy09vC5zQixl8Uet+Zl+SROBB/JMWHJRdCk1qdxNWHNMvlQ==", + "node_modules/foreground-child/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", "dev": true, - "dependencies": { - "glob": "^7.0.5" + "engines": { + "node": ">=14" }, - "bin": { - "rimraf": "bin.js" + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/terser": { - "version": "5.18.2", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.18.2.tgz", - "integrity": "sha512-Ah19JS86ypbJzTzvUCX7KOsEIhDaRONungA4aYBjEP3JZRf4ocuDzTg4QWZnPn9DEMiMYGJPiSOy7aykoCc70w==", + "node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", "dev": true, "dependencies": { - "@jridgewell/source-map": "^0.3.3", - "acorn": "^8.8.2", - "commander": "^2.20.0", - "source-map-support": "~0.5.20" - }, - "bin": { - "terser": "bin/terser" + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" }, "engines": { - "node": ">=10" + "node": ">= 6" } }, - "node_modules/through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", + "node_modules/from": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/from/-/from-0.1.7.tgz", + "integrity": "sha512-twe20eF1OxVxp/ML/kq2p1uc6KvFK/+vs8WjEbeKmV2He22MKm7YF2ANIt+EOqhJ5L3K/SuuPhk0hWQDjOM23g==", "dev": true }, - "node_modules/tikki": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/tikki/-/tikki-2.0.0.tgz", - "integrity": "sha512-mNSEzTqFzncSuS4lz2nhMNKQltCwI53GQJHiSAqCoFs1jCNpdf9GwyrrYd2NXLrnNw3HCPkFgd8jGM8iuZcrvA==", - "dev": true, - "peerDependencies": { - "eventti": "^3.0.0" - } - }, - "node_modules/tmp": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", - "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", + "node_modules/fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", "dev": true, "dependencies": { - "rimraf": "^3.0.0" + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" }, "engines": { - "node": ">=8.17.0" + "node": ">=6 <7 || >=8" } }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } + "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/toidentifier": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", - "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">=0.6" + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, - "node_modules/trim-newlines": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-4.0.2.tgz", - "integrity": "sha512-GJtWyq9InR/2HRiLZgpIKv+ufIKrVrvjQWEj7PxAXNc5dwbNJkqhAUoAGgzRmULAnoOM5EIpveYd3J2VeSAIew==", + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", "dev": true, - "engines": { - "node": ">=12" - }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/tslib": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz", - "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==", - "dev": true, - "optional": true, - "peer": true - }, - "node_modules/type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", "dev": true, "engines": { - "node": ">=4" + "node": "6.* || 8.* || >= 10.*" } }, - "node_modules/type-fest": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", - "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", + "node_modules/get-func-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz", + "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==", "dev": true, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": "*" } }, - "node_modules/type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "node_modules/get-intrinsic": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", + "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", "dev": true, "dependencies": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" }, - "engines": { - "node": ">= 0.6" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/typescript": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.1.6.tgz", - "integrity": "sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==", + "node_modules/get-port": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/get-port/-/get-port-4.2.0.tgz", + "integrity": "sha512-/b3jarXkH8KJoOMQc3uVGHASwGLPq3gSFJ7tgJm2diza+bydJPTGOibin2steecKeOylE8oY2JERlVWkAJO6yw==", "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, "engines": { - "node": ">=14.17" + "node": ">=6" } }, - "node_modules/ua-parser-js": { - "version": "0.7.33", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.33.tgz", - "integrity": "sha512-s8ax/CeZdK9R/56Sui0WM6y9OFREJarMRHqLB2EwkovemBxNQ+Bqu8GAsUnVcXKgphb++ghr/B2BZx4mahujPw==", + "node_modules/get-stdin": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-9.0.0.tgz", + "integrity": "sha512-dVKBjfWisLAicarI2Sf+JuBE/DghV4UzNAVe9yhEJuzeREd3JhOTE9cUaJTeSa77fsbQUK3pcOpJfM59+VKZaA==", "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/ua-parser-js" - }, - { - "type": "paypal", - "url": "https://paypal.me/faisalman" - } - ], "engines": { - "node": "*" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", "dev": true, "engines": { - "node": ">= 4.0.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "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": ">= 0.8" + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, "engines": { - "node": ">= 0.4.0" + "node": ">= 6" } }, - "node_modules/validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "node_modules/globals": { + "version": "13.23.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.23.0.tgz", + "integrity": "sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==", "dev": true, "dependencies": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "node_modules/globals/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": ">= 0.8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/vite": { - "version": "4.3.9", - "resolved": "https://registry.npmjs.org/vite/-/vite-4.3.9.tgz", - "integrity": "sha512-qsTNZjO9NoJNW7KnOrgYwczm0WctJ8m/yqYAMAK9Lxt4SoySUfS5S8ia9K7JHpa3KEeMfyF8LoJ3c5NeBJy6pg==", + "node_modules/globby": { + "version": "13.2.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-13.2.2.tgz", + "integrity": "sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==", "dev": true, - "peer": true, "dependencies": { - "esbuild": "^0.17.5", - "postcss": "^8.4.23", - "rollup": "^3.21.0" - }, - "bin": { - "vite": "bin/vite.js" + "dir-glob": "^3.0.1", + "fast-glob": "^3.3.0", + "ignore": "^5.2.4", + "merge2": "^1.4.1", + "slash": "^4.0.0" }, "engines": { - "node": "^14.18.0 || >=16.0.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - }, - "peerDependencies": { - "@types/node": ">= 14", - "less": "*", - "sass": "*", - "stylus": "*", - "sugarss": "*", - "terser": "^5.4.0" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - }, - "less": { - "optional": true - }, - "sass": { - "optional": true - }, - "stylus": { - "optional": true - }, - "sugarss": { - "optional": true - }, - "terser": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/vitepress": { - "version": "1.0.0-beta.5", - "resolved": "https://registry.npmjs.org/vitepress/-/vitepress-1.0.0-beta.5.tgz", - "integrity": "sha512-/RjqqRsSEKkzF6HhK5e5Ij+bZ7ETb9jNCRRgIMm10gJ+ZLC3D1OqkE465lEqCeJUgt2HZ6jmWjDqIBfrJSpv7w==", - "dev": true, - "dependencies": { - "@docsearch/css": "^3.5.1", - "@docsearch/js": "^3.5.1", - "@vitejs/plugin-vue": "^4.2.3", - "@vue/devtools-api": "^6.5.0", - "@vueuse/core": "^10.2.1", - "@vueuse/integrations": "^10.2.1", - "body-scroll-lock": "4.0.0-beta.0", - "focus-trap": "^7.4.3", - "mark.js": "8.11.1", - "minisearch": "^6.1.0", - "shiki": "^0.14.3", - "vite": "4.4.0-beta.3", - "vue": "^3.3.4" + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.3" }, - "bin": { - "vitepress": "bin/vitepress.js" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/vitepress/node_modules/@esbuild/android-arm": { - "version": "0.18.11", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.11.tgz", - "integrity": "sha512-q4qlUf5ucwbUJZXF5tEQ8LF7y0Nk4P58hOsGk3ucY0oCwgQqAnqXVbUuahCddVHfrxmpyewRpiTHwVHIETYu7Q==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true }, - "node_modules/vitepress/node_modules/@esbuild/android-arm64": { - "version": "0.18.11", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.11.tgz", - "integrity": "sha512-snieiq75Z1z5LJX9cduSAjUr7vEI1OdlzFPMw0HH5YI7qQHDd3qs+WZoMrWYDsfRJSq36lIA6mfZBkvL46KoIw==", - "cpu": [ - "arm64" - ], + "node_modules/gzip-size": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-7.0.0.tgz", + "integrity": "sha512-O1Ld7Dr+nqPnmGpdhzLmMTQ4vAsD+rHwMm1NLUmoUFFymBOMKxCCrtDxqdBRYXdeEPEi3SyoR4TizJLQrnKBNA==", "dev": true, - "optional": true, - "os": [ - "android" - ], + "dependencies": { + "duplexer": "^0.1.2" + }, "engines": { - "node": ">=12" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/vitepress/node_modules/@esbuild/android-x64": { - "version": "0.18.11", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.11.tgz", - "integrity": "sha512-iPuoxQEV34+hTF6FT7om+Qwziv1U519lEOvekXO9zaMMlT9+XneAhKL32DW3H7okrCOBQ44BMihE8dclbZtTuw==", - "cpu": [ - "x64" - ], + "node_modules/gzip-size-cli": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/gzip-size-cli/-/gzip-size-cli-5.1.0.tgz", + "integrity": "sha512-XBC1Ia0IWm0/cbiU33fPfNL6uFCq7IjngRkFCelullMBcEna9Re4DNPfpsRgREDpOR5FGNupBfdb377uI5o7iQ==", "dev": true, - "optional": true, - "os": [ - "android" - ], + "dependencies": { + "chalk": "^4.1.2", + "get-stdin": "^9.0.0", + "gzip-size": "^7.0.0", + "meow": "^10.1.2", + "pretty-bytes": "^5.6.0" + }, + "bin": { + "gzip-size": "cli.js" + }, "engines": { "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/vitepress/node_modules/@esbuild/darwin-arm64": { - "version": "0.18.11", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.11.tgz", - "integrity": "sha512-Gm0QkI3k402OpfMKyQEEMG0RuW2LQsSmI6OeO4El2ojJMoF5NLYb3qMIjvbG/lbMeLOGiW6ooU8xqc+S0fgz2w==", - "cpu": [ - "arm64" - ], + "node_modules/gzip-size-cli/node_modules/decamelize": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-5.0.1.tgz", + "integrity": "sha512-VfxadyCECXgQlkoEAjeghAr5gY3Hf+IKjKb+X8tGVDtveCjN+USwprd2q3QXBR9T1+x2DG0XZF5/w+7HAtSaXA==", "dev": true, - "optional": true, - "os": [ - "darwin" - ], "engines": { - "node": ">=12" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/vitepress/node_modules/@esbuild/darwin-x64": { - "version": "0.18.11", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.11.tgz", - "integrity": "sha512-N15Vzy0YNHu6cfyDOjiyfJlRJCB/ngKOAvoBf1qybG3eOq0SL2Lutzz9N7DYUbb7Q23XtHPn6lMDF6uWbGv9Fw==", - "cpu": [ - "x64" - ], + "node_modules/gzip-size-cli/node_modules/meow": { + "version": "10.1.5", + "resolved": "https://registry.npmjs.org/meow/-/meow-10.1.5.tgz", + "integrity": "sha512-/d+PQ4GKmGvM9Bee/DPa8z3mXs/pkvJE2KEThngVNOqtmljC6K7NMPxtc2JeZYTmpWb9k/TmxjeL18ez3h7vCw==", "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } + "dependencies": { + "@types/minimist": "^1.2.2", + "camelcase-keys": "^7.0.0", + "decamelize": "^5.0.0", + "decamelize-keys": "^1.1.0", + "hard-rejection": "^2.1.0", + "minimist-options": "4.1.0", + "normalize-package-data": "^3.0.2", + "read-pkg-up": "^8.0.0", + "redent": "^4.0.0", + "trim-newlines": "^4.0.2", + "type-fest": "^1.2.2", + "yargs-parser": "^20.2.9" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "node_modules/vitepress/node_modules/@esbuild/freebsd-arm64": { - "version": "0.18.11", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.11.tgz", - "integrity": "sha512-atEyuq6a3omEY5qAh5jIORWk8MzFnCpSTUruBgeyN9jZq1K/QI9uke0ATi3MHu4L8c59CnIi4+1jDKMuqmR71A==", - "cpu": [ - "arm64" - ], + "node_modules/gzip-size-cli/node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", "dev": true, - "optional": true, - "os": [ - "freebsd" - ], "engines": { - "node": ">=12" + "node": ">=10" } }, - "node_modules/vitepress/node_modules/@esbuild/freebsd-x64": { - "version": "0.18.11", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.11.tgz", - "integrity": "sha512-XtuPrEfBj/YYYnAAB7KcorzzpGTvOr/dTtXPGesRfmflqhA4LMF0Gh/n5+a9JBzPuJ+CGk17CA++Hmr1F/gI0Q==", - "cpu": [ - "x64" - ], + "node_modules/hard-rejection": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", + "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==", "dev": true, - "optional": true, - "os": [ - "freebsd" - ], "engines": { - "node": ">=12" + "node": ">=6" } }, - "node_modules/vitepress/node_modules/@esbuild/linux-arm": { - "version": "0.18.11", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.11.tgz", - "integrity": "sha512-Idipz+Taso/toi2ETugShXjQ3S59b6m62KmLHkJlSq/cBejixmIydqrtM2XTvNCywFl3VC7SreSf6NV0i6sRyg==", - "cpu": [ - "arm" - ], + "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, - "optional": true, - "os": [ - "linux" - ], "engines": { - "node": ">=12" + "node": ">=8" } }, - "node_modules/vitepress/node_modules/@esbuild/linux-arm64": { - "version": "0.18.11", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.11.tgz", - "integrity": "sha512-c6Vh2WS9VFKxKZ2TvJdA7gdy0n6eSy+yunBvv4aqNCEhSWVor1TU43wNRp2YLO9Vng2G+W94aRz+ILDSwAiYog==", - "cpu": [ - "arm64" - ], + "node_modules/has-property-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", + "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" + "dependencies": { + "get-intrinsic": "^1.2.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/vitepress/node_modules/@esbuild/linux-ia32": { - "version": "0.18.11", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.11.tgz", - "integrity": "sha512-S3hkIF6KUqRh9n1Q0dSyYcWmcVa9Cg+mSoZEfFuzoYXXsk6196qndrM+ZiHNwpZKi3XOXpShZZ+9dfN5ykqjjw==", - "cpu": [ - "ia32" - ], + "node_modules/has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", "dev": true, - "optional": true, - "os": [ - "linux" - ], "engines": { - "node": ">=12" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/vitepress/node_modules/@esbuild/linux-loong64": { - "version": "0.18.11", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.11.tgz", - "integrity": "sha512-MRESANOoObQINBA+RMZW+Z0TJWpibtE7cPFnahzyQHDCA9X9LOmGh68MVimZlM9J8n5Ia8lU773te6O3ILW8kw==", - "cpu": [ - "loong64" - ], + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", "dev": true, - "optional": true, - "os": [ - "linux" - ], "engines": { - "node": ">=12" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/vitepress/node_modules/@esbuild/linux-mips64el": { - "version": "0.18.11", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.11.tgz", - "integrity": "sha512-qVyPIZrXNMOLYegtD1u8EBccCrBVshxMrn5MkuFc3mEVsw7CCQHaqZ4jm9hbn4gWY95XFnb7i4SsT3eflxZsUg==", - "cpu": [ - "mips64el" - ], + "node_modules/hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", "dev": true, - "optional": true, - "os": [ - "linux" - ], + "dependencies": { + "function-bind": "^1.1.2" + }, "engines": { - "node": ">=12" + "node": ">= 0.4" } }, - "node_modules/vitepress/node_modules/@esbuild/linux-ppc64": { - "version": "0.18.11", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.11.tgz", - "integrity": "sha512-T3yd8vJXfPirZaUOoA9D2ZjxZX4Gr3QuC3GztBJA6PklLotc/7sXTOuuRkhE9W/5JvJP/K9b99ayPNAD+R+4qQ==", - "cpu": [ - "ppc64" - ], + "node_modules/hast-util-from-parse5": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-8.0.1.tgz", + "integrity": "sha512-Er/Iixbc7IEa7r/XLtuG52zoqn/b3Xng/w6aZQ0xGVxzhw5xUFxcRqdPzP6yFi/4HBYRaifaI5fQ1RH8n0ZeOQ==", "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" + "dependencies": { + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "devlop": "^1.0.0", + "hastscript": "^8.0.0", + "property-information": "^6.0.0", + "vfile": "^6.0.0", + "vfile-location": "^5.0.0", + "web-namespaces": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/vitepress/node_modules/@esbuild/linux-riscv64": { - "version": "0.18.11", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.11.tgz", - "integrity": "sha512-evUoRPWiwuFk++snjH9e2cAjF5VVSTj+Dnf+rkO/Q20tRqv+644279TZlPK8nUGunjPAtQRCj1jQkDAvL6rm2w==", - "cpu": [ - "riscv64" - ], + "node_modules/hast-util-parse-selector": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-4.0.0.tgz", + "integrity": "sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==", "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/vitepress/node_modules/@esbuild/linux-s390x": { - "version": "0.18.11", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.11.tgz", - "integrity": "sha512-/SlRJ15XR6i93gRWquRxYCfhTeC5PdqEapKoLbX63PLCmAkXZHY2uQm2l9bN0oPHBsOw2IswRZctMYS0MijFcg==", - "cpu": [ - "s390x" - ], + "node_modules/hast-util-raw": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/hast-util-raw/-/hast-util-raw-9.0.1.tgz", + "integrity": "sha512-5m1gmba658Q+lO5uqL5YNGQWeh1MYWZbZmWrM5lncdcuiXuo5E2HT/CIOp0rLF8ksfSwiCVJ3twlgVRyTGThGA==", "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" + "dependencies": { + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "@ungap/structured-clone": "^1.0.0", + "hast-util-from-parse5": "^8.0.0", + "hast-util-to-parse5": "^8.0.0", + "html-void-elements": "^3.0.0", + "mdast-util-to-hast": "^13.0.0", + "parse5": "^7.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.0", + "web-namespaces": "^2.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/vitepress/node_modules/@esbuild/linux-x64": { - "version": "0.18.11", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.11.tgz", - "integrity": "sha512-xcncej+wF16WEmIwPtCHi0qmx1FweBqgsRtEL1mSHLFR6/mb3GEZfLQnx+pUDfRDEM4DQF8dpXIW7eDOZl1IbA==", - "cpu": [ - "x64" - ], + "node_modules/hast-util-to-html": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-9.0.0.tgz", + "integrity": "sha512-IVGhNgg7vANuUA2XKrT6sOIIPgaYZnmLx3l/CCOAK0PtgfoHrZwX7jCSYyFxHTrGmC6S9q8aQQekjp4JPZF+cw==", + "dev": true, + "dependencies": { + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "ccount": "^2.0.0", + "comma-separated-tokens": "^2.0.0", + "hast-util-raw": "^9.0.0", + "hast-util-whitespace": "^3.0.0", + "html-void-elements": "^3.0.0", + "mdast-util-to-hast": "^13.0.0", + "property-information": "^6.0.0", + "space-separated-tokens": "^2.0.0", + "stringify-entities": "^4.0.0", + "zwitch": "^2.0.4" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-to-parse5": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/hast-util-to-parse5/-/hast-util-to-parse5-8.0.0.tgz", + "integrity": "sha512-3KKrV5ZVI8if87DVSi1vDeByYrkGzg4mEfeu4alwgmmIeARiBLKCZS2uw5Gb6nU9x9Yufyj3iudm6i7nl52PFw==", "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" + "dependencies": { + "@types/hast": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "devlop": "^1.0.0", + "property-information": "^6.0.0", + "space-separated-tokens": "^2.0.0", + "web-namespaces": "^2.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/vitepress/node_modules/@esbuild/netbsd-x64": { - "version": "0.18.11", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.11.tgz", - "integrity": "sha512-aSjMHj/F7BuS1CptSXNg6S3M4F3bLp5wfFPIJM+Km2NfIVfFKhdmfHF9frhiCLIGVzDziggqWll0B+9AUbud/Q==", - "cpu": [ - "x64" - ], + "node_modules/hast-util-whitespace": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz", + "integrity": "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==", "dev": true, - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=12" + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/vitepress/node_modules/@esbuild/openbsd-x64": { - "version": "0.18.11", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.11.tgz", - "integrity": "sha512-tNBq+6XIBZtht0xJGv7IBB5XaSyvYPCm1PxJ33zLQONdZoLVM0bgGqUrXnJyiEguD9LU4AHiu+GCXy/Hm9LsdQ==", - "cpu": [ - "x64" - ], + "node_modules/hastscript": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-8.0.0.tgz", + "integrity": "sha512-dMOtzCEd3ABUeSIISmrETiKuyydk1w0pa+gE/uormcTpSYuaNJPbX1NU3JLyscSLjwAQM8bWMhhIlnCqnRvDTw==", "dev": true, - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=12" + "dependencies": { + "@types/hast": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "hast-util-parse-selector": "^4.0.0", + "property-information": "^6.0.0", + "space-separated-tokens": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/vitepress/node_modules/@esbuild/sunos-x64": { - "version": "0.18.11", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.11.tgz", - "integrity": "sha512-kxfbDOrH4dHuAAOhr7D7EqaYf+W45LsAOOhAet99EyuxxQmjbk8M9N4ezHcEiCYPaiW8Dj3K26Z2V17Gt6p3ng==", - "cpu": [ - "x64" - ], + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", "dev": true, - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=12" + "bin": { + "he": "bin/he" } }, - "node_modules/vitepress/node_modules/@esbuild/win32-arm64": { - "version": "0.18.11", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.11.tgz", - "integrity": "sha512-Sh0dDRyk1Xi348idbal7lZyfSkjhJsdFeuC13zqdipsvMetlGiFQNdO+Yfp6f6B4FbyQm7qsk16yaZk25LChzg==", - "cpu": [ - "arm64" - ], + "node_modules/hosted-git-info": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", + "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", "dev": true, - "optional": true, - "os": [ - "win32" - ], + "dependencies": { + "lru-cache": "^6.0.0" + }, "engines": { - "node": ">=12" + "node": ">=10" } }, - "node_modules/vitepress/node_modules/@esbuild/win32-ia32": { - "version": "0.18.11", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.11.tgz", - "integrity": "sha512-o9JUIKF1j0rqJTFbIoF4bXj6rvrTZYOrfRcGyL0Vm5uJ/j5CkBD/51tpdxe9lXEDouhRgdr/BYzUrDOvrWwJpg==", - "cpu": [ - "ia32" - ], + "node_modules/html-encoding-sniffer": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-4.0.0.tgz", + "integrity": "sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==", "dev": true, - "optional": true, - "os": [ - "win32" - ], + "dependencies": { + "whatwg-encoding": "^3.1.1" + }, "engines": { - "node": ">=12" + "node": ">=18" } }, - "node_modules/vitepress/node_modules/@esbuild/win32-x64": { - "version": "0.18.11", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.11.tgz", - "integrity": "sha512-rQI4cjLHd2hGsM1LqgDI7oOCYbQ6IBOVsX9ejuRMSze0GqXUG2ekwiKkiBU1pRGSeCqFFHxTrcEydB2Hyoz9CA==", - "cpu": [ - "x64" - ], + "node_modules/html-void-elements": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-3.0.0.tgz", + "integrity": "sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==", "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/vitepress/node_modules/esbuild": { - "version": "0.18.11", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.11.tgz", - "integrity": "sha512-i8u6mQF0JKJUlGR3OdFLKldJQMMs8OqM9Cc3UCi9XXziJ9WERM5bfkHaEAy0YAvPRMgqSW55W7xYn84XtEFTtA==", + "node_modules/htmlnano": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/htmlnano/-/htmlnano-2.1.0.tgz", + "integrity": "sha512-jVGRE0Ep9byMBKEu0Vxgl8dhXYOUk0iNQ2pjsG+BcRB0u0oDF5A9p/iBGMg/PGKYUyMD0OAGu8dVT5Lzj8S58g==", "dev": true, - "hasInstallScript": true, - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=12" - }, - "optionalDependencies": { - "@esbuild/android-arm": "0.18.11", - "@esbuild/android-arm64": "0.18.11", - "@esbuild/android-x64": "0.18.11", - "@esbuild/darwin-arm64": "0.18.11", - "@esbuild/darwin-x64": "0.18.11", - "@esbuild/freebsd-arm64": "0.18.11", - "@esbuild/freebsd-x64": "0.18.11", - "@esbuild/linux-arm": "0.18.11", - "@esbuild/linux-arm64": "0.18.11", - "@esbuild/linux-ia32": "0.18.11", - "@esbuild/linux-loong64": "0.18.11", - "@esbuild/linux-mips64el": "0.18.11", - "@esbuild/linux-ppc64": "0.18.11", - "@esbuild/linux-riscv64": "0.18.11", - "@esbuild/linux-s390x": "0.18.11", - "@esbuild/linux-x64": "0.18.11", - "@esbuild/netbsd-x64": "0.18.11", - "@esbuild/openbsd-x64": "0.18.11", - "@esbuild/sunos-x64": "0.18.11", - "@esbuild/win32-arm64": "0.18.11", - "@esbuild/win32-ia32": "0.18.11", - "@esbuild/win32-x64": "0.18.11" - } - }, - "node_modules/vitepress/node_modules/vite": { - "version": "4.4.0-beta.3", - "resolved": "https://registry.npmjs.org/vite/-/vite-4.4.0-beta.3.tgz", - "integrity": "sha512-IC/thYTvArOFRJ4qvvudnu4KKZOVc+gduS3I9OfC5SbP/Rf4kkP7z6Of2QpKeOSVqwIK24khW6VOUmVD/0yzSQ==", - "dev": true, - "dependencies": { - "esbuild": "^0.18.6", - "postcss": "^8.4.24", - "rollup": "^3.25.2" - }, - "bin": { - "vite": "bin/vite.js" - }, - "engines": { - "node": "^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/vitejs/vite?sponsor=1" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" + "dependencies": { + "cosmiconfig": "^8.0.0", + "posthtml": "^0.16.5", + "timsort": "^0.3.0" }, "peerDependencies": { - "@types/node": ">= 14", - "less": "*", - "lightningcss": "^1.21.0", - "sass": "*", - "stylus": "*", - "sugarss": "*", - "terser": "^5.4.0" + "cssnano": "^6.0.0", + "postcss": "^8.3.11", + "purgecss": "^5.0.0", + "relateurl": "^0.2.7", + "srcset": "4.0.0", + "svgo": "^3.0.2", + "terser": "^5.10.0", + "uncss": "^0.17.3" }, "peerDependenciesMeta": { - "@types/node": { + "cssnano": { "optional": true }, - "less": { + "postcss": { "optional": true }, - "lightningcss": { + "purgecss": { "optional": true }, - "sass": { + "relateurl": { "optional": true }, - "stylus": { + "srcset": { "optional": true }, - "sugarss": { + "svgo": { "optional": true }, "terser": { "optional": true + }, + "uncss": { + "optional": true } } }, - "node_modules/void-elements": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz", - "integrity": "sha512-qZKX4RnBzH2ugr8Lxa7x+0V6XD9Sb/ouARtiasEQCHB1EVU4NXtmHsDDrx1dO4ne5fc3J6EW05BP1Dl0z0iung==", + "node_modules/htmlparser2": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-7.2.0.tgz", + "integrity": "sha512-H7MImA4MS6cw7nbyURtLPO1Tms7C5H602LRETv95z1MxO/7CP7rDVROehUYeYBUYEON94NXXDEPmZuq+hX4sog==", "dev": true, - "engines": { - "node": ">=0.10.0" + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.2", + "domutils": "^2.8.0", + "entities": "^3.0.1" } }, - "node_modules/vscode-oniguruma": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/vscode-oniguruma/-/vscode-oniguruma-1.7.0.tgz", - "integrity": "sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA==", - "dev": true - }, - "node_modules/vscode-textmate": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/vscode-textmate/-/vscode-textmate-8.0.0.tgz", - "integrity": "sha512-AFbieoL7a5LMqcnOF04ji+rpXadgOXnZsxQr//r83kLPr7biP7am3g9zbaZIaBGwBRWeSvoMD4mgPdX3e4NWBg==", - "dev": true - }, - "node_modules/vue": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/vue/-/vue-3.3.4.tgz", - "integrity": "sha512-VTyEYn3yvIeY1Py0WaYGZsXnz3y5UnGi62GjVEqvEGPl6nxbOrCXbVOTQWBEJUqAyTUk2uJ5JLVnYJ6ZzGbrSw==", + "node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", "dev": true, "dependencies": { - "@vue/compiler-dom": "3.3.4", - "@vue/compiler-sfc": "3.3.4", - "@vue/runtime-dom": "3.3.4", - "@vue/server-renderer": "3.3.4", - "@vue/shared": "3.3.4" + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" } }, - "node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "node_modules/http-errors/node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", "dev": true, "dependencies": { - "isexe": "^2.0.0" + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" }, - "bin": { - "which": "bin/which" + "engines": { + "node": ">=8.0.0" } }, - "node_modules/workerpool": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.1.tgz", - "integrity": "sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==", - "dev": true - }, - "node_modules/wrap-ansi": { + "node_modules/http-proxy-agent": { "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.0.tgz", + "integrity": "sha512-+ZT+iBxVUQ1asugqnD6oWoRiS25AkjNfG085dKJGtGxkdwLQrMKU5wJr2bOOFAXzKcTuqq+7fZlTMgG3SRfIYQ==", "dev": true, "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" + "agent-base": "^7.1.0", + "debug": "^4.3.4" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + "node": ">= 14" } }, - "node_modules/wrap-ansi/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==", + "node_modules/http-proxy-agent/node_modules/agent-base": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.0.tgz", + "integrity": "sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==", "dev": true, "dependencies": { - "color-convert": "^2.0.1" + "debug": "^4.3.4" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">= 14" } }, - "node_modules/wrap-ansi/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==", + "node_modules/http-proxy-agent/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": { - "color-name": "~1.1.4" + "ms": "2.1.2" }, "engines": { - "node": ">=7.0.0" + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/wrap-ansi/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/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "node_modules/http-proxy-agent/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/ws": { - "version": "8.2.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz", - "integrity": "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==", + "node_modules/https-proxy-agent": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz", + "integrity": "sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg==", "dev": true, - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" + "dependencies": { + "agent-base": "^4.3.0", + "debug": "^3.1.0" }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } + "engines": { + "node": ">= 4.5.0" } }, - "node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "node_modules/https-proxy-agent/node_modules/agent-base": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz", + "integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==", "dev": true, + "dependencies": { + "es6-promisify": "^5.0.0" + }, "engines": { - "node": ">=10" + "node": ">= 4.0.0" } }, - "node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "node_modules/https-proxy-agent/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/https-proxy-agent/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true }, - "node_modules/yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", "dev": true, "engines": { - "node": ">=10" + "node": ">=10.17.0" } }, - "node_modules/yargs-unparser": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", - "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", "dev": true, "dependencies": { - "camelcase": "^6.0.0", - "decamelize": "^4.0.0", - "flat": "^5.0.2", - "is-plain-obj": "^2.1.0" + "safer-buffer": ">= 2.1.2 < 3" }, "engines": { - "node": ">=10" + "node": ">=0.10.0" } }, - "node_modules/yargs-unparser/node_modules/decamelize": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", - "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", + "node_modules/ignore": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.0.tgz", + "integrity": "sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==", "dev": true, "engines": { - "node": ">=10" + "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/yargs-unparser/node_modules/is-plain-obj": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", - "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "node_modules/import-fresh/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": ">=8" + "node": ">=4" } }, - "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==", + "node_modules/indent-string": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz", + "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==", "dev": true, "engines": { - "node": ">=10" + "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } - } - }, - "dependencies": { - "@algolia/autocomplete-core": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/@algolia/autocomplete-core/-/autocomplete-core-1.9.3.tgz", - "integrity": "sha512-009HdfugtGCdC4JdXUbVJClA0q0zh24yyePn+KUGk3rP7j8FEe/m5Yo/z65gn6nP/cM39PxpzqKrL7A6fP6PPw==", - "dev": true, - "requires": { - "@algolia/autocomplete-plugin-algolia-insights": "1.9.3", - "@algolia/autocomplete-shared": "1.9.3" - } }, - "@algolia/autocomplete-plugin-algolia-insights": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/@algolia/autocomplete-plugin-algolia-insights/-/autocomplete-plugin-algolia-insights-1.9.3.tgz", - "integrity": "sha512-a/yTUkcO/Vyy+JffmAnTWbr4/90cLzw+CC3bRbhnULr/EM0fGNvM13oQQ14f2moLMcVDyAx/leczLlAOovhSZg==", - "dev": true, - "requires": { - "@algolia/autocomplete-shared": "1.9.3" - } - }, - "@algolia/autocomplete-preset-algolia": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/@algolia/autocomplete-preset-algolia/-/autocomplete-preset-algolia-1.9.3.tgz", - "integrity": "sha512-d4qlt6YmrLMYy95n5TB52wtNDr6EgAIPH81dvvvW8UmuWRgxEtY0NJiPwl/h95JtG2vmRM804M0DSwMCNZlzRA==", + "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, - "requires": { - "@algolia/autocomplete-shared": "1.9.3" + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" } }, - "@algolia/autocomplete-shared": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/@algolia/autocomplete-shared/-/autocomplete-shared-1.9.3.tgz", - "integrity": "sha512-Wnm9E4Ye6Rl6sTTqjoymD+l8DjSTHsHboVRYrKgEt8Q7UHm9nYbqhN/i0fhUYA3OAEH7WA8x3jfpnmJm3rKvaQ==", - "dev": true, - "requires": {} - }, - "@algolia/cache-browser-local-storage": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@algolia/cache-browser-local-storage/-/cache-browser-local-storage-4.18.0.tgz", - "integrity": "sha512-rUAs49NLlO8LVLgGzM4cLkw8NJLKguQLgvFmBEe3DyzlinoqxzQMHfKZs6TSq4LZfw/z8qHvRo8NcTAAUJQLcw==", - "dev": true, - "requires": { - "@algolia/cache-common": "4.18.0" - } + "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 }, - "@algolia/cache-common": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@algolia/cache-common/-/cache-common-4.18.0.tgz", - "integrity": "sha512-BmxsicMR4doGbeEXQu8yqiGmiyvpNvejYJtQ7rvzttEAMxOPoWEHrWyzBQw4x7LrBY9pMrgv4ZlUaF8PGzewHg==", + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", "dev": true }, - "@algolia/cache-in-memory": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@algolia/cache-in-memory/-/cache-in-memory-4.18.0.tgz", - "integrity": "sha512-evD4dA1nd5HbFdufBxLqlJoob7E2ozlqJZuV3YlirNx5Na4q1LckIuzjNYZs2ddLzuTc/Xd5O3Ibf7OwPskHxw==", + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", "dev": true, - "requires": { - "@algolia/cache-common": "4.18.0" + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" } }, - "@algolia/client-account": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@algolia/client-account/-/client-account-4.18.0.tgz", - "integrity": "sha512-XsDnlROr3+Z1yjxBJjUMfMazi1V155kVdte6496atvBgOEtwCzTs3A+qdhfsAnGUvaYfBrBkL0ThnhMIBCGcew==", + "node_modules/is-core-module": { + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", "dev": true, - "requires": { - "@algolia/client-common": "4.18.0", - "@algolia/client-search": "4.18.0", - "@algolia/transporter": "4.18.0" + "dependencies": { + "hasown": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "@algolia/client-analytics": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-4.18.0.tgz", - "integrity": "sha512-chEUSN4ReqU7uRQ1C8kDm0EiPE+eJeAXiWcBwLhEynfNuTfawN9P93rSZktj7gmExz0C8XmkbBU19IQ05wCNrQ==", + "node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", "dev": true, - "requires": { - "@algolia/client-common": "4.18.0", - "@algolia/client-search": "4.18.0", - "@algolia/requester-common": "4.18.0", - "@algolia/transporter": "4.18.0" + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "@algolia/client-common": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-4.18.0.tgz", - "integrity": "sha512-7N+soJFP4wn8tjTr3MSUT/U+4xVXbz4jmeRfWfVAzdAbxLAQbHa0o/POSdTvQ8/02DjCLelloZ1bb4ZFVKg7Wg==", + "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, - "requires": { - "@algolia/requester-common": "4.18.0", - "@algolia/transporter": "4.18.0" + "engines": { + "node": ">=0.10.0" } }, - "@algolia/client-personalization": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@algolia/client-personalization/-/client-personalization-4.18.0.tgz", - "integrity": "sha512-+PeCjODbxtamHcPl+couXMeHEefpUpr7IHftj4Y4Nia1hj8gGq4VlIcqhToAw8YjLeCTfOR7r7xtj3pJcYdP8A==", + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true, - "requires": { - "@algolia/client-common": "4.18.0", - "@algolia/requester-common": "4.18.0", - "@algolia/transporter": "4.18.0" + "engines": { + "node": ">=8" } }, - "@algolia/client-search": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-4.18.0.tgz", - "integrity": "sha512-F9xzQXTjm6UuZtnsLIew6KSraXQ0AzS/Ee+OD+mQbtcA/K1sg89tqb8TkwjtiYZ0oij13u3EapB3gPZwm+1Y6g==", + "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, - "requires": { - "@algolia/client-common": "4.18.0", - "@algolia/requester-common": "4.18.0", - "@algolia/transporter": "4.18.0" + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" } }, - "@algolia/logger-common": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@algolia/logger-common/-/logger-common-4.18.0.tgz", - "integrity": "sha512-46etYgSlkoKepkMSyaoriSn2JDgcrpc/nkOgou/lm0y17GuMl9oYZxwKKTSviLKI5Irk9nSKGwnBTQYwXOYdRg==", + "node_modules/is-json": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-json/-/is-json-2.0.1.tgz", + "integrity": "sha512-6BEnpVn1rcf3ngfmViLM6vjUjGErbdrL4rwlv+u1NO1XO8kqT4YGL8+19Q+Z/bas8tY90BTWMk2+fW1g6hQjbA==", "dev": true }, - "@algolia/logger-console": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@algolia/logger-console/-/logger-console-4.18.0.tgz", - "integrity": "sha512-3P3VUYMl9CyJbi/UU1uUNlf6Z8N2ltW3Oqhq/nR7vH0CjWv32YROq3iGWGxB2xt3aXobdUPXs6P0tHSKRmNA6g==", + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true, - "requires": { - "@algolia/logger-common": "4.18.0" + "engines": { + "node": ">=0.12.0" } }, - "@algolia/requester-browser-xhr": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-4.18.0.tgz", - "integrity": "sha512-/AcWHOBub2U4TE/bPi4Gz1XfuLK6/7dj4HJG+Z2SfQoS1RjNLshZclU3OoKIkFp8D2NC7+BNsPvr9cPLyW8nyQ==", + "node_modules/is-plain-obj": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", "dev": true, - "requires": { - "@algolia/requester-common": "4.18.0" + "engines": { + "node": ">=8" } }, - "@algolia/requester-common": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@algolia/requester-common/-/requester-common-4.18.0.tgz", - "integrity": "sha512-xlT8R1qYNRBCi1IYLsx7uhftzdfsLPDGudeQs+xvYB4sQ3ya7+ppolB/8m/a4F2gCkEO6oxpp5AGemM7kD27jA==", + "node_modules/is-potential-custom-element-name": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", + "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", + "dev": true + }, + "node_modules/is-running": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-running/-/is-running-2.1.0.tgz", + "integrity": "sha512-mjJd3PujZMl7j+D395WTIO5tU5RIDBfVSRtRR4VOJou3H66E38UjbjvDGh3slJzPuolsb+yQFqwHNNdyp5jg3w==", "dev": true }, - "@algolia/requester-node-http": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-4.18.0.tgz", - "integrity": "sha512-TGfwj9aeTVgOUhn5XrqBhwUhUUDnGIKlI0kCBMdR58XfXcfdwomka+CPIgThRbfYw04oQr31A6/95ZH2QVJ9UQ==", + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", "dev": true, - "requires": { - "@algolia/requester-common": "4.18.0" + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "@algolia/transporter": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@algolia/transporter/-/transporter-4.18.0.tgz", - "integrity": "sha512-xbw3YRUGtXQNG1geYFEDDuFLZt4Z8YNKbamHPkzr3rWc6qp4/BqEeXcI2u/P/oMq2yxtXgMxrCxOPA8lyIe5jw==", + "node_modules/is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", "dev": true, - "requires": { - "@algolia/cache-common": "4.18.0", - "@algolia/logger-common": "4.18.0", - "@algolia/requester-common": "4.18.0" + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "@babel/code-frame": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", - "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", "dev": true, - "requires": { - "@babel/highlight": "^7.18.6" + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" } }, - "@babel/helper-validator-identifier": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", - "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", - "dev": true - }, - "@babel/highlight": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", - "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", + "node_modules/isbinaryfile": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.10.tgz", + "integrity": "sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==", "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.18.6", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" + "engines": { + "node": ">= 8.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/gjtorikian/" } }, - "@babel/parser": { - "version": "7.22.4", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.22.4.tgz", - "integrity": "sha512-VLLsx06XkEYqBtE5YGPwfSGwfrjnyPP5oiGty3S8pQLFDFLaS8VwWSIxkTXpcvr5zeYLE6+MBNl2npl/YnfofA==", - "dev": true - }, - "@colors/colors": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", - "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", - "dev": true - }, - "@docsearch/css": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/@docsearch/css/-/css-3.5.1.tgz", - "integrity": "sha512-2Pu9HDg/uP/IT10rbQ+4OrTQuxIWdKVUEdcw9/w7kZJv9NeHS6skJx1xuRiFyoGKwAzcHXnLp7csE99sj+O1YA==", + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", "dev": true }, - "@docsearch/js": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/@docsearch/js/-/js-3.5.1.tgz", - "integrity": "sha512-EXi8de5njxgP6TV3N9ytnGRLG9zmBNTEZjR4VzwPcpPLbZxxTLG2gaFyJyKiFVQxHW/DPlMrDJA3qoRRGEkgZw==", + "node_modules/jackspeak": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", + "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", "dev": true, - "requires": { - "@docsearch/react": "3.5.1", - "preact": "^10.0.0" + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" } }, - "@docsearch/react": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/@docsearch/react/-/react-3.5.1.tgz", - "integrity": "sha512-t5mEODdLzZq4PTFAm/dvqcvZFdPDMdfPE5rJS5SC8OUq9mPzxEy6b+9THIqNM9P0ocCb4UC5jqBrxKclnuIbzQ==", + "node_modules/joycon": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/joycon/-/joycon-3.1.1.tgz", + "integrity": "sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==", "dev": true, - "requires": { - "@algolia/autocomplete-core": "1.9.3", - "@algolia/autocomplete-preset-algolia": "1.9.3", - "@docsearch/css": "3.5.1", - "algoliasearch": "^4.0.0" + "engines": { + "node": ">=10" } }, - "@esbuild/android-arm": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.17.19.tgz", - "integrity": "sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==", - "dev": true, - "optional": true, - "peer": true - }, - "@esbuild/android-arm64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.17.19.tgz", - "integrity": "sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==", - "dev": true, - "optional": true, - "peer": true + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true }, - "@esbuild/android-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.17.19.tgz", - "integrity": "sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==", + "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, - "optional": true, - "peer": true + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } }, - "@esbuild/darwin-arm64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.17.19.tgz", - "integrity": "sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==", - "dev": true, - "optional": true, - "peer": true + "node_modules/jsdom": { + "version": "23.0.1", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-23.0.1.tgz", + "integrity": "sha512-2i27vgvlUsGEBO9+/kJQRbtqtm+191b5zAZrU/UezVmnC2dlDAFLgDYJvAEi94T4kjsRKkezEtLQTgsNEsW2lQ==", + "dev": true, + "dependencies": { + "cssstyle": "^3.0.0", + "data-urls": "^5.0.0", + "decimal.js": "^10.4.3", + "form-data": "^4.0.0", + "html-encoding-sniffer": "^4.0.0", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.2", + "is-potential-custom-element-name": "^1.0.1", + "nwsapi": "^2.2.7", + "parse5": "^7.1.2", + "rrweb-cssom": "^0.6.0", + "saxes": "^6.0.0", + "symbol-tree": "^3.2.4", + "tough-cookie": "^4.1.3", + "w3c-xmlserializer": "^5.0.0", + "webidl-conversions": "^7.0.0", + "whatwg-encoding": "^3.1.1", + "whatwg-mimetype": "^4.0.0", + "whatwg-url": "^14.0.0", + "ws": "^8.14.2", + "xml-name-validator": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "canvas": "^2.11.2" + }, + "peerDependenciesMeta": { + "canvas": { + "optional": true + } + } }, - "@esbuild/darwin-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.17.19.tgz", - "integrity": "sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==", + "node_modules/jsdom/node_modules/agent-base": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.0.tgz", + "integrity": "sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==", "dev": true, - "optional": true, - "peer": true + "dependencies": { + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } }, - "@esbuild/freebsd-arm64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.19.tgz", - "integrity": "sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==", + "node_modules/jsdom/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, - "optional": true, - "peer": true + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } }, - "@esbuild/freebsd-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.17.19.tgz", - "integrity": "sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==", + "node_modules/jsdom/node_modules/https-proxy-agent": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.2.tgz", + "integrity": "sha512-NmLNjm6ucYwtcUmL7JQC1ZQ57LmHP4lT15FQ8D61nak1rO6DH+fz5qNK2Ap5UN4ZapYICE3/0KodcLYSPsPbaA==", "dev": true, - "optional": true, - "peer": true + "dependencies": { + "agent-base": "^7.0.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } }, - "@esbuild/linux-arm": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.17.19.tgz", - "integrity": "sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==", - "dev": true, - "optional": true, - "peer": true + "node_modules/jsdom/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 }, - "@esbuild/linux-arm64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.17.19.tgz", - "integrity": "sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==", + "node_modules/jsdom/node_modules/tr46": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-5.0.0.tgz", + "integrity": "sha512-tk2G5R2KRwBd+ZN0zaEXpmzdKyOYksXwywulIX95MBODjSzMIuQnQ3m8JxgbhnL1LeVo7lqQKsYa1O3Htl7K5g==", "dev": true, - "optional": true, - "peer": true + "dependencies": { + "punycode": "^2.3.1" + }, + "engines": { + "node": ">=18" + } }, - "@esbuild/linux-ia32": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.17.19.tgz", - "integrity": "sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==", + "node_modules/jsdom/node_modules/webidl-conversions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", "dev": true, - "optional": true, - "peer": true + "engines": { + "node": ">=12" + } }, - "@esbuild/linux-loong64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.17.19.tgz", - "integrity": "sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==", + "node_modules/jsdom/node_modules/whatwg-url": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-14.0.0.tgz", + "integrity": "sha512-1lfMEm2IEr7RIV+f4lUNPOqfFL+pO+Xw3fJSqmjX9AbXcXcYOkCe1P6+9VBZB6n94af16NfZf+sSk0JCBZC9aw==", "dev": true, - "optional": true, - "peer": true + "dependencies": { + "tr46": "^5.0.0", + "webidl-conversions": "^7.0.0" + }, + "engines": { + "node": ">=18" + } }, - "@esbuild/linux-mips64el": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.17.19.tgz", - "integrity": "sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==", + "node_modules/jsdom/node_modules/ws": { + "version": "8.14.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.14.2.tgz", + "integrity": "sha512-wEBG1ftX4jcglPxgFCMJmZ2PLtSbJ2Peg6TmpJFTbe9GZYOQCDPdMYu/Tm0/bGZkw8paZnJY45J4K2PZrLYq8g==", "dev": true, - "optional": true, - "peer": true + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } }, - "@esbuild/linux-ppc64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.17.19.tgz", - "integrity": "sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==", - "dev": true, - "optional": true, - "peer": true + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true }, - "@esbuild/linux-riscv64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.17.19.tgz", - "integrity": "sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==", + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", "dev": true, - "optional": true, - "peer": true + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } }, - "@esbuild/linux-s390x": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.17.19.tgz", - "integrity": "sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==", + "node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", "dev": true, - "optional": true, - "peer": true + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } }, - "@esbuild/linux-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.17.19.tgz", - "integrity": "sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==", + "node_modules/junk": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/junk/-/junk-4.0.1.tgz", + "integrity": "sha512-Qush0uP+G8ZScpGMZvHUiRfI0YBWuB3gVBYlI0v0vvOJt5FLicco+IkP0a50LqTTQhmts/m6tP5SWE+USyIvcQ==", "dev": true, - "optional": true, - "peer": true + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "@esbuild/netbsd-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.17.19.tgz", - "integrity": "sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==", + "node_modules/karma": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/karma/-/karma-6.4.2.tgz", + "integrity": "sha512-C6SU/53LB31BEgRg+omznBEMY4SjHU3ricV6zBcAe1EeILKkeScr+fZXtaI5WyDbkVowJxxAI6h73NcFPmXolQ==", "dev": true, - "optional": true, - "peer": true + "dependencies": { + "@colors/colors": "1.5.0", + "body-parser": "^1.19.0", + "braces": "^3.0.2", + "chokidar": "^3.5.1", + "connect": "^3.7.0", + "di": "^0.0.1", + "dom-serialize": "^2.2.1", + "glob": "^7.1.7", + "graceful-fs": "^4.2.6", + "http-proxy": "^1.18.1", + "isbinaryfile": "^4.0.8", + "lodash": "^4.17.21", + "log4js": "^6.4.1", + "mime": "^2.5.2", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.5", + "qjobs": "^1.2.0", + "range-parser": "^1.2.1", + "rimraf": "^3.0.2", + "socket.io": "^4.4.1", + "source-map": "^0.6.1", + "tmp": "^0.2.1", + "ua-parser-js": "^0.7.30", + "yargs": "^16.1.1" + }, + "bin": { + "karma": "bin/karma" + }, + "engines": { + "node": ">= 10" + } }, - "@esbuild/openbsd-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.17.19.tgz", - "integrity": "sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==", + "node_modules/karma-browserstack-launcher": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/karma-browserstack-launcher/-/karma-browserstack-launcher-1.6.0.tgz", + "integrity": "sha512-Y/UWPdHZkHIVH2To4GWHCTzmrsB6H7PBWy6pw+TWz5sr4HW2mcE+Uj6qWgoVNxvQU1Pfn5LQQzI6EQ65p8QbiQ==", "dev": true, - "optional": true, - "peer": true + "dependencies": { + "browserstack": "~1.5.1", + "browserstack-local": "^1.3.7", + "q": "~1.5.0" + }, + "peerDependencies": { + "karma": ">=0.9" + } }, - "@esbuild/sunos-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.17.19.tgz", - "integrity": "sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==", + "node_modules/karma-chrome-launcher": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/karma-chrome-launcher/-/karma-chrome-launcher-3.2.0.tgz", + "integrity": "sha512-rE9RkUPI7I9mAxByQWkGJFXfFD6lE4gC5nPuZdobf/QdTEJI6EU4yIay/cfU/xV4ZxlM5JiTv7zWYgA64NpS5Q==", "dev": true, - "optional": true, - "peer": true + "dependencies": { + "which": "^1.2.1" + } }, - "@esbuild/win32-arm64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.17.19.tgz", - "integrity": "sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==", + "node_modules/karma-firefox-launcher": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/karma-firefox-launcher/-/karma-firefox-launcher-2.1.2.tgz", + "integrity": "sha512-VV9xDQU1QIboTrjtGVD4NCfzIH7n01ZXqy/qpBhnOeGVOkG5JYPEm8kuSd7psHE6WouZaQ9Ool92g8LFweSNMA==", "dev": true, - "optional": true, - "peer": true + "dependencies": { + "is-wsl": "^2.2.0", + "which": "^2.0.1" + } }, - "@esbuild/win32-ia32": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.17.19.tgz", - "integrity": "sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==", + "node_modules/karma-firefox-launcher/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, - "optional": true, - "peer": true + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } }, - "@esbuild/win32-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.17.19.tgz", - "integrity": "sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==", + "node_modules/karma-mocha": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/karma-mocha/-/karma-mocha-2.0.1.tgz", + "integrity": "sha512-Tzd5HBjm8his2OA4bouAsATYEpZrp9vC7z5E5j4C5Of5Rrs1jY67RAwXNcVmd/Bnk1wgvQRou0zGVLey44G4tQ==", "dev": true, - "optional": true, - "peer": true + "dependencies": { + "minimist": "^1.2.3" + } }, - "@jridgewell/gen-mapping": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", - "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", + "node_modules/karma-mocha-reporter": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/karma-mocha-reporter/-/karma-mocha-reporter-2.2.5.tgz", + "integrity": "sha512-Hr6nhkIp0GIJJrvzY8JFeHpQZNseuIakGac4bpw8K1+5F0tLb6l7uvXRa8mt2Z+NVwYgCct4QAfp2R2QP6o00w==", "dev": true, - "requires": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" + "dependencies": { + "chalk": "^2.1.0", + "log-symbols": "^2.1.0", + "strip-ansi": "^4.0.0" + }, + "peerDependencies": { + "karma": ">=0.13" } }, - "@jridgewell/resolve-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", - "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", - "dev": true - }, - "@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", - "dev": true - }, - "@jridgewell/source-map": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.3.tgz", - "integrity": "sha512-b+fsZXeLYi9fEULmfBrhxn4IrPlINf8fiNarzTof004v3lFdntdwa9PF7vFJqm3mg7s+ScJMxXaE3Acp1irZcg==", + "node_modules/karma-mocha-reporter/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, - "requires": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" } }, - "@jridgewell/sourcemap-codec": { - "version": "1.4.15", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", - "dev": true - }, - "@jridgewell/trace-mapping": { - "version": "0.3.18", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz", - "integrity": "sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==", + "node_modules/karma-mocha-reporter/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, - "requires": { - "@jridgewell/resolve-uri": "3.1.0", - "@jridgewell/sourcemap-codec": "1.4.14" - }, "dependencies": { - "@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", - "dev": true - } + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" } }, - "@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==", + "node_modules/karma-mocha-reporter/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "dev": true, - "requires": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" + "dependencies": { + "color-name": "1.1.3" } }, - "@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==", + "node_modules/karma-mocha-reporter/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", "dev": true }, - "@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==", + "node_modules/karma-mocha-reporter/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", "dev": true, - "requires": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" + "engines": { + "node": ">=0.8.0" } }, - "@rollup/plugin-typescript": { - "version": "11.1.2", - "resolved": "https://registry.npmjs.org/@rollup/plugin-typescript/-/plugin-typescript-11.1.2.tgz", - "integrity": "sha512-0ghSOCMcA7fl1JM+0gYRf+Q/HWyg+zg7/gDSc+fRLmlJWcW5K1I+CLRzaRhXf4Y3DRyPnnDo4M2ktw+a6JcDEg==", + "node_modules/karma-mocha-reporter/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", "dev": true, - "requires": { - "@rollup/pluginutils": "^5.0.1", - "resolve": "^1.22.1" + "engines": { + "node": ">=4" } }, - "@rollup/pluginutils": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.0.2.tgz", - "integrity": "sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==", + "node_modules/karma-mocha-reporter/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, - "requires": { - "@types/estree": "^1.0.0", - "estree-walker": "^2.0.2", - "picomatch": "^2.3.1" + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" } }, - "@types/chai": { - "version": "4.3.5", - "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.5.tgz", - "integrity": "sha512-mEo1sAde+UCE6b2hxn332f1g1E8WfYRu6p5SvTKr2ZKC1f7gFJXk4h5PyGP9Dt6gCaG8y8XhwnXWC6Iy2cmBng==", - "dev": true - }, - "@types/component-emitter": { - "version": "1.2.11", - "resolved": "https://registry.npmjs.org/@types/component-emitter/-/component-emitter-1.2.11.tgz", - "integrity": "sha512-SRXjM+tfsSlA9VuG8hGO2nft2p8zjXCK1VcC6N4NXbBbYbSia9kzCChYQajIjzIqOOOuh5Ock6MmV2oux4jDZQ==", - "dev": true - }, - "@types/cookie": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz", - "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==", - "dev": true - }, - "@types/cors": { - "version": "2.8.12", - "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.12.tgz", - "integrity": "sha512-vt+kDhq/M2ayberEtJcIN/hxXy1Pk+59g2FV/ZQceeaTyCtCucjL2Q7FXlFjtWn4n15KCr1NE2lNNFhp0lEThw==", - "dev": true - }, - "@types/estree": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.0.tgz", - "integrity": "sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==", - "dev": true - }, - "@types/minimist": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz", - "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==", - "dev": true - }, - "@types/mocha": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.1.tgz", - "integrity": "sha512-/fvYntiO1GeICvqbQ3doGDIP97vWmvFt83GKguJ6prmQM2iXZfFcq6YE8KteFyRtX2/h5Hf91BYvPodJKFYv5Q==", - "dev": true - }, - "@types/node": { - "version": "15.12.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-15.12.2.tgz", - "integrity": "sha512-zjQ69G564OCIWIOHSXyQEEDpdpGl+G348RAKY0XXy9Z5kU9Vzv1GMNnkar/ZJ8dzXB3COzD9Mo9NtRZ4xfgUww==", - "dev": true - }, - "@types/normalize-package-data": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", - "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==", - "dev": true - }, - "@types/web-bluetooth": { - "version": "0.0.17", - "resolved": "https://registry.npmjs.org/@types/web-bluetooth/-/web-bluetooth-0.0.17.tgz", - "integrity": "sha512-4p9vcSmxAayx72yn70joFoL44c9MO/0+iVEBIQXe3v2h2SiAsEIo/G5v6ObFWvNKRFjbrVadNf9LqEEZeQPzdA==", - "dev": true - }, - "@vitejs/plugin-vue": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-4.2.3.tgz", - "integrity": "sha512-R6JDUfiZbJA9cMiguQ7jxALsgiprjBeHL5ikpXfJCH62pPHtI+JdJ5xWj6Ev73yXSlYl86+blXn1kZHQ7uElxw==", - "dev": true, - "requires": {} - }, - "@vue/compiler-core": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.3.4.tgz", - "integrity": "sha512-cquyDNvZ6jTbf/+x+AgM2Arrp6G4Dzbb0R64jiG804HRMfRiFXWI6kqUVqZ6ZR0bQhIoQjB4+2bhNtVwndW15g==", + "node_modules/karma/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, - "requires": { - "@babel/parser": "^7.21.3", - "@vue/shared": "3.3.4", - "estree-walker": "^2.0.2", - "source-map-js": "^1.0.2" + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "@vue/compiler-dom": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.3.4.tgz", - "integrity": "sha512-wyM+OjOVpuUukIq6p5+nwHYtj9cFroz9cwkfmP9O1nzH68BenTTv0u7/ndggT8cIQlnBeOo6sUT/gvHcIkLA5w==", + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", "dev": true, - "requires": { - "@vue/compiler-core": "3.3.4", - "@vue/shared": "3.3.4" + "engines": { + "node": ">=0.10.0" } }, - "@vue/compiler-sfc": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.3.4.tgz", - "integrity": "sha512-6y/d8uw+5TkCuzBkgLS0v3lSM3hJDntFEiUORM11pQ/hKvkhSKZrXW6i69UyXlJQisJxuUEJKAWEqWbWsLeNKQ==", - "dev": true, - "requires": { - "@babel/parser": "^7.20.15", - "@vue/compiler-core": "3.3.4", - "@vue/compiler-dom": "3.3.4", - "@vue/compiler-ssr": "3.3.4", - "@vue/reactivity-transform": "3.3.4", - "@vue/shared": "3.3.4", - "estree-walker": "^2.0.2", - "magic-string": "^0.30.0", - "postcss": "^8.1.10", - "source-map-js": "^1.0.2" + "node_modules/lightningcss": { + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.22.1.tgz", + "integrity": "sha512-Fy45PhibiNXkm0cK5FJCbfO8Y6jUpD/YcHf/BtuI+jvYYqSXKF4muk61jjE8YxCR9y+hDYIWSzHTc+bwhDE6rQ==", + "dev": true, + "dependencies": { + "detect-libc": "^1.0.3" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "lightningcss-darwin-arm64": "1.22.1", + "lightningcss-darwin-x64": "1.22.1", + "lightningcss-freebsd-x64": "1.22.1", + "lightningcss-linux-arm-gnueabihf": "1.22.1", + "lightningcss-linux-arm64-gnu": "1.22.1", + "lightningcss-linux-arm64-musl": "1.22.1", + "lightningcss-linux-x64-gnu": "1.22.1", + "lightningcss-linux-x64-musl": "1.22.1", + "lightningcss-win32-x64-msvc": "1.22.1" + } + }, + "node_modules/lightningcss-darwin-arm64": { + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.22.1.tgz", + "integrity": "sha512-ldvElu+R0QimNTjsKpaZkUv3zf+uefzLy/R1R19jtgOfSRM+zjUCUgDhfEDRmVqJtMwYsdhMI2aJtJChPC6Osg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "@vue/compiler-ssr": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.3.4.tgz", - "integrity": "sha512-m0v6oKpup2nMSehwA6Uuu+j+wEwcy7QmwMkVNVfrV9P2qE5KshC6RwOCq8fjGS/Eak/uNb8AaWekfiXxbBB6gQ==", + "node_modules/lightningcss-darwin-x64": { + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.22.1.tgz", + "integrity": "sha512-5p2rnlVTv6Gpw4PlTLq925nTVh+HFh4MpegX8dPDYJae+NFVjQ67gY7O6iHIzQjLipDiYejFF0yHrhjU3XgLBQ==", + "cpu": [ + "x64" + ], "dev": true, - "requires": { - "@vue/compiler-dom": "3.3.4", - "@vue/shared": "3.3.4" + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "@vue/devtools-api": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.5.0.tgz", - "integrity": "sha512-o9KfBeaBmCKl10usN4crU53fYtC1r7jJwdGKjPT24t348rHxgfpZ0xL3Xm/gLUYnc0oTp8LAmrxOeLyu6tbk2Q==", - "dev": true - }, - "@vue/reactivity": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.3.4.tgz", - "integrity": "sha512-kLTDLwd0B1jG08NBF3R5rqULtv/f8x3rOFByTDz4J53ttIQEDmALqKqXY0J+XQeN0aV2FBxY8nJDf88yvOPAqQ==", + "node_modules/lightningcss-freebsd-x64": { + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.22.1.tgz", + "integrity": "sha512-1FaBtcFrZqB2hkFbAxY//Pnp8koThvyB6AhjbdVqKD4/pu13Rl91fKt2N9qyeQPUt3xy7ORUvSO+dPk3J6EjXg==", + "cpu": [ + "x64" + ], "dev": true, - "requires": { - "@vue/shared": "3.3.4" + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "@vue/reactivity-transform": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.3.4.tgz", - "integrity": "sha512-MXgwjako4nu5WFLAjpBnCj/ieqcjE2aJBINUNQzkZQfzIZA4xn+0fV1tIYBJvvva3N3OvKGofRLvQIwEQPpaXw==", + "node_modules/lightningcss-linux-arm-gnueabihf": { + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.22.1.tgz", + "integrity": "sha512-6rub98tYGfE5I5j0BP8t/2d4BZyu1S7Iz9vUkm0H26snAFHYxLfj3RbQn0xHHIePSetjLnhcg3QlfwUAkD/FYg==", + "cpu": [ + "arm" + ], "dev": true, - "requires": { - "@babel/parser": "^7.20.15", - "@vue/compiler-core": "3.3.4", - "@vue/shared": "3.3.4", - "estree-walker": "^2.0.2", - "magic-string": "^0.30.0" + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "@vue/runtime-core": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.3.4.tgz", - "integrity": "sha512-R+bqxMN6pWO7zGI4OMlmvePOdP2c93GsHFM/siJI7O2nxFRzj55pLwkpCedEY+bTMgp5miZ8CxfIZo3S+gFqvA==", + "node_modules/lightningcss-linux-arm64-gnu": { + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.22.1.tgz", + "integrity": "sha512-nYO5qGtb/1kkTZu3FeTiM+2B2TAb7m2DkLCTgQIs2bk2o9aEs7I96fwySKcoHWQAiQDGR9sMux9vkV4KQXqPaQ==", + "cpu": [ + "arm64" + ], "dev": true, - "requires": { - "@vue/reactivity": "3.3.4", - "@vue/shared": "3.3.4" + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "@vue/runtime-dom": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.3.4.tgz", - "integrity": "sha512-Aj5bTJ3u5sFsUckRghsNjVTtxZQ1OyMWCr5dZRAPijF/0Vy4xEoRCwLyHXcj4D0UFbJ4lbx3gPTgg06K/GnPnQ==", + "node_modules/lightningcss-linux-arm64-musl": { + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.22.1.tgz", + "integrity": "sha512-MCV6RuRpzXbunvzwY644iz8cw4oQxvW7oer9xPkdadYqlEyiJJ6wl7FyJOH7Q6ZYH4yjGAUCvxDBxPbnDu9ZVg==", + "cpu": [ + "arm64" + ], "dev": true, - "requires": { - "@vue/runtime-core": "3.3.4", - "@vue/shared": "3.3.4", - "csstype": "^3.1.1" + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "@vue/server-renderer": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.3.4.tgz", - "integrity": "sha512-Q6jDDzR23ViIb67v+vM1Dqntu+HUexQcsWKhhQa4ARVzxOY2HbC7QRW/ggkDBd5BU+uM1sV6XOAP0b216o34JQ==", + "node_modules/lightningcss-linux-x64-gnu": { + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.22.1.tgz", + "integrity": "sha512-RjNgpdM20VUXgV7us/VmlO3Vn2ZRiDnc3/bUxCVvySZWPiVPprpqW/QDWuzkGa+NCUf6saAM5CLsZLSxncXJwg==", + "cpu": [ + "x64" + ], "dev": true, - "requires": { - "@vue/compiler-ssr": "3.3.4", - "@vue/shared": "3.3.4" + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "@vue/shared": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.3.4.tgz", - "integrity": "sha512-7OjdcV8vQ74eiz1TZLzZP4JwqM5fA94K6yntPS5Z25r9HDuGNzaGdgvwKYq6S+MxwF0TFRwe50fIR/MYnakdkQ==", - "dev": true - }, - "@vueuse/core": { - "version": "10.2.1", - "resolved": "https://registry.npmjs.org/@vueuse/core/-/core-10.2.1.tgz", - "integrity": "sha512-c441bfMbkAwTNwVRHQ0zdYZNETK//P84rC01aP2Uy/aRFCiie9NE/k9KdIXbno0eDYP5NPUuWv0aA/I4Unr/7w==", + "node_modules/lightningcss-linux-x64-musl": { + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.22.1.tgz", + "integrity": "sha512-ZgO4C7Rd6Hv/5MnyY2KxOYmIlzk4rplVolDt3NbkNR8DndnyX0Q5IR4acJWNTBICQ21j3zySzKbcJaiJpk/4YA==", + "cpu": [ + "x64" + ], "dev": true, - "requires": { - "@types/web-bluetooth": "^0.0.17", - "@vueuse/metadata": "10.2.1", - "@vueuse/shared": "10.2.1", - "vue-demi": ">=0.14.5" + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" }, - "dependencies": { - "vue-demi": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.5.tgz", - "integrity": "sha512-o9NUVpl/YlsGJ7t+xuqJKx8EBGf1quRhCiT6D/J0pfwmk9zUwYkC7yrF4SZCe6fETvSM3UNL2edcbYrSyc4QHA==", - "dev": true, - "requires": {} - } + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "@vueuse/integrations": { - "version": "10.2.1", - "resolved": "https://registry.npmjs.org/@vueuse/integrations/-/integrations-10.2.1.tgz", - "integrity": "sha512-FDP5lni+z9FjHE9H3xuvwSjoRV9U8jmDvJpmHPCBjUgPGYRynwb60eHWXCFJXLUtb4gSIHy0e+iaEbrKdalCkQ==", + "node_modules/lightningcss-win32-x64-msvc": { + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.22.1.tgz", + "integrity": "sha512-4pozV4eyD0MDET41ZLHAeBo+H04Nm2UEYIk5w/ts40231dRFV7E0cjwbnZvSoc1DXFgecAhiC0L16ruv/ZDCpg==", + "cpu": [ + "x64" + ], "dev": true, - "requires": { - "@vueuse/core": "10.2.1", - "@vueuse/shared": "10.2.1", - "vue-demi": ">=0.14.5" + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" }, - "dependencies": { - "vue-demi": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.5.tgz", - "integrity": "sha512-o9NUVpl/YlsGJ7t+xuqJKx8EBGf1quRhCiT6D/J0pfwmk9zUwYkC7yrF4SZCe6fETvSM3UNL2edcbYrSyc4QHA==", - "dev": true, - "requires": {} - } + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "@vueuse/metadata": { - "version": "10.2.1", - "resolved": "https://registry.npmjs.org/@vueuse/metadata/-/metadata-10.2.1.tgz", - "integrity": "sha512-3Gt68mY/i6bQvFqx7cuGBzrCCQu17OBaGWS5JdwISpMsHnMKKjC2FeB5OAfMcCQ0oINfADP3i9A4PPRo0peHdQ==", - "dev": true - }, - "@vueuse/shared": { - "version": "10.2.1", - "resolved": "https://registry.npmjs.org/@vueuse/shared/-/shared-10.2.1.tgz", - "integrity": "sha512-QWHq2bSuGptkcxx4f4M/fBYC3Y8d3M2UYyLsyzoPgEoVzJURQ0oJeWXu79OiLlBb8gTKkqe4mO85T/sf39mmiw==", + "node_modules/lilconfig": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.0.0.tgz", + "integrity": "sha512-K2U4W2Ff5ibV7j7ydLr+zLAkIg5JJ4lPn1Ltsdt+Tz/IjQ8buJ55pZAxoP34lqIiwtF9iAvtLv3JGv7CAyAg+g==", "dev": true, - "requires": { - "vue-demi": ">=0.14.5" - }, - "dependencies": { - "vue-demi": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.5.tgz", - "integrity": "sha512-o9NUVpl/YlsGJ7t+xuqJKx8EBGf1quRhCiT6D/J0pfwmk9zUwYkC7yrF4SZCe6fETvSM3UNL2edcbYrSyc4QHA==", - "dev": true, - "requires": {} - } + "engines": { + "node": ">=14" } }, - "accepts": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", - "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true + }, + "node_modules/lmdb": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/lmdb/-/lmdb-2.8.5.tgz", + "integrity": "sha512-9bMdFfc80S+vSldBmG3HOuLVHnxRdNTlpzR6QDnzqCQtCzGUEAGTzBKYMeIM+I/sU4oZfgbcbS7X7F65/z/oxQ==", "dev": true, - "requires": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" + "hasInstallScript": true, + "dependencies": { + "msgpackr": "^1.9.5", + "node-addon-api": "^6.1.0", + "node-gyp-build-optional-packages": "5.1.1", + "ordered-binary": "^1.4.1", + "weak-lru-cache": "^1.2.2" + }, + "bin": { + "download-lmdb-prebuilds": "bin/download-prebuilds.js" + }, + "optionalDependencies": { + "@lmdb/lmdb-darwin-arm64": "2.8.5", + "@lmdb/lmdb-darwin-x64": "2.8.5", + "@lmdb/lmdb-linux-arm": "2.8.5", + "@lmdb/lmdb-linux-arm64": "2.8.5", + "@lmdb/lmdb-linux-x64": "2.8.5", + "@lmdb/lmdb-win32-x64": "2.8.5" } }, - "acorn": { - "version": "8.8.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", - "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", + "node_modules/lmdb/node_modules/node-addon-api": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-6.1.0.tgz", + "integrity": "sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==", "dev": true }, - "agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "node_modules/load-tsconfig": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/load-tsconfig/-/load-tsconfig-0.2.5.tgz", + "integrity": "sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==", "dev": true, - "requires": { - "debug": "4" + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" } }, - "aggregate-error": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-4.0.1.tgz", - "integrity": "sha512-0poP0T7el6Vq3rstR8Mn4V/IQrpBLO6POkUSrN7RhyY+GF/InCFShQzsQ39T25gkHhLgSLByyAz+Kjb+c2L98w==", + "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, - "requires": { - "clean-stack": "^4.0.0", - "indent-string": "^5.0.0" + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "algoliasearch": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-4.18.0.tgz", - "integrity": "sha512-pCuVxC1SVcpc08ENH32T4sLKSyzoU7TkRIDBMwSLfIiW+fq4znOmWDkAygHZ6pRcO9I1UJdqlfgnV7TRj+MXrA==", - "dev": true, - "requires": { - "@algolia/cache-browser-local-storage": "4.18.0", - "@algolia/cache-common": "4.18.0", - "@algolia/cache-in-memory": "4.18.0", - "@algolia/client-account": "4.18.0", - "@algolia/client-analytics": "4.18.0", - "@algolia/client-common": "4.18.0", - "@algolia/client-personalization": "4.18.0", - "@algolia/client-search": "4.18.0", - "@algolia/logger-common": "4.18.0", - "@algolia/logger-console": "4.18.0", - "@algolia/requester-browser-xhr": "4.18.0", - "@algolia/requester-common": "4.18.0", - "@algolia/requester-node-http": "4.18.0", - "@algolia/transporter": "4.18.0" - } - }, - "ansi-colors": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "dev": true }, - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "node_modules/lodash.sortby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", + "integrity": "sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==", "dev": true }, - "ansi-sequence-parser": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/ansi-sequence-parser/-/ansi-sequence-parser-1.1.0.tgz", - "integrity": "sha512-lEm8mt52to2fT8GhciPCGeCXACSz2UwIN4X2e2LJSnZ5uAbn2/dsYdOmUXq0AtWS5cpAupysIneExOgH0Vd2TQ==", - "dev": true + "node_modules/log-symbols": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", + "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", + "dev": true, + "dependencies": { + "chalk": "^2.0.1" + }, + "engines": { + "node": ">=4" + } }, - "ansi-styles": { + "node_modules/log-symbols/node_modules/ansi-styles": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, - "requires": { + "dependencies": { "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" } }, - "anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "node_modules/log-symbols/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, - "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" } }, - "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 - }, - "arrify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", - "dev": true + "node_modules/log-symbols/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } }, - "assertion-error": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", - "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", + "node_modules/log-symbols/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", "dev": true }, - "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/log-symbols/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } }, - "base64id": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz", - "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==", - "dev": true + "node_modules/log-symbols/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } }, - "binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "dev": true + "node_modules/log-symbols/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } }, - "body-parser": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.0.tgz", - "integrity": "sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg==", + "node_modules/log4js": { + "version": "6.9.1", + "resolved": "https://registry.npmjs.org/log4js/-/log4js-6.9.1.tgz", + "integrity": "sha512-1somDdy9sChrr9/f4UlzhdaGfDR2c/SaD2a4T7qEkG4jTS57/B3qmnjLYePwQ8cqWnUHZI0iAKxMBpCZICiZ2g==", "dev": true, - "requires": { - "bytes": "3.1.2", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "on-finished": "2.4.1", - "qs": "6.10.3", - "raw-body": "2.5.1", - "type-is": "~1.6.18", - "unpipe": "1.0.0" + "dependencies": { + "date-format": "^4.0.14", + "debug": "^4.3.4", + "flatted": "^3.2.7", + "rfdc": "^1.3.0", + "streamroller": "^3.1.5" }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/log4js/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": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true } } }, - "body-scroll-lock": { - "version": "4.0.0-beta.0", - "resolved": "https://registry.npmjs.org/body-scroll-lock/-/body-scroll-lock-4.0.0-beta.0.tgz", - "integrity": "sha512-a7tP5+0Mw3YlUJcGAKUqIBkYYGlYxk2fnCasq/FUph1hadxlTRjF+gAcZksxANnaMnALjxEddmSi/H3OR8ugcQ==", + "node_modules/log4js/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 }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "node_modules/loupe": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz", + "integrity": "sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==", "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "dependencies": { + "get-func-name": "^2.0.1" } }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, - "requires": { - "fill-range": "^7.0.1" + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" } }, - "browser-stdout": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", - "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", - "dev": true - }, - "browserstack": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/browserstack/-/browserstack-1.5.3.tgz", - "integrity": "sha512-AO+mECXsW4QcqC9bxwM29O7qWa7bJT94uBFzeb5brylIQwawuEziwq20dPYbins95GlWzOawgyDNdjYAo32EKg==", + "node_modules/magic-string": { + "version": "0.30.5", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.5.tgz", + "integrity": "sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==", "dev": true, - "requires": { - "https-proxy-agent": "^2.2.1" + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.4.15" + }, + "engines": { + "node": ">=12" } }, - "browserstack-local": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/browserstack-local/-/browserstack-local-1.5.1.tgz", - "integrity": "sha512-T/wxyWDzvBHbDvl7fZKpFU7mYze6nrUkBhNy+d+8bXBqgQX10HTYvajIGO0wb49oGSLCPM0CMZTV/s7e6LF0sA==", + "node_modules/map-obj": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz", + "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==", "dev": true, - "requires": { - "agent-base": "^6.0.2", - "https-proxy-agent": "^5.0.1", - "is-running": "^2.1.0", - "ps-tree": "=1.2.0", - "temp-fs": "^0.9.9" + "engines": { + "node": ">=8" }, - "dependencies": { - "https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", - "dev": true, - "requires": { - "agent-base": "6", - "debug": "4" - } - } + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "node_modules/map-stream": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/map-stream/-/map-stream-0.1.0.tgz", + "integrity": "sha512-CkYQrPYZfWnu/DAmVCpTSX/xHpKZ80eKh2lAkyA6AJTef6bW+6JpbQZN5rofum7da+SyN1bi5ctTm+lTfcCW3g==", "dev": true }, - "bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "node_modules/mark.js": { + "version": "8.11.1", + "resolved": "https://registry.npmjs.org/mark.js/-/mark.js-8.11.1.tgz", + "integrity": "sha512-1I+1qpDt4idfgLQG+BNWmrqku+7/2bi5nLf4YwF8y8zXvmfiTBY3PV3ZibfrjBueCByROpuBjLLFCajqkgYoLQ==", "dev": true }, - "call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "node_modules/mdast-util-to-hast": { + "version": "13.0.2", + "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.0.2.tgz", + "integrity": "sha512-U5I+500EOOw9e3ZrclN3Is3fRpw8c19SMyNZlZ2IS+7vLsNzb2Om11VpIVOR+/0137GhZsFEF6YiKD5+0Hr2Og==", "dev": true, - "requires": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" + "dependencies": { + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "@ungap/structured-clone": "^1.0.0", + "devlop": "^1.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "trim-lines": "^3.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "dev": true - }, - "camelcase-keys": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-7.0.2.tgz", - "integrity": "sha512-Rjs1H+A9R+Ig+4E/9oyB66UC5Mj9Xq3N//vcLf2WzgdTi/3gUu3Z9KoqmlrEG4VuuLK8wJHofxzdQXz/knhiYg==", + "node_modules/mdn-data": { + "version": "2.0.30", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz", + "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==", "dev": true, - "requires": { - "camelcase": "^6.3.0", - "map-obj": "^4.1.0", - "quick-lru": "^5.1.1", - "type-fest": "^1.2.1" - } + "optional": true, + "peer": true }, - "chai": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.7.tgz", - "integrity": "sha512-HLnAzZ2iupm25PlN0xFreAlBA5zaBSv3og0DdeGA4Ar6h6rJ3A0rolRUKJhSF2V10GZKDgWF/VmAEsNWjCRB+A==", + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", "dev": true, - "requires": { - "assertion-error": "^1.1.0", - "check-error": "^1.0.2", - "deep-eql": "^4.1.2", - "get-func-name": "^2.0.0", - "loupe": "^2.3.1", - "pathval": "^1.1.1", - "type-detect": "^4.0.5" + "engines": { + "node": ">= 0.6" } }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "node_modules/meow": { + "version": "12.1.1", + "resolved": "https://registry.npmjs.org/meow/-/meow-12.1.1.tgz", + "integrity": "sha512-BhXM0Au22RwUneMPwSCnyhTOizdWoIEPU9sp0Aqa1PnDMR5Wv2FGXYDjuzJEIX+Eo2Rb8xuYe5jrnm5QowQFkw==", "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "engines": { + "node": ">=16.10" }, - "dependencies": { - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true - } + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "check-error": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", - "integrity": "sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==", + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", "dev": true }, - "chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", "dev": true, - "requires": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "fsevents": "~2.3.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" + "engines": { + "node": ">= 8" } }, - "clean-stack": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-4.2.0.tgz", - "integrity": "sha512-LYv6XPxoyODi36Dp976riBtSY27VmFo+MKqEU9QCCWyTrdEPDog+RWA7xQWHi6Vbp61j5c4cdzzX1NidnwtUWg==", + "node_modules/mezr": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/mezr/-/mezr-1.1.0.tgz", + "integrity": "sha512-KGP0ZnmCHd8VepU4+91JdxnIBJ5KtAPY/qyyRFp+JhutVxumZodJyLHhi7aWJuqO9e0CIeJhypfMP2No9BNm+Q==", + "dev": true + }, + "node_modules/micromark-util-character": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.0.1.tgz", + "integrity": "sha512-3wgnrmEAJ4T+mGXAUfMvMAbxU9RDG43XmGce4j6CwPtVxB3vfwXSZ6KhFwDzZ3mZHhmPimMAXg71veiBGzeAZw==", "dev": true, - "requires": { - "escape-string-regexp": "5.0.0" - }, - "dependencies": { - "escape-string-regexp": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", - "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", - "dev": true + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" } }, - "cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "node_modules/micromark-util-encode": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.0.tgz", + "integrity": "sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA==", "dev": true, - "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "node_modules/micromark-util-sanitize-uri": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.0.tgz", + "integrity": "sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw==", "dev": true, - "requires": { - "color-name": "1.1.3" + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-symbol": "^2.0.0" } }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true - }, - "component-emitter": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", - "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", - "dev": true - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true + "node_modules/micromark-util-symbol": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", + "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] }, - "connect": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", - "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", + "node_modules/micromark-util-types": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.0.tgz", + "integrity": "sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==", "dev": true, - "requires": { - "debug": "2.6.9", - "finalhandler": "1.1.2", - "parseurl": "~1.3.3", - "utils-merge": "1.0.1" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" } - } + ] }, - "content-type": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", - "dev": true + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } }, - "cookie": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", - "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", - "dev": true + "node_modules/mime": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", + "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", + "dev": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4.0.0" + } }, - "cors": { - "version": "2.8.5", - "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", - "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", "dev": true, - "requires": { - "object-assign": "^4", - "vary": "^1" + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" } }, - "csstype": { + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/min-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/minimatch": { "version": "3.1.2", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz", - "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==", - "dev": true + "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/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/minimist-options": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz", + "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==", + "dev": true, + "dependencies": { + "arrify": "^1.0.1", + "is-plain-obj": "^1.1.0", + "kind-of": "^6.0.3" + }, + "engines": { + "node": ">= 6" + } }, - "custom-event": { + "node_modules/minimist-options/node_modules/arrify": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.1.tgz", - "integrity": "sha512-GAj5FOq0Hd+RsCGVJxZuKaIDXDf3h6GQoNEjFgbLLI/trgtavwUbSnZ5pVfg27DVCaWjIohryS0JFwIJyT2cMg==", - "dev": true + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/minimist-options/node_modules/is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/minipass": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", + "dev": true, + "engines": { + "node": ">=16 || 14 >=14.17" + } }, - "date-format": { - "version": "4.0.13", - "resolved": "https://registry.npmjs.org/date-format/-/date-format-4.0.13.tgz", - "integrity": "sha512-bnYCwf8Emc3pTD8pXnre+wfnjGtfi5ncMDKy7+cWZXbmRAsdWkOQHrfC1yz/KiwP5thDp2kCHWYWKBX4HP1hoQ==", + "node_modules/minisearch": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/minisearch/-/minisearch-6.3.0.tgz", + "integrity": "sha512-ihFnidEeU8iXzcVHy74dhkxh/dn8Dc08ERl0xwoMMGqp4+LvRSCgicb+zGqWthVokQKvCSxITlh3P08OzdTYCQ==", "dev": true }, - "debug": { + "node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/mocha": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.2.0.tgz", + "integrity": "sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg==", + "dev": true, + "dependencies": { + "ansi-colors": "4.1.1", + "browser-stdout": "1.3.1", + "chokidar": "3.5.3", + "debug": "4.3.4", + "diff": "5.0.0", + "escape-string-regexp": "4.0.0", + "find-up": "5.0.0", + "glob": "7.2.0", + "he": "1.2.0", + "js-yaml": "4.1.0", + "log-symbols": "4.1.0", + "minimatch": "5.0.1", + "ms": "2.1.3", + "nanoid": "3.3.3", + "serialize-javascript": "6.0.0", + "strip-json-comments": "3.1.1", + "supports-color": "8.1.1", + "workerpool": "6.2.1", + "yargs": "16.2.0", + "yargs-parser": "20.2.4", + "yargs-unparser": "2.0.0" + }, + "bin": { + "_mocha": "bin/_mocha", + "mocha": "bin/mocha.js" + }, + "engines": { + "node": ">= 14.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mochajs" + } + }, + "node_modules/mocha/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, - "requires": { + "dependencies": { "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "decamelize": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-5.0.1.tgz", - "integrity": "sha512-VfxadyCECXgQlkoEAjeghAr5gY3Hf+IKjKb+X8tGVDtveCjN+USwprd2q3QXBR9T1+x2DG0XZF5/w+7HAtSaXA==", + "node_modules/mocha/node_modules/debug/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 }, - "decamelize-keys": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.0.tgz", - "integrity": "sha512-ocLWuYzRPoS9bfiSdDd3cxvrzovVMZnRDVEzAs+hWIVXGDbHxWMECij2OBuyB/An0FFW/nLuq6Kv1i/YC5Qfzg==", + "node_modules/mocha/node_modules/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", "dev": true, - "requires": { - "decamelize": "^1.1.0", - "map-obj": "^1.0.0" + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/mocha/node_modules/glob/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": { - "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", - "dev": true - }, - "map-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", - "integrity": "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==", - "dev": true - } + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" } }, - "deep-eql": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.2.tgz", - "integrity": "sha512-gT18+YW4CcW/DBNTwAmqTtkJh7f9qqScu2qFVlx7kCoeY9tlBu9cUcr7+I+Z/noG8INehS3xQgLpTtd/QUTn4w==", + "node_modules/mocha/node_modules/log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", "dev": true, - "requires": { - "type-detect": "^4.0.0" + "dependencies": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "del": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/del/-/del-7.0.0.tgz", - "integrity": "sha512-tQbV/4u5WVB8HMJr08pgw0b6nG4RGt/tj+7Numvq+zqcvUFeMaIWWOUFltiU+6go8BSO2/ogsB4EasDaj0y68Q==", + "node_modules/mocha/node_modules/minimatch": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", + "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", "dev": true, - "requires": { - "globby": "^13.1.2", - "graceful-fs": "^4.2.10", - "is-glob": "^4.0.3", - "is-path-cwd": "^3.0.0", - "is-path-inside": "^4.0.0", - "p-map": "^5.5.0", - "rimraf": "^3.0.2", - "slash": "^4.0.0" + "dependencies": { + "brace-expansion": "^2.0.1" }, + "engines": { + "node": ">=10" + } + }, + "node_modules/mocha/node_modules/minimatch/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, "dependencies": { - "slash": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", - "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", - "dev": true - } + "balanced-match": "^1.0.0" } }, - "del-cli": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/del-cli/-/del-cli-5.0.0.tgz", - "integrity": "sha512-rENFhUaYcjoMODwFhhlON+ogN7DoG+4+GFN+bsA1XeDt4w2OKQnQadFP1thHSAlK9FAtl88qgP66wOV+eFZZiQ==", + "node_modules/mocha/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "node_modules/mocha/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/mrmime": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-1.0.1.tgz", + "integrity": "sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==", "dev": true, - "requires": { - "del": "^7.0.0", - "meow": "^10.1.3" + "engines": { + "node": ">=10" } }, - "depd": { + "node_modules/ms": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true }, - "destroy": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", - "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", - "dev": true + "node_modules/msgpackr": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/msgpackr/-/msgpackr-1.10.0.tgz", + "integrity": "sha512-rVQ5YAQDoZKZLX+h8tNq7FiHrPJoeGHViz3U4wIcykhAEpwF/nH2Vbk8dQxmpX5JavkI8C7pt4bnkJ02ZmRoUw==", + "dev": true, + "optionalDependencies": { + "msgpackr-extract": "^3.0.2" + } }, - "di": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/di/-/di-0.0.1.tgz", - "integrity": "sha512-uJaamHkagcZtHPqCIHZxnFrXlunQXgBOsZSUOWwFw31QJCAbyTBoHMW75YOTur5ZNx8pIeAKgf6GWIgaqqiLhA==", - "dev": true + "node_modules/msgpackr-extract": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/msgpackr-extract/-/msgpackr-extract-3.0.2.tgz", + "integrity": "sha512-SdzXp4kD/Qf8agZ9+iTu6eql0m3kWm1A2y1hkpTeVNENutaB0BwHlSvAIaMxwntmRUAUjon2V4L8Z/njd0Ct8A==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "dependencies": { + "node-gyp-build-optional-packages": "5.0.7" + }, + "bin": { + "download-msgpackr-prebuilds": "bin/download-prebuilds.js" + }, + "optionalDependencies": { + "@msgpackr-extract/msgpackr-extract-darwin-arm64": "3.0.2", + "@msgpackr-extract/msgpackr-extract-darwin-x64": "3.0.2", + "@msgpackr-extract/msgpackr-extract-linux-arm": "3.0.2", + "@msgpackr-extract/msgpackr-extract-linux-arm64": "3.0.2", + "@msgpackr-extract/msgpackr-extract-linux-x64": "3.0.2", + "@msgpackr-extract/msgpackr-extract-win32-x64": "3.0.2" + } }, - "diff": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", - "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", - "dev": true + "node_modules/msgpackr-extract/node_modules/node-gyp-build-optional-packages": { + "version": "5.0.7", + "resolved": "https://registry.npmjs.org/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.0.7.tgz", + "integrity": "sha512-YlCCc6Wffkx0kHkmam79GKvDQ6x+QZkMjFGrIMxgFNILFvGSbCp2fCBC55pGTT9gVaz8Na5CLmxt/urtzRv36w==", + "dev": true, + "optional": true, + "bin": { + "node-gyp-build-optional-packages": "bin.js", + "node-gyp-build-optional-packages-optional": "optional.js", + "node-gyp-build-optional-packages-test": "build-test.js" + } }, - "dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "node_modules/mz": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", "dev": true, - "requires": { - "path-type": "^4.0.0" + "dependencies": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" } }, - "dom-serialize": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/dom-serialize/-/dom-serialize-2.2.1.tgz", - "integrity": "sha512-Yra4DbvoW7/Z6LBN560ZwXMjoNOSAN2wRsKFGc4iBeso+mpIA6qj1vfdf9HpMaKAqG6wXTy+1SYEzmNpKXOSsQ==", + "node_modules/nanoid": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz", + "integrity": "sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==", "dev": true, - "requires": { - "custom-event": "~1.0.0", - "ent": "~2.2.0", - "extend": "^3.0.0", - "void-elements": "^2.0.0" + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" } }, - "dotenv": { - "version": "16.3.1", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.3.1.tgz", - "integrity": "sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ==", - "dev": true + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } }, - "duplexer": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", - "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=", + "node_modules/nested-error-stacks": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nested-error-stacks/-/nested-error-stacks-2.1.1.tgz", + "integrity": "sha512-9iN1ka/9zmX1ZvLV9ewJYEk9h7RyRRtqdK0woXcqohu8EWIerfPUjYJPg0ULy0UqP7cslmdGc8xKDJcojlKiaw==", "dev": true }, - "ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "node_modules/node-addon-api": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.0.0.tgz", + "integrity": "sha512-vgbBJTS4m5/KkE16t5Ly0WW9hz46swAstv0hYYwMtbG7AznRhNyfLRe8HZAiWIpcHzoO7HxhLuBQj9rJ/Ho0ZA==", "dev": true }, - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true + "node_modules/node-gyp-build-optional-packages": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.1.1.tgz", + "integrity": "sha512-+P72GAjVAbTxjjwUmwjVrqrdZROD4nf8KgpBoDxqXXTiYZZt/ud60dE5yvCSr9lRO8e8yv6kgJIC0K0PfZFVQw==", + "dev": true, + "dependencies": { + "detect-libc": "^2.0.1" + }, + "bin": { + "node-gyp-build-optional-packages": "bin.js", + "node-gyp-build-optional-packages-optional": "optional.js", + "node-gyp-build-optional-packages-test": "build-test.js" + } }, - "encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "node_modules/node-gyp-build-optional-packages/node_modules/detect-libc": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.2.tgz", + "integrity": "sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/node-releases": { + "version": "2.0.13", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz", + "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==", "dev": true }, - "engine.io": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.2.1.tgz", - "integrity": "sha512-ECceEFcAaNRybd3lsGQKas3ZlMVjN3cyWwMP25D2i0zWfyiytVbTpRPa34qrr+FHddtpBVOmq4H/DCv1O0lZRA==", + "node_modules/normalize-package-data": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", + "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", "dev": true, - "requires": { - "@types/cookie": "^0.4.1", - "@types/cors": "^2.8.12", - "@types/node": ">=10.0.0", - "accepts": "~1.3.4", - "base64id": "2.0.0", - "cookie": "~0.4.1", - "cors": "~2.8.5", - "debug": "~4.3.1", - "engine.io-parser": "~5.0.3", - "ws": "~8.2.3" + "dependencies": { + "hosted-git-info": "^4.0.1", + "is-core-module": "^2.5.0", + "semver": "^7.3.4", + "validate-npm-package-license": "^3.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" } }, - "engine.io-parser": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.0.4.tgz", - "integrity": "sha512-+nVFp+5z1E3HcToEnO7ZIj3g+3k9389DvWtvJZz0T6/eOCPIyyxehFcedoYrZQrp0LgQbD9pPXhpMBKMd5QURg==", + "node_modules/nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "node_modules/nullthrows": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/nullthrows/-/nullthrows-1.1.1.tgz", + "integrity": "sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==", "dev": true }, - "ent": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz", - "integrity": "sha512-GHrMyVZQWvTIdDtpiEXdHZnFQKzeO09apj8Cbl4pKWy4i0Oprcq17usfDt5aO63swf0JOeMWjWQE/LzgSRuWpA==", + "node_modules/nwsapi": { + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.7.tgz", + "integrity": "sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ==", "dev": true }, - "error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", "dev": true, - "requires": { - "is-arrayish": "^0.2.1" + "engines": { + "node": ">=0.10.0" } }, - "es6-promise": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", - "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==", - "dev": true + "node_modules/object-inspect": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, - "es6-promisify": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", - "integrity": "sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ==", + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", "dev": true, - "requires": { - "es6-promise": "^4.0.3" + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" } }, - "esbuild": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.17.19.tgz", - "integrity": "sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==", + "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, - "peer": true, - "requires": { - "@esbuild/android-arm": "0.17.19", - "@esbuild/android-arm64": "0.17.19", - "@esbuild/android-x64": "0.17.19", - "@esbuild/darwin-arm64": "0.17.19", - "@esbuild/darwin-x64": "0.17.19", - "@esbuild/freebsd-arm64": "0.17.19", - "@esbuild/freebsd-x64": "0.17.19", - "@esbuild/linux-arm": "0.17.19", - "@esbuild/linux-arm64": "0.17.19", - "@esbuild/linux-ia32": "0.17.19", - "@esbuild/linux-loong64": "0.17.19", - "@esbuild/linux-mips64el": "0.17.19", - "@esbuild/linux-ppc64": "0.17.19", - "@esbuild/linux-riscv64": "0.17.19", - "@esbuild/linux-s390x": "0.17.19", - "@esbuild/linux-x64": "0.17.19", - "@esbuild/netbsd-x64": "0.17.19", - "@esbuild/openbsd-x64": "0.17.19", - "@esbuild/sunos-x64": "0.17.19", - "@esbuild/win32-arm64": "0.17.19", - "@esbuild/win32-ia32": "0.17.19", - "@esbuild/win32-x64": "0.17.19" - } - }, - "escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true + "dependencies": { + "wrappy": "1" + } }, - "escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", - "dev": true + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "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==", + "node_modules/ordered-binary": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/ordered-binary/-/ordered-binary-1.5.1.tgz", + "integrity": "sha512-5VyHfHY3cd0iza71JepYG50My+YUbrFtGoUz2ooEydPyPM7Aai/JW098juLr+RG6+rDJuzNNTsEQu2DZa1A41A==", "dev": true }, - "estree-walker": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", - "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", - "dev": true + "node_modules/p-event": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/p-event/-/p-event-5.0.1.tgz", + "integrity": "sha512-dd589iCQ7m1L0bmC5NLlVYfy3TbBEsMUfWx9PyAgPeIcFZ/E2yaTZ4Rz4MiBmmJShviiftHVXOqfnfzJ6kyMrQ==", + "dev": true, + "dependencies": { + "p-timeout": "^5.0.2" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "event-stream": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/event-stream/-/event-stream-3.3.4.tgz", - "integrity": "sha512-QHpkERcGsR0T7Qm3HNJSyXKEEj8AHNxkY3PK8TS2KJvQ7NiSHe3DDpwVKKtoYprL/AreyzFBeIkBIWChAqn60g==", + "node_modules/p-filter": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-filter/-/p-filter-3.0.0.tgz", + "integrity": "sha512-QtoWLjXAW++uTX67HZQz1dbTpqBfiidsB6VtQUC9iR85S120+s0T5sO6s+B5MLzFcZkrEd/DGMmCjR+f2Qpxwg==", "dev": true, - "requires": { - "duplexer": "~0.1.1", - "from": "~0", - "map-stream": "~0.1.0", - "pause-stream": "0.0.11", - "split": "0.3", - "stream-combiner": "~0.0.4", - "through": "~2.3.1" + "dependencies": { + "p-map": "^5.1.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "eventemitter3": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", - "dev": true + "node_modules/p-filter/node_modules/p-map": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-5.5.0.tgz", + "integrity": "sha512-VFqfGDHlx87K66yZrNdI4YGtD70IRyd+zSvgks6mzHPRNkoKy+9EKP4SFC77/vTTQYmRmti7dvqC+m5jBrBAcg==", + "dev": true, + "dependencies": { + "aggregate-error": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "eventti": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eventti/-/eventti-3.0.0.tgz", - "integrity": "sha512-3+eInZ4r1tOoeBQzG/3E2CvTcdkoMSipp3PEfWdNmniMu14pUCUpmHmyC0DrgVQDhLxN+TpS3HcXFi17Fmup5g==", - "dev": true + "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" + } }, - "extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "dev": true + "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" + } }, - "fast-glob": { - "version": "3.2.11", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", - "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", + "node_modules/p-map": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-6.0.0.tgz", + "integrity": "sha512-T8BatKGY+k5rU+Q/GTYgrEf2r4xRMevAN5mtXc2aPc4rS1j3s+vWTaO2Wag94neXuCAUAs8cxBL9EeB5EA6diw==", "dev": true, - "requires": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "fastq": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", - "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "node_modules/p-timeout": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-5.1.0.tgz", + "integrity": "sha512-auFDyzzzGZZZdHz3BtET9VEz0SE/uMEAx7uWfGPucfzEwwe/xH0iVeZibQmANYE/hp9T2+UUZT5m+BKyrDp3Ew==", "dev": true, - "requires": { - "reusify": "^1.0.4" + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "node_modules/parcel": { + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/parcel/-/parcel-2.10.3.tgz", + "integrity": "sha512-Ocx33N4ZVnotJTALhMZ0AqPIE9UN5uP6jjA+lYJ4FlEYuYYZsvOQXZQgeMa62pFj6jrOHWh7ho8uJhRdTNwVyg==", "dev": true, - "requires": { - "to-regex-range": "^5.0.1" + "dependencies": { + "@parcel/config-default": "2.10.3", + "@parcel/core": "2.10.3", + "@parcel/diagnostic": "2.10.3", + "@parcel/events": "2.10.3", + "@parcel/fs": "2.10.3", + "@parcel/logger": "2.10.3", + "@parcel/package-manager": "2.10.3", + "@parcel/reporter-cli": "2.10.3", + "@parcel/reporter-dev-server": "2.10.3", + "@parcel/reporter-tracer": "2.10.3", + "@parcel/utils": "2.10.3", + "chalk": "^4.1.0", + "commander": "^7.0.0", + "get-port": "^4.2.0" + }, + "bin": { + "parcel": "lib/bin.js" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "finalhandler": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", - "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "node_modules/parcel/node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", "dev": true, - "requires": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "statuses": "~1.5.0", - "unpipe": "~1.0.0" + "engines": { + "node": ">= 10" + } + }, + "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/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", - "dev": true, - "requires": { - "ee-first": "1.1.1" - } - } + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "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==", + "node_modules/parse5": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", + "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", "dev": true, - "requires": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" + "dependencies": { + "entities": "^4.4.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" } }, - "flat": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", - "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", - "dev": true + "node_modules/parse5/node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "dev": true, + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } }, - "flatted": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", - "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", - "dev": true + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "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" + } }, - "focus-trap": { - "version": "7.5.1", - "resolved": "https://registry.npmjs.org/focus-trap/-/focus-trap-7.5.1.tgz", - "integrity": "sha512-Xm2j/zkKGc9ORKrVrbOqwCiJc5XnQOiBtmpa1YmEW0jqmkJ4ZJnRShuMYnEuho6LO8KKsbrqjir89KQLIDKKqA==", + "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, - "requires": { - "tabbable": "^6.2.0" + "engines": { + "node": ">=0.10.0" } }, - "follow-redirects": { - "version": "1.15.1", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.1.tgz", - "integrity": "sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA==", - "dev": true - }, - "from": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/from/-/from-0.1.7.tgz", - "integrity": "sha512-twe20eF1OxVxp/ML/kq2p1uc6KvFK/+vs8WjEbeKmV2He22MKm7YF2ANIt+EOqhJ5L3K/SuuPhk0hWQDjOM23g==", - "dev": true + "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" + } }, - "fs-extra": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "node_modules/path-scurry": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz", + "integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==", "dev": true, - "requires": { - "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" + "dependencies": { + "lru-cache": "^9.1.1 || ^10.0.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "10.0.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.0.3.tgz", + "integrity": "sha512-B7gr+F6MkqB3uzINHXNctGieGsRTMwIBgxkp0yq/5BwcuDzD4A8wQpHQW6vDAm1uKSLQghmRdD9sKqf2vJ1cEg==", + "dev": true, + "engines": { + "node": "14 || >=16.14" + } }, - "fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", "dev": true, - "optional": true + "engines": { + "node": ">=8" + } }, - "function-bind": { + "node_modules/pathval": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true - }, - "get-func-name": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", - "integrity": "sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==", - "dev": true + "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", + "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", + "dev": true, + "engines": { + "node": "*" + } }, - "get-intrinsic": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz", - "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==", + "node_modules/pause-stream": { + "version": "0.0.11", + "resolved": "https://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz", + "integrity": "sha512-e3FBlXLmN/D1S+zHzanP4E/4Z60oFAa3O051qt1pxa7DEJWKAyil6upYVXCWadEnuoqa4Pkc9oUx9zsxYeRv8A==", "dev": true, - "requires": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.3" + "dependencies": { + "through": "~2.3" } }, - "get-stdin": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-9.0.0.tgz", - "integrity": "sha512-dVKBjfWisLAicarI2Sf+JuBE/DghV4UzNAVe9yhEJuzeREd3JhOTE9cUaJTeSa77fsbQUK3pcOpJfM59+VKZaA==", + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", "dev": true }, - "glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" } }, - "glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "node_modules/pirates": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", + "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", "dev": true, - "requires": { - "is-glob": "^4.0.1" + "engines": { + "node": ">= 6" } }, - "globby": { - "version": "13.1.2", - "resolved": "https://registry.npmjs.org/globby/-/globby-13.1.2.tgz", - "integrity": "sha512-LKSDZXToac40u8Q1PQtZihbNdTYSNMuWe+K5l+oa6KgDzSvVrHXlJy40hUP522RjAIoNLJYBJi7ow+rbFpIhHQ==", + "node_modules/postcss": { + "version": "8.4.32", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.32.tgz", + "integrity": "sha512-D/kj5JNu6oo2EIy+XL/26JEDTlIbB8hw85G8StOE6L74RQAVVP5rej6wxCNqyMbR4RkPfqvezVbPw81Ngd6Kcw==", "dev": true, - "requires": { - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.11", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^4.0.0" - }, - "dependencies": { - "slash": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", - "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", - "dev": true + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" } + ], + "dependencies": { + "nanoid": "^3.3.7", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" } }, - "graceful-fs": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", - "dev": true - }, - "gzip-size-cli": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/gzip-size-cli/-/gzip-size-cli-5.1.0.tgz", - "integrity": "sha512-XBC1Ia0IWm0/cbiU33fPfNL6uFCq7IjngRkFCelullMBcEna9Re4DNPfpsRgREDpOR5FGNupBfdb377uI5o7iQ==", + "node_modules/postcss-load-config": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.2.tgz", + "integrity": "sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==", "dev": true, - "requires": { - "chalk": "^4.1.2", - "get-stdin": "^9.0.0", - "gzip-size": "^7.0.0", - "meow": "^10.1.2", - "pretty-bytes": "^5.6.0" - }, - "dependencies": { - "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, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "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, - "requires": { - "color-name": "~1.1.4" - } - }, - "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 - }, - "duplexer": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", - "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", - "dev": true - }, - "gzip-size": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-7.0.0.tgz", - "integrity": "sha512-O1Ld7Dr+nqPnmGpdhzLmMTQ4vAsD+rHwMm1NLUmoUFFymBOMKxCCrtDxqdBRYXdeEPEi3SyoR4TizJLQrnKBNA==", - "dev": true, - "requires": { - "duplexer": "^0.1.2" - } + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" }, - "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 + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "lilconfig": "^3.0.0", + "yaml": "^2.3.4" + }, + "engines": { + "node": ">= 14" + }, + "peerDependencies": { + "postcss": ">=8.0.9", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "postcss": { + "optional": true }, - "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, - "requires": { - "has-flag": "^4.0.0" - } + "ts-node": { + "optional": true } } }, - "hard-rejection": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", - "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==", + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", "dev": true }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "node_modules/postcss/node_modules/nanoid": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", "dev": true, - "requires": { - "function-bind": "^1.1.1" + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" } }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, - "has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "dev": true - }, - "he": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", - "dev": true + "node_modules/posthtml": { + "version": "0.16.6", + "resolved": "https://registry.npmjs.org/posthtml/-/posthtml-0.16.6.tgz", + "integrity": "sha512-JcEmHlyLK/o0uGAlj65vgg+7LIms0xKXe60lcDOTU7oVX/3LuEuLwrQpW3VJ7de5TaFKiW4kWkaIpJL42FEgxQ==", + "dev": true, + "dependencies": { + "posthtml-parser": "^0.11.0", + "posthtml-render": "^3.0.0" + }, + "engines": { + "node": ">=12.0.0" + } }, - "hosted-git-info": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", - "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", + "node_modules/posthtml-parser": { + "version": "0.10.2", + "resolved": "https://registry.npmjs.org/posthtml-parser/-/posthtml-parser-0.10.2.tgz", + "integrity": "sha512-PId6zZ/2lyJi9LiKfe+i2xv57oEjJgWbsHGGANwos5AvdQp98i6AtamAl8gzSVFGfQ43Glb5D614cvZf012VKg==", "dev": true, - "requires": { - "lru-cache": "^6.0.0" + "dependencies": { + "htmlparser2": "^7.1.1" + }, + "engines": { + "node": ">=12" } }, - "http-errors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "node_modules/posthtml-render": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/posthtml-render/-/posthtml-render-3.0.0.tgz", + "integrity": "sha512-z+16RoxK3fUPgwaIgH9NGnK1HKY9XIDpydky5eQGgAFVXTCSezalv9U2jQuNV+Z9qV1fDWNzldcw4eK0SSbqKA==", "dev": true, - "requires": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" + "dependencies": { + "is-json": "^2.0.1" }, + "engines": { + "node": ">=12" + } + }, + "node_modules/posthtml/node_modules/posthtml-parser": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/posthtml-parser/-/posthtml-parser-0.11.0.tgz", + "integrity": "sha512-QecJtfLekJbWVo/dMAA+OSwY79wpRmbqS5TeXvXSX+f0c6pW4/SE6inzZ2qkU7oAMCPqIDkZDvd/bQsSFUnKyw==", + "dev": true, "dependencies": { - "statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", - "dev": true - } + "htmlparser2": "^7.1.1" + }, + "engines": { + "node": ">=12" } }, - "http-proxy": { - "version": "1.18.1", - "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", - "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "node_modules/preact": { + "version": "10.19.2", + "resolved": "https://registry.npmjs.org/preact/-/preact-10.19.2.tgz", + "integrity": "sha512-UA9DX/OJwv6YwP9Vn7Ti/vF80XL+YA5H2l7BpCtUr3ya8LWHFzpiO5R+N7dN16ujpIxhekRFuOOF82bXX7K/lg==", "dev": true, - "requires": { - "eventemitter3": "^4.0.0", - "follow-redirects": "^1.0.0", - "requires-port": "^1.0.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/preact" } }, - "https-proxy-agent": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz", - "integrity": "sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg==", + "node_modules/prettier": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.1.1.tgz", + "integrity": "sha512-22UbSzg8luF4UuZtzgiUOfcGM8s4tjBv6dJRT7j275NXsy2jb4aJa4NNveul5x4eqlF1wuhuR2RElK71RvmVaw==", "dev": true, - "requires": { - "agent-base": "^4.3.0", - "debug": "^3.1.0" + "bin": { + "prettier": "bin/prettier.cjs" }, - "dependencies": { - "agent-base": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz", - "integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==", - "dev": true, - "requires": { - "es6-promisify": "^5.0.0" - } - }, - "debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - } + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/pretty-bytes": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", + "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", + "dev": true, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "node_modules/property-information": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/property-information/-/property-information-6.4.0.tgz", + "integrity": "sha512-9t5qARVofg2xQqKtytzt+lZ4d1Qvj8t5B8fEwXK6qOfgRLgH/b13QlgEyDh033NOS31nXeFbYv7CLUDG1CeifQ==", "dev": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "ignore": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", - "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", - "dev": true - }, - "indent-string": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz", - "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==", - "dev": true - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "node_modules/ps-tree": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/ps-tree/-/ps-tree-1.2.0.tgz", + "integrity": "sha512-0VnamPPYHl4uaU/nSFeZZpR21QAWRz+sRv4iW9+v/GS/J5U5iZB5BNN6J0RMoOvdx2gWM2+ZFMIm58q24e4UYA==", "dev": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" + "dependencies": { + "event-stream": "=3.3.4" + }, + "bin": { + "ps-tree": "bin/ps-tree.js" + }, + "engines": { + "node": ">= 0.10" } }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "node_modules/psl": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", + "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", "dev": true }, - "is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "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, - "requires": { - "binary-extensions": "^2.0.0" + "engines": { + "node": ">=6" } }, - "is-core-module": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz", - "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==", + "node_modules/q": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", + "integrity": "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==", "dev": true, - "requires": { - "has": "^1.0.3" + "engines": { + "node": ">=0.6.0", + "teleport": ">=0.2.0" } }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - }, - "is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "node_modules/qjobs": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/qjobs/-/qjobs-1.2.0.tgz", + "integrity": "sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg==", "dev": true, - "requires": { - "is-extglob": "^2.1.1" + "engines": { + "node": ">=0.9" } }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true + "node_modules/qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "dev": true, + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, - "is-path-cwd": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-3.0.0.tgz", - "integrity": "sha512-kyiNFFLU0Ampr6SDZitD/DwUo4Zs1nSdnygUBqsu3LooL00Qvb5j+UnvApUn/TTj1J3OuE6BTdQ5rudKmU2ZaA==", + "node_modules/querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", "dev": true }, - "is-path-inside": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-4.0.0.tgz", - "integrity": "sha512-lJJV/5dYS+RcL8uQdBDW9c9uWFLLBNRyFhnAKXw5tVqLlKZ4RMGZKv+YQ/IA3OhD+RpbJa1LLFM1FQPGyIXvOA==", - "dev": true + "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" + } + ] }, - "is-plain-obj": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", - "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", - "dev": true + "node_modules/quick-lru": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", + "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "is-running": { + "node_modules/randombytes": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-running/-/is-running-2.1.0.tgz", - "integrity": "sha512-mjJd3PujZMl7j+D395WTIO5tU5RIDBfVSRtRR4VOJou3H66E38UjbjvDGh3slJzPuolsb+yQFqwHNNdyp5jg3w==", - "dev": true - }, - "is-unicode-supported": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", - "dev": true - }, - "isbinaryfile": { - "version": "4.0.10", - "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.10.tgz", - "integrity": "sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==", - "dev": true - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true - }, - "js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.1.0" + } }, - "js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", "dev": true, - "requires": { - "argparse": "^2.0.1" + "engines": { + "node": ">= 0.6" } }, - "json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true + "node_modules/raw-body": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", + "dev": true, + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } }, - "jsonc-parser": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", - "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==", + "node_modules/react-error-overlay": { + "version": "6.0.9", + "resolved": "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.0.9.tgz", + "integrity": "sha512-nQTTcUu+ATDbrSD1BZHr5kgSD4oF8OFjxun8uAaL8RwPBacGBNPf/yAuVVdx17N8XNzRDMrZ9XcKZHCjPW+9ew==", "dev": true }, - "jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "node_modules/react-refresh": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.9.0.tgz", + "integrity": "sha512-Gvzk7OZpiqKSkxsQvO/mbTN1poglhmAV7gR/DdIrRrSMXraRQQlfikRJOr3Nb9GTMPC5kof948Zy6jJZIFtDvQ==", "dev": true, - "requires": { - "graceful-fs": "^4.1.6" + "engines": { + "node": ">=0.10.0" } }, - "karma": { - "version": "6.4.2", - "resolved": "https://registry.npmjs.org/karma/-/karma-6.4.2.tgz", - "integrity": "sha512-C6SU/53LB31BEgRg+omznBEMY4SjHU3ricV6zBcAe1EeILKkeScr+fZXtaI5WyDbkVowJxxAI6h73NcFPmXolQ==", + "node_modules/read-pkg": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-6.0.0.tgz", + "integrity": "sha512-X1Fu3dPuk/8ZLsMhEj5f4wFAF0DWoK7qhGJvgaijocXxBmSToKfbFtqbxMO7bVjNA1dmE5huAzjXj/ey86iw9Q==", "dev": true, - "requires": { - "@colors/colors": "1.5.0", - "body-parser": "^1.19.0", - "braces": "^3.0.2", - "chokidar": "^3.5.1", - "connect": "^3.7.0", - "di": "^0.0.1", - "dom-serialize": "^2.2.1", - "glob": "^7.1.7", - "graceful-fs": "^4.2.6", - "http-proxy": "^1.18.1", - "isbinaryfile": "^4.0.8", - "lodash": "^4.17.21", - "log4js": "^6.4.1", - "mime": "^2.5.2", - "minimatch": "^3.0.4", - "mkdirp": "^0.5.5", - "qjobs": "^1.2.0", - "range-parser": "^1.2.1", - "rimraf": "^3.0.2", - "socket.io": "^4.4.1", - "source-map": "^0.6.1", - "tmp": "^0.2.1", - "ua-parser-js": "^0.7.30", - "yargs": "^16.1.1" - }, "dependencies": { - "yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", - "dev": true, - "requires": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - } - } - } - }, - "karma-browserstack-launcher": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/karma-browserstack-launcher/-/karma-browserstack-launcher-1.6.0.tgz", - "integrity": "sha512-Y/UWPdHZkHIVH2To4GWHCTzmrsB6H7PBWy6pw+TWz5sr4HW2mcE+Uj6qWgoVNxvQU1Pfn5LQQzI6EQ65p8QbiQ==", - "dev": true, - "requires": { - "browserstack": "~1.5.1", - "browserstack-local": "^1.3.7", - "q": "~1.5.0" + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^3.0.2", + "parse-json": "^5.2.0", + "type-fest": "^1.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "karma-chrome-launcher": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/karma-chrome-launcher/-/karma-chrome-launcher-3.2.0.tgz", - "integrity": "sha512-rE9RkUPI7I9mAxByQWkGJFXfFD6lE4gC5nPuZdobf/QdTEJI6EU4yIay/cfU/xV4ZxlM5JiTv7zWYgA64NpS5Q==", + "node_modules/read-pkg-up": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-8.0.0.tgz", + "integrity": "sha512-snVCqPczksT0HS2EC+SxUndvSzn6LRCwpfSvLrIfR5BKDQQZMaI6jPRC9dYvYFDRAuFEAnkwww8kBBNE/3VvzQ==", "dev": true, - "requires": { - "which": "^1.2.1" + "dependencies": { + "find-up": "^5.0.0", + "read-pkg": "^6.0.0", + "type-fest": "^1.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "karma-mocha": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/karma-mocha/-/karma-mocha-2.0.1.tgz", - "integrity": "sha512-Tzd5HBjm8his2OA4bouAsATYEpZrp9vC7z5E5j4C5Of5Rrs1jY67RAwXNcVmd/Bnk1wgvQRou0zGVLey44G4tQ==", + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", "dev": true, - "requires": { - "minimist": "^1.2.3" + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" } }, - "karma-mocha-reporter": { - "version": "2.2.5", - "resolved": "https://registry.npmjs.org/karma-mocha-reporter/-/karma-mocha-reporter-2.2.5.tgz", - "integrity": "sha512-Hr6nhkIp0GIJJrvzY8JFeHpQZNseuIakGac4bpw8K1+5F0tLb6l7uvXRa8mt2Z+NVwYgCct4QAfp2R2QP6o00w==", + "node_modules/redent": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-4.0.0.tgz", + "integrity": "sha512-tYkDkVVtYkSVhuQ4zBgfvciymHaeuel+zFKXShfDnFP5SyVEP7qo70Rf1jTOTCx3vGNAbnEi/xFkcfQVMIBWag==", "dev": true, - "requires": { - "chalk": "^2.1.0", - "log-symbols": "^2.1.0", - "strip-ansi": "^4.0.0" - }, "dependencies": { - "ansi-regex": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", - "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", - "dev": true - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - } - } + "indent-string": "^5.0.0", + "strip-indent": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "node_modules/regenerator-runtime": { + "version": "0.13.11", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", + "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==", "dev": true }, - "lines-and-columns": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", - "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=", + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", "dev": true }, - "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==", + "node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", "dev": true, - "requires": { - "p-locate": "^5.0.0" + "engines": { + "node": ">=8" } }, - "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "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/rfdc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", + "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==", "dev": true }, - "log-symbols": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", - "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", + "node_modules/rimraf": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.5.tgz", + "integrity": "sha512-CqDakW+hMe/Bz202FPEymy68P+G50RfMQK+Qo5YUqc9SPipvbGjCGKd0RSKEelbsfQuw3g5NZDSrlZZAJurH1A==", "dev": true, - "requires": { - "chalk": "^2.0.1" + "dependencies": { + "glob": "^10.3.7" + }, + "bin": { + "rimraf": "dist/esm/bin.mjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "log4js": { - "version": "6.6.1", - "resolved": "https://registry.npmjs.org/log4js/-/log4js-6.6.1.tgz", - "integrity": "sha512-J8VYFH2UQq/xucdNu71io4Fo+purYYudyErgBbswWKO0MC6QVOERRomt5su/z6d3RJSmLyTGmXl3Q/XjKCf+/A==", + "node_modules/rimraf/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, - "requires": { - "date-format": "^4.0.13", - "debug": "^4.3.4", - "flatted": "^3.2.6", - "rfdc": "^1.3.0", - "streamroller": "^3.1.2" + "dependencies": { + "balanced-match": "^1.0.0" } }, - "loupe": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.4.tgz", - "integrity": "sha512-OvKfgCC2Ndby6aSTREl5aCCPTNIzlDfQZvZxNUrBrihDhL3xcrYegTblhmEiCrg2kKQz4XsFIaemE5BF4ybSaQ==", + "node_modules/rimraf/node_modules/glob": { + "version": "10.3.10", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", + "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", "dev": true, - "requires": { - "get-func-name": "^2.0.0" + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.5", + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "node_modules/rimraf/node_modules/minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", "dev": true, - "requires": { - "yallist": "^4.0.0" + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "magic-string": { - "version": "0.30.0", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.0.tgz", - "integrity": "sha512-LA+31JYDJLs82r2ScLrlz1GjSgu66ZV518eyWT+S8VhyQn/JL0u9MeBOvQMGYiPk1DBiSN9DDMOcXvigJZaViQ==", + "node_modules/rollup": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.5.1.tgz", + "integrity": "sha512-0EQribZoPKpb5z1NW/QYm3XSR//Xr8BeEXU49Lc/mQmpmVVG5jPUVrpc2iptup/0WMrY9mzas0fxH+TjYvG2CA==", "dev": true, - "requires": { - "@jridgewell/sourcemap-codec": "^1.4.13" + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.5.1", + "@rollup/rollup-android-arm64": "4.5.1", + "@rollup/rollup-darwin-arm64": "4.5.1", + "@rollup/rollup-darwin-x64": "4.5.1", + "@rollup/rollup-linux-arm-gnueabihf": "4.5.1", + "@rollup/rollup-linux-arm64-gnu": "4.5.1", + "@rollup/rollup-linux-arm64-musl": "4.5.1", + "@rollup/rollup-linux-x64-gnu": "4.5.1", + "@rollup/rollup-linux-x64-musl": "4.5.1", + "@rollup/rollup-win32-arm64-msvc": "4.5.1", + "@rollup/rollup-win32-ia32-msvc": "4.5.1", + "@rollup/rollup-win32-x64-msvc": "4.5.1", + "fsevents": "~2.3.2" } }, - "map-obj": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz", - "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==", + "node_modules/rrweb-cssom": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.6.0.tgz", + "integrity": "sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw==", "dev": true }, - "map-stream": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/map-stream/-/map-stream-0.1.0.tgz", - "integrity": "sha512-CkYQrPYZfWnu/DAmVCpTSX/xHpKZ80eKh2lAkyA6AJTef6bW+6JpbQZN5rofum7da+SyN1bi5ctTm+lTfcCW3g==", - "dev": true + "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" + } }, - "mark.js": { - "version": "8.11.1", - "resolved": "https://registry.npmjs.org/mark.js/-/mark.js-8.11.1.tgz", - "integrity": "sha512-1I+1qpDt4idfgLQG+BNWmrqku+7/2bi5nLf4YwF8y8zXvmfiTBY3PV3ZibfrjBueCByROpuBjLLFCajqkgYoLQ==", - "dev": true + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "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" + } + ] }, - "media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", "dev": true }, - "meow": { - "version": "10.1.3", - "resolved": "https://registry.npmjs.org/meow/-/meow-10.1.3.tgz", - "integrity": "sha512-0WL7RMCPPdUTE00+GxJjL4d5Dm6eUbmAzxlzywJWiRUKCW093owmZ7/q74tH9VI91vxw9KJJNxAcvdpxb2G4iA==", + "node_modules/saxes": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz", + "integrity": "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==", "dev": true, - "requires": { - "@types/minimist": "^1.2.2", - "camelcase-keys": "^7.0.0", - "decamelize": "^5.0.0", - "decamelize-keys": "^1.1.0", - "hard-rejection": "^2.1.0", - "minimist-options": "4.1.0", - "normalize-package-data": "^3.0.2", - "read-pkg-up": "^8.0.0", - "redent": "^4.0.0", - "trim-newlines": "^4.0.2", - "type-fest": "^1.2.2", - "yargs-parser": "^20.2.9" + "dependencies": { + "xmlchars": "^2.2.0" + }, + "engines": { + "node": ">=v12.22.7" } }, - "merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true + "node_modules/search-insights": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/search-insights/-/search-insights-2.11.0.tgz", + "integrity": "sha512-Uin2J8Bpm3xaZi9Y8QibSys6uJOFZ+REMrf42v20AA3FUDUrshKkMEP6liJbMAHCm71wO6ls4mwAf7a3gFVxLw==", + "dev": true, + "peer": true }, - "micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dev": true, - "requires": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" } }, - "mime": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", - "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", - "dev": true + "node_modules/serialize-javascript": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", + "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "dev": true, + "dependencies": { + "randombytes": "^2.1.0" + } }, - "mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "node_modules/set-function-length": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz", + "integrity": "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==", + "dev": true, + "dependencies": { + "define-data-property": "^1.1.1", + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", "dev": true }, - "mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "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/shikiji": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/shikiji/-/shikiji-0.9.2.tgz", + "integrity": "sha512-bxXd5iOVvuPj0NVFWQG3YMNLAGkWHyjTGixM7wLzqJNz3WMaeiOZbOP12gjQWKMJg+Ca4jmgATrUWu/rFb3B8A==", "dev": true, - "requires": { - "mime-db": "1.52.0" + "dependencies": { + "hast-util-to-html": "^9.0.0" } }, - "min-indent": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", - "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", - "dev": true + "node_modules/shikiji-transformers": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/shikiji-transformers/-/shikiji-transformers-0.9.2.tgz", + "integrity": "sha512-WEBeNm+oUL/4OTENjnZ5G29ErNM2cPGJHRRhqjwoTFkHnsJsACtTluTaYjPEppCl46Vo3M4TV9GwrMxz2WeCSg==", + "dev": true, + "dependencies": { + "shikiji": "0.9.2" + } }, - "minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", "dev": true, - "requires": { - "brace-expansion": "^1.1.7" + "dependencies": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "minimist": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", - "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", "dev": true }, - "minimist-options": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz", - "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==", + "node_modules/slash": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", + "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", "dev": true, - "requires": { - "arrify": "^1.0.1", - "is-plain-obj": "^1.1.0", - "kind-of": "^6.0.3" + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "minisearch": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/minisearch/-/minisearch-6.1.0.tgz", - "integrity": "sha512-PNxA/X8pWk+TiqPbsoIYH0GQ5Di7m6326/lwU/S4mlo4wGQddIcf/V//1f9TB0V4j59b57b+HZxt8h3iMROGvg==", - "dev": true + "node_modules/socket.io": { + "version": "4.7.2", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.7.2.tgz", + "integrity": "sha512-bvKVS29/I5fl2FGLNHuXlQaUH/BlzX1IN6S+NKLNZpBsPZIDH+90eQmCs2Railn4YUiww4SzUedJ6+uzwFnKLw==", + "dev": true, + "dependencies": { + "accepts": "~1.3.4", + "base64id": "~2.0.0", + "cors": "~2.8.5", + "debug": "~4.3.2", + "engine.io": "~6.5.2", + "socket.io-adapter": "~2.5.2", + "socket.io-parser": "~4.2.4" + }, + "engines": { + "node": ">=10.2.0" + } }, - "mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "node_modules/socket.io-adapter": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.5.2.tgz", + "integrity": "sha512-87C3LO/NOMc+eMcpcxUBebGjkpMDkNBS9tf7KJqcDsmL936EChtVva71Dw2q4tQcuVC+hAUy4an2NO/sYXmwRA==", "dev": true, - "requires": { - "minimist": "^1.2.6" + "dependencies": { + "ws": "~8.11.0" } }, - "mocha": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.2.0.tgz", - "integrity": "sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg==", + "node_modules/socket.io-parser": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.4.tgz", + "integrity": "sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==", "dev": true, - "requires": { - "ansi-colors": "4.1.1", - "browser-stdout": "1.3.1", - "chokidar": "3.5.3", - "debug": "4.3.4", - "diff": "5.0.0", - "escape-string-regexp": "4.0.0", - "find-up": "5.0.0", - "glob": "7.2.0", - "he": "1.2.0", - "js-yaml": "4.1.0", - "log-symbols": "4.1.0", - "minimatch": "5.0.1", - "ms": "2.1.3", - "nanoid": "3.3.3", - "serialize-javascript": "6.0.0", - "strip-json-comments": "3.1.1", - "supports-color": "8.1.1", - "workerpool": "6.2.1", - "yargs": "16.2.0", - "yargs-parser": "20.2.4", - "yargs-unparser": "2.0.0" + "dependencies": { + "@socket.io/component-emitter": "~3.1.0", + "debug": "~4.3.1" }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/socket.io-parser/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": { - "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, - "requires": { - "color-convert": "^2.0.1" - } - }, - "brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "dependencies": { - "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, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "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, - "requires": { - "color-name": "~1.1.4" - } - }, - "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 - }, - "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 - }, - "log-symbols": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", - "dev": true, - "requires": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" - } - }, - "minimatch": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", - "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", - "dev": true, - "requires": { - "brace-expansion": "^2.0.1" - } - }, - "ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true - }, - "serialize-javascript": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", - "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", - "dev": true, - "requires": { - "randombytes": "^2.1.0" - } - }, + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { "supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - }, - "yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", - "dev": true, - "requires": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - } - }, - "yargs-parser": { - "version": "20.2.4", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", - "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", - "dev": true + "optional": true } } }, - "ms": { + "node_modules/socket.io-parser/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 }, - "nanoid": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz", - "integrity": "sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==", - "dev": true - }, - "negotiator": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", - "dev": true - }, - "normalize-package-data": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", - "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", + "node_modules/socket.io/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, - "requires": { - "hosted-git-info": "^4.0.1", - "is-core-module": "^2.5.0", - "semver": "^7.3.4", - "validate-npm-package-license": "^3.0.1" + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "dev": true - }, - "object-inspect": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.0.tgz", - "integrity": "sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==", + "node_modules/socket.io/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 }, - "on-finished": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", - "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, - "requires": { - "ee-first": "1.1.1" + "engines": { + "node": ">=0.10.0" } }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "node_modules/source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", "dev": true, - "requires": { - "wrappy": "1" + "engines": { + "node": ">=0.10.0" } }, - "p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "node_modules/space-separated-tokens": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz", + "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==", "dev": true, - "requires": { - "yocto-queue": "^0.1.0" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "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==", + "node_modules/spdx-correct": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", + "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", "dev": true, - "requires": { - "p-limit": "^3.0.2" + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" } }, - "p-map": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-5.5.0.tgz", - "integrity": "sha512-VFqfGDHlx87K66yZrNdI4YGtD70IRyd+zSvgks6mzHPRNkoKy+9EKP4SFC77/vTTQYmRmti7dvqC+m5jBrBAcg==", - "dev": true, - "requires": { - "aggregate-error": "^4.0.0" - } + "node_modules/spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "dev": true }, - "parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "node_modules/spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" } }, - "parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "dev": true - }, - "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 - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "node_modules/spdx-license-ids": { + "version": "3.0.16", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.16.tgz", + "integrity": "sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw==", "dev": true }, - "path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true + "node_modules/split": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/split/-/split-0.3.3.tgz", + "integrity": "sha512-wD2AeVmxXRBoX44wAycgjVpMhvbwdI2aZjCkvfNcH1YqHQvJVa1duWc73OyVGJUc05fhFaTZeQ/PYsrmyH0JVA==", + "dev": true, + "dependencies": { + "through": "2" + }, + "engines": { + "node": "*" + } }, - "path-type": { + "node_modules/srcset": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true - }, - "pathval": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", - "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", + "resolved": "https://registry.npmjs.org/srcset/-/srcset-4.0.0.tgz", + "integrity": "sha512-wvLeHgcVHKO8Sc/H/5lkGreJQVeYMm9rlmt8PuR1xE31rIuXhuzznUUqAt8MqLhB3MqJdFzlNAfpcWnxiFUcPw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/stable": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", + "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", + "deprecated": "Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility", "dev": true }, - "pause-stream": { - "version": "0.0.11", - "resolved": "https://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz", - "integrity": "sha512-e3FBlXLmN/D1S+zHzanP4E/4Z60oFAa3O051qt1pxa7DEJWKAyil6upYVXCWadEnuoqa4Pkc9oUx9zsxYeRv8A==", + "node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", "dev": true, - "requires": { - "through": "~2.3" + "engines": { + "node": ">= 0.6" } }, - "picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true - }, - "picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true + "node_modules/stream-combiner": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.0.4.tgz", + "integrity": "sha512-rT00SPnTVyRsaSz5zgSPma/aHSOic5U1prhYdRy5HS2kTZviFpmDgzilbtsJsxiroqACmayynDN/9VzIbX5DOw==", + "dev": true, + "dependencies": { + "duplexer": "~0.1.1" + } }, - "postcss": { - "version": "8.4.24", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.24.tgz", - "integrity": "sha512-M0RzbcI0sO/XJNucsGjvWU9ERWxb/ytp1w6dKtxTKgixdtQDq4rmx/g8W1hnaheq9jgwL/oyEdH5Bc4WwJKMqg==", + "node_modules/streamroller": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-3.1.5.tgz", + "integrity": "sha512-KFxaM7XT+irxvdqSP1LGLgNWbYN7ay5owZ3r/8t77p+EtSUAfUgtl7be3xtqtOmGUl9K9YPO2ca8133RlTjvKw==", "dev": true, - "requires": { - "nanoid": "^3.3.6", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" + "dependencies": { + "date-format": "^4.0.14", + "debug": "^4.3.4", + "fs-extra": "^8.1.0" }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/streamroller/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": { - "nanoid": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", - "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", - "dev": true + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true } } }, - "preact": { - "version": "10.15.1", - "resolved": "https://registry.npmjs.org/preact/-/preact-10.15.1.tgz", - "integrity": "sha512-qs2ansoQEwzNiV5eAcRT1p1EC/dmEzaATVDJNiB3g2sRDWdA7b7MurXdJjB2+/WQktGWZwxvDrnuRFbWuIr64g==", - "dev": true - }, - "prettier": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.0.0.tgz", - "integrity": "sha512-zBf5eHpwHOGPC47h0zrPyNn+eAEIdEzfywMoYn2XPi0P44Zp0tSq64rq0xAREh4auw2cJZHo9QUob+NqCQky4g==", - "dev": true - }, - "pretty-bytes": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", - "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", + "node_modules/streamroller/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 }, - "ps-tree": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/ps-tree/-/ps-tree-1.2.0.tgz", - "integrity": "sha512-0VnamPPYHl4uaU/nSFeZZpR21QAWRz+sRv4iW9+v/GS/J5U5iZB5BNN6J0RMoOvdx2gWM2+ZFMIm58q24e4UYA==", + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, - "requires": { - "event-stream": "=3.3.4" + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" } }, - "q": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", - "integrity": "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==", - "dev": true - }, - "qjobs": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/qjobs/-/qjobs-1.2.0.tgz", - "integrity": "sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg==", - "dev": true + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } }, - "qs": { - "version": "6.10.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", - "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", + "node_modules/string-width-cjs/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, - "requires": { - "side-channel": "^1.0.4" + "engines": { + "node": ">=8" } }, - "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 + "node_modules/string-width-cjs/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" + } }, - "quick-lru": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", - "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", - "dev": true + "node_modules/string-width/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" + } }, - "randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "node_modules/string-width/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, - "requires": { - "safe-buffer": "^5.1.0" + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" } }, - "range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", - "dev": true + "node_modules/stringify-entities": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.3.tgz", + "integrity": "sha512-BP9nNHMhhfcMbiuQKCqMjhDP5yBCAxsPu4pHFFzJ6Alo9dZgY4VLDPutXqIjpRiMoKdp7Av85Gr73Q5uH9k7+g==", + "dev": true, + "dependencies": { + "character-entities-html4": "^2.0.0", + "character-entities-legacy": "^3.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } }, - "raw-body": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", - "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "node_modules/strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", "dev": true, - "requires": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" + "dependencies": { + "ansi-regex": "^3.0.0" + }, + "engines": { + "node": ">=4" } }, - "read-pkg": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-6.0.0.tgz", - "integrity": "sha512-X1Fu3dPuk/8ZLsMhEj5f4wFAF0DWoK7qhGJvgaijocXxBmSToKfbFtqbxMO7bVjNA1dmE5huAzjXj/ey86iw9Q==", + "node_modules/strip-ansi-cjs": { + "name": "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, - "requires": { - "@types/normalize-package-data": "^2.4.0", - "normalize-package-data": "^3.0.2", - "parse-json": "^5.2.0", - "type-fest": "^1.0.1" + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" } }, - "read-pkg-up": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-8.0.0.tgz", - "integrity": "sha512-snVCqPczksT0HS2EC+SxUndvSzn6LRCwpfSvLrIfR5BKDQQZMaI6jPRC9dYvYFDRAuFEAnkwww8kBBNE/3VvzQ==", + "node_modules/strip-ansi-cjs/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, - "requires": { - "find-up": "^5.0.0", - "read-pkg": "^6.0.0", - "type-fest": "^1.0.1" + "engines": { + "node": ">=8" } }, - "readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", "dev": true, - "requires": { - "picomatch": "^2.2.1" + "engines": { + "node": ">=6" } }, - "redent": { + "node_modules/strip-indent": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/redent/-/redent-4.0.0.tgz", - "integrity": "sha512-tYkDkVVtYkSVhuQ4zBgfvciymHaeuel+zFKXShfDnFP5SyVEP7qo70Rf1jTOTCx3vGNAbnEi/xFkcfQVMIBWag==", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-4.0.0.tgz", + "integrity": "sha512-mnVSV2l+Zv6BLpSD/8V87CW/y9EmmbYzGCIavsnsI6/nwn26DwffM/yztm30Z/I2DY9wdS3vXVCMnHDgZaVNoA==", "dev": true, - "requires": { - "indent-string": "^5.0.0", - "strip-indent": "^4.0.0" + "dependencies": { + "min-indent": "^1.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", - "dev": true - }, - "requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", - "dev": true - }, - "resolve": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", - "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "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, - "requires": { - "is-core-module": "^2.9.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true - }, - "rfdc": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", - "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==", - "dev": true + "node_modules/sucrase": { + "version": "3.34.0", + "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.34.0.tgz", + "integrity": "sha512-70/LQEZ07TEcxiU2dz51FKaE6hCTWC6vr7FOk3Gr0U60C3shtAN+H+BFr9XlYe5xqf3RA8nrc+VIwzCfnxuXJw==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.2", + "commander": "^4.0.0", + "glob": "7.1.6", + "lines-and-columns": "^1.1.6", + "mz": "^2.7.0", + "pirates": "^4.0.1", + "ts-interface-checker": "^0.1.9" + }, + "bin": { + "sucrase": "bin/sucrase", + "sucrase-node": "bin/sucrase-node" + }, + "engines": { + "node": ">=8" + } }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "node_modules/sucrase/node_modules/glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", "dev": true, - "requires": { - "glob": "^7.1.3" + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "rollup": { - "version": "3.26.2", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.26.2.tgz", - "integrity": "sha512-6umBIGVz93er97pMgQO08LuH3m6PUb3jlDUUGFsNJB6VgTCUaDFpupf5JfU30529m/UKOgmiX+uY6Sx8cOYpLA==", + "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, - "requires": { - "fsevents": "~2.3.2" + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "rollup-plugin-dts": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-dts/-/rollup-plugin-dts-5.3.0.tgz", - "integrity": "sha512-8FXp0ZkyZj1iU5klkIJYLjIq/YZSwBoERu33QBDxm/1yw5UU4txrEtcmMkrq+ZiKu3Q4qvPCNqc3ovX6rjqzbQ==", + "node_modules/svgo": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-3.0.5.tgz", + "integrity": "sha512-HQKHEo73pMNOlDlBcLgZRcHW2+1wo7bFYayAXkGN0l/2+h68KjlfZyMRhdhaGvoHV2eApOovl12zoFz42sT6rQ==", "dev": true, - "requires": { - "@babel/code-frame": "^7.18.6", - "magic-string": "^0.30.0" + "optional": true, + "peer": true, + "dependencies": { + "@trysound/sax": "0.2.0", + "commander": "^7.2.0", + "css-select": "^5.1.0", + "css-tree": "^2.2.1", + "css-what": "^6.1.0", + "csso": "5.0.5", + "picocolors": "^1.0.0" + }, + "bin": { + "svgo": "bin/svgo" + }, + "engines": { + "node": ">=14.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/svgo" } }, - "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==", + "node_modules/svgo/node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", "dev": true, - "requires": { - "queue-microtask": "^1.2.2" + "optional": true, + "peer": true, + "engines": { + "node": ">= 10" } }, - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "node_modules/symbol-tree": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", "dev": true }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "node_modules/tabbable": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-6.2.0.tgz", + "integrity": "sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==", "dev": true }, - "search-insights": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/search-insights/-/search-insights-2.6.0.tgz", - "integrity": "sha512-vU2/fJ+h/Mkm/DJOe+EaM5cafJv/1rRTZpGJTuFPf/Q5LjzgMDsqPdSaZsAe+GAWHHsfsu+rQSAn6c8IGtBEVw==", + "node_modules/temp-fs": { + "version": "0.9.9", + "resolved": "https://registry.npmjs.org/temp-fs/-/temp-fs-0.9.9.tgz", + "integrity": "sha512-WfecDCR1xC9b0nsrzSaxPf3ZuWeWLUWblW4vlDQAa1biQaKHiImHnJfeQocQe/hXKMcolRzgkcVX/7kK4zoWbw==", "dev": true, - "peer": true + "dependencies": { + "rimraf": "~2.5.2" + }, + "engines": { + "node": ">=0.8.0" + } }, - "semver": { - "version": "7.5.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.1.tgz", - "integrity": "sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==", + "node_modules/temp-fs/node_modules/rimraf": { + "version": "2.5.4", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.5.4.tgz", + "integrity": "sha512-Lw7SHMjssciQb/rRz7JyPIy9+bbUshEucPoLRvWqy09vC5zQixl8Uet+Zl+SROBB/JMWHJRdCk1qdxNWHNMvlQ==", "dev": true, - "requires": { - "lru-cache": "^6.0.0" + "dependencies": { + "glob": "^7.0.5" + }, + "bin": { + "rimraf": "bin.js" } }, - "setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", - "dev": true - }, - "shiki": { - "version": "0.14.3", - "resolved": "https://registry.npmjs.org/shiki/-/shiki-0.14.3.tgz", - "integrity": "sha512-U3S/a+b0KS+UkTyMjoNojvTgrBHjgp7L6ovhFVZsXmBGnVdQ4K4U9oK0z63w538S91ATngv1vXigHCSWOwnr+g==", + "node_modules/term-size": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/term-size/-/term-size-2.2.1.tgz", + "integrity": "sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==", "dev": true, - "requires": { - "ansi-sequence-parser": "^1.1.0", - "jsonc-parser": "^3.2.0", - "vscode-oniguruma": "^1.7.0", - "vscode-textmate": "^8.0.0" + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "node_modules/thenify": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", "dev": true, - "requires": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" + "dependencies": { + "any-promise": "^1.0.0" } }, - "socket.io": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.5.1.tgz", - "integrity": "sha512-0y9pnIso5a9i+lJmsCdtmTTgJFFSvNQKDnPQRz28mGNnxbmqYg2QPtJTLFxhymFZhAIn50eHAKzJeiNaKr+yUQ==", + "node_modules/thenify-all": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", + "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", "dev": true, - "requires": { - "accepts": "~1.3.4", - "base64id": "~2.0.0", - "debug": "~4.3.2", - "engine.io": "~6.2.0", - "socket.io-adapter": "~2.4.0", - "socket.io-parser": "~4.0.4" + "dependencies": { + "thenify": ">= 3.1.0 < 4" + }, + "engines": { + "node": ">=0.8" } }, - "socket.io-adapter": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.4.0.tgz", - "integrity": "sha512-W4N+o69rkMEGVuk2D/cvca3uYsvGlMwsySWV447y99gUPghxq42BxqLNMndb+a1mm/5/7NeXVQS7RLa2XyXvYg==", + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", "dev": true }, - "socket.io-parser": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.0.5.tgz", - "integrity": "sha512-sNjbT9dX63nqUFIOv95tTVm6elyIU4RvB1m8dOeZt+IgWwcWklFDOdmGcfo3zSiRsnR/3pJkjY5lfoGqEe4Eig==", + "node_modules/tikki": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/tikki/-/tikki-2.0.0.tgz", + "integrity": "sha512-mNSEzTqFzncSuS4lz2nhMNKQltCwI53GQJHiSAqCoFs1jCNpdf9GwyrrYd2NXLrnNw3HCPkFgd8jGM8iuZcrvA==", "dev": true, - "requires": { - "@types/component-emitter": "^1.2.10", - "component-emitter": "~1.3.0", - "debug": "~4.3.1" + "peerDependencies": { + "eventti": "^3.0.0" } }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "node_modules/timsort": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz", + "integrity": "sha512-qsdtZH+vMoCARQtyod4imc2nIJwg9Cc7lPRrw9CzF8ZKR0khdr8+2nX80PBhET3tcyTtJDxAffGh2rXH4tyU8A==", "dev": true }, - "source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "node_modules/tmp": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", + "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" + "dependencies": { + "rimraf": "^3.0.0" + }, + "engines": { + "node": ">=8.17.0" } }, - "spdx-correct": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", - "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "node_modules/tmp/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, - "requires": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "spdx-exceptions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", - "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", - "dev": true - }, - "spdx-expression-parse": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "dev": true, - "requires": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" } }, - "spdx-license-ids": { - "version": "3.0.11", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.11.tgz", - "integrity": "sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==", - "dev": true - }, - "split": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/split/-/split-0.3.3.tgz", - "integrity": "sha512-wD2AeVmxXRBoX44wAycgjVpMhvbwdI2aZjCkvfNcH1YqHQvJVa1duWc73OyVGJUc05fhFaTZeQ/PYsrmyH0JVA==", + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", "dev": true, - "requires": { - "through": "2" + "engines": { + "node": ">=0.6" } }, - "statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", - "dev": true - }, - "stream-combiner": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.0.4.tgz", - "integrity": "sha512-rT00SPnTVyRsaSz5zgSPma/aHSOic5U1prhYdRy5HS2kTZviFpmDgzilbtsJsxiroqACmayynDN/9VzIbX5DOw==", + "node_modules/tough-cookie": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.3.tgz", + "integrity": "sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==", "dev": true, - "requires": { - "duplexer": "~0.1.1" + "dependencies": { + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.2.0", + "url-parse": "^1.5.3" + }, + "engines": { + "node": ">=6" } }, - "streamroller": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-3.1.2.tgz", - "integrity": "sha512-wZswqzbgGGsXYIrBYhOE0yP+nQ6XRk7xDcYwuQAGTYXdyAUmvgVFE0YU1g5pvQT0m7GBaQfYcSnlHbapuK0H0A==", + "node_modules/tough-cookie/node_modules/universalify": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", + "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", "dev": true, - "requires": { - "date-format": "^4.0.13", - "debug": "^4.3.4", - "fs-extra": "^8.1.0" + "engines": { + "node": ">= 4.0.0" } }, - "string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "node_modules/tr46": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", + "integrity": "sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==", "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" + "dependencies": { + "punycode": "^2.1.0" } }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "node_modules/tree-kill": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", + "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", "dev": true, - "requires": { - "ansi-regex": "^5.0.1" + "bin": { + "tree-kill": "cli.js" } }, - "strip-indent": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-4.0.0.tgz", - "integrity": "sha512-mnVSV2l+Zv6BLpSD/8V87CW/y9EmmbYzGCIavsnsI6/nwn26DwffM/yztm30Z/I2DY9wdS3vXVCMnHDgZaVNoA==", + "node_modules/trim-lines": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz", + "integrity": "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==", "dev": true, - "requires": { - "min-indent": "^1.0.1" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "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 - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "node_modules/trim-newlines": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-4.1.1.tgz", + "integrity": "sha512-jRKj0n0jXWo6kh62nA5TEh3+4igKDXLvzBJcPpiizP7oOolUrYIxmVBG9TOtHYFHoddUk6YvAkGeGoSVTXfQXQ==", "dev": true, - "requires": { - "has-flag": "^3.0.0" + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "node_modules/ts-interface-checker": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", + "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", "dev": true }, - "tabbable": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-6.2.0.tgz", - "integrity": "sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==", + "node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", "dev": true }, - "temp-fs": { - "version": "0.9.9", - "resolved": "https://registry.npmjs.org/temp-fs/-/temp-fs-0.9.9.tgz", - "integrity": "sha512-WfecDCR1xC9b0nsrzSaxPf3ZuWeWLUWblW4vlDQAa1biQaKHiImHnJfeQocQe/hXKMcolRzgkcVX/7kK4zoWbw==", + "node_modules/tsup": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/tsup/-/tsup-8.0.1.tgz", + "integrity": "sha512-hvW7gUSG96j53ZTSlT4j/KL0q1Q2l6TqGBFc6/mu/L46IoNWqLLUzLRLP1R8Q7xrJTmkDxxDoojV5uCVs1sVOg==", + "dev": true, + "dependencies": { + "bundle-require": "^4.0.0", + "cac": "^6.7.12", + "chokidar": "^3.5.1", + "debug": "^4.3.1", + "esbuild": "^0.19.2", + "execa": "^5.0.0", + "globby": "^11.0.3", + "joycon": "^3.0.1", + "postcss-load-config": "^4.0.1", + "resolve-from": "^5.0.0", + "rollup": "^4.0.2", + "source-map": "0.8.0-beta.0", + "sucrase": "^3.20.3", + "tree-kill": "^1.2.2" + }, + "bin": { + "tsup": "dist/cli-default.js", + "tsup-node": "dist/cli-node.js" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@microsoft/api-extractor": "^7.36.0", + "@swc/core": "^1", + "postcss": "^8.4.12", + "typescript": ">=4.5.0" + }, + "peerDependenciesMeta": { + "@microsoft/api-extractor": { + "optional": true + }, + "@swc/core": { + "optional": true + }, + "postcss": { + "optional": true + }, + "typescript": { + "optional": true + } + } + }, + "node_modules/tsup/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, - "requires": { - "rimraf": "~2.5.2" - }, "dependencies": { - "rimraf": { - "version": "2.5.4", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.5.4.tgz", - "integrity": "sha512-Lw7SHMjssciQb/rRz7JyPIy9+bbUshEucPoLRvWqy09vC5zQixl8Uet+Zl+SROBB/JMWHJRdCk1qdxNWHNMvlQ==", - "dev": true, - "requires": { - "glob": "^7.0.5" - } + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true } } }, - "terser": { - "version": "5.18.2", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.18.2.tgz", - "integrity": "sha512-Ah19JS86ypbJzTzvUCX7KOsEIhDaRONungA4aYBjEP3JZRf4ocuDzTg4QWZnPn9DEMiMYGJPiSOy7aykoCc70w==", + "node_modules/tsup/node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", "dev": true, - "requires": { - "@jridgewell/source-map": "^0.3.3", - "acorn": "^8.8.2", - "commander": "^2.20.0", - "source-map-support": "~0.5.20" + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", + "node_modules/tsup/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 }, - "tikki": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/tikki/-/tikki-2.0.0.tgz", - "integrity": "sha512-mNSEzTqFzncSuS4lz2nhMNKQltCwI53GQJHiSAqCoFs1jCNpdf9GwyrrYd2NXLrnNw3HCPkFgd8jGM8iuZcrvA==", - "dev": true, - "requires": {} - }, - "tmp": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", - "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", + "node_modules/tsup/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true, - "requires": { - "rimraf": "^3.0.0" + "engines": { + "node": ">=8" } }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "node_modules/tsup/node_modules/source-map": { + "version": "0.8.0-beta.0", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.8.0-beta.0.tgz", + "integrity": "sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==", "dev": true, - "requires": { - "is-number": "^7.0.0" + "dependencies": { + "whatwg-url": "^7.0.0" + }, + "engines": { + "node": ">= 8" } }, - "toidentifier": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", - "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", - "dev": true - }, - "trim-newlines": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-4.0.2.tgz", - "integrity": "sha512-GJtWyq9InR/2HRiLZgpIKv+ufIKrVrvjQWEj7PxAXNc5dwbNJkqhAUoAGgzRmULAnoOM5EIpveYd3J2VeSAIew==", - "dev": true - }, - "tslib": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz", - "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==", - "dev": true, - "optional": true, - "peer": true - }, - "type-detect": { + "node_modules/type-detect": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", - "dev": true + "dev": true, + "engines": { + "node": ">=4" + } }, - "type-fest": { + "node_modules/type-fest": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", - "dev": true + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "type-is": { + "node_modules/type-is": { "version": "1.6.18", "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", "dev": true, - "requires": { + "dependencies": { "media-typer": "0.3.0", "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" } }, - "typescript": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.1.6.tgz", - "integrity": "sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==", - "dev": true + "node_modules/typescript": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz", + "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/ua-parser-js": { + "version": "0.7.37", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.37.tgz", + "integrity": "sha512-xV8kqRKM+jhMvcHWUKthV9fNebIzrNy//2O9ZwWcfiBFR5f25XVZPLlEajk/sf3Ra15V92isyQqnIEXRDaZWEA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/ua-parser-js" + }, + { + "type": "paypal", + "url": "https://paypal.me/faisalman" + }, + { + "type": "github", + "url": "https://github.com/sponsors/faisalman" + } + ], + "engines": { + "node": "*" + } }, - "ua-parser-js": { - "version": "0.7.33", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.33.tgz", - "integrity": "sha512-s8ax/CeZdK9R/56Sui0WM6y9OFREJarMRHqLB2EwkovemBxNQ+Bqu8GAsUnVcXKgphb++ghr/B2BZx4mahujPw==", + "node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", "dev": true }, - "universalify": { + "node_modules/unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", + "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz", + "integrity": "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit-parents": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/universalify": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true + "dev": true, + "engines": { + "node": ">= 4.0.0" + } }, - "unpipe": { + "node_modules/unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", - "dev": true + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.0.13", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", + "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/url-parse": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", + "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", + "dev": true, + "dependencies": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, + "node_modules/utility-types": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/utility-types/-/utility-types-3.10.0.tgz", + "integrity": "sha512-O11mqxmi7wMKCo6HKFt5AhO4BwY3VV68YU07tgxfz8zJTIxr4BpsezN49Ffwy9j3ZpwwJp4fkRwjRzq3uWE6Rg==", + "dev": true, + "engines": { + "node": ">= 4" + } }, - "utils-merge": { + "node_modules/utils-merge": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", - "dev": true + "dev": true, + "engines": { + "node": ">= 0.4.0" + } }, - "validate-npm-package-license": { + "node_modules/validate-npm-package-license": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", "dev": true, - "requires": { + "dependencies": { "spdx-correct": "^3.0.0", "spdx-expression-parse": "^3.0.0" } }, - "vary": { + "node_modules/vary": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", - "dev": true + "dev": true, + "engines": { + "node": ">= 0.8" + } }, - "vite": { - "version": "4.3.9", - "resolved": "https://registry.npmjs.org/vite/-/vite-4.3.9.tgz", - "integrity": "sha512-qsTNZjO9NoJNW7KnOrgYwczm0WctJ8m/yqYAMAK9Lxt4SoySUfS5S8ia9K7JHpa3KEeMfyF8LoJ3c5NeBJy6pg==", + "node_modules/vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", "dev": true, - "peer": true, - "requires": { - "esbuild": "^0.17.5", - "fsevents": "~2.3.2", - "postcss": "^8.4.23", - "rollup": "^3.21.0" - } - }, - "vitepress": { - "version": "1.0.0-beta.5", - "resolved": "https://registry.npmjs.org/vitepress/-/vitepress-1.0.0-beta.5.tgz", - "integrity": "sha512-/RjqqRsSEKkzF6HhK5e5Ij+bZ7ETb9jNCRRgIMm10gJ+ZLC3D1OqkE465lEqCeJUgt2HZ6jmWjDqIBfrJSpv7w==", - "dev": true, - "requires": { - "@docsearch/css": "^3.5.1", - "@docsearch/js": "^3.5.1", - "@vitejs/plugin-vue": "^4.2.3", - "@vue/devtools-api": "^6.5.0", - "@vueuse/core": "^10.2.1", - "@vueuse/integrations": "^10.2.1", - "body-scroll-lock": "4.0.0-beta.0", - "focus-trap": "^7.4.3", - "mark.js": "8.11.1", - "minisearch": "^6.1.0", - "shiki": "^0.14.3", - "vite": "4.4.0-beta.3", - "vue": "^3.3.4" + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-location": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-5.0.2.tgz", + "integrity": "sha512-NXPYyxyBSH7zB5U6+3uDdd6Nybz6o6/od9rk8bp9H8GR3L+cm/fC0uUTbqBmUTnMCUDslAGBOIKNfvvb+gGlDg==", + "dev": true, "dependencies": { - "@esbuild/android-arm": { - "version": "0.18.11", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.11.tgz", - "integrity": "sha512-q4qlUf5ucwbUJZXF5tEQ8LF7y0Nk4P58hOsGk3ucY0oCwgQqAnqXVbUuahCddVHfrxmpyewRpiTHwVHIETYu7Q==", - "dev": true, - "optional": true - }, - "@esbuild/android-arm64": { - "version": "0.18.11", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.11.tgz", - "integrity": "sha512-snieiq75Z1z5LJX9cduSAjUr7vEI1OdlzFPMw0HH5YI7qQHDd3qs+WZoMrWYDsfRJSq36lIA6mfZBkvL46KoIw==", - "dev": true, - "optional": true - }, - "@esbuild/android-x64": { - "version": "0.18.11", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.11.tgz", - "integrity": "sha512-iPuoxQEV34+hTF6FT7om+Qwziv1U519lEOvekXO9zaMMlT9+XneAhKL32DW3H7okrCOBQ44BMihE8dclbZtTuw==", - "dev": true, - "optional": true - }, - "@esbuild/darwin-arm64": { - "version": "0.18.11", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.11.tgz", - "integrity": "sha512-Gm0QkI3k402OpfMKyQEEMG0RuW2LQsSmI6OeO4El2ojJMoF5NLYb3qMIjvbG/lbMeLOGiW6ooU8xqc+S0fgz2w==", - "dev": true, - "optional": true - }, - "@esbuild/darwin-x64": { - "version": "0.18.11", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.11.tgz", - "integrity": "sha512-N15Vzy0YNHu6cfyDOjiyfJlRJCB/ngKOAvoBf1qybG3eOq0SL2Lutzz9N7DYUbb7Q23XtHPn6lMDF6uWbGv9Fw==", - "dev": true, - "optional": true - }, - "@esbuild/freebsd-arm64": { - "version": "0.18.11", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.11.tgz", - "integrity": "sha512-atEyuq6a3omEY5qAh5jIORWk8MzFnCpSTUruBgeyN9jZq1K/QI9uke0ATi3MHu4L8c59CnIi4+1jDKMuqmR71A==", - "dev": true, - "optional": true - }, - "@esbuild/freebsd-x64": { - "version": "0.18.11", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.11.tgz", - "integrity": "sha512-XtuPrEfBj/YYYnAAB7KcorzzpGTvOr/dTtXPGesRfmflqhA4LMF0Gh/n5+a9JBzPuJ+CGk17CA++Hmr1F/gI0Q==", - "dev": true, - "optional": true - }, - "@esbuild/linux-arm": { - "version": "0.18.11", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.11.tgz", - "integrity": "sha512-Idipz+Taso/toi2ETugShXjQ3S59b6m62KmLHkJlSq/cBejixmIydqrtM2XTvNCywFl3VC7SreSf6NV0i6sRyg==", - "dev": true, - "optional": true - }, - "@esbuild/linux-arm64": { - "version": "0.18.11", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.11.tgz", - "integrity": "sha512-c6Vh2WS9VFKxKZ2TvJdA7gdy0n6eSy+yunBvv4aqNCEhSWVor1TU43wNRp2YLO9Vng2G+W94aRz+ILDSwAiYog==", - "dev": true, - "optional": true - }, - "@esbuild/linux-ia32": { - "version": "0.18.11", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.11.tgz", - "integrity": "sha512-S3hkIF6KUqRh9n1Q0dSyYcWmcVa9Cg+mSoZEfFuzoYXXsk6196qndrM+ZiHNwpZKi3XOXpShZZ+9dfN5ykqjjw==", - "dev": true, - "optional": true - }, - "@esbuild/linux-loong64": { - "version": "0.18.11", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.11.tgz", - "integrity": "sha512-MRESANOoObQINBA+RMZW+Z0TJWpibtE7cPFnahzyQHDCA9X9LOmGh68MVimZlM9J8n5Ia8lU773te6O3ILW8kw==", - "dev": true, - "optional": true - }, - "@esbuild/linux-mips64el": { - "version": "0.18.11", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.11.tgz", - "integrity": "sha512-qVyPIZrXNMOLYegtD1u8EBccCrBVshxMrn5MkuFc3mEVsw7CCQHaqZ4jm9hbn4gWY95XFnb7i4SsT3eflxZsUg==", - "dev": true, - "optional": true - }, - "@esbuild/linux-ppc64": { - "version": "0.18.11", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.11.tgz", - "integrity": "sha512-T3yd8vJXfPirZaUOoA9D2ZjxZX4Gr3QuC3GztBJA6PklLotc/7sXTOuuRkhE9W/5JvJP/K9b99ayPNAD+R+4qQ==", - "dev": true, - "optional": true - }, - "@esbuild/linux-riscv64": { - "version": "0.18.11", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.11.tgz", - "integrity": "sha512-evUoRPWiwuFk++snjH9e2cAjF5VVSTj+Dnf+rkO/Q20tRqv+644279TZlPK8nUGunjPAtQRCj1jQkDAvL6rm2w==", - "dev": true, + "@types/unist": "^3.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vite": { + "version": "5.0.10", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.0.10.tgz", + "integrity": "sha512-2P8J7WWgmc355HUMlFrwofacvr98DAjoE52BfdbwQtyLH06XKwaL/FMnmKM2crF0iX4MpmMKoDlNCB1ok7zHCw==", + "dev": true, + "dependencies": { + "esbuild": "^0.19.3", + "postcss": "^8.4.32", + "rollup": "^4.2.0" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || >=20.0.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { "optional": true }, - "@esbuild/linux-s390x": { - "version": "0.18.11", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.11.tgz", - "integrity": "sha512-/SlRJ15XR6i93gRWquRxYCfhTeC5PdqEapKoLbX63PLCmAkXZHY2uQm2l9bN0oPHBsOw2IswRZctMYS0MijFcg==", - "dev": true, + "less": { "optional": true }, - "@esbuild/linux-x64": { - "version": "0.18.11", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.11.tgz", - "integrity": "sha512-xcncej+wF16WEmIwPtCHi0qmx1FweBqgsRtEL1mSHLFR6/mb3GEZfLQnx+pUDfRDEM4DQF8dpXIW7eDOZl1IbA==", - "dev": true, + "lightningcss": { "optional": true }, - "@esbuild/netbsd-x64": { - "version": "0.18.11", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.11.tgz", - "integrity": "sha512-aSjMHj/F7BuS1CptSXNg6S3M4F3bLp5wfFPIJM+Km2NfIVfFKhdmfHF9frhiCLIGVzDziggqWll0B+9AUbud/Q==", - "dev": true, + "sass": { "optional": true }, - "@esbuild/openbsd-x64": { - "version": "0.18.11", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.11.tgz", - "integrity": "sha512-tNBq+6XIBZtht0xJGv7IBB5XaSyvYPCm1PxJ33zLQONdZoLVM0bgGqUrXnJyiEguD9LU4AHiu+GCXy/Hm9LsdQ==", - "dev": true, + "stylus": { "optional": true }, - "@esbuild/sunos-x64": { - "version": "0.18.11", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.11.tgz", - "integrity": "sha512-kxfbDOrH4dHuAAOhr7D7EqaYf+W45LsAOOhAet99EyuxxQmjbk8M9N4ezHcEiCYPaiW8Dj3K26Z2V17Gt6p3ng==", - "dev": true, + "sugarss": { "optional": true }, - "@esbuild/win32-arm64": { - "version": "0.18.11", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.11.tgz", - "integrity": "sha512-Sh0dDRyk1Xi348idbal7lZyfSkjhJsdFeuC13zqdipsvMetlGiFQNdO+Yfp6f6B4FbyQm7qsk16yaZk25LChzg==", - "dev": true, + "terser": { "optional": true - }, - "@esbuild/win32-ia32": { - "version": "0.18.11", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.11.tgz", - "integrity": "sha512-o9JUIKF1j0rqJTFbIoF4bXj6rvrTZYOrfRcGyL0Vm5uJ/j5CkBD/51tpdxe9lXEDouhRgdr/BYzUrDOvrWwJpg==", - "dev": true, + } + } + }, + "node_modules/vitepress": { + "version": "1.0.0-rc.32", + "resolved": "https://registry.npmjs.org/vitepress/-/vitepress-1.0.0-rc.32.tgz", + "integrity": "sha512-yf00Skn5BGP+YOQvTbSrB5s9qEb/cV+i+wM5rw+mlaxcIYtK+ORvyBEYZLvKogs7OO70TppJtixb4ofeo5K7HA==", + "dev": true, + "dependencies": { + "@docsearch/css": "^3.5.2", + "@docsearch/js": "^3.5.2", + "@types/markdown-it": "^13.0.7", + "@vitejs/plugin-vue": "^4.5.2", + "@vue/devtools-api": "^6.5.1", + "@vueuse/core": "^10.7.0", + "@vueuse/integrations": "^10.7.0", + "focus-trap": "^7.5.4", + "mark.js": "8.11.1", + "minisearch": "^6.3.0", + "mrmime": "^1.0.1", + "shikiji": "0.9.2", + "shikiji-transformers": "0.9.2", + "vite": "^5.0.10", + "vue": "^3.3.11" + }, + "bin": { + "vitepress": "bin/vitepress.js" + }, + "peerDependencies": { + "markdown-it-mathjax3": "^4.3.2", + "postcss": "^8.4.32" + }, + "peerDependenciesMeta": { + "markdown-it-mathjax3": { "optional": true }, - "@esbuild/win32-x64": { - "version": "0.18.11", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.11.tgz", - "integrity": "sha512-rQI4cjLHd2hGsM1LqgDI7oOCYbQ6IBOVsX9ejuRMSze0GqXUG2ekwiKkiBU1pRGSeCqFFHxTrcEydB2Hyoz9CA==", - "dev": true, + "postcss": { "optional": true - }, - "esbuild": { - "version": "0.18.11", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.11.tgz", - "integrity": "sha512-i8u6mQF0JKJUlGR3OdFLKldJQMMs8OqM9Cc3UCi9XXziJ9WERM5bfkHaEAy0YAvPRMgqSW55W7xYn84XtEFTtA==", - "dev": true, - "requires": { - "@esbuild/android-arm": "0.18.11", - "@esbuild/android-arm64": "0.18.11", - "@esbuild/android-x64": "0.18.11", - "@esbuild/darwin-arm64": "0.18.11", - "@esbuild/darwin-x64": "0.18.11", - "@esbuild/freebsd-arm64": "0.18.11", - "@esbuild/freebsd-x64": "0.18.11", - "@esbuild/linux-arm": "0.18.11", - "@esbuild/linux-arm64": "0.18.11", - "@esbuild/linux-ia32": "0.18.11", - "@esbuild/linux-loong64": "0.18.11", - "@esbuild/linux-mips64el": "0.18.11", - "@esbuild/linux-ppc64": "0.18.11", - "@esbuild/linux-riscv64": "0.18.11", - "@esbuild/linux-s390x": "0.18.11", - "@esbuild/linux-x64": "0.18.11", - "@esbuild/netbsd-x64": "0.18.11", - "@esbuild/openbsd-x64": "0.18.11", - "@esbuild/sunos-x64": "0.18.11", - "@esbuild/win32-arm64": "0.18.11", - "@esbuild/win32-ia32": "0.18.11", - "@esbuild/win32-x64": "0.18.11" - } - }, - "vite": { - "version": "4.4.0-beta.3", - "resolved": "https://registry.npmjs.org/vite/-/vite-4.4.0-beta.3.tgz", - "integrity": "sha512-IC/thYTvArOFRJ4qvvudnu4KKZOVc+gduS3I9OfC5SbP/Rf4kkP7z6Of2QpKeOSVqwIK24khW6VOUmVD/0yzSQ==", - "dev": true, - "requires": { - "esbuild": "^0.18.6", - "fsevents": "~2.3.2", - "postcss": "^8.4.24", - "rollup": "^3.25.2" - } } } }, - "void-elements": { + "node_modules/void-elements": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz", "integrity": "sha512-qZKX4RnBzH2ugr8Lxa7x+0V6XD9Sb/ouARtiasEQCHB1EVU4NXtmHsDDrx1dO4ne5fc3J6EW05BP1Dl0z0iung==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/vue": { + "version": "3.3.12", + "resolved": "https://registry.npmjs.org/vue/-/vue-3.3.12.tgz", + "integrity": "sha512-jYNv2QmET2OTHsFzfWHMnqgCfqL4zfo97QwofdET+GBRCHhSCHuMTTvNIgeSn0/xF3JRT5OGah6MDwUFN7MPlg==", + "dev": true, + "dependencies": { + "@vue/compiler-dom": "3.3.12", + "@vue/compiler-sfc": "3.3.12", + "@vue/runtime-dom": "3.3.12", + "@vue/server-renderer": "3.3.12", + "@vue/shared": "3.3.12" + }, + "peerDependencies": { + "typescript": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/w3c-xmlserializer": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-5.0.0.tgz", + "integrity": "sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==", + "dev": true, + "dependencies": { + "xml-name-validator": "^5.0.0" + }, + "engines": { + "node": ">=18" + } }, - "vscode-oniguruma": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/vscode-oniguruma/-/vscode-oniguruma-1.7.0.tgz", - "integrity": "sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA==", + "node_modules/weak-lru-cache": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/weak-lru-cache/-/weak-lru-cache-1.2.2.tgz", + "integrity": "sha512-DEAoo25RfSYMuTGc9vPJzZcZullwIqRDSI9LOy+fkCJPi6hykCnfKaXTuPBDuXAUcqHXyOgFtHNp/kB2FjYHbw==", "dev": true }, - "vscode-textmate": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/vscode-textmate/-/vscode-textmate-8.0.0.tgz", - "integrity": "sha512-AFbieoL7a5LMqcnOF04ji+rpXadgOXnZsxQr//r83kLPr7biP7am3g9zbaZIaBGwBRWeSvoMD4mgPdX3e4NWBg==", + "node_modules/web-namespaces": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/web-namespaces/-/web-namespaces-2.0.1.tgz", + "integrity": "sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/webidl-conversions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", "dev": true }, - "vue": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/vue/-/vue-3.3.4.tgz", - "integrity": "sha512-VTyEYn3yvIeY1Py0WaYGZsXnz3y5UnGi62GjVEqvEGPl6nxbOrCXbVOTQWBEJUqAyTUk2uJ5JLVnYJ6ZzGbrSw==", + "node_modules/whatwg-encoding": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz", + "integrity": "sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==", + "dev": true, + "dependencies": { + "iconv-lite": "0.6.3" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/whatwg-encoding/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/whatwg-mimetype": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz", + "integrity": "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==", + "dev": true, + "engines": { + "node": ">=18" + } + }, + "node_modules/whatwg-url": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", + "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", "dev": true, - "requires": { - "@vue/compiler-dom": "3.3.4", - "@vue/compiler-sfc": "3.3.4", - "@vue/runtime-dom": "3.3.4", - "@vue/server-renderer": "3.3.4", - "@vue/shared": "3.3.4" + "dependencies": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" } }, - "which": { + "node_modules/which": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", "dev": true, - "requires": { + "dependencies": { "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" } }, - "workerpool": { + "node_modules/workerpool": { "version": "6.2.1", "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.1.tgz", "integrity": "sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==", "dev": true }, - "wrap-ansi": { + "node_modules/wrap-ansi": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dev": true, - "requires": { + "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", "strip-ansi": "^6.0.0" }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, "dependencies": { - "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, - "requires": { - "color-convert": "^2.0.1" - } - }, - "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, - "requires": { - "color-name": "~1.1.4" - } - }, - "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 - } + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/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/wrap-ansi-cjs/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/wrap-ansi/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/wrap-ansi/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" } }, - "wrappy": { + "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", "dev": true }, - "ws": { - "version": "8.2.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz", - "integrity": "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==", + "node_modules/ws": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz", + "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==", + "dev": true, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/xml-name-validator": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-5.0.0.tgz", + "integrity": "sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==", "dev": true, - "requires": {} + "engines": { + "node": ">=18" + } + }, + "node_modules/xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", + "dev": true }, - "y18n": { + "node_modules/y18n": { "version": "5.0.8", "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true + "dev": true, + "engines": { + "node": ">=10" + } }, - "yallist": { + "node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true }, - "yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", - "dev": true + "node_modules/yaml": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.4.tgz", + "integrity": "sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==", + "dev": true, + "engines": { + "node": ">= 14" + } + }, + "node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs-parser": { + "version": "20.2.4", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", + "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", + "dev": true, + "engines": { + "node": ">=10" + } }, - "yargs-unparser": { + "node_modules/yargs-unparser": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", "dev": true, - "requires": { + "dependencies": { "camelcase": "^6.0.0", "decamelize": "^4.0.0", "flat": "^5.0.2", "is-plain-obj": "^2.1.0" }, - "dependencies": { - "decamelize": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", - "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", - "dev": true - }, - "is-plain-obj": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", - "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", - "dev": true - } + "engines": { + "node": ">=10" } }, - "yocto-queue": { + "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 + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/zwitch": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz", + "integrity": "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } } } } diff --git a/package.json b/package.json index 6af10e3..41b6034 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "dragdoll", - "version": "0.1.0", + "version": "0.2.0", "description": "Modular and extensible drag & drop system.", "keywords": [ "drag", @@ -20,10 +20,14 @@ "url": "git@github.com:niklasramo/dragdoll.git" }, "type": "module", - "source": "src/index.ts", + "source": "./src/index.ts", "main": "./dist/dragdoll.js", - "umd:main": "./dist/dragdoll.umd.js", - "types": "./dist/dragdoll.d.ts", + "exports": { + ".": { + "import": "./dist/dragdoll.js", + "require": "./dist/dragdoll.cjs" + } + }, "files": [ "src", "dist", @@ -31,48 +35,57 @@ "README.md", "LICENSE.md" ], + "targets": { + "main": false + }, "scripts": { - "test": "npm run ts-check && npm run test-node && npm run test-browserstack", - "test-node": "mocha tests/dist/tests.js", - "test-chrome-local": "karma start karma.chrome-local.cjs", - "test-browserstack": "karma start karma.browserstack.ts", - "build": "npm run del-dist && npm run ts-check && npm run format && rollup -c && npm run minify && npm run size", - "ts-check": "tsc --noEmit", - "del-dist": "del ./dist && del ./tests/dist", - "format": "prettier --write ./src/ && prettier --write ./tests/src/", - "size": "for file in ./dist/*.js; do echo $file && gzip-size $file --include-original; done", - "minify": "for file in ./dist/*.js; do terser $file -o $file --compress --mangle --comments false; done", - "docs-dev": "vitepress dev docs", + "build": "npm run del-dist && npm run ts-check && npm run format && npm run build-lib && npm run build-tests && npm run build-examples && npm run size", + "build-lib": "tsup --config ./tsup.config.lib.ts", + "build-tests": "tsup --config ./tsup.config.tests.ts", + "build-examples": "node ./scripts/build-examples.mjs", "docs-build": "vitepress build docs", - "docs-serve": "vitepress serve docs" + "docs-dev": "npm run build && vitepress dev docs", + "docs-serve": "vitepress serve docs", + "del-dist": "rimraf ./dist && rimraf ./tests/dist && rimraf ./docs/public/examples", + "format": "prettier --write --no-error-on-unmatched-pattern \"./**/*\"", + "format-check": "prettier --check --no-error-on-unmatched-pattern \"./**/*\"", + "size": "for file in ./dist/*.{js,cjs}; do echo $file && gzip-size $file --include-original; done;", + "test": "npm run ts-check && npm run test-browserstack", + "test-browser": "karma start karma.cjs", + "test-browserstack": "karma start karma.browserstack.cjs", + "test-node": "mocha tests/dist/tests.js", + "ts-check": "tsc --noEmit" }, "devDependencies": { - "@rollup/plugin-typescript": "11.1.2", - "@types/chai": "4.3.5", - "@types/mocha": "10.0.1", - "chai": "4.3.7", - "csstype": "3.1.2", - "del-cli": "5.0.0", + "@parcel/config-default": "2.10.3", + "@types/chai": "4.3.11", + "@types/mocha": "10.0.6", + "chai": "4.3.10", + "cpy-cli": "5.0.0", "dotenv": "16.3.1", "eventti": "3.0.0", "gzip-size-cli": "5.1.0", + "jsdom": "23.0.1", "karma": "6.4.2", "karma-browserstack-launcher": "1.6.0", "karma-chrome-launcher": "3.2.0", + "karma-firefox-launcher": "2.1.2", "karma-mocha": "2.0.1", "karma-mocha-reporter": "2.2.5", + "mezr": "1.1.0", "mocha": "10.2.0", - "prettier": "3.0.0", - "rollup": "3.26.2", - "rollup-plugin-dts": "5.3.0", - "terser": "5.18.2", + "parcel": "2.10.3", + "prettier": "3.1.1", + "rimraf": "5.0.5", "tikki": "2.0.0", - "typescript": "5.1.6", - "vitepress": "1.0.0-beta.5", - "vue": "3.3.4" + "tsup": "8.0.1", + "typescript": "5.3.3", + "vitepress": "1.0.0-rc.32", + "vue": "3.3.12" }, "peerDependencies": { "eventti": "^3.0.0", + "mezr": "^1.1.0", "tikki": "^2.0.0" } } diff --git a/rollup.config.js b/rollup.config.js deleted file mode 100644 index 8c33e36..0000000 --- a/rollup.config.js +++ /dev/null @@ -1,51 +0,0 @@ -import typescript from '@rollup/plugin-typescript'; -import dts from 'rollup-plugin-dts'; -import pkg from './package.json' assert { type: 'json' }; - -export default [ - // Build library. - { - input: pkg.source, - output: [ - { - file: pkg.main, - format: 'es', - }, - { - name: 'DragDoll', - file: pkg['umd:main'], - format: 'umd', - globals: { - eventti: 'eventti', - tikki: 'tikki', - }, - }, - ], - external: ['eventti', 'tikki'], - plugins: [typescript()], - }, - // Build type defintions. - { - input: pkg.source, - output: [{ file: pkg.types, format: 'es' }], - plugins: [dts()], - }, - // Build tests. - { - input: './tests/src/tests.ts', - output: [ - { - file: './tests/dist/tests.js', - format: 'es', - }, - { - file: './tests/dist/tests.umd.js', - format: 'umd', - name: `${pkg.name}_tests`, - globals: { chai: 'chai', eventti: 'eventti', tikki: 'tikki' }, - }, - ], - external: ['chai', 'eventti', 'tikki'], - plugins: [typescript()], - }, -]; diff --git a/scripts/build-examples.mjs b/scripts/build-examples.mjs new file mode 100644 index 0000000..4171f7e --- /dev/null +++ b/scripts/build-examples.mjs @@ -0,0 +1,104 @@ +import { Parcel } from '@parcel/core'; +import fs from 'fs/promises'; +import path from 'path'; +import { JSDOM } from 'jsdom'; + +async function buildExampleDirectories() { + const examplesDir = path.join(process.cwd(), './examples/'); + const directories = await fs.readdir(examplesDir, { withFileTypes: true }); + + for (const dir of directories) { + // Make sure the directory is a directory. + if (!dir.isDirectory()) continue; + + // Get dir name and path to index.html. + const exampleName = dir.name; + const examplePath = path.join(examplesDir, exampleName, 'index.html'); + + // Make sure index.html exists in the directory. + try { + await fs.access(examplePath); + } catch { + continue; + } + + // If index.html exists, proceed with the build. + const outputDir = path.join(process.cwd(), `./docs/public/examples/${exampleName}`); + + // Init and run the Parcel bundler. + const parcel = new Parcel({ + entries: examplePath, + defaultConfig: '@parcel/config-default', + mode: 'production', + shouldDisableCache: true, + defaultTargetOptions: { + shouldOptimize: true, + distDir: outputDir, + publicUrl: `./`, + }, + }); + await parcel.run(); + console.log(`Built example: ${exampleName}`); + } +} + +async function buildExamplesMarkdown() { + const examplesDir = path.join(process.cwd(), './examples/'); + const markdownFilePath = path.join(process.cwd(), './docs/docs/examples.md'); + + // Start the markdown file with a header. + let markdownContent = '# Examples\n\n'; + + const directories = await fs.readdir(examplesDir, { withFileTypes: true }); + for (const dir of directories) { + if (!dir.isDirectory()) continue; + + const exampleName = dir.name; + + // Make sure index.html exists in the directory. + const indexHtmlPath = path.join(examplesDir, exampleName, 'index.html'); + try { + await fs.access(indexHtmlPath); + } catch { + continue; + } + + // Make sure index.ts exists in the directory. + const indexTsPath = path.join(examplesDir, exampleName, 'index.ts'); + try { + await fs.access(indexTsPath); + } catch { + continue; + } + + try { + // Read and parse index.html to extract the title. + const htmlContent = await fs.readFile(indexHtmlPath, 'utf8'); + const dom = new JSDOM(htmlContent); + const title = dom.window.document.title; + + // Read index.ts file contents. + let indexTsContent = await fs.readFile(indexTsPath, 'utf8'); + indexTsContent = indexTsContent.replace('../../dist/dragdoll', 'dragdoll'); + + // Append to markdown content. + markdownContent += `## ${title}\n\n`; + markdownContent += `\n\n`; + markdownContent += '```ts\n' + indexTsContent + '\n```\n\n'; + console.log(`Added example documentation: ${exampleName}`); + } catch (error) { + console.log(`Error processing example documentation: ${exampleName}`); + console.log(error); + } + } + + // Write the final markdown content to file. + await fs.writeFile(markdownFilePath, markdownContent); +} + +async function buildAll() { + await buildExampleDirectories(); + await buildExamplesMarkdown(); +} + +buildAll(); diff --git a/src/AutoScroll/AutoScroll.ts b/src/auto-scroll/auto-scroll.ts similarity index 93% rename from src/AutoScroll/AutoScroll.ts rename to src/auto-scroll/auto-scroll.ts index 9e2bdb0..af5ed48 100644 --- a/src/AutoScroll/AutoScroll.ts +++ b/src/auto-scroll/auto-scroll.ts @@ -1,28 +1,26 @@ import { Emitter, EventListenerId } from 'eventti'; -import { Rect, RectExtended } from '../types'; +import { getDistance, getRect } from 'mezr'; -import { Pool } from '../Pool'; +import { Rect, RectExtended } from '../types.js'; -import { ticker, tickerReadPhase, tickerWritePhase } from '../singletons/ticker'; +import { Pool } from '../pool.js'; -import { getIntersectionScore } from '../utils/getIntersectionScore'; +import { ticker, tickerReadPhase, tickerWritePhase } from '../singletons/ticker.js'; -import { getContentRect } from '../utils/getContentRect'; +import { getIntersectionScore } from '../utils/get-intersection-score.js'; -import { getDistanceBetweenRects } from '../utils/getDistanceBetweenRects'; +import { getScrollElement } from '../utils/get-scroll-element.js'; -import { getScrollElement } from '../utils/getScrollElement'; +import { getScrollLeft } from '../utils/get-scroll-left.js'; -import { getScrollLeft } from '../utils/getScrollLeft'; +import { getScrollLeftMax } from '../utils/get-scroll-left-max.js'; -import { getScrollLeftMax } from '../utils/getScrollLeftMax'; +import { getScrollTop } from '../utils/get-scroll-top.js'; -import { getScrollTop } from '../utils/getScrollTop'; +import { getScrollTopMax } from '../utils/get-scroll-top-max.js'; -import { getScrollTopMax } from '../utils/getScrollTopMax'; - -import { isRectsOverlapping } from '../utils/isRectsOverlapping'; +import { isIntersecting } from '../utils/is-intersecting.js'; // // CONSTANTS @@ -39,8 +37,6 @@ const R1: RectExtended = { const R2: RectExtended = { ...R1 }; -const R3: RectExtended = { ...R1 }; - const DEFAULT_THRESHOLD = 50; const SPEED_DATA: AutoScrollSpeedData = { @@ -188,7 +184,7 @@ export interface AutoScrollEventCallbacks { } export interface AutoScrollItemTarget { - element: Window | HTMLElement; + element: Window | Element; axis?: 'x' | 'y' | 'xy'; priority?: number; threshold?: number; @@ -197,14 +193,14 @@ export interface AutoScrollItemTarget { } export type AutoScrollItemEventCallback = ( - scrollElement: Window | HTMLElement, + scrollElement: Window | Element, scrollDirection: ReturnType, ) => void; export type AutoScrollItemEffectCallback = () => void; export type AutoScrollItemSpeedCallback = ( - scrollElement: Window | HTMLElement, + scrollElement: Window | Element, scrollData: AutoScrollSpeedData, ) => number; @@ -242,7 +238,7 @@ class AutoScrollItemData { } class AutoScrollAction { - element: HTMLElement | Window | null; + element: Element | Window | null; requestX: AutoScrollRequest | null; requestY: AutoScrollRequest | null; scrollLeft: number; @@ -299,15 +295,15 @@ class AutoScrollAction { if (this.element.scrollTo) { this.element.scrollTo(this.scrollLeft, this.scrollTop); } else { - (this.element as HTMLElement).scrollLeft = this.scrollLeft; - (this.element as HTMLElement).scrollTop = this.scrollTop; + (this.element as Element).scrollLeft = this.scrollLeft; + (this.element as Element).scrollTop = this.scrollTop; } } } class AutoScrollRequest { item: AutoScrollItem | null; - element: HTMLElement | Window | null; + element: Element | Window | null; isActive: boolean; isEnding: boolean; direction: AutoScrollDirection; @@ -575,7 +571,7 @@ export class AutoScroll { protected _requestItemScroll( item: AutoScrollItem, axis: AutoScrollAxis, - element: Window | HTMLElement, + element: Window | Element, direction: AutoScrollDirection, threshold: number, distance: number, @@ -619,9 +615,9 @@ export class AutoScroll { return; } - const itemData = this._itemData.get(item) as AutoScrollItemData; - const moveDirectionX = itemData.directionX; - const moveDirectionY = itemData.directionY; + const itemData = this._itemData.get(item); + const moveDirectionX = itemData?.directionX; + const moveDirectionY = itemData?.directionY; if (!moveDirectionX && !moveDirectionY) { checkX && this._cancelItemScroll(item, AUTO_SCROLL_AXIS.x); checkY && this._cancelItemScroll(item, AUTO_SCROLL_AXIS.y); @@ -630,7 +626,7 @@ export class AutoScroll { const itemRect = this._getItemClientRect(item, R1); - let xElement: Window | HTMLElement | null = null; + let xElement: Window | Element | null = null; let xPriority = -Infinity; let xThreshold = 0; let xScore = -Infinity; @@ -638,7 +634,7 @@ export class AutoScroll { let xDistance = 0; let xMaxScroll = 0; - let yElement: Window | HTMLElement | null = null; + let yElement: Window | Element | null = null; let yPriority = -Infinity; let yThreshold = 0; let yScore = -Infinity; @@ -668,7 +664,7 @@ export class AutoScroll { // Ignore this item if there is no possibility to scroll. if (testMaxScrollX <= 0 && testMaxScrollY <= 0) continue; - const testRect = getContentRect(testElement, R2); + const testRect = getRect([testElement, 'padding'], window); let testScore = getIntersectionScore(itemRect, testRect) || -Infinity; // If the item has no overlap with the target. @@ -678,9 +674,9 @@ export class AutoScroll { // between item and target and use that value (negated) as testScore. if ( target.padding && - isRectsOverlapping(itemRect, getPaddedRect(testRect, target.padding, R3)) + isIntersecting(itemRect, getPaddedRect(testRect, target.padding, R2)) ) { - testScore = -getDistanceBetweenRects(itemRect, testRect); + testScore = -(getDistance(itemRect, testRect) || 0); } // Otherwise let's ignore this target. else { @@ -811,7 +807,7 @@ export class AutoScroll { } protected _updateScrollRequest(scrollRequest: AutoScrollRequest) { - const item = scrollRequest.item as AutoScrollItem; + const item = scrollRequest.item!; const { inertAreaSize, smoothStop, targets } = item; const itemRect = this._getItemClientRect(item, R1); let hasReachedEnd = null; @@ -840,14 +836,14 @@ export class AutoScroll { break; } - const testRect = getContentRect(testElement, R2); + const testRect = getRect([testElement, 'padding'], window); const testScore = getIntersectionScore(itemRect, testRect) || -Infinity; // If the item has no overlap with the target nor the padded target rect // let's stop scrolling. if (testScore === -Infinity) { const padding = target.scrollPadding || target.padding; - if (!(padding && isRectsOverlapping(itemRect, getPaddedRect(testRect, padding, R3)))) { + if (!(padding && isIntersecting(itemRect, getPaddedRect(testRect, padding, R2)))) { break; } } @@ -916,7 +912,7 @@ export class AutoScroll { protected _updateItems() { for (let i = 0; i < this.items.length; i++) { const item = this.items[i]; - const itemData = this._itemData.get(item) as AutoScrollItemData; + const itemData = this._itemData.get(item)!; const { x, y } = item.position; const prevX = itemData.positionX; const prevY = itemData.positionY; @@ -931,16 +927,16 @@ export class AutoScroll { x > prevX ? AUTO_SCROLL_DIRECTION.right : x < prevX - ? AUTO_SCROLL_DIRECTION.left - : itemData.directionX; + ? AUTO_SCROLL_DIRECTION.left + : itemData.directionX; // Update direction y. itemData.directionY = y > prevY ? AUTO_SCROLL_DIRECTION.down : y < prevY - ? AUTO_SCROLL_DIRECTION.up - : itemData.directionY; + ? AUTO_SCROLL_DIRECTION.up + : itemData.directionY; // Update positions. itemData.positionX = x; @@ -961,7 +957,7 @@ export class AutoScroll { let i = 0; for (; i < items.length; i++) { const item = items[i]; - const itemData = this._itemData.get(item) as AutoScrollItemData; + const itemData = this._itemData.get(item)!; const checkTime = itemData.overlapCheckRequestTime; let needsCheck = checkTime > 0 && this._tickTime - checkTime > this.settings.overlapCheckInterval; @@ -1011,7 +1007,7 @@ export class AutoScroll { // for the requested axis is already reserved let's ignore and cancel this // request. if (isAxisX ? action.requestX : action.requestY) { - this._cancelItemScroll(request.item as AutoScrollItem, axis); + this._cancelItemScroll(request.item!, axis); return; } diff --git a/src/draggable/draggable-drag-item.ts b/src/draggable/draggable-drag-item.ts new file mode 100644 index 0000000..ab02269 --- /dev/null +++ b/src/draggable/draggable-drag-item.ts @@ -0,0 +1,51 @@ +import { CSSProperties } from '../types.js'; + +export class DraggableDragItem { + data: { [key: string]: any }; + readonly element: HTMLElement | SVGSVGElement; + readonly elementContainer: HTMLElement; + readonly elementOffsetContainer: HTMLElement | SVGSVGElement | Window | Document; + readonly dragContainer: HTMLElement; + readonly dragOffsetContainer: HTMLElement | SVGSVGElement | Window | Document; + readonly initialTransform: string; + readonly frozenProps: CSSProperties | null; + readonly unfrozenProps: CSSProperties | null; + readonly x: number; + readonly y: number; + readonly pX: number; + readonly pY: number; + readonly _updateDiffX: number; + readonly _updateDiffY: number; + readonly _moveDiffX: number; + readonly _moveDiffY: number; + readonly _containerDiffX: number; + readonly _containerDiffY: number; + + constructor( + element: HTMLElement | SVGSVGElement, + elementContainer: HTMLElement, + elementOffsetContainer: HTMLElement | SVGSVGElement | Window | Document, + dragContainer: HTMLElement, + dragOffsetContainer: HTMLElement | SVGSVGElement | Window | Document, + ) { + this.data = {}; + this.element = element; + this.elementContainer = elementContainer; + this.elementOffsetContainer = elementOffsetContainer; + this.dragContainer = dragContainer; + this.dragOffsetContainer = dragOffsetContainer; + this.initialTransform = ''; + this.frozenProps = null; + this.unfrozenProps = null; + this.x = 0; + this.y = 0; + this.pX = 0; + this.pY = 0; + this._updateDiffX = 0; + this._updateDiffY = 0; + this._moveDiffX = 0; + this._moveDiffY = 0; + this._containerDiffX = 0; + this._containerDiffY = 0; + } +} diff --git a/src/draggable/draggable-drag.ts b/src/draggable/draggable-drag.ts new file mode 100644 index 0000000..b07c070 --- /dev/null +++ b/src/draggable/draggable-drag.ts @@ -0,0 +1,25 @@ +import { Sensor } from '../sensors/sensor.js'; + +import { DraggableDragItem } from './draggable-drag-item.js'; + +export class DraggableDrag { + readonly sensor: S[number] | null; + readonly isStarted: boolean; + readonly isEnded: boolean; + readonly startEvent: E['start'] | E['move'] | null; + readonly nextMoveEvent: E['move'] | null; + readonly prevMoveEvent: E['move'] | null; + readonly endEvent: E['end'] | E['cancel'] | E['destroy'] | null; + readonly items: DraggableDragItem[]; + + constructor() { + this.sensor = null; + this.isEnded = false; + this.isStarted = false; + this.startEvent = null; + this.nextMoveEvent = null; + this.prevMoveEvent = null; + this.endEvent = null; + this.items = []; + } +} diff --git a/src/Draggable/Draggable.ts b/src/draggable/draggable.ts similarity index 78% rename from src/Draggable/Draggable.ts rename to src/draggable/draggable.ts index 482f0bc..c5fe2c5 100644 --- a/src/Draggable/Draggable.ts +++ b/src/draggable/draggable.ts @@ -1,18 +1,22 @@ -import { HAS_PASSIVE_EVENTS } from '../constants'; +import { HAS_PASSIVE_EVENTS } from '../constants.js'; import { Emitter, EventListenerId } from 'eventti'; -import { Sensor, SensorEvents } from '../Sensors/Sensor'; +import { getOffsetContainer } from 'mezr'; -import { ticker, tickerReadPhase, tickerWritePhase } from '../singletons/ticker'; +import { Sensor, SensorEvents } from '../sensors/sensor.js'; -import { getContainingBlock } from '../utils/getContainingBlock'; +import { DraggableDrag } from './draggable-drag.js'; -import { getOffsetDiff } from '../utils/getOffsetDiff'; +import { DraggableDragItem } from './draggable-drag-item.js'; -import { getStyle } from 'utils/getStyle'; +import { ticker, tickerReadPhase, tickerWritePhase } from '../singletons/ticker.js'; -import { Writeable } from '../types'; +import { getOffsetDiff } from '../utils/get-offset-diff.js'; + +import { getStyle } from '../utils/get-style.js'; + +import { Writeable, CSSProperties } from '../types.js'; const IDENTITY_MATRIX = 'matrix(1, 0, 0, 1, 0, 0)'; @@ -30,72 +34,6 @@ enum DraggableStartPredicateState { REJECTED = 2, } -class DraggableDragItem { - readonly element: HTMLElement; - readonly rootParent: HTMLElement; - readonly rootContainingBlock: HTMLElement | Document; - readonly dragParent: HTMLElement; - readonly dragContainingBlock: HTMLElement | Document; - readonly x: number; - readonly y: number; - readonly pX: number; - readonly pY: number; - readonly _updateDiffX: number; - readonly _updateDiffY: number; - readonly _moveDiffX: number; - readonly _moveDiffY: number; - readonly _containerDiffX: number; - readonly _containerDiffY: number; - readonly _transform: string; - - constructor( - element: HTMLElement, - rootParent: HTMLElement, - rootContainingBlock: HTMLElement | Document, - dragParent: HTMLElement, - dragContainingBlock: HTMLElement | Document, - ) { - this.element = element; - this.rootParent = rootParent; - this.rootContainingBlock = rootContainingBlock; - this.dragParent = dragParent; - this.dragContainingBlock = dragContainingBlock; - this.x = 0; - this.y = 0; - this.pX = 0; - this.pY = 0; - this._updateDiffX = 0; - this._updateDiffY = 0; - this._moveDiffX = 0; - this._moveDiffY = 0; - this._containerDiffX = 0; - this._containerDiffY = 0; - this._transform = ''; - } -} - -class DraggableDrag { - readonly sensor: S[number] | null; - readonly isStarted: boolean; - readonly isEnded: boolean; - readonly startEvent: E['start'] | E['move'] | null; - readonly nextMoveEvent: E['move'] | null; - readonly prevMoveEvent: E['move'] | null; - readonly endEvent: E['end'] | E['cancel'] | E['destroy'] | null; - readonly items: DraggableDragItem[]; - - constructor() { - this.sensor = null; - this.isEnded = false; - this.isStarted = false; - this.startEvent = null; - this.nextMoveEvent = null; - this.prevMoveEvent = null; - this.endEvent = null; - this.items = []; - } -} - function getDefaultSettings(): DraggableSettings< S, E @@ -104,19 +42,13 @@ function getDefaultSettings() container: null, startPredicate: () => true, getElements: () => null, - releaseElements: () => {}, - getStartPosition: ({ item }) => { - // Store item element's initial transform. - const t = getStyle(item.element, 'transform'); - if (t && t !== 'none' && t !== IDENTITY_MATRIX && t !== IDENTITY_MATRIX_3D) { - (item as Writeable)._transform = t; - } else { - (item as Writeable)._transform = ''; - } + releaseElements: () => null, + getFrozenProps: () => null, + getStartPosition: () => { return { x: 0, y: 0 }; }, setPosition: ({ item, x, y }) => { - item.element.style.transform = `translate(${x}px, ${y}px) ${item._transform}`; + item.element.style.transform = `translate(${x}px, ${y}px) ${item.initialTransform}`; }, getPositionChange: ({ event, prevEvent }) => { POSITION_CHANGE.x = event.x - prevEvent.x; @@ -137,16 +69,23 @@ export interface DraggableSettings; sensor: S[number]; startEvent: E['start'] | E['move']; - }) => HTMLElement[] | null; + }) => (HTMLElement | SVGSVGElement)[] | null; releaseElements: (data: { draggable: Draggable; sensor: S[number]; - elements: HTMLElement[]; + elements: (HTMLElement | SVGSVGElement)[]; }) => void; + getFrozenProps: (data: { + draggable: Draggable; + sensor: S[number]; + item: DraggableDragItem; + style: CSSStyleDeclaration; + }) => CSSProperties | (keyof CSSProperties)[] | null; getStartPosition: (data: { draggable: Draggable; sensor: S[number]; item: DraggableDragItem; + style: CSSStyleDeclaration; }) => { x: number; y: number }; setPosition: (data: { draggable: Draggable; @@ -174,11 +113,10 @@ export interface DraggablePlugin { export type DraggablePluginMap = Record; export interface DraggableEventCallbacks { - beforestart(event: E['start'] | E['move']): void; + preparestart(event: E['start'] | E['move']): void; start(event: E['start'] | E['move']): void; - beforemove(event: E['move']): void; + preparemove(event: E['move']): void; move(event: E['move']): void; - beforeend(event: E['end'] | E['cancel'] | E['destroy'] | null): void; end(event: E['end'] | E['cancel'] | E['destroy'] | null): void; destroy(): void; } @@ -259,6 +197,7 @@ export class Draggable< startPredicate = defaults.startPredicate, getElements = defaults.getElements, releaseElements = defaults.releaseElements, + getFrozenProps = defaults.getFrozenProps, getStartPosition = defaults.getStartPosition, setPosition = defaults.setPosition, getPositionChange = defaults.getPositionChange, @@ -269,6 +208,7 @@ export class Draggable< startPredicate, getElements, releaseElements, + getFrozenProps, getStartPosition, setPosition, getPositionChange, @@ -368,25 +308,33 @@ export class Draggable< } // Get element's parent. - const rootParent = element.parentNode as HTMLElement; + const elementContainer = element.parentElement!; // Get parent's containing block. - const rootContainingBlock = getContainingBlock(rootParent); + const elementOffsetContainer = getOffsetContainer(element); + if (!elementOffsetContainer) { + throw new Error('Offset container could not be computed for the element!'); + } // Get element's drag parent. - const dragParent = this.settings.container || rootParent; + const dragContainer = this.settings.container || elementContainer; // Get drag container's containing block. - const dragContainingBlock = - dragParent === rootParent ? rootContainingBlock : getContainingBlock(dragParent); + const dragOffsetContainer = + dragContainer === elementContainer + ? elementOffsetContainer + : getOffsetContainer(element, { container: dragContainer }); + if (!dragOffsetContainer) { + throw new Error('Drag offset container could not be computed for the element!'); + } // Create drag item. const item: Writeable = new DraggableDragItem( element, - rootParent, - rootContainingBlock, - dragParent, - dragContainingBlock, + elementContainer, + elementOffsetContainer, + dragContainer, + dragOffsetContainer, ); // Compute the element's current clientX/Y. @@ -397,56 +345,109 @@ export class Draggable< // If parent's containing block is different than drag container's // containing block let's compute the offset difference between the // containing blocks. - if (rootContainingBlock !== dragContainingBlock) { - const { left, top } = getOffsetDiff(dragContainingBlock, rootContainingBlock, OFFSET_DIFF); + if (elementOffsetContainer !== dragOffsetContainer) { + const { left, top } = getOffsetDiff( + dragOffsetContainer, + elementOffsetContainer, + OFFSET_DIFF, + ); item._containerDiffX = left; item._containerDiffY = top; } - // Lastly, compute element's current elementX/Y. + // Get element's style declaration. + const style = getStyle(element); + + // Store element's initial transform. + const { transform } = style; + if ( + transform && + transform !== 'none' && + transform !== IDENTITY_MATRIX && + transform !== IDENTITY_MATRIX_3D + ) { + item.initialTransform = transform; + } + + // Get element's current elementX/Y. const { x, y } = this.settings.getStartPosition({ draggable: this, sensor: drag.sensor!, item, + style, }); item.pX = x; item.pY = y; + // Get element's frozen props. + const frozenProps = this.settings.getFrozenProps({ + draggable: this, + sensor: drag.sensor!, + item, + style, + }); + if (Array.isArray(frozenProps)) { + if (frozenProps.length) { + const props: CSSProperties = {}; + for (const prop of frozenProps) { + props[prop] = style[prop]; + } + item.frozenProps = props; + } else { + item.frozenProps = null; + } + } else { + item.frozenProps = frozenProps; + } + + // Lastly, let's compute the unfrozen props. We store the current inline + // style values for all frozen props so that we can restore them after the + // drag process is over. + if (item.frozenProps) { + const unfrozenProps: CSSProperties = {}; + for (const key in item.frozenProps) { + if (item.frozenProps.hasOwnProperty(key)) { + unfrozenProps[key] = element.style[key]; + } + } + item.unfrozenProps = unfrozenProps; + } + return item; }); + + // Emit preparestart event. + this._emit('preparestart', drag.startEvent); } protected _applyStart() { const drag = this.drag; if (!drag || !drag.startEvent) return; - // Emit beforestart event. - this._emit('beforestart', drag.startEvent); - - // Make sure drag is still active after beforestart event is dispatched. - if (this.drag !== drag) return; - - // Append element within the container element if such is provided. const { container } = this.settings; - if (container) { - for (const item of drag.items) { - if (!item.element) continue; - if (item.element.parentNode !== container) { - container.appendChild(item.element); - (item as Writeable).pX += item._containerDiffX; - (item as Writeable).pY += item._containerDiffY; - } - this.settings.setPosition({ - phase: 'start', - draggable: this, - sensor: drag.sensor!, - item, - x: item.pX, - y: item.pY, - }); + for (const item of drag.items) { + // Append element within the container element if such is provided. + if (container && item.element.parentElement !== container) { + container.appendChild(item.element); + (item as Writeable).pX += item._containerDiffX; + (item as Writeable).pY += item._containerDiffY; + } + + // Freeze element's props if such are provided. + if (item.frozenProps) { + Object.assign(item.element.style, item.frozenProps); } - } + // Set the element's start position. + this.settings.setPosition({ + phase: 'start', + draggable: this, + sensor: drag.sensor!, + item, + x: item.pX, + y: item.pY, + }); + } // Bind scroll listeners. window.addEventListener('scroll', this._onScroll, SCROLL_LISTENER_OPTIONS); @@ -468,8 +469,6 @@ export class Draggable< if (!nextEvent || nextEvent === prevEvent) return; for (const item of drag.items) { - if (!item.element) continue; - // Compute how much x and y needs to be transformed. const { x: changeX, y: changeY } = this.settings.getPositionChange({ draggable: this, @@ -497,6 +496,9 @@ export class Draggable< // Store next event as previous event. (drag as Writeable>).prevMoveEvent = nextEvent; + + // Emit preparemove event. + this._emit('preparemove', nextEvent); } protected _applyMove() { @@ -509,15 +511,8 @@ export class Draggable< (item as Writeable)._moveDiffY = 0; } - // Emit beforemove event. - this._emit('beforemove', drag.nextMoveEvent); - - // Make sure drag is still active after beforemove event is dispatched. - if (this.drag !== drag) return; - // Move the element. for (const item of drag.items) { - if (!item.element) continue; this.settings.setPosition({ phase: 'move', draggable: this, @@ -537,13 +532,11 @@ export class Draggable< if (!drag) return; for (const item of drag.items) { - if (!item.element) continue; - // Update container diff. - if (item.rootContainingBlock !== item.dragContainingBlock) { + if (item.elementOffsetContainer !== item.dragOffsetContainer) { const { left, top } = getOffsetDiff( - item.dragContainingBlock as HTMLElement | Document, - item.rootContainingBlock as HTMLElement | Document, + item.dragOffsetContainer, + item.elementOffsetContainer, OFFSET_DIFF, ); (item as Writeable)._containerDiffX = left; @@ -569,7 +562,6 @@ export class Draggable< if (!drag) return; for (const item of drag.items) { - if (!item.element) continue; (item as Writeable)._updateDiffX = 0; (item as Writeable)._updateDiffY = 0; this.settings.setPosition({ @@ -640,9 +632,6 @@ export class Draggable< // Mark drag process as ended. (drag as Writeable>).isEnded = true; - // Emit beforeend event. - this._emit('beforeend', drag.endEvent); - // Cancel all queued ticks. ticker.off(tickerReadPhase, this._startId); ticker.off(tickerWritePhase, this._startId); @@ -658,17 +647,25 @@ export class Draggable< // Move elements within the root container and collect all elements // to an elements array. - const elements: HTMLElement[] = []; + const elements: (HTMLElement | SVGSVGElement)[] = []; for (const item of drag.items) { - if (!item.element) continue; elements.push(item.element); - if (item.rootParent && item.element.parentNode !== item.rootParent) { + if (item.elementContainer && item.element.parentElement !== item.elementContainer) { (item as Writeable).pX -= item._containerDiffX; (item as Writeable).pY -= item._containerDiffY; (item as Writeable)._containerDiffX = 0; (item as Writeable)._containerDiffY = 0; - item.rootParent.appendChild(item.element); + item.elementContainer.appendChild(item.element); + } + + // Unfreeze element's props if such are provided. + if (item.unfrozenProps) { + for (const key in item.unfrozenProps) { + item.element.style[key] = item.unfrozenProps[key] || ''; + } } + + // Set final position after drag. this.settings.setPosition({ phase: 'end', draggable: this, diff --git a/src/Draggable/plugins/autoScrollPlugin.ts b/src/draggable/plugins/auto-scroll-plugin.ts similarity index 95% rename from src/Draggable/plugins/autoScrollPlugin.ts rename to src/draggable/plugins/auto-scroll-plugin.ts index b8d7605..962f53c 100644 --- a/src/Draggable/plugins/autoScrollPlugin.ts +++ b/src/draggable/plugins/auto-scroll-plugin.ts @@ -1,8 +1,8 @@ -import { ticker, tickerReadPhase, tickerWritePhase } from '../../singletons/ticker'; +import { ticker, tickerReadPhase, tickerWritePhase } from '../../singletons/ticker.js'; -import { Draggable, DraggablePluginMap } from '../Draggable'; +import { Draggable, DraggablePluginMap } from '../draggable.js'; -import { Sensor } from '../../Sensors/Sensor'; +import { Sensor } from '../../sensors/sensor.js'; import { AutoScrollItem, @@ -10,11 +10,11 @@ import { AutoScrollItemEventCallback, AutoScrollItemTarget, autoScrollSmoothSpeed, -} from '../../AutoScroll/AutoScroll'; +} from '../../auto-scroll/auto-scroll.js'; -import { autoScroll } from '../../singletons/autoScroll'; +import { autoScroll } from '../../singletons/auto-scroll.js'; -import { Writeable } from '../../types'; +import { Writeable } from '../../types.js'; const AUTOSCROLL_POSITION = { x: 0, y: 0 }; @@ -206,7 +206,7 @@ export class DraggableAutoScroll< } }); - draggable.on('beforeend', () => { + draggable.on('end', () => { if (this._autoScrollProxy) { autoScroll.removeItem(this._autoScrollProxy); this._autoScrollProxy = null; diff --git a/src/index.ts b/src/index.ts index a1af128..191a8c3 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,23 +1,23 @@ -export * from './Sensors/Sensor'; +export * from './sensors/sensor.js'; -export * from './Sensors/BaseSensor'; +export * from './sensors/base-sensor.js'; -export * from './Sensors/BaseMotionSensor'; +export * from './sensors/base-motion-sensor.js'; -export * from './Sensors/PointerSensor'; +export * from './sensors/pointer-sensor.js'; -export * from './Sensors/KeyboardSensor'; +export * from './sensors/keyboard-sensor.js'; -export * from './Sensors/KeyboardMotionSensor'; +export * from './sensors/keyboard-motion-sensor.js'; -export * from './Draggable/Draggable'; +export * from './draggable/draggable.js'; -export * from './Draggable/plugins/autoScrollPlugin'; +export * from './draggable/plugins/auto-scroll-plugin.js'; -export * from './AutoScroll/AutoScroll'; +export * from './auto-scroll/auto-scroll.js'; -export * from './singletons/autoScroll'; +export * from './singletons/auto-scroll.js'; -export * from './singletons/ticker'; +export * from './singletons/ticker.js'; -export * from './utils/createPointerSensorStartPredicate'; +export * from './utils/create-pointer-sensor-start-predicate.js'; diff --git a/src/Pool.ts b/src/pool.ts similarity index 100% rename from src/Pool.ts rename to src/pool.ts diff --git a/src/Sensors/BaseMotionSensor.ts b/src/sensors/base-motion-sensor.ts similarity index 92% rename from src/Sensors/BaseMotionSensor.ts rename to src/sensors/base-motion-sensor.ts index 2440d74..6db7b8a 100644 --- a/src/Sensors/BaseMotionSensor.ts +++ b/src/sensors/base-motion-sensor.ts @@ -1,10 +1,10 @@ -import { Sensor, SensorEvents } from './Sensor'; +import { Sensor, SensorEvents } from './sensor.js'; -import { BaseSensor, BaseSensorDragData } from './BaseSensor'; +import { BaseSensor, BaseSensorDragData } from './base-sensor.js'; -import { Writeable } from '../types'; +import { Writeable } from '../types.js'; -import { ticker, tickerReadPhase } from '../singletons/ticker'; +import { ticker, tickerReadPhase } from '../singletons/ticker.js'; export interface BaseMotionSensorTickEvent { type: 'tick'; diff --git a/src/Sensors/BaseSensor.ts b/src/sensors/base-sensor.ts similarity index 95% rename from src/Sensors/BaseSensor.ts rename to src/sensors/base-sensor.ts index 201377a..504b980 100644 --- a/src/Sensors/BaseSensor.ts +++ b/src/sensors/base-sensor.ts @@ -1,8 +1,8 @@ import { Emitter, Events, EventListenerId } from 'eventti'; -import { Sensor, SensorEvents, SensorEventType } from './Sensor'; +import { Sensor, SensorEvents, SensorEventType } from './sensor.js'; -import { Writeable } from '../types'; +import { Writeable } from '../types.js'; export interface BaseSensorDragData { readonly x: number; diff --git a/src/Sensors/KeyboardMotionSensor.ts b/src/sensors/keyboard-motion-sensor.ts similarity index 96% rename from src/Sensors/KeyboardMotionSensor.ts rename to src/sensors/keyboard-motion-sensor.ts index 52a9d5a..c80cbd7 100644 --- a/src/Sensors/KeyboardMotionSensor.ts +++ b/src/sensors/keyboard-motion-sensor.ts @@ -1,6 +1,6 @@ -import { Sensor } from './Sensor'; +import { Sensor } from './sensor.js'; -import { BaseMotionSensor, BaseMotionSensorEvents } from './BaseMotionSensor'; +import { BaseMotionSensor, BaseMotionSensorEvents } from './base-motion-sensor.js'; export interface KeyboardMotionSensorSettings< E extends KeyboardMotionSensorEvents = KeyboardMotionSensorEvents, @@ -72,13 +72,13 @@ export class KeyboardMotionSensor 500, - startKeys = [' ', 'Space', 'Enter'], + startKeys = [' ', 'Enter'], moveLeftKeys = ['ArrowLeft'], moveRightKeys = ['ArrowRight'], moveUpKeys = ['ArrowUp'], moveDownKeys = ['ArrowDown'], cancelKeys = ['Escape'], - endKeys = [' ', 'Space', 'Enter'], + endKeys = [' ', 'Enter'], } = options; this._computeSpeed = computeSpeed; @@ -107,12 +107,16 @@ export class KeyboardMotionSensor { x: number; y: number } | null | undefined; export interface KeyboardSensorSettings { - moveDistance: number; + moveDistance: number | { x: number; y: number }; startPredicate: KeyboardSensorPredicate; movePredicate: KeyboardSensorPredicate; cancelPredicate: KeyboardSensorPredicate; @@ -54,7 +54,7 @@ export class KeyboardSensor { declare events: E; - protected _moveDistance: number; + protected _moveDistance: { x: number; y: number }; protected _startPredicate: KeyboardSensorPredicate; protected _movePredicate: KeyboardSensorPredicate; protected _cancelPredicate: KeyboardSensorPredicate; @@ -66,7 +66,7 @@ export class KeyboardSensor { - if (e.key === 'Enter' || e.key === 'Space' || e.key === ' ') { + if (e.key === 'Enter' || e.key === ' ') { if (document.activeElement && document.activeElement !== document.body) { const { left, top } = document.activeElement.getBoundingClientRect(); return { x: left, y: top }; @@ -80,26 +80,26 @@ export class KeyboardSensor { - if (sensor.drag && (e.key === 'Enter' || e.key === 'Space' || e.key === ' ')) { + if (sensor.drag && (e.key === 'Enter' || e.key === ' ')) { return { x: sensor.drag.x, y: sensor.drag.y }; } return null; }, } = options; - this._moveDistance = moveDistance; + this._moveDistance = + typeof moveDistance === 'number' ? { x: moveDistance, y: moveDistance } : { ...moveDistance }; this._startPredicate = startPredicate; this._movePredicate = movePredicate; this._cancelPredicate = cancelPredicate; @@ -193,7 +194,13 @@ export class KeyboardSensor = {}) { if (options.moveDistance !== undefined) { - this._moveDistance = options.moveDistance; + if (typeof options.moveDistance === 'number') { + this._moveDistance.x = options.moveDistance; + this._moveDistance.y = options.moveDistance; + } else { + this._moveDistance.x = options.moveDistance.x; + this._moveDistance.y = options.moveDistance.y; + } } if (options.startPredicate !== undefined) { diff --git a/src/Sensors/PointerSensor.ts b/src/sensors/pointer-sensor.ts similarity index 95% rename from src/Sensors/PointerSensor.ts rename to src/sensors/pointer-sensor.ts index b537ddb..b7f0687 100644 --- a/src/Sensors/PointerSensor.ts +++ b/src/sensors/pointer-sensor.ts @@ -1,6 +1,6 @@ import { Emitter, Events, EventListenerId } from 'eventti'; -import { ListenerOptions, Writeable, PointerType } from '../types'; +import { ListenerOptions, Writeable, PointerType } from '../types.js'; import { Sensor, @@ -10,17 +10,17 @@ import { SensorCancelEvent, SensorEndEvent, SensorDestroyEvent, -} from './Sensor'; +} from './sensor.js'; -import { getPointerEventData } from '../utils/getPointerEventData'; +import { getPointerEventData } from '../utils/get-pointer-event-data.js'; -import { getPointerType } from '../utils/getPointerType'; +import { getPointerType } from '../utils/get-pointer-type.js'; -import { getPointerId } from '../utils/getPointerId'; +import { getPointerId } from '../utils/get-pointer-id.js'; -import { parseListenerOptions } from '../utils/parseListenerOptions'; +import { parseListenerOptions } from '../utils/parse-listener-options.js'; -import { parseSourceEvents } from '../utils/parseSourceEvents'; +import { parseSourceEvents } from '../utils/parse-source-events.js'; const POINTER_EVENTS = { start: 'pointerdown', @@ -110,7 +110,7 @@ export class PointerSensor /** * The observed element or window. */ - readonly element: HTMLElement | Window; + readonly element: Element | Window; /** * Current drag data, null if drag is not active. @@ -147,7 +147,7 @@ export class PointerSensor */ protected _emitter: Emitter; - constructor(element: HTMLElement | Window, options: Partial = {}) { + constructor(element: Element | Window, options: Partial = {}) { const { listenerOptions = {}, sourceEvents = 'auto', diff --git a/src/Sensors/Sensor.ts b/src/sensors/sensor.ts similarity index 100% rename from src/Sensors/Sensor.ts rename to src/sensors/sensor.ts diff --git a/src/singletons/auto-scroll.ts b/src/singletons/auto-scroll.ts new file mode 100644 index 0000000..1e2d20c --- /dev/null +++ b/src/singletons/auto-scroll.ts @@ -0,0 +1,3 @@ +import { AutoScroll } from '../auto-scroll/auto-scroll.js'; + +export const autoScroll = new AutoScroll(); diff --git a/src/singletons/autoScroll.ts b/src/singletons/autoScroll.ts deleted file mode 100644 index 05aefc1..0000000 --- a/src/singletons/autoScroll.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { AutoScroll } from '../AutoScroll/AutoScroll'; - -export const autoScroll = new AutoScroll(); diff --git a/src/types.ts b/src/types.ts index dd7c8be..75b79db 100644 --- a/src/types.ts +++ b/src/types.ts @@ -4,11 +4,14 @@ export type ListenerOptions = { capture?: boolean; passive?: boolean }; export type PointerType = 'mouse' | 'pen' | 'touch'; -export interface Rect { - left: number; - top: number; +export type Dimensions = { width: number; height: number; +}; + +export interface Rect extends Dimensions { + left: number; + top: number; } export interface RectExtended extends Rect { @@ -21,3 +24,16 @@ export type FilterNotStartingWith = Set extends `${N : Set; export type RemoveUnderscoreProperties = Pick>; + +export type CSSProperties = Partial< + Omit< + CSSStyleDeclaration, + | 'getPropertyPriority' + | 'getPropertyValue' + | 'item' + | 'removeProperty' + | 'setProperty' + | 'length' + | 'parentRule' + > +>; diff --git a/src/utils/createPointerSensorStartPredicate.ts b/src/utils/create-pointer-sensor-start-predicate.ts similarity index 88% rename from src/utils/createPointerSensorStartPredicate.ts rename to src/utils/create-pointer-sensor-start-predicate.ts index e51ddac..04683b8 100644 --- a/src/utils/createPointerSensorStartPredicate.ts +++ b/src/utils/create-pointer-sensor-start-predicate.ts @@ -1,15 +1,15 @@ -import { Sensor } from '../Sensors/Sensor'; +import { Sensor } from '../sensors/sensor.js'; -import { Draggable } from '../Draggable/Draggable'; +import { Draggable } from '../draggable/draggable.js'; -import { PointerSensor, PointerSensorEvents } from '../Sensors/PointerSensor'; +import { PointerSensor, PointerSensorEvents } from '../sensors/pointer-sensor.js'; -import { getScrollableAncestors } from './getScrollableAncestors'; +import { getScrollableAncestors } from './get-scrollable-ancestors.js'; -import { isScrollable } from './isScrollable'; +import { isScrollable } from './is-scrollable.js'; -function getScrollables(element: HTMLElement) { - const scrollables: (HTMLElement | Window)[] = []; +function getScrollables(element: Element) { + const scrollables: (Element | Window)[] = []; if (isScrollable(element)) { scrollables.push(element); @@ -33,7 +33,7 @@ export function createPointerSensorStartPredicate< let startTimeStamp: number = 0; - let targetElement: HTMLElement | null = null; + let targetElement: Element | null = null; let timer: number | undefined = undefined; @@ -76,7 +76,7 @@ export function createPointerSensorStartPredicate< ) { // Prevent potentially scrollable nodes from scrolling to make sure // native scrolling does not interfere with dragging. - targetElement = e.target as HTMLElement | null; + targetElement = e.target as Element | null; const scrollables = targetElement ? getScrollables(targetElement) : []; scrollables.forEach((scrollable) => { scrollable.addEventListener('touchmove', onTouchMove as EventListener, { @@ -89,7 +89,7 @@ export function createPointerSensorStartPredicate< if (!startTimeStamp) return; // Unbind listeners. - draggable.off('beforeend', dragEndListener); + draggable.off('end', dragEndListener); draggable.sensors.forEach((sensor) => { if (sensor instanceof PointerSensor) { sensor.off('end', dragEndListener); @@ -117,7 +117,7 @@ export function createPointerSensorStartPredicate< targetElement?.addEventListener('contextmenu', onContextMenu); // Reset data on drag end. - draggable.on('beforeend', dragEndListener); + draggable.on('end', dragEndListener); draggable.sensors.forEach((sensor) => { if (sensor instanceof PointerSensor) { sensor.off('end', dragEndListener); diff --git a/src/utils/get-intersection-area.ts b/src/utils/get-intersection-area.ts new file mode 100644 index 0000000..1d94da6 --- /dev/null +++ b/src/utils/get-intersection-area.ts @@ -0,0 +1,11 @@ +import { getIntersection } from 'mezr'; + +import { RectExtended } from '../types.js'; + +/** + * Calculate intersection area between two rectangle. + */ +export function getIntersectionArea(a: RectExtended, b: RectExtended) { + const intersection = getIntersection(a, b); + return intersection ? intersection.width * intersection.height : 0; +} diff --git a/src/utils/getIntersectionScore.ts b/src/utils/get-intersection-score.ts similarity index 78% rename from src/utils/getIntersectionScore.ts rename to src/utils/get-intersection-score.ts index 09c2093..840c91c 100644 --- a/src/utils/getIntersectionScore.ts +++ b/src/utils/get-intersection-score.ts @@ -1,6 +1,6 @@ -import { getIntersectionArea } from './getIntersectionArea'; +import { getIntersectionArea } from './get-intersection-area.js'; -import { RectExtended } from '../types'; +import { RectExtended } from '../types.js'; /** * Calculate how many percent the intersection area of two rectangles is from diff --git a/src/utils/getOffsetDiff.ts b/src/utils/get-offset-diff.ts similarity index 64% rename from src/utils/getOffsetDiff.ts rename to src/utils/get-offset-diff.ts index 6f7b0bd..c185b70 100644 --- a/src/utils/getOffsetDiff.ts +++ b/src/utils/get-offset-diff.ts @@ -1,14 +1,11 @@ -import { getOffset } from './getOffset'; - -const offsetA = { left: 0, top: 0 }; -const offsetB = { left: 0, top: 0 }; +import { getOffset } from 'mezr'; /** * Calculate the offset difference two elements. */ export function getOffsetDiff( - elemA: HTMLElement | Document, - elemB: HTMLElement | Document, + elemA: Element | Window | Document, + elemB: Element | Window | Document, result: { left: number; top: number } = { left: 0, top: 0 }, ) { result.left = 0; @@ -18,8 +15,8 @@ export function getOffsetDiff( if (elemA === elemB) return result; // Finally, let's calculate the offset diff. - getOffset(elemA, offsetA); - getOffset(elemB, offsetB); + const offsetA = getOffset([elemA, 'padding']); + const offsetB = getOffset([elemB, 'padding']); result.left = offsetB.left - offsetA.left; result.top = offsetB.top - offsetA.top; diff --git a/src/utils/getPointerEventData.ts b/src/utils/get-pointer-event-data.ts similarity index 100% rename from src/utils/getPointerEventData.ts rename to src/utils/get-pointer-event-data.ts diff --git a/src/utils/getPointerId.ts b/src/utils/get-pointer-id.ts similarity index 100% rename from src/utils/getPointerId.ts rename to src/utils/get-pointer-id.ts diff --git a/src/utils/getPointerType.ts b/src/utils/get-pointer-type.ts similarity index 81% rename from src/utils/getPointerType.ts rename to src/utils/get-pointer-type.ts index 7cd12d5..c7d402c 100644 --- a/src/utils/getPointerType.ts +++ b/src/utils/get-pointer-type.ts @@ -1,4 +1,4 @@ -import { PointerType } from '../types'; +import { PointerType } from '../types.js'; export function getPointerType(e: PointerEvent | TouchEvent | MouseEvent): PointerType { return 'pointerType' in e ? (e.pointerType as PointerType) : 'touches' in e ? 'touch' : 'mouse'; diff --git a/src/utils/getScrollElement.ts b/src/utils/get-scroll-element.ts similarity index 59% rename from src/utils/getScrollElement.ts rename to src/utils/get-scroll-element.ts index 67c2c3e..37482f4 100644 --- a/src/utils/getScrollElement.ts +++ b/src/utils/get-scroll-element.ts @@ -1,6 +1,6 @@ -import { isWindow } from './isWindow'; +import { isWindow } from './is-window.js'; -export function getScrollElement(element: HTMLElement | Window) { +export function getScrollElement(element: Element | Window) { if (isWindow(element) || element === document.documentElement || element === document.body) { return window; } else { diff --git a/src/utils/getScrollLeftMax.ts b/src/utils/get-scroll-left-max.ts similarity index 52% rename from src/utils/getScrollLeftMax.ts rename to src/utils/get-scroll-left-max.ts index 48c6772..d7bd9a6 100644 --- a/src/utils/getScrollLeftMax.ts +++ b/src/utils/get-scroll-left-max.ts @@ -1,6 +1,6 @@ -import { isWindow } from './isWindow'; +import { isWindow } from './is-window.js'; -export function getScrollLeftMax(element: HTMLElement | Window) { +export function getScrollLeftMax(element: Element | Window) { if (isWindow(element)) element = document.documentElement; return element.scrollWidth - element.clientWidth; } diff --git a/src/utils/get-scroll-left.ts b/src/utils/get-scroll-left.ts new file mode 100644 index 0000000..c3616e4 --- /dev/null +++ b/src/utils/get-scroll-left.ts @@ -0,0 +1,5 @@ +import { isWindow } from './is-window.js'; + +export function getScrollLeft(element: Element | Window) { + return isWindow(element) ? element.pageXOffset : element.scrollLeft; +} diff --git a/src/utils/getScrollTopMax.ts b/src/utils/get-scroll-top-max.ts similarity index 53% rename from src/utils/getScrollTopMax.ts rename to src/utils/get-scroll-top-max.ts index 7ef2ede..659d77f 100644 --- a/src/utils/getScrollTopMax.ts +++ b/src/utils/get-scroll-top-max.ts @@ -1,6 +1,6 @@ -import { isWindow } from './isWindow'; +import { isWindow } from './is-window.js'; -export function getScrollTopMax(element: HTMLElement | Window) { +export function getScrollTopMax(element: Element | Window) { if (isWindow(element)) element = document.documentElement; return element.scrollHeight - element.clientHeight; } diff --git a/src/utils/get-scroll-top.ts b/src/utils/get-scroll-top.ts new file mode 100644 index 0000000..a4deb27 --- /dev/null +++ b/src/utils/get-scroll-top.ts @@ -0,0 +1,5 @@ +import { isWindow } from './is-window.js'; + +export function getScrollTop(element: Element | Window) { + return isWindow(element) ? element.pageYOffset : element.scrollTop; +} diff --git a/src/utils/get-scrollable-ancestors.ts b/src/utils/get-scrollable-ancestors.ts new file mode 100644 index 0000000..82e9dfe --- /dev/null +++ b/src/utils/get-scrollable-ancestors.ts @@ -0,0 +1,28 @@ +import { isScrollable } from './is-scrollable.js'; +import { isDocument } from './is-document.js'; + +/** + * Compute the element's scrollable ancestor elements. + */ +export function getScrollableAncestors( + element: Element | Document | null, + result: (Element | Window)[] = [], +) { + let parent = element?.parentNode; + + while (parent && !isDocument(parent)) { + if (parent instanceof Element) { + if (isScrollable(parent)) result.push(parent); + parent = parent.parentNode; + } else if (parent instanceof ShadowRoot) { + parent = parent.host; + } else { + parent = parent.parentNode; + } + } + + // Always push window to the results (as last scrollable element). + result.push(window); + + return result; +} diff --git a/src/utils/get-style.ts b/src/utils/get-style.ts new file mode 100644 index 0000000..71cd694 --- /dev/null +++ b/src/utils/get-style.ts @@ -0,0 +1,17 @@ +const STYLE_DECLARATION_CACHE: WeakMap> = new WeakMap(); + +/** + * Returns element's CSS Style Declaration. Caches reference to the declaration + * object weakly for faster access. + */ +export function getStyle(element: Element) { + let styleDeclaration: CSSStyleDeclaration | undefined = + STYLE_DECLARATION_CACHE.get(element)?.deref(); + + if (!styleDeclaration) { + styleDeclaration = window.getComputedStyle(element, null); + STYLE_DECLARATION_CACHE.set(element, new WeakRef(styleDeclaration)); + } + + return styleDeclaration; +} diff --git a/src/utils/getContainingBlock.ts b/src/utils/getContainingBlock.ts deleted file mode 100644 index 4f9c172..0000000 --- a/src/utils/getContainingBlock.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { isContainingBlock } from './isContainingBlock'; - -/** - * Returns an absolute positioned element's containing block, which is - * considered to be the closest ancestor element that the target element's - * positioning is relative to. Disclaimer: this only works as intended for - * absolute positioned elements. - */ -export function getContainingBlock(element: HTMLElement | Document) { - // As long as the containing block is an element, static and not - // transformed, try to get the element's parent element and fallback to - // document. https://github.com/niklasramo/mezr/blob/0.6.1/mezr.js#L339 - let res: HTMLElement | Document = element || document; - while (res && res !== document && !isContainingBlock(element as HTMLElement)) { - res = res.parentElement || document; - } - return res; -} diff --git a/src/utils/getContentRect.ts b/src/utils/getContentRect.ts deleted file mode 100644 index 74b01e5..0000000 --- a/src/utils/getContentRect.ts +++ /dev/null @@ -1,36 +0,0 @@ -import { isWindow } from './isWindow'; - -import { getStyleAsFloat } from './getStyleAsFloat'; - -import { RectExtended } from '../types'; - -/** - * Get window's or element's client rectangle data relative to the element's - * content dimensions (includes inner size + padding, excludes scrollbars, - * borders and margins). - */ -export function getContentRect( - element: HTMLElement | Window, - result: RectExtended = { width: 0, height: 0, left: 0, right: 0, top: 0, bottom: 0 }, -) { - if (isWindow(element)) { - result.width = document.documentElement.clientWidth; - result.height = document.documentElement.clientHeight; - result.left = 0; - result.right = result.width; - result.top = 0; - result.bottom = result.height; - } else { - const { left, top } = element.getBoundingClientRect(); - const borderLeft = element.clientLeft || getStyleAsFloat(element, 'border-left-width'); - const borderTop = element.clientTop || getStyleAsFloat(element, 'border-top-width'); - result.width = element.clientWidth; - result.height = element.clientHeight; - result.left = left + borderLeft; - result.right = result.left + result.width; - result.top = top + borderTop; - result.bottom = result.top + result.height; - } - - return result; -} diff --git a/src/utils/getDistanceBetweenRects.ts b/src/utils/getDistanceBetweenRects.ts deleted file mode 100644 index f8fecbf..0000000 --- a/src/utils/getDistanceBetweenRects.ts +++ /dev/null @@ -1,61 +0,0 @@ -import { isRectsOverlapping } from './isRectsOverlapping'; - -import { RectExtended } from '../types'; - -function distanceBetweenPoints(x1: number, y1: number, x2: number, y2: number) { - return Math.sqrt(Math.pow(x2 - x1, 2) + Math.pow(y2 - y1, 2)); -} - -/** - * Calculate shortest distance between two rectangles. Returns zero if the rects - * are overlapping. - */ -export function getDistanceBetweenRects(a: RectExtended, b: RectExtended) { - if (isRectsOverlapping(a, b)) return 0; - - // Check left side zones. - if (a.right < b.left) { - // Left-top corner. - if (a.bottom < b.top) { - // Distance between a right-bottom point and b left-top point. - return distanceBetweenPoints(a.right, a.bottom, b.left, b.top); - } - // Left-bottom corner. - else if (a.top > b.bottom) { - // Distance between a right-top point and b left-bottom point. - return distanceBetweenPoints(a.right, a.top, b.left, b.bottom); - } - // Left side. - else { - return b.left - a.right; - } - } - // Check right side zones. - else if (a.left > b.right) { - // Right-top corner. - if (a.bottom < b.top) { - // Distance between a left-bottom point and b right-top point. - return distanceBetweenPoints(a.left, a.bottom, b.right, b.top); - } - // Right-bottom corner. - else if (a.top > b.bottom) { - // Distance between a left-top point and b right-bottom point. - return distanceBetweenPoints(a.left, a.top, b.right, b.bottom); - } - // Right side. - else { - return a.left - b.right; - } - } - // Check top and bottom sides. - else { - // Top side. - if (a.bottom < b.top) { - return b.top - a.bottom; - } - // Bottom side. - else { - return a.top - b.bottom; - } - } -} diff --git a/src/utils/getIntersectionArea.ts b/src/utils/getIntersectionArea.ts deleted file mode 100644 index e74c3c2..0000000 --- a/src/utils/getIntersectionArea.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { isRectsOverlapping } from './isRectsOverlapping'; - -import { RectExtended } from '../types'; - -/** - * Calculate intersection area between two rectangle. - */ -export function getIntersectionArea(a: RectExtended, b: RectExtended) { - if (!isRectsOverlapping(a, b)) return 0; - const width = Math.min(a.right, b.right) - Math.max(a.left, b.left); - const height = Math.min(a.bottom, b.bottom) - Math.max(a.top, b.top); - return width * height; -} diff --git a/src/utils/getOffset.ts b/src/utils/getOffset.ts deleted file mode 100644 index 1849b1a..0000000 --- a/src/utils/getOffset.ts +++ /dev/null @@ -1,38 +0,0 @@ -import { getStyleAsFloat } from './getStyleAsFloat'; - -/** - * Returns the element's document offset, which in practice means the vertical - * and horizontal distance between the element's northwest corner and the - * document's northwest corner. Note that this function always returns the same - * object so be sure to read the data from it instead using it as a reference. - */ -export function getOffset( - element: HTMLElement | Document | Window, - result: { left: number; top: number } = { left: 0, top: 0 }, -) { - // Set up return data. - result.left = 0; - result.top = 0; - - // Document's offsets are always 0. - if (element === document) return result; - - // Add viewport scroll left/top to the respective offsets. - result.left = window.pageXOffset || 0; - result.top = window.pageYOffset || 0; - - // Window's offsets are the viewport scroll left/top values. - if ('self' in element && element.self === window.self) return result; - - // Add element's client rects to the offsets. - const { left, top } = (element as HTMLElement).getBoundingClientRect(); - result.left += left; - result.top += top; - - // Include element's borders into the offset since we care about the offset - // fromt the document to the element's content area (including padding). - result.left += getStyleAsFloat(element as HTMLElement, 'border-left-width'); - result.top += getStyleAsFloat(element as HTMLElement, 'border-top-width'); - - return result; -} diff --git a/src/utils/getScrollLeft.ts b/src/utils/getScrollLeft.ts deleted file mode 100644 index 32adf4a..0000000 --- a/src/utils/getScrollLeft.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { isWindow } from './isWindow'; - -export function getScrollLeft(element: HTMLElement | Window) { - return isWindow(element) ? element.pageXOffset : element.scrollLeft; -} diff --git a/src/utils/getScrollTop.ts b/src/utils/getScrollTop.ts deleted file mode 100644 index aa15cf1..0000000 --- a/src/utils/getScrollTop.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { isWindow } from './isWindow'; - -export function getScrollTop(element: HTMLElement | Window) { - return isWindow(element) ? element.pageYOffset : element.scrollTop; -} diff --git a/src/utils/getScrollableAncestors.ts b/src/utils/getScrollableAncestors.ts deleted file mode 100644 index b51079b..0000000 --- a/src/utils/getScrollableAncestors.ts +++ /dev/null @@ -1,37 +0,0 @@ -import { isScrollable } from './isScrollable'; - -/** - * Compute the element's scrollable ancestor elements. - */ -export function getScrollableAncestors( - element: HTMLElement | Document | null, - result: (HTMLElement | Window)[] = [], -) { - let parent: HTMLElement | Document | ShadowRoot | null = null; - - // Find scrollable ancestors. - while (element) { - // Get the parent node of the current element. In case the element is in - // the shadow DOM the parent might also be a ShadowRoot object. - parent = element.parentNode as HTMLElement | Document | ShadowRoot | null; - - // Make sure parent exists and it's not document. - if (!parent || parent instanceof Document) { - break; - } - - // If element's parent is ShadowRoot let's get the host element as the - // next element. Otherwise let's get the element's parent node normally. - element = 'host' in parent ? (parent.host as HTMLElement) : parent; - - // If element is scrollable let's add it to the scrollable list. - if (isScrollable(element)) { - result.push(element); - } - } - - // Always push window to the results (as last scrollable element). - result.push(window); - - return result; -} diff --git a/src/utils/getStyle.ts b/src/utils/getStyle.ts deleted file mode 100644 index f5e8719..0000000 --- a/src/utils/getStyle.ts +++ /dev/null @@ -1,16 +0,0 @@ -export const STYLES_CACHE: WeakMap = new WeakMap(); - -/** - * Returns the computed value of an element's style property as a string. - */ -export function getStyle(element: HTMLElement, prop: string) { - if (!prop) return ''; - - let styleDeclaration: CSSStyleDeclaration | undefined = STYLES_CACHE.get(element); - if (!styleDeclaration) { - styleDeclaration = window.getComputedStyle(element, null); - STYLES_CACHE.set(element, styleDeclaration); - } - - return styleDeclaration.getPropertyValue(prop); -} diff --git a/src/utils/getStyleAsFloat.ts b/src/utils/getStyleAsFloat.ts deleted file mode 100644 index abd1618..0000000 --- a/src/utils/getStyleAsFloat.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { getStyle } from './getStyle'; - -/** - * Returns the computed value of an element's style property transformed into - * a float value. - */ -export function getStyleAsFloat(el: HTMLElement, styleProp: string) { - return parseFloat(getStyle(el, styleProp)) || 0; -} diff --git a/src/utils/is-document.ts b/src/utils/is-document.ts new file mode 100644 index 0000000..d9757d7 --- /dev/null +++ b/src/utils/is-document.ts @@ -0,0 +1,6 @@ +/** + * Check if the current value is a document. + */ +export function isDocument(value: any): value is Document { + return value instanceof Document; +} diff --git a/src/utils/is-intersecting.ts b/src/utils/is-intersecting.ts new file mode 100644 index 0000000..802046c --- /dev/null +++ b/src/utils/is-intersecting.ts @@ -0,0 +1,8 @@ +import { RectExtended } from '../types.js'; + +/** + * Check if two rectangles intersect. + */ +export function isIntersecting(a: RectExtended, b: RectExtended) { + return !(a.right <= b.left || b.right <= a.left || a.bottom <= b.top || b.bottom <= a.top); +} diff --git a/src/utils/is-scrollable.ts b/src/utils/is-scrollable.ts new file mode 100644 index 0000000..0ece34f --- /dev/null +++ b/src/utils/is-scrollable.ts @@ -0,0 +1,11 @@ +import { getStyle } from './get-style.js'; + +const SCROLLABLE_OVERFLOWS = new Set(['auto', 'scroll', 'overlay']); + +/** + * Check if element is scrollable. + */ +export function isScrollable(element: Element) { + const style = getStyle(element); + return !!(SCROLLABLE_OVERFLOWS.has(style.overflowY) || SCROLLABLE_OVERFLOWS.has(style.overflowX)); +} diff --git a/src/utils/is-window.ts b/src/utils/is-window.ts new file mode 100644 index 0000000..f18607f --- /dev/null +++ b/src/utils/is-window.ts @@ -0,0 +1,6 @@ +/** + * Check if the current value is a window. + */ +export function isWindow(value: any): value is Window { + return value instanceof Window; +} diff --git a/src/utils/isContainingBlock.ts b/src/utils/isContainingBlock.ts deleted file mode 100644 index 4e3a7c0..0000000 --- a/src/utils/isContainingBlock.ts +++ /dev/null @@ -1,84 +0,0 @@ -import { getStyle } from './getStyle'; - -import { IS_SAFARI } from '../constants'; - -/** - * Check is the provided is a containing block for an _absolute_ positioned - * element. - */ -export function isContainingBlock(element: HTMLElement) { - // The first thing to check is the element's position. If it's anything else - // than "static" the element is a containing block. - if (getStyle(element, 'position') !== 'static') { - return true; - } - - // The next thing to check is the display property. If it's "inline" or "none" - // we can safely assume that the element is not a containing block. All the - // following checks depend on this check. - const display = getStyle(element, 'display'); - if (display === 'inline' || display === 'none') { - return false; - } - - // If the element is transformed it is a containing block. - const transform = getStyle(element, 'transform'); - if (transform && transform !== 'none') { - return true; - } - - // If the element has perspective it is a containing block. - const perspective = getStyle(element, 'perspective'); - if (perspective && perspective !== 'none') { - return true; - } - - // If the element's content-visibility is "auto" or "hidden" it is a - // containing block. - // Note: this feature does not exist on Safari yet, so this check might - // break when they start supporting it (depending on how they implement it). - const contentVisibility = getStyle(element, 'content-visibility'); - if (contentVisibility && (contentVisibility === 'auto' || contentVisibility === 'hidden')) { - return true; - } - - // If the element's contain style includes "paint" or "layout" it is a - // containing block. Note that the values "strict" and "content" are - // shorthands which include either "paint" or "layout". - // Note: this feature does not exist on Safari yet, so this check might - // break when they start supporting it (depending on how they implement it). - const contain = getStyle(element, 'contain'); - if ( - contain && - (contain === 'strict' || - contain === 'content' || - contain.indexOf('paint') > -1 || - contain.indexOf('layout') > -1) - ) { - return true; - } - - // The following checks are not needed for Safari. - // Note: it would be better to do actual feature tests instead of browser - // sniffing, but that's quite a lot of extra code which I'd prefer not to - // include at the moment, so let's do it quick and dirty. - if (!IS_SAFARI) { - // If the element has a CSS filter applied it is a containing block. - const filter = getStyle(element, 'filter'); - if (filter && filter !== 'none') { - return true; - } - - // If the element's will-change style has "transform" or "perspective" it is - // a containing block. - const willChange = getStyle(element, 'will-change'); - if ( - willChange && - (willChange.indexOf('transform') > -1 || willChange.indexOf('perspective') > -1) - ) { - return true; - } - } - - return false; -} diff --git a/src/utils/isRectsOverlapping.ts b/src/utils/isRectsOverlapping.ts deleted file mode 100644 index 5670cc3..0000000 --- a/src/utils/isRectsOverlapping.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { RectExtended } from '../types'; - -/** - * Check if two rectangles are overlapping. - */ -export function isRectsOverlapping(a: RectExtended, b: RectExtended) { - return !(a.right <= b.left || b.right <= a.left || a.bottom <= b.top || b.bottom <= a.top); -} diff --git a/src/utils/isScrollable.ts b/src/utils/isScrollable.ts deleted file mode 100644 index 2ada143..0000000 --- a/src/utils/isScrollable.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { getStyle } from './getStyle'; - -const SCROLLABLE_OVERFLOWS = new Set(['auto', 'scroll', 'overlay']); - -/** - * Check if element is scrollable. - */ -export function isScrollable(element: HTMLElement) { - return !!( - SCROLLABLE_OVERFLOWS.has(getStyle(element, 'overflow')) || - SCROLLABLE_OVERFLOWS.has(getStyle(element, 'overflow-x')) || - SCROLLABLE_OVERFLOWS.has(getStyle(element, 'overflow-y')) - ); -} diff --git a/src/utils/isWindow.ts b/src/utils/isWindow.ts deleted file mode 100644 index b600340..0000000 --- a/src/utils/isWindow.ts +++ /dev/null @@ -1,3 +0,0 @@ -export function isWindow(value: any): value is Window { - return value === window; -} diff --git a/src/utils/parseListenerOptions.ts b/src/utils/parse-listener-options.ts similarity index 70% rename from src/utils/parseListenerOptions.ts rename to src/utils/parse-listener-options.ts index 8a1b631..929cca1 100644 --- a/src/utils/parseListenerOptions.ts +++ b/src/utils/parse-listener-options.ts @@ -1,6 +1,6 @@ -import { HAS_PASSIVE_EVENTS } from '../constants'; +import { HAS_PASSIVE_EVENTS } from '../constants.js'; -import { ListenerOptions } from '../types'; +import { ListenerOptions } from '../types.js'; export function parseListenerOptions(options: ListenerOptions = {}): ListenerOptions { const { capture = true, passive = true } = options; diff --git a/src/utils/parseSourceEvents.ts b/src/utils/parse-source-events.ts similarity index 89% rename from src/utils/parseSourceEvents.ts rename to src/utils/parse-source-events.ts index 4064553..5b26053 100644 --- a/src/utils/parseSourceEvents.ts +++ b/src/utils/parse-source-events.ts @@ -1,4 +1,4 @@ -import { HAS_POINTER_EVENTS, HAS_TOUCH_EVENTS } from '../constants'; +import { HAS_POINTER_EVENTS, HAS_TOUCH_EVENTS } from '../constants.js'; export function parseSourceEvents( sourceEvents: 'pointer' | 'touch' | 'mouse' | 'auto' | undefined, @@ -7,7 +7,7 @@ export function parseSourceEvents( ? HAS_POINTER_EVENTS ? 'pointer' : HAS_TOUCH_EVENTS - ? 'touch' - : 'mouse' + ? 'touch' + : 'mouse' : sourceEvents; } diff --git a/src/utils/preventDefault.ts b/src/utils/prevent-default.ts similarity index 100% rename from src/utils/preventDefault.ts rename to src/utils/prevent-default.ts diff --git a/tests/dist/tests.global.js b/tests/dist/tests.global.js new file mode 100644 index 0000000..4140a10 --- /dev/null +++ b/tests/dist/tests.global.js @@ -0,0 +1,7916 @@ +"use strict"; +(() => { + var __create = Object.create; + var __defProp = Object.defineProperty; + var __getOwnPropDesc = Object.getOwnPropertyDescriptor; + var __getOwnPropNames = Object.getOwnPropertyNames; + var __getProtoOf = Object.getPrototypeOf; + var __hasOwnProp = Object.prototype.hasOwnProperty; + var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, { + get: (a, b) => (typeof require !== "undefined" ? require : a)[b] + }) : x)(function(x) { + if (typeof require !== "undefined") + return require.apply(this, arguments); + throw Error('Dynamic require of "' + x + '" is not supported'); + }); + var __esm = (fn, res) => function __init() { + return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res; + }; + var __commonJS = (cb, mod) => function __require2() { + return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; + }; + var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); + }; + var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; + }; + var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod + )); + var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + + // node_modules/assertion-error/index.js + var require_assertion_error = __commonJS({ + "node_modules/assertion-error/index.js"(exports, module) { + "use strict"; + function exclude() { + var excludes = [].slice.call(arguments); + function excludeProps(res, obj) { + Object.keys(obj).forEach(function(key) { + if (!~excludes.indexOf(key)) + res[key] = obj[key]; + }); + } + return function extendExclude() { + var args = [].slice.call(arguments), i = 0, res = {}; + for (; i < args.length; i++) { + excludeProps(res, args[i]); + } + return res; + }; + } + module.exports = AssertionError2; + function AssertionError2(message, _props, ssf) { + var extend = exclude("name", "message", "stack", "constructor", "toJSON"), props = extend(_props || {}); + this.message = message || "Unspecified AssertionError"; + this.showDiff = false; + for (var key in props) { + this[key] = props[key]; + } + ssf = ssf || AssertionError2; + if (Error.captureStackTrace) { + Error.captureStackTrace(this, ssf); + } else { + try { + throw new Error(); + } catch (e) { + this.stack = e.stack; + } + } + } + AssertionError2.prototype = Object.create(Error.prototype); + AssertionError2.prototype.name = "AssertionError"; + AssertionError2.prototype.constructor = AssertionError2; + AssertionError2.prototype.toJSON = function(stack) { + var extend = exclude("constructor", "toJSON", "stack"), props = extend({ name: this.name }, this); + if (false !== stack && this.stack) { + props.stack = this.stack; + } + return props; + }; + } + }); + + // node_modules/pathval/index.js + var require_pathval = __commonJS({ + "node_modules/pathval/index.js"(exports, module) { + "use strict"; + function hasProperty(obj, name) { + if (typeof obj === "undefined" || obj === null) { + return false; + } + return name in Object(obj); + } + function parsePath(path) { + var str = path.replace(/([^\\])\[/g, "$1.["); + var parts = str.match(/(\\\.|[^.]+?)+/g); + return parts.map(function mapMatches(value) { + if (value === "constructor" || value === "__proto__" || value === "prototype") { + return {}; + } + var regexp = /^\[(\d+)\]$/; + var mArr = regexp.exec(value); + var parsed = null; + if (mArr) { + parsed = { i: parseFloat(mArr[1]) }; + } else { + parsed = { p: value.replace(/\\([.[\]])/g, "$1") }; + } + return parsed; + }); + } + function internalGetPathValue(obj, parsed, pathDepth) { + var temporaryValue = obj; + var res = null; + pathDepth = typeof pathDepth === "undefined" ? parsed.length : pathDepth; + for (var i = 0; i < pathDepth; i++) { + var part = parsed[i]; + if (temporaryValue) { + if (typeof part.p === "undefined") { + temporaryValue = temporaryValue[part.i]; + } else { + temporaryValue = temporaryValue[part.p]; + } + if (i === pathDepth - 1) { + res = temporaryValue; + } + } + } + return res; + } + function internalSetPathValue(obj, val, parsed) { + var tempObj = obj; + var pathDepth = parsed.length; + var part = null; + for (var i = 0; i < pathDepth; i++) { + var propName = null; + var propVal = null; + part = parsed[i]; + if (i === pathDepth - 1) { + propName = typeof part.p === "undefined" ? part.i : part.p; + tempObj[propName] = val; + } else if (typeof part.p !== "undefined" && tempObj[part.p]) { + tempObj = tempObj[part.p]; + } else if (typeof part.i !== "undefined" && tempObj[part.i]) { + tempObj = tempObj[part.i]; + } else { + var next = parsed[i + 1]; + propName = typeof part.p === "undefined" ? part.i : part.p; + propVal = typeof next.p === "undefined" ? [] : {}; + tempObj[propName] = propVal; + tempObj = tempObj[propName]; + } + } + } + function getPathInfo(obj, path) { + var parsed = parsePath(path); + var last = parsed[parsed.length - 1]; + var info = { + parent: parsed.length > 1 ? internalGetPathValue(obj, parsed, parsed.length - 1) : obj, + name: last.p || last.i, + value: internalGetPathValue(obj, parsed) + }; + info.exists = hasProperty(info.parent, info.name); + return info; + } + function getPathValue(obj, path) { + var info = getPathInfo(obj, path); + return info.value; + } + function setPathValue(obj, path, val) { + var parsed = parsePath(path); + internalSetPathValue(obj, val, parsed); + return obj; + } + module.exports = { + hasProperty, + getPathInfo, + getPathValue, + setPathValue + }; + } + }); + + // node_modules/chai/lib/chai/utils/flag.js + var require_flag = __commonJS({ + "node_modules/chai/lib/chai/utils/flag.js"(exports, module) { + "use strict"; + module.exports = function flag(obj, key, value) { + var flags = obj.__flags || (obj.__flags = /* @__PURE__ */ Object.create(null)); + if (arguments.length === 3) { + flags[key] = value; + } else { + return flags[key]; + } + }; + } + }); + + // node_modules/chai/lib/chai/utils/test.js + var require_test = __commonJS({ + "node_modules/chai/lib/chai/utils/test.js"(exports, module) { + "use strict"; + var flag = require_flag(); + module.exports = function test(obj, args) { + var negate = flag(obj, "negate"), expr = args[0]; + return negate ? !expr : expr; + }; + } + }); + + // node_modules/type-detect/type-detect.js + var require_type_detect = __commonJS({ + "node_modules/type-detect/type-detect.js"(exports, module) { + "use strict"; + (function(global2, factory) { + typeof exports === "object" && typeof module !== "undefined" ? module.exports = factory() : typeof define === "function" && define.amd ? define(factory) : global2.typeDetect = factory(); + })(exports, function() { + "use strict"; + var promiseExists = typeof Promise === "function"; + var globalObject = typeof self === "object" ? self : global; + var symbolExists = typeof Symbol !== "undefined"; + var mapExists = typeof Map !== "undefined"; + var setExists = typeof Set !== "undefined"; + var weakMapExists = typeof WeakMap !== "undefined"; + var weakSetExists = typeof WeakSet !== "undefined"; + var dataViewExists = typeof DataView !== "undefined"; + var symbolIteratorExists = symbolExists && typeof Symbol.iterator !== "undefined"; + var symbolToStringTagExists = symbolExists && typeof Symbol.toStringTag !== "undefined"; + var setEntriesExists = setExists && typeof Set.prototype.entries === "function"; + var mapEntriesExists = mapExists && typeof Map.prototype.entries === "function"; + var setIteratorPrototype = setEntriesExists && Object.getPrototypeOf((/* @__PURE__ */ new Set()).entries()); + var mapIteratorPrototype = mapEntriesExists && Object.getPrototypeOf((/* @__PURE__ */ new Map()).entries()); + var arrayIteratorExists = symbolIteratorExists && typeof Array.prototype[Symbol.iterator] === "function"; + var arrayIteratorPrototype = arrayIteratorExists && Object.getPrototypeOf([][Symbol.iterator]()); + var stringIteratorExists = symbolIteratorExists && typeof String.prototype[Symbol.iterator] === "function"; + var stringIteratorPrototype = stringIteratorExists && Object.getPrototypeOf(""[Symbol.iterator]()); + var toStringLeftSliceLength = 8; + var toStringRightSliceLength = -1; + function typeDetect(obj) { + var typeofObj = typeof obj; + if (typeofObj !== "object") { + return typeofObj; + } + if (obj === null) { + return "null"; + } + if (obj === globalObject) { + return "global"; + } + if (Array.isArray(obj) && (symbolToStringTagExists === false || !(Symbol.toStringTag in obj))) { + return "Array"; + } + if (typeof window === "object" && window !== null) { + if (typeof window.location === "object" && obj === window.location) { + return "Location"; + } + if (typeof window.document === "object" && obj === window.document) { + return "Document"; + } + if (typeof window.navigator === "object") { + if (typeof window.navigator.mimeTypes === "object" && obj === window.navigator.mimeTypes) { + return "MimeTypeArray"; + } + if (typeof window.navigator.plugins === "object" && obj === window.navigator.plugins) { + return "PluginArray"; + } + } + if ((typeof window.HTMLElement === "function" || typeof window.HTMLElement === "object") && obj instanceof window.HTMLElement) { + if (obj.tagName === "BLOCKQUOTE") { + return "HTMLQuoteElement"; + } + if (obj.tagName === "TD") { + return "HTMLTableDataCellElement"; + } + if (obj.tagName === "TH") { + return "HTMLTableHeaderCellElement"; + } + } + } + var stringTag = symbolToStringTagExists && obj[Symbol.toStringTag]; + if (typeof stringTag === "string") { + return stringTag; + } + var objPrototype = Object.getPrototypeOf(obj); + if (objPrototype === RegExp.prototype) { + return "RegExp"; + } + if (objPrototype === Date.prototype) { + return "Date"; + } + if (promiseExists && objPrototype === Promise.prototype) { + return "Promise"; + } + if (setExists && objPrototype === Set.prototype) { + return "Set"; + } + if (mapExists && objPrototype === Map.prototype) { + return "Map"; + } + if (weakSetExists && objPrototype === WeakSet.prototype) { + return "WeakSet"; + } + if (weakMapExists && objPrototype === WeakMap.prototype) { + return "WeakMap"; + } + if (dataViewExists && objPrototype === DataView.prototype) { + return "DataView"; + } + if (mapExists && objPrototype === mapIteratorPrototype) { + return "Map Iterator"; + } + if (setExists && objPrototype === setIteratorPrototype) { + return "Set Iterator"; + } + if (arrayIteratorExists && objPrototype === arrayIteratorPrototype) { + return "Array Iterator"; + } + if (stringIteratorExists && objPrototype === stringIteratorPrototype) { + return "String Iterator"; + } + if (objPrototype === null) { + return "Object"; + } + return Object.prototype.toString.call(obj).slice(toStringLeftSliceLength, toStringRightSliceLength); + } + return typeDetect; + }); + } + }); + + // node_modules/chai/lib/chai/utils/expectTypes.js + var require_expectTypes = __commonJS({ + "node_modules/chai/lib/chai/utils/expectTypes.js"(exports, module) { + "use strict"; + var AssertionError2 = require_assertion_error(); + var flag = require_flag(); + var type = require_type_detect(); + module.exports = function expectTypes(obj, types) { + var flagMsg = flag(obj, "message"); + var ssfi = flag(obj, "ssfi"); + flagMsg = flagMsg ? flagMsg + ": " : ""; + obj = flag(obj, "object"); + types = types.map(function(t) { + return t.toLowerCase(); + }); + types.sort(); + var str = types.map(function(t, index) { + var art = ~["a", "e", "i", "o", "u"].indexOf(t.charAt(0)) ? "an" : "a"; + var or = types.length > 1 && index === types.length - 1 ? "or " : ""; + return or + art + " " + t; + }).join(", "); + var objType = type(obj).toLowerCase(); + if (!types.some(function(expected) { + return objType === expected; + })) { + throw new AssertionError2( + flagMsg + "object tested must be " + str + ", but " + objType + " given", + void 0, + ssfi + ); + } + }; + } + }); + + // node_modules/chai/lib/chai/utils/getActual.js + var require_getActual = __commonJS({ + "node_modules/chai/lib/chai/utils/getActual.js"(exports, module) { + "use strict"; + module.exports = function getActual(obj, args) { + return args.length > 4 ? args[4] : obj._obj; + }; + } + }); + + // node_modules/get-func-name/index.js + var require_get_func_name = __commonJS({ + "node_modules/get-func-name/index.js"(exports, module) { + "use strict"; + var toString2 = Function.prototype.toString; + var functionNameMatch = /\s*function(?:\s|\s*\/\*[^(?:*\/)]+\*\/\s*)*([^\s\(\/]+)/; + var maxFunctionSourceLength = 512; + function getFuncName3(aFunc) { + if (typeof aFunc !== "function") { + return null; + } + var name = ""; + if (typeof Function.prototype.name === "undefined" && typeof aFunc.name === "undefined") { + var functionSource = toString2.call(aFunc); + if (functionSource.indexOf("(") > maxFunctionSourceLength) { + return name; + } + var match = functionSource.match(functionNameMatch); + if (match) { + name = match[1]; + } + } else { + name = aFunc.name; + } + return name; + } + module.exports = getFuncName3; + } + }); + + // node_modules/loupe/lib/helpers.js + function colorise(value, styleType) { + const color = ansiColors[styles[styleType]] || ansiColors[styleType]; + if (!color) { + return String(value); + } + return `\x1B[${color[0]}m${String(value)}\x1B[${color[1]}m`; + } + function normaliseOptions({ + showHidden = false, + depth = 2, + colors = false, + customInspect = true, + showProxy = false, + maxArrayLength = Infinity, + breakLength = Infinity, + seen = [], + // eslint-disable-next-line no-shadow + truncate: truncate2 = Infinity, + stylize = String + } = {}) { + const options = { + showHidden: Boolean(showHidden), + depth: Number(depth), + colors: Boolean(colors), + customInspect: Boolean(customInspect), + showProxy: Boolean(showProxy), + maxArrayLength: Number(maxArrayLength), + breakLength: Number(breakLength), + truncate: Number(truncate2), + seen, + stylize + }; + if (options.colors) { + options.stylize = colorise; + } + return options; + } + function truncate(string, length, tail = truncator) { + string = String(string); + const tailLength = tail.length; + const stringLength = string.length; + if (tailLength > length && stringLength > tailLength) { + return tail; + } + if (stringLength > length && stringLength > tailLength) { + return `${string.slice(0, length - tailLength)}${tail}`; + } + return string; + } + function inspectList(list, options, inspectItem, separator = ", ") { + inspectItem = inspectItem || options.inspect; + const size = list.length; + if (size === 0) + return ""; + const originalLength = options.truncate; + let output = ""; + let peek = ""; + let truncated = ""; + for (let i = 0; i < size; i += 1) { + const last = i + 1 === list.length; + const secondToLast = i + 2 === list.length; + truncated = `${truncator}(${list.length - i})`; + const value = list[i]; + options.truncate = originalLength - output.length - (last ? 0 : separator.length); + const string = peek || inspectItem(value, options) + (last ? "" : separator); + const nextLength = output.length + string.length; + const truncatedLength = nextLength + truncated.length; + if (last && nextLength > originalLength && output.length + truncated.length <= originalLength) { + break; + } + if (!last && !secondToLast && truncatedLength > originalLength) { + break; + } + peek = last ? "" : inspectItem(list[i + 1], options) + (secondToLast ? "" : separator); + if (!last && secondToLast && truncatedLength > originalLength && nextLength + peek.length > originalLength) { + break; + } + output += string; + if (!last && !secondToLast && nextLength + peek.length >= originalLength) { + truncated = `${truncator}(${list.length - i - 1})`; + break; + } + truncated = ""; + } + return `${output}${truncated}`; + } + function quoteComplexKey(key) { + if (key.match(/^[a-zA-Z_][a-zA-Z_0-9]*$/)) { + return key; + } + return JSON.stringify(key).replace(/'/g, "\\'").replace(/\\"/g, '"').replace(/(^"|"$)/g, "'"); + } + function inspectProperty([key, value], options) { + options.truncate -= 2; + if (typeof key === "string") { + key = quoteComplexKey(key); + } else if (typeof key !== "number") { + key = `[${options.inspect(key, options)}]`; + } + options.truncate -= key.length; + value = options.inspect(value, options); + return `${key}: ${value}`; + } + var ansiColors, styles, truncator; + var init_helpers = __esm({ + "node_modules/loupe/lib/helpers.js"() { + "use strict"; + ansiColors = { + bold: ["1", "22"], + dim: ["2", "22"], + italic: ["3", "23"], + underline: ["4", "24"], + // 5 & 6 are blinking + inverse: ["7", "27"], + hidden: ["8", "28"], + strike: ["9", "29"], + // 10-20 are fonts + // 21-29 are resets for 1-9 + black: ["30", "39"], + red: ["31", "39"], + green: ["32", "39"], + yellow: ["33", "39"], + blue: ["34", "39"], + magenta: ["35", "39"], + cyan: ["36", "39"], + white: ["37", "39"], + brightblack: ["30;1", "39"], + brightred: ["31;1", "39"], + brightgreen: ["32;1", "39"], + brightyellow: ["33;1", "39"], + brightblue: ["34;1", "39"], + brightmagenta: ["35;1", "39"], + brightcyan: ["36;1", "39"], + brightwhite: ["37;1", "39"], + grey: ["90", "39"] + }; + styles = { + special: "cyan", + number: "yellow", + bigint: "yellow", + boolean: "yellow", + undefined: "grey", + null: "bold", + string: "green", + symbol: "green", + date: "magenta", + regexp: "red" + }; + truncator = "\u2026"; + } + }); + + // node_modules/loupe/lib/array.js + function inspectArray(array, options) { + const nonIndexProperties = Object.keys(array).slice(array.length); + if (!array.length && !nonIndexProperties.length) + return "[]"; + options.truncate -= 4; + const listContents = inspectList(array, options); + options.truncate -= listContents.length; + let propertyContents = ""; + if (nonIndexProperties.length) { + propertyContents = inspectList( + nonIndexProperties.map((key) => [key, array[key]]), + options, + inspectProperty + ); + } + return `[ ${listContents}${propertyContents ? `, ${propertyContents}` : ""} ]`; + } + var init_array = __esm({ + "node_modules/loupe/lib/array.js"() { + "use strict"; + init_helpers(); + } + }); + + // node_modules/loupe/lib/typedarray.js + function inspectTypedArray(array, options) { + const name = getArrayName(array); + options.truncate -= name.length + 4; + const nonIndexProperties = Object.keys(array).slice(array.length); + if (!array.length && !nonIndexProperties.length) + return `${name}[]`; + let output = ""; + for (let i = 0; i < array.length; i++) { + const string = `${options.stylize(truncate(array[i], options.truncate), "number")}${i === array.length - 1 ? "" : ", "}`; + options.truncate -= string.length; + if (array[i] !== array.length && options.truncate <= 3) { + output += `${truncator}(${array.length - array[i] + 1})`; + break; + } + output += string; + } + let propertyContents = ""; + if (nonIndexProperties.length) { + propertyContents = inspectList( + nonIndexProperties.map((key) => [key, array[key]]), + options, + inspectProperty + ); + } + return `${name}[ ${output}${propertyContents ? `, ${propertyContents}` : ""} ]`; + } + var import_get_func_name, getArrayName; + var init_typedarray = __esm({ + "node_modules/loupe/lib/typedarray.js"() { + "use strict"; + import_get_func_name = __toESM(require_get_func_name()); + init_helpers(); + getArrayName = (array) => { + if (typeof Buffer === "function" && array instanceof Buffer) { + return "Buffer"; + } + if (array[Symbol.toStringTag]) { + return array[Symbol.toStringTag]; + } + return (0, import_get_func_name.default)(array.constructor); + }; + } + }); + + // node_modules/loupe/lib/date.js + function inspectDate(dateObject, options) { + const stringRepresentation = dateObject.toJSON(); + if (stringRepresentation === null) { + return "Invalid Date"; + } + const split = stringRepresentation.split("T"); + const date = split[0]; + return options.stylize(`${date}T${truncate(split[1], options.truncate - date.length - 1)}`, "date"); + } + var init_date = __esm({ + "node_modules/loupe/lib/date.js"() { + "use strict"; + init_helpers(); + } + }); + + // node_modules/loupe/lib/function.js + function inspectFunction(func, options) { + const name = (0, import_get_func_name2.default)(func); + if (!name) { + return options.stylize("[Function]", "special"); + } + return options.stylize(`[Function ${truncate(name, options.truncate - 11)}]`, "special"); + } + var import_get_func_name2; + var init_function = __esm({ + "node_modules/loupe/lib/function.js"() { + "use strict"; + import_get_func_name2 = __toESM(require_get_func_name()); + init_helpers(); + } + }); + + // node_modules/loupe/lib/map.js + function inspectMapEntry([key, value], options) { + options.truncate -= 4; + key = options.inspect(key, options); + options.truncate -= key.length; + value = options.inspect(value, options); + return `${key} => ${value}`; + } + function mapToEntries(map) { + const entries = []; + map.forEach((value, key) => { + entries.push([key, value]); + }); + return entries; + } + function inspectMap(map, options) { + const size = map.size - 1; + if (size <= 0) { + return "Map{}"; + } + options.truncate -= 7; + return `Map{ ${inspectList(mapToEntries(map), options, inspectMapEntry)} }`; + } + var init_map = __esm({ + "node_modules/loupe/lib/map.js"() { + "use strict"; + init_helpers(); + } + }); + + // node_modules/loupe/lib/number.js + function inspectNumber(number, options) { + if (isNaN(number)) { + return options.stylize("NaN", "number"); + } + if (number === Infinity) { + return options.stylize("Infinity", "number"); + } + if (number === -Infinity) { + return options.stylize("-Infinity", "number"); + } + if (number === 0) { + return options.stylize(1 / number === Infinity ? "+0" : "-0", "number"); + } + return options.stylize(truncate(number, options.truncate), "number"); + } + var isNaN; + var init_number = __esm({ + "node_modules/loupe/lib/number.js"() { + "use strict"; + init_helpers(); + isNaN = Number.isNaN || ((i) => i !== i); + } + }); + + // node_modules/loupe/lib/bigint.js + function inspectBigInt(number, options) { + let nums = truncate(number.toString(), options.truncate - 1); + if (nums !== truncator) + nums += "n"; + return options.stylize(nums, "bigint"); + } + var init_bigint = __esm({ + "node_modules/loupe/lib/bigint.js"() { + "use strict"; + init_helpers(); + } + }); + + // node_modules/loupe/lib/regexp.js + function inspectRegExp(value, options) { + const flags = value.toString().split("/")[2]; + const sourceLength = options.truncate - (2 + flags.length); + const source = value.source; + return options.stylize(`/${truncate(source, sourceLength)}/${flags}`, "regexp"); + } + var init_regexp = __esm({ + "node_modules/loupe/lib/regexp.js"() { + "use strict"; + init_helpers(); + } + }); + + // node_modules/loupe/lib/set.js + function arrayFromSet(set2) { + const values = []; + set2.forEach((value) => { + values.push(value); + }); + return values; + } + function inspectSet(set2, options) { + if (set2.size === 0) + return "Set{}"; + options.truncate -= 7; + return `Set{ ${inspectList(arrayFromSet(set2), options)} }`; + } + var init_set = __esm({ + "node_modules/loupe/lib/set.js"() { + "use strict"; + init_helpers(); + } + }); + + // node_modules/loupe/lib/string.js + function escape(char) { + return escapeCharacters[char] || `\\u${`0000${char.charCodeAt(0).toString(hex)}`.slice(-unicodeLength)}`; + } + function inspectString(string, options) { + if (stringEscapeChars.test(string)) { + string = string.replace(stringEscapeChars, escape); + } + return options.stylize(`'${truncate(string, options.truncate - 2)}'`, "string"); + } + var stringEscapeChars, escapeCharacters, hex, unicodeLength; + var init_string = __esm({ + "node_modules/loupe/lib/string.js"() { + "use strict"; + init_helpers(); + stringEscapeChars = new RegExp( + "['\\u0000-\\u001f\\u007f-\\u009f\\u00ad\\u0600-\\u0604\\u070f\\u17b4\\u17b5\\u200c-\\u200f\\u2028-\\u202f\\u2060-\\u206f\\ufeff\\ufff0-\\uffff]", + "g" + ); + escapeCharacters = { + "\b": "\\b", + " ": "\\t", + "\n": "\\n", + "\f": "\\f", + "\r": "\\r", + "'": "\\'", + "\\": "\\\\" + }; + hex = 16; + unicodeLength = 4; + } + }); + + // node_modules/loupe/lib/symbol.js + function inspectSymbol(value) { + if ("description" in Symbol.prototype) { + return value.description ? `Symbol(${value.description})` : "Symbol()"; + } + return value.toString(); + } + var init_symbol = __esm({ + "node_modules/loupe/lib/symbol.js"() { + "use strict"; + } + }); + + // node_modules/loupe/lib/promise.js + var getPromiseValue, promise_default; + var init_promise = __esm({ + "node_modules/loupe/lib/promise.js"() { + "use strict"; + getPromiseValue = () => "Promise{\u2026}"; + try { + const { getPromiseDetails, kPending, kRejected } = process.binding("util"); + if (Array.isArray(getPromiseDetails(Promise.resolve()))) { + getPromiseValue = (value, options) => { + const [state, innerValue] = getPromiseDetails(value); + if (state === kPending) { + return "Promise{}"; + } + return `Promise${state === kRejected ? "!" : ""}{${options.inspect(innerValue, options)}}`; + }; + } + } catch (notNode) { + } + promise_default = getPromiseValue; + } + }); + + // node_modules/loupe/lib/object.js + function inspectObject(object, options) { + const properties = Object.getOwnPropertyNames(object); + const symbols = Object.getOwnPropertySymbols ? Object.getOwnPropertySymbols(object) : []; + if (properties.length === 0 && symbols.length === 0) { + return "{}"; + } + options.truncate -= 4; + options.seen = options.seen || []; + if (options.seen.indexOf(object) >= 0) { + return "[Circular]"; + } + options.seen.push(object); + const propertyContents = inspectList( + properties.map((key) => [key, object[key]]), + options, + inspectProperty + ); + const symbolContents = inspectList( + symbols.map((key) => [key, object[key]]), + options, + inspectProperty + ); + options.seen.pop(); + let sep = ""; + if (propertyContents && symbolContents) { + sep = ", "; + } + return `{ ${propertyContents}${sep}${symbolContents} }`; + } + var init_object = __esm({ + "node_modules/loupe/lib/object.js"() { + "use strict"; + init_helpers(); + } + }); + + // node_modules/loupe/lib/class.js + function inspectClass(value, options) { + let name = ""; + if (toStringTag && toStringTag in value) { + name = value[toStringTag]; + } + name = name || (0, import_get_func_name3.default)(value.constructor); + if (!name || name === "_class") { + name = ""; + } + options.truncate -= name.length; + return `${name}${inspectObject(value, options)}`; + } + var import_get_func_name3, toStringTag; + var init_class = __esm({ + "node_modules/loupe/lib/class.js"() { + "use strict"; + import_get_func_name3 = __toESM(require_get_func_name()); + init_object(); + toStringTag = typeof Symbol !== "undefined" && Symbol.toStringTag ? Symbol.toStringTag : false; + } + }); + + // node_modules/loupe/lib/arguments.js + function inspectArguments(args, options) { + if (args.length === 0) + return "Arguments[]"; + options.truncate -= 13; + return `Arguments[ ${inspectList(args, options)} ]`; + } + var init_arguments = __esm({ + "node_modules/loupe/lib/arguments.js"() { + "use strict"; + init_helpers(); + } + }); + + // node_modules/loupe/lib/error.js + function inspectObject2(error, options) { + const properties = Object.getOwnPropertyNames(error).filter((key) => errorKeys.indexOf(key) === -1); + const name = error.name; + options.truncate -= name.length; + let message = ""; + if (typeof error.message === "string") { + message = truncate(error.message, options.truncate); + } else { + properties.unshift("message"); + } + message = message ? `: ${message}` : ""; + options.truncate -= message.length + 5; + const propertyContents = inspectList( + properties.map((key) => [key, error[key]]), + options, + inspectProperty + ); + return `${name}${message}${propertyContents ? ` { ${propertyContents} }` : ""}`; + } + var errorKeys; + var init_error = __esm({ + "node_modules/loupe/lib/error.js"() { + "use strict"; + init_helpers(); + errorKeys = [ + "stack", + "line", + "column", + "name", + "message", + "fileName", + "lineNumber", + "columnNumber", + "number", + "description" + ]; + } + }); + + // node_modules/loupe/lib/html.js + function inspectAttribute([key, value], options) { + options.truncate -= 3; + if (!value) { + return `${options.stylize(key, "yellow")}`; + } + return `${options.stylize(key, "yellow")}=${options.stylize(`"${value}"`, "string")}`; + } + function inspectHTMLCollection(collection, options) { + return inspectList(collection, options, inspectHTML, "\n"); + } + function inspectHTML(element, options) { + const properties = element.getAttributeNames(); + const name = element.tagName.toLowerCase(); + const head = options.stylize(`<${name}`, "special"); + const headClose = options.stylize(`>`, "special"); + const tail = options.stylize(``, "special"); + options.truncate -= name.length * 2 + 5; + let propertyContents = ""; + if (properties.length > 0) { + propertyContents += " "; + propertyContents += inspectList( + properties.map((key) => [key, element.getAttribute(key)]), + options, + inspectAttribute, + " " + ); + } + options.truncate -= propertyContents.length; + const truncate2 = options.truncate; + let children = inspectHTMLCollection(element.children, options); + if (children && children.length > truncate2) { + children = `${truncator}(${element.children.length})`; + } + return `${head}${propertyContents}${headClose}${children}${tail}`; + } + var init_html = __esm({ + "node_modules/loupe/lib/html.js"() { + "use strict"; + init_helpers(); + } + }); + + // node_modules/loupe/index.js + var loupe_exports = {}; + __export(loupe_exports, { + custom: () => custom, + default: () => loupe_default, + inspect: () => inspect, + registerConstructor: () => registerConstructor, + registerStringTag: () => registerStringTag + }); + function FakeMap() { + this.key = "chai/loupe__" + Math.random() + Date.now(); + } + function inspect(value, options) { + options = normaliseOptions(options); + options.inspect = inspect; + const { customInspect } = options; + let type = value === null ? "null" : typeof value; + if (type === "object") { + type = toString.call(value).slice(8, -1); + } + if (baseTypesMap[type]) { + return baseTypesMap[type](value, options); + } + if (customInspect && value) { + const output = inspectCustom(value, options, type); + if (output) { + if (typeof output === "string") + return output; + return inspect(output, options); + } + } + const proto = value ? Object.getPrototypeOf(value) : false; + if (proto === Object.prototype || proto === null) { + return inspectObject(value, options); + } + if (value && typeof HTMLElement === "function" && value instanceof HTMLElement) { + return inspectHTML(value, options); + } + if ("constructor" in value) { + if (value.constructor !== Object) { + return inspectClass(value, options); + } + return inspectObject(value, options); + } + if (value === Object(value)) { + return inspectObject(value, options); + } + return options.stylize(String(value), type); + } + function registerConstructor(constructor, inspector) { + if (constructorMap.has(constructor)) { + return false; + } + constructorMap.set(constructor, inspector); + return true; + } + function registerStringTag(stringTag, inspector) { + if (stringTag in stringTagMap) { + return false; + } + stringTagMap[stringTag] = inspector; + return true; + } + var symbolsSupported, chaiInspect, nodeInspect, constructorMap, stringTagMap, baseTypesMap, inspectCustom, toString, custom, loupe_default; + var init_loupe = __esm({ + "node_modules/loupe/index.js"() { + "use strict"; + init_array(); + init_typedarray(); + init_date(); + init_function(); + init_map(); + init_number(); + init_bigint(); + init_regexp(); + init_set(); + init_string(); + init_symbol(); + init_promise(); + init_class(); + init_object(); + init_arguments(); + init_error(); + init_html(); + init_helpers(); + symbolsSupported = typeof Symbol === "function" && typeof Symbol.for === "function"; + chaiInspect = symbolsSupported ? Symbol.for("chai/inspect") : "@@chai/inspect"; + nodeInspect = false; + try { + const nodeUtil = __require("util"); + nodeInspect = nodeUtil.inspect ? nodeUtil.inspect.custom : false; + } catch (noNodeInspect) { + nodeInspect = false; + } + FakeMap.prototype = { + // eslint-disable-next-line object-shorthand + get: function get(key) { + return key[this.key]; + }, + // eslint-disable-next-line object-shorthand + has: function has(key) { + return this.key in key; + }, + // eslint-disable-next-line object-shorthand + set: function set(key, value) { + if (Object.isExtensible(key)) { + Object.defineProperty(key, this.key, { + // eslint-disable-next-line object-shorthand + value, + configurable: true + }); + } + } + }; + constructorMap = new (typeof WeakMap === "function" ? WeakMap : FakeMap)(); + stringTagMap = {}; + baseTypesMap = { + undefined: (value, options) => options.stylize("undefined", "undefined"), + null: (value, options) => options.stylize(null, "null"), + boolean: (value, options) => options.stylize(value, "boolean"), + Boolean: (value, options) => options.stylize(value, "boolean"), + number: inspectNumber, + Number: inspectNumber, + bigint: inspectBigInt, + BigInt: inspectBigInt, + string: inspectString, + String: inspectString, + function: inspectFunction, + Function: inspectFunction, + symbol: inspectSymbol, + // A Symbol polyfill will return `Symbol` not `symbol` from typedetect + Symbol: inspectSymbol, + Array: inspectArray, + Date: inspectDate, + Map: inspectMap, + Set: inspectSet, + RegExp: inspectRegExp, + Promise: promise_default, + // WeakSet, WeakMap are totally opaque to us + WeakSet: (value, options) => options.stylize("WeakSet{\u2026}", "special"), + WeakMap: (value, options) => options.stylize("WeakMap{\u2026}", "special"), + Arguments: inspectArguments, + Int8Array: inspectTypedArray, + Uint8Array: inspectTypedArray, + Uint8ClampedArray: inspectTypedArray, + Int16Array: inspectTypedArray, + Uint16Array: inspectTypedArray, + Int32Array: inspectTypedArray, + Uint32Array: inspectTypedArray, + Float32Array: inspectTypedArray, + Float64Array: inspectTypedArray, + Generator: () => "", + DataView: () => "", + ArrayBuffer: () => "", + Error: inspectObject2, + HTMLCollection: inspectHTMLCollection, + NodeList: inspectHTMLCollection + }; + inspectCustom = (value, options, type) => { + if (chaiInspect in value && typeof value[chaiInspect] === "function") { + return value[chaiInspect](options); + } + if (nodeInspect && nodeInspect in value && typeof value[nodeInspect] === "function") { + return value[nodeInspect](options.depth, options); + } + if ("inspect" in value && typeof value.inspect === "function") { + return value.inspect(options.depth, options); + } + if ("constructor" in value && constructorMap.has(value.constructor)) { + return constructorMap.get(value.constructor)(value, options); + } + if (stringTagMap[type]) { + return stringTagMap[type](value, options); + } + return ""; + }; + toString = Object.prototype.toString; + custom = chaiInspect; + loupe_default = inspect; + } + }); + + // node_modules/chai/lib/chai/config.js + var require_config = __commonJS({ + "node_modules/chai/lib/chai/config.js"(exports, module) { + "use strict"; + module.exports = { + /** + * ### config.includeStack + * + * User configurable property, influences whether stack trace + * is included in Assertion error message. Default of false + * suppresses stack trace in the error message. + * + * chai.config.includeStack = true; // enable stack on error + * + * @param {Boolean} + * @api public + */ + includeStack: false, + /** + * ### config.showDiff + * + * User configurable property, influences whether or not + * the `showDiff` flag should be included in the thrown + * AssertionErrors. `false` will always be `false`; `true` + * will be true when the assertion has requested a diff + * be shown. + * + * @param {Boolean} + * @api public + */ + showDiff: true, + /** + * ### config.truncateThreshold + * + * User configurable property, sets length threshold for actual and + * expected values in assertion errors. If this threshold is exceeded, for + * example for large data structures, the value is replaced with something + * like `[ Array(3) ]` or `{ Object (prop1, prop2) }`. + * + * Set it to zero if you want to disable truncating altogether. + * + * This is especially userful when doing assertions on arrays: having this + * set to a reasonable large value makes the failure messages readily + * inspectable. + * + * chai.config.truncateThreshold = 0; // disable truncating + * + * @param {Number} + * @api public + */ + truncateThreshold: 40, + /** + * ### config.useProxy + * + * User configurable property, defines if chai will use a Proxy to throw + * an error when a non-existent property is read, which protects users + * from typos when using property-based assertions. + * + * Set it to false if you want to disable this feature. + * + * chai.config.useProxy = false; // disable use of Proxy + * + * This feature is automatically disabled regardless of this config value + * in environments that don't support proxies. + * + * @param {Boolean} + * @api public + */ + useProxy: true, + /** + * ### config.proxyExcludedKeys + * + * User configurable property, defines which properties should be ignored + * instead of throwing an error if they do not exist on the assertion. + * This is only applied if the environment Chai is running in supports proxies and + * if the `useProxy` configuration setting is enabled. + * By default, `then` and `inspect` will not throw an error if they do not exist on the + * assertion object because the `.inspect` property is read by `util.inspect` (for example, when + * using `console.log` on the assertion object) and `.then` is necessary for promise type-checking. + * + * // By default these keys will not throw an error if they do not exist on the assertion object + * chai.config.proxyExcludedKeys = ['then', 'inspect']; + * + * @param {Array} + * @api public + */ + proxyExcludedKeys: ["then", "catch", "inspect", "toJSON"] + }; + } + }); + + // node_modules/chai/lib/chai/utils/inspect.js + var require_inspect = __commonJS({ + "node_modules/chai/lib/chai/utils/inspect.js"(exports, module) { + "use strict"; + var getName = require_get_func_name(); + var loupe = (init_loupe(), __toCommonJS(loupe_exports)); + var config2 = require_config(); + module.exports = inspect2; + function inspect2(obj, showHidden, depth, colors) { + var options = { + colors, + depth: typeof depth === "undefined" ? 2 : depth, + showHidden, + truncate: config2.truncateThreshold ? config2.truncateThreshold : Infinity + }; + return loupe.inspect(obj, options); + } + } + }); + + // node_modules/chai/lib/chai/utils/objDisplay.js + var require_objDisplay = __commonJS({ + "node_modules/chai/lib/chai/utils/objDisplay.js"(exports, module) { + "use strict"; + var inspect2 = require_inspect(); + var config2 = require_config(); + module.exports = function objDisplay(obj) { + var str = inspect2(obj), type = Object.prototype.toString.call(obj); + if (config2.truncateThreshold && str.length >= config2.truncateThreshold) { + if (type === "[object Function]") { + return !obj.name || obj.name === "" ? "[Function]" : "[Function: " + obj.name + "]"; + } else if (type === "[object Array]") { + return "[ Array(" + obj.length + ") ]"; + } else if (type === "[object Object]") { + var keys = Object.keys(obj), kstr = keys.length > 2 ? keys.splice(0, 2).join(", ") + ", ..." : keys.join(", "); + return "{ Object (" + kstr + ") }"; + } else { + return str; + } + } else { + return str; + } + }; + } + }); + + // node_modules/chai/lib/chai/utils/getMessage.js + var require_getMessage = __commonJS({ + "node_modules/chai/lib/chai/utils/getMessage.js"(exports, module) { + "use strict"; + var flag = require_flag(); + var getActual = require_getActual(); + var objDisplay = require_objDisplay(); + module.exports = function getMessage(obj, args) { + var negate = flag(obj, "negate"), val = flag(obj, "object"), expected = args[3], actual = getActual(obj, args), msg = negate ? args[2] : args[1], flagMsg = flag(obj, "message"); + if (typeof msg === "function") + msg = msg(); + msg = msg || ""; + msg = msg.replace(/#\{this\}/g, function() { + return objDisplay(val); + }).replace(/#\{act\}/g, function() { + return objDisplay(actual); + }).replace(/#\{exp\}/g, function() { + return objDisplay(expected); + }); + return flagMsg ? flagMsg + ": " + msg : msg; + }; + } + }); + + // node_modules/chai/lib/chai/utils/transferFlags.js + var require_transferFlags = __commonJS({ + "node_modules/chai/lib/chai/utils/transferFlags.js"(exports, module) { + "use strict"; + module.exports = function transferFlags(assertion, object, includeAll) { + var flags = assertion.__flags || (assertion.__flags = /* @__PURE__ */ Object.create(null)); + if (!object.__flags) { + object.__flags = /* @__PURE__ */ Object.create(null); + } + includeAll = arguments.length === 3 ? includeAll : true; + for (var flag in flags) { + if (includeAll || flag !== "object" && flag !== "ssfi" && flag !== "lockSsfi" && flag != "message") { + object.__flags[flag] = flags[flag]; + } + } + }; + } + }); + + // node_modules/deep-eql/index.js + var require_deep_eql = __commonJS({ + "node_modules/deep-eql/index.js"(exports, module) { + "use strict"; + var type = require_type_detect(); + function FakeMap2() { + this._key = "chai/deep-eql__" + Math.random() + Date.now(); + } + FakeMap2.prototype = { + get: function get2(key) { + return key[this._key]; + }, + set: function set2(key, value) { + if (Object.isExtensible(key)) { + Object.defineProperty(key, this._key, { + value, + configurable: true + }); + } + } + }; + var MemoizeMap = typeof WeakMap === "function" ? WeakMap : FakeMap2; + function memoizeCompare(leftHandOperand, rightHandOperand, memoizeMap) { + if (!memoizeMap || isPrimitive(leftHandOperand) || isPrimitive(rightHandOperand)) { + return null; + } + var leftHandMap = memoizeMap.get(leftHandOperand); + if (leftHandMap) { + var result = leftHandMap.get(rightHandOperand); + if (typeof result === "boolean") { + return result; + } + } + return null; + } + function memoizeSet(leftHandOperand, rightHandOperand, memoizeMap, result) { + if (!memoizeMap || isPrimitive(leftHandOperand) || isPrimitive(rightHandOperand)) { + return; + } + var leftHandMap = memoizeMap.get(leftHandOperand); + if (leftHandMap) { + leftHandMap.set(rightHandOperand, result); + } else { + leftHandMap = new MemoizeMap(); + leftHandMap.set(rightHandOperand, result); + memoizeMap.set(leftHandOperand, leftHandMap); + } + } + module.exports = deepEqual; + module.exports.MemoizeMap = MemoizeMap; + function deepEqual(leftHandOperand, rightHandOperand, options) { + if (options && options.comparator) { + return extensiveDeepEqual(leftHandOperand, rightHandOperand, options); + } + var simpleResult = simpleEqual(leftHandOperand, rightHandOperand); + if (simpleResult !== null) { + return simpleResult; + } + return extensiveDeepEqual(leftHandOperand, rightHandOperand, options); + } + function simpleEqual(leftHandOperand, rightHandOperand) { + if (leftHandOperand === rightHandOperand) { + return leftHandOperand !== 0 || 1 / leftHandOperand === 1 / rightHandOperand; + } + if (leftHandOperand !== leftHandOperand && // eslint-disable-line no-self-compare + rightHandOperand !== rightHandOperand) { + return true; + } + if (isPrimitive(leftHandOperand) || isPrimitive(rightHandOperand)) { + return false; + } + return null; + } + function extensiveDeepEqual(leftHandOperand, rightHandOperand, options) { + options = options || {}; + options.memoize = options.memoize === false ? false : options.memoize || new MemoizeMap(); + var comparator = options && options.comparator; + var memoizeResultLeft = memoizeCompare(leftHandOperand, rightHandOperand, options.memoize); + if (memoizeResultLeft !== null) { + return memoizeResultLeft; + } + var memoizeResultRight = memoizeCompare(rightHandOperand, leftHandOperand, options.memoize); + if (memoizeResultRight !== null) { + return memoizeResultRight; + } + if (comparator) { + var comparatorResult = comparator(leftHandOperand, rightHandOperand); + if (comparatorResult === false || comparatorResult === true) { + memoizeSet(leftHandOperand, rightHandOperand, options.memoize, comparatorResult); + return comparatorResult; + } + var simpleResult = simpleEqual(leftHandOperand, rightHandOperand); + if (simpleResult !== null) { + return simpleResult; + } + } + var leftHandType = type(leftHandOperand); + if (leftHandType !== type(rightHandOperand)) { + memoizeSet(leftHandOperand, rightHandOperand, options.memoize, false); + return false; + } + memoizeSet(leftHandOperand, rightHandOperand, options.memoize, true); + var result = extensiveDeepEqualByType(leftHandOperand, rightHandOperand, leftHandType, options); + memoizeSet(leftHandOperand, rightHandOperand, options.memoize, result); + return result; + } + function extensiveDeepEqualByType(leftHandOperand, rightHandOperand, leftHandType, options) { + switch (leftHandType) { + case "String": + case "Number": + case "Boolean": + case "Date": + return deepEqual(leftHandOperand.valueOf(), rightHandOperand.valueOf()); + case "Promise": + case "Symbol": + case "function": + case "WeakMap": + case "WeakSet": + return leftHandOperand === rightHandOperand; + case "Error": + return keysEqual(leftHandOperand, rightHandOperand, ["name", "message", "code"], options); + case "Arguments": + case "Int8Array": + case "Uint8Array": + case "Uint8ClampedArray": + case "Int16Array": + case "Uint16Array": + case "Int32Array": + case "Uint32Array": + case "Float32Array": + case "Float64Array": + case "Array": + return iterableEqual(leftHandOperand, rightHandOperand, options); + case "RegExp": + return regexpEqual(leftHandOperand, rightHandOperand); + case "Generator": + return generatorEqual(leftHandOperand, rightHandOperand, options); + case "DataView": + return iterableEqual(new Uint8Array(leftHandOperand.buffer), new Uint8Array(rightHandOperand.buffer), options); + case "ArrayBuffer": + return iterableEqual(new Uint8Array(leftHandOperand), new Uint8Array(rightHandOperand), options); + case "Set": + return entriesEqual(leftHandOperand, rightHandOperand, options); + case "Map": + return entriesEqual(leftHandOperand, rightHandOperand, options); + case "Temporal.PlainDate": + case "Temporal.PlainTime": + case "Temporal.PlainDateTime": + case "Temporal.Instant": + case "Temporal.ZonedDateTime": + case "Temporal.PlainYearMonth": + case "Temporal.PlainMonthDay": + return leftHandOperand.equals(rightHandOperand); + case "Temporal.Duration": + return leftHandOperand.total("nanoseconds") === rightHandOperand.total("nanoseconds"); + case "Temporal.TimeZone": + case "Temporal.Calendar": + return leftHandOperand.toString() === rightHandOperand.toString(); + default: + return objectEqual(leftHandOperand, rightHandOperand, options); + } + } + function regexpEqual(leftHandOperand, rightHandOperand) { + return leftHandOperand.toString() === rightHandOperand.toString(); + } + function entriesEqual(leftHandOperand, rightHandOperand, options) { + if (leftHandOperand.size !== rightHandOperand.size) { + return false; + } + if (leftHandOperand.size === 0) { + return true; + } + var leftHandItems = []; + var rightHandItems = []; + leftHandOperand.forEach(function gatherEntries(key, value) { + leftHandItems.push([key, value]); + }); + rightHandOperand.forEach(function gatherEntries(key, value) { + rightHandItems.push([key, value]); + }); + return iterableEqual(leftHandItems.sort(), rightHandItems.sort(), options); + } + function iterableEqual(leftHandOperand, rightHandOperand, options) { + var length = leftHandOperand.length; + if (length !== rightHandOperand.length) { + return false; + } + if (length === 0) { + return true; + } + var index = -1; + while (++index < length) { + if (deepEqual(leftHandOperand[index], rightHandOperand[index], options) === false) { + return false; + } + } + return true; + } + function generatorEqual(leftHandOperand, rightHandOperand, options) { + return iterableEqual(getGeneratorEntries(leftHandOperand), getGeneratorEntries(rightHandOperand), options); + } + function hasIteratorFunction(target) { + return typeof Symbol !== "undefined" && typeof target === "object" && typeof Symbol.iterator !== "undefined" && typeof target[Symbol.iterator] === "function"; + } + function getIteratorEntries(target) { + if (hasIteratorFunction(target)) { + try { + return getGeneratorEntries(target[Symbol.iterator]()); + } catch (iteratorError) { + return []; + } + } + return []; + } + function getGeneratorEntries(generator) { + var generatorResult = generator.next(); + var accumulator = [generatorResult.value]; + while (generatorResult.done === false) { + generatorResult = generator.next(); + accumulator.push(generatorResult.value); + } + return accumulator; + } + function getEnumerableKeys(target) { + var keys = []; + for (var key in target) { + keys.push(key); + } + return keys; + } + function getEnumerableSymbols(target) { + var keys = []; + var allKeys = Object.getOwnPropertySymbols(target); + for (var i = 0; i < allKeys.length; i += 1) { + var key = allKeys[i]; + if (Object.getOwnPropertyDescriptor(target, key).enumerable) { + keys.push(key); + } + } + return keys; + } + function keysEqual(leftHandOperand, rightHandOperand, keys, options) { + var length = keys.length; + if (length === 0) { + return true; + } + for (var i = 0; i < length; i += 1) { + if (deepEqual(leftHandOperand[keys[i]], rightHandOperand[keys[i]], options) === false) { + return false; + } + } + return true; + } + function objectEqual(leftHandOperand, rightHandOperand, options) { + var leftHandKeys = getEnumerableKeys(leftHandOperand); + var rightHandKeys = getEnumerableKeys(rightHandOperand); + var leftHandSymbols = getEnumerableSymbols(leftHandOperand); + var rightHandSymbols = getEnumerableSymbols(rightHandOperand); + leftHandKeys = leftHandKeys.concat(leftHandSymbols); + rightHandKeys = rightHandKeys.concat(rightHandSymbols); + if (leftHandKeys.length && leftHandKeys.length === rightHandKeys.length) { + if (iterableEqual(mapSymbols(leftHandKeys).sort(), mapSymbols(rightHandKeys).sort()) === false) { + return false; + } + return keysEqual(leftHandOperand, rightHandOperand, leftHandKeys, options); + } + var leftHandEntries = getIteratorEntries(leftHandOperand); + var rightHandEntries = getIteratorEntries(rightHandOperand); + if (leftHandEntries.length && leftHandEntries.length === rightHandEntries.length) { + leftHandEntries.sort(); + rightHandEntries.sort(); + return iterableEqual(leftHandEntries, rightHandEntries, options); + } + if (leftHandKeys.length === 0 && leftHandEntries.length === 0 && rightHandKeys.length === 0 && rightHandEntries.length === 0) { + return true; + } + return false; + } + function isPrimitive(value) { + return value === null || typeof value !== "object"; + } + function mapSymbols(arr) { + return arr.map(function mapSymbol(entry) { + if (typeof entry === "symbol") { + return entry.toString(); + } + return entry; + }); + } + } + }); + + // node_modules/chai/lib/chai/utils/isProxyEnabled.js + var require_isProxyEnabled = __commonJS({ + "node_modules/chai/lib/chai/utils/isProxyEnabled.js"(exports, module) { + "use strict"; + var config2 = require_config(); + module.exports = function isProxyEnabled() { + return config2.useProxy && typeof Proxy !== "undefined" && typeof Reflect !== "undefined"; + }; + } + }); + + // node_modules/chai/lib/chai/utils/addProperty.js + var require_addProperty = __commonJS({ + "node_modules/chai/lib/chai/utils/addProperty.js"(exports, module) { + "use strict"; + var chai2 = require_chai(); + var flag = require_flag(); + var isProxyEnabled = require_isProxyEnabled(); + var transferFlags = require_transferFlags(); + module.exports = function addProperty(ctx, name, getter) { + getter = getter === void 0 ? function() { + } : getter; + Object.defineProperty( + ctx, + name, + { + get: function propertyGetter() { + if (!isProxyEnabled() && !flag(this, "lockSsfi")) { + flag(this, "ssfi", propertyGetter); + } + var result = getter.call(this); + if (result !== void 0) + return result; + var newAssertion = new chai2.Assertion(); + transferFlags(this, newAssertion); + return newAssertion; + }, + configurable: true + } + ); + }; + } + }); + + // node_modules/chai/lib/chai/utils/addLengthGuard.js + var require_addLengthGuard = __commonJS({ + "node_modules/chai/lib/chai/utils/addLengthGuard.js"(exports, module) { + "use strict"; + var fnLengthDesc = Object.getOwnPropertyDescriptor(function() { + }, "length"); + module.exports = function addLengthGuard(fn, assertionName, isChainable) { + if (!fnLengthDesc.configurable) + return fn; + Object.defineProperty(fn, "length", { + get: function() { + if (isChainable) { + throw Error("Invalid Chai property: " + assertionName + '.length. Due to a compatibility issue, "length" cannot directly follow "' + assertionName + '". Use "' + assertionName + '.lengthOf" instead.'); + } + throw Error("Invalid Chai property: " + assertionName + '.length. See docs for proper usage of "' + assertionName + '".'); + } + }); + return fn; + }; + } + }); + + // node_modules/chai/lib/chai/utils/getProperties.js + var require_getProperties = __commonJS({ + "node_modules/chai/lib/chai/utils/getProperties.js"(exports, module) { + "use strict"; + module.exports = function getProperties(object) { + var result = Object.getOwnPropertyNames(object); + function addProperty(property) { + if (result.indexOf(property) === -1) { + result.push(property); + } + } + var proto = Object.getPrototypeOf(object); + while (proto !== null) { + Object.getOwnPropertyNames(proto).forEach(addProperty); + proto = Object.getPrototypeOf(proto); + } + return result; + }; + } + }); + + // node_modules/chai/lib/chai/utils/proxify.js + var require_proxify = __commonJS({ + "node_modules/chai/lib/chai/utils/proxify.js"(exports, module) { + "use strict"; + var config2 = require_config(); + var flag = require_flag(); + var getProperties = require_getProperties(); + var isProxyEnabled = require_isProxyEnabled(); + var builtins = ["__flags", "__methods", "_obj", "assert"]; + module.exports = function proxify(obj, nonChainableMethodName) { + if (!isProxyEnabled()) + return obj; + return new Proxy(obj, { + get: function proxyGetter(target, property) { + if (typeof property === "string" && config2.proxyExcludedKeys.indexOf(property) === -1 && !Reflect.has(target, property)) { + if (nonChainableMethodName) { + throw Error("Invalid Chai property: " + nonChainableMethodName + "." + property + '. See docs for proper usage of "' + nonChainableMethodName + '".'); + } + var suggestion = null; + var suggestionDistance = 4; + getProperties(target).forEach(function(prop) { + if (!Object.prototype.hasOwnProperty(prop) && builtins.indexOf(prop) === -1) { + var dist = stringDistanceCapped( + property, + prop, + suggestionDistance + ); + if (dist < suggestionDistance) { + suggestion = prop; + suggestionDistance = dist; + } + } + }); + if (suggestion !== null) { + throw Error("Invalid Chai property: " + property + '. Did you mean "' + suggestion + '"?'); + } else { + throw Error("Invalid Chai property: " + property); + } + } + if (builtins.indexOf(property) === -1 && !flag(target, "lockSsfi")) { + flag(target, "ssfi", proxyGetter); + } + return Reflect.get(target, property); + } + }); + }; + function stringDistanceCapped(strA, strB, cap) { + if (Math.abs(strA.length - strB.length) >= cap) { + return cap; + } + var memo = []; + for (var i = 0; i <= strA.length; i++) { + memo[i] = Array(strB.length + 1).fill(0); + memo[i][0] = i; + } + for (var j = 0; j < strB.length; j++) { + memo[0][j] = j; + } + for (var i = 1; i <= strA.length; i++) { + var ch = strA.charCodeAt(i - 1); + for (var j = 1; j <= strB.length; j++) { + if (Math.abs(i - j) >= cap) { + memo[i][j] = cap; + continue; + } + memo[i][j] = Math.min( + memo[i - 1][j] + 1, + memo[i][j - 1] + 1, + memo[i - 1][j - 1] + (ch === strB.charCodeAt(j - 1) ? 0 : 1) + ); + } + } + return memo[strA.length][strB.length]; + } + } + }); + + // node_modules/chai/lib/chai/utils/addMethod.js + var require_addMethod = __commonJS({ + "node_modules/chai/lib/chai/utils/addMethod.js"(exports, module) { + "use strict"; + var addLengthGuard = require_addLengthGuard(); + var chai2 = require_chai(); + var flag = require_flag(); + var proxify = require_proxify(); + var transferFlags = require_transferFlags(); + module.exports = function addMethod(ctx, name, method) { + var methodWrapper = function() { + if (!flag(this, "lockSsfi")) { + flag(this, "ssfi", methodWrapper); + } + var result = method.apply(this, arguments); + if (result !== void 0) + return result; + var newAssertion = new chai2.Assertion(); + transferFlags(this, newAssertion); + return newAssertion; + }; + addLengthGuard(methodWrapper, name, false); + ctx[name] = proxify(methodWrapper, name); + }; + } + }); + + // node_modules/chai/lib/chai/utils/overwriteProperty.js + var require_overwriteProperty = __commonJS({ + "node_modules/chai/lib/chai/utils/overwriteProperty.js"(exports, module) { + "use strict"; + var chai2 = require_chai(); + var flag = require_flag(); + var isProxyEnabled = require_isProxyEnabled(); + var transferFlags = require_transferFlags(); + module.exports = function overwriteProperty(ctx, name, getter) { + var _get = Object.getOwnPropertyDescriptor(ctx, name), _super = function() { + }; + if (_get && "function" === typeof _get.get) + _super = _get.get; + Object.defineProperty( + ctx, + name, + { + get: function overwritingPropertyGetter() { + if (!isProxyEnabled() && !flag(this, "lockSsfi")) { + flag(this, "ssfi", overwritingPropertyGetter); + } + var origLockSsfi = flag(this, "lockSsfi"); + flag(this, "lockSsfi", true); + var result = getter(_super).call(this); + flag(this, "lockSsfi", origLockSsfi); + if (result !== void 0) { + return result; + } + var newAssertion = new chai2.Assertion(); + transferFlags(this, newAssertion); + return newAssertion; + }, + configurable: true + } + ); + }; + } + }); + + // node_modules/chai/lib/chai/utils/overwriteMethod.js + var require_overwriteMethod = __commonJS({ + "node_modules/chai/lib/chai/utils/overwriteMethod.js"(exports, module) { + "use strict"; + var addLengthGuard = require_addLengthGuard(); + var chai2 = require_chai(); + var flag = require_flag(); + var proxify = require_proxify(); + var transferFlags = require_transferFlags(); + module.exports = function overwriteMethod(ctx, name, method) { + var _method = ctx[name], _super = function() { + throw new Error(name + " is not a function"); + }; + if (_method && "function" === typeof _method) + _super = _method; + var overwritingMethodWrapper = function() { + if (!flag(this, "lockSsfi")) { + flag(this, "ssfi", overwritingMethodWrapper); + } + var origLockSsfi = flag(this, "lockSsfi"); + flag(this, "lockSsfi", true); + var result = method(_super).apply(this, arguments); + flag(this, "lockSsfi", origLockSsfi); + if (result !== void 0) { + return result; + } + var newAssertion = new chai2.Assertion(); + transferFlags(this, newAssertion); + return newAssertion; + }; + addLengthGuard(overwritingMethodWrapper, name, false); + ctx[name] = proxify(overwritingMethodWrapper, name); + }; + } + }); + + // node_modules/chai/lib/chai/utils/addChainableMethod.js + var require_addChainableMethod = __commonJS({ + "node_modules/chai/lib/chai/utils/addChainableMethod.js"(exports, module) { + "use strict"; + var addLengthGuard = require_addLengthGuard(); + var chai2 = require_chai(); + var flag = require_flag(); + var proxify = require_proxify(); + var transferFlags = require_transferFlags(); + var canSetPrototype = typeof Object.setPrototypeOf === "function"; + var testFn = function() { + }; + var excludeNames = Object.getOwnPropertyNames(testFn).filter(function(name) { + var propDesc = Object.getOwnPropertyDescriptor(testFn, name); + if (typeof propDesc !== "object") + return true; + return !propDesc.configurable; + }); + var call = Function.prototype.call; + var apply = Function.prototype.apply; + module.exports = function addChainableMethod(ctx, name, method, chainingBehavior) { + if (typeof chainingBehavior !== "function") { + chainingBehavior = function() { + }; + } + var chainableBehavior = { + method, + chainingBehavior + }; + if (!ctx.__methods) { + ctx.__methods = {}; + } + ctx.__methods[name] = chainableBehavior; + Object.defineProperty( + ctx, + name, + { + get: function chainableMethodGetter() { + chainableBehavior.chainingBehavior.call(this); + var chainableMethodWrapper = function() { + if (!flag(this, "lockSsfi")) { + flag(this, "ssfi", chainableMethodWrapper); + } + var result = chainableBehavior.method.apply(this, arguments); + if (result !== void 0) { + return result; + } + var newAssertion = new chai2.Assertion(); + transferFlags(this, newAssertion); + return newAssertion; + }; + addLengthGuard(chainableMethodWrapper, name, true); + if (canSetPrototype) { + var prototype = Object.create(this); + prototype.call = call; + prototype.apply = apply; + Object.setPrototypeOf(chainableMethodWrapper, prototype); + } else { + var asserterNames = Object.getOwnPropertyNames(ctx); + asserterNames.forEach(function(asserterName) { + if (excludeNames.indexOf(asserterName) !== -1) { + return; + } + var pd = Object.getOwnPropertyDescriptor(ctx, asserterName); + Object.defineProperty(chainableMethodWrapper, asserterName, pd); + }); + } + transferFlags(this, chainableMethodWrapper); + return proxify(chainableMethodWrapper); + }, + configurable: true + } + ); + }; + } + }); + + // node_modules/chai/lib/chai/utils/overwriteChainableMethod.js + var require_overwriteChainableMethod = __commonJS({ + "node_modules/chai/lib/chai/utils/overwriteChainableMethod.js"(exports, module) { + "use strict"; + var chai2 = require_chai(); + var transferFlags = require_transferFlags(); + module.exports = function overwriteChainableMethod(ctx, name, method, chainingBehavior) { + var chainableBehavior = ctx.__methods[name]; + var _chainingBehavior = chainableBehavior.chainingBehavior; + chainableBehavior.chainingBehavior = function overwritingChainableMethodGetter() { + var result = chainingBehavior(_chainingBehavior).call(this); + if (result !== void 0) { + return result; + } + var newAssertion = new chai2.Assertion(); + transferFlags(this, newAssertion); + return newAssertion; + }; + var _method = chainableBehavior.method; + chainableBehavior.method = function overwritingChainableMethodWrapper() { + var result = method(_method).apply(this, arguments); + if (result !== void 0) { + return result; + } + var newAssertion = new chai2.Assertion(); + transferFlags(this, newAssertion); + return newAssertion; + }; + }; + } + }); + + // node_modules/chai/lib/chai/utils/compareByInspect.js + var require_compareByInspect = __commonJS({ + "node_modules/chai/lib/chai/utils/compareByInspect.js"(exports, module) { + "use strict"; + var inspect2 = require_inspect(); + module.exports = function compareByInspect(a, b) { + return inspect2(a) < inspect2(b) ? -1 : 1; + }; + } + }); + + // node_modules/chai/lib/chai/utils/getOwnEnumerablePropertySymbols.js + var require_getOwnEnumerablePropertySymbols = __commonJS({ + "node_modules/chai/lib/chai/utils/getOwnEnumerablePropertySymbols.js"(exports, module) { + "use strict"; + module.exports = function getOwnEnumerablePropertySymbols(obj) { + if (typeof Object.getOwnPropertySymbols !== "function") + return []; + return Object.getOwnPropertySymbols(obj).filter(function(sym) { + return Object.getOwnPropertyDescriptor(obj, sym).enumerable; + }); + }; + } + }); + + // node_modules/chai/lib/chai/utils/getOwnEnumerableProperties.js + var require_getOwnEnumerableProperties = __commonJS({ + "node_modules/chai/lib/chai/utils/getOwnEnumerableProperties.js"(exports, module) { + "use strict"; + var getOwnEnumerablePropertySymbols = require_getOwnEnumerablePropertySymbols(); + module.exports = function getOwnEnumerableProperties(obj) { + return Object.keys(obj).concat(getOwnEnumerablePropertySymbols(obj)); + }; + } + }); + + // node_modules/check-error/index.js + var require_check_error = __commonJS({ + "node_modules/check-error/index.js"(exports, module) { + "use strict"; + var getFunctionName2 = require_get_func_name(); + function compatibleInstance(thrown, errorLike) { + return errorLike instanceof Error && thrown === errorLike; + } + function compatibleConstructor(thrown, errorLike) { + if (errorLike instanceof Error) { + return thrown.constructor === errorLike.constructor || thrown instanceof errorLike.constructor; + } else if (errorLike.prototype instanceof Error || errorLike === Error) { + return thrown.constructor === errorLike || thrown instanceof errorLike; + } + return false; + } + function compatibleMessage(thrown, errMatcher) { + var comparisonString = typeof thrown === "string" ? thrown : thrown.message; + if (errMatcher instanceof RegExp) { + return errMatcher.test(comparisonString); + } else if (typeof errMatcher === "string") { + return comparisonString.indexOf(errMatcher) !== -1; + } + return false; + } + function getConstructorName(errorLike) { + var constructorName = errorLike; + if (errorLike instanceof Error) { + constructorName = getFunctionName2(errorLike.constructor); + } else if (typeof errorLike === "function") { + constructorName = getFunctionName2(errorLike); + if (constructorName === "") { + var newConstructorName = getFunctionName2(new errorLike()); + constructorName = newConstructorName || constructorName; + } + } + return constructorName; + } + function getMessage(errorLike) { + var msg = ""; + if (errorLike && errorLike.message) { + msg = errorLike.message; + } else if (typeof errorLike === "string") { + msg = errorLike; + } + return msg; + } + module.exports = { + compatibleInstance, + compatibleConstructor, + compatibleMessage, + getMessage, + getConstructorName + }; + } + }); + + // node_modules/chai/lib/chai/utils/isNaN.js + var require_isNaN = __commonJS({ + "node_modules/chai/lib/chai/utils/isNaN.js"(exports, module) { + "use strict"; + function isNaN2(value) { + return value !== value; + } + module.exports = Number.isNaN || isNaN2; + } + }); + + // node_modules/chai/lib/chai/utils/getOperator.js + var require_getOperator = __commonJS({ + "node_modules/chai/lib/chai/utils/getOperator.js"(exports, module) { + "use strict"; + var type = require_type_detect(); + var flag = require_flag(); + function isObjectType(obj) { + var objectType = type(obj); + var objectTypes = ["Array", "Object", "function"]; + return objectTypes.indexOf(objectType) !== -1; + } + module.exports = function getOperator(obj, args) { + var operator = flag(obj, "operator"); + var negate = flag(obj, "negate"); + var expected = args[3]; + var msg = negate ? args[2] : args[1]; + if (operator) { + return operator; + } + if (typeof msg === "function") + msg = msg(); + msg = msg || ""; + if (!msg) { + return void 0; + } + if (/\shave\s/.test(msg)) { + return void 0; + } + var isObject = isObjectType(expected); + if (/\snot\s/.test(msg)) { + return isObject ? "notDeepStrictEqual" : "notStrictEqual"; + } + return isObject ? "deepStrictEqual" : "strictEqual"; + }; + } + }); + + // node_modules/chai/lib/chai/utils/index.js + var require_utils = __commonJS({ + "node_modules/chai/lib/chai/utils/index.js"(exports) { + "use strict"; + var pathval = require_pathval(); + exports.test = require_test(); + exports.type = require_type_detect(); + exports.expectTypes = require_expectTypes(); + exports.getMessage = require_getMessage(); + exports.getActual = require_getActual(); + exports.inspect = require_inspect(); + exports.objDisplay = require_objDisplay(); + exports.flag = require_flag(); + exports.transferFlags = require_transferFlags(); + exports.eql = require_deep_eql(); + exports.getPathInfo = pathval.getPathInfo; + exports.hasProperty = pathval.hasProperty; + exports.getName = require_get_func_name(); + exports.addProperty = require_addProperty(); + exports.addMethod = require_addMethod(); + exports.overwriteProperty = require_overwriteProperty(); + exports.overwriteMethod = require_overwriteMethod(); + exports.addChainableMethod = require_addChainableMethod(); + exports.overwriteChainableMethod = require_overwriteChainableMethod(); + exports.compareByInspect = require_compareByInspect(); + exports.getOwnEnumerablePropertySymbols = require_getOwnEnumerablePropertySymbols(); + exports.getOwnEnumerableProperties = require_getOwnEnumerableProperties(); + exports.checkError = require_check_error(); + exports.proxify = require_proxify(); + exports.addLengthGuard = require_addLengthGuard(); + exports.isProxyEnabled = require_isProxyEnabled(); + exports.isNaN = require_isNaN(); + exports.getOperator = require_getOperator(); + } + }); + + // node_modules/chai/lib/chai/assertion.js + var require_assertion = __commonJS({ + "node_modules/chai/lib/chai/assertion.js"(exports, module) { + "use strict"; + var config2 = require_config(); + module.exports = function(_chai, util2) { + var AssertionError2 = _chai.AssertionError, flag = util2.flag; + _chai.Assertion = Assertion2; + function Assertion2(obj, msg, ssfi, lockSsfi) { + flag(this, "ssfi", ssfi || Assertion2); + flag(this, "lockSsfi", lockSsfi); + flag(this, "object", obj); + flag(this, "message", msg); + return util2.proxify(this); + } + Object.defineProperty(Assertion2, "includeStack", { + get: function() { + console.warn("Assertion.includeStack is deprecated, use chai.config.includeStack instead."); + return config2.includeStack; + }, + set: function(value) { + console.warn("Assertion.includeStack is deprecated, use chai.config.includeStack instead."); + config2.includeStack = value; + } + }); + Object.defineProperty(Assertion2, "showDiff", { + get: function() { + console.warn("Assertion.showDiff is deprecated, use chai.config.showDiff instead."); + return config2.showDiff; + }, + set: function(value) { + console.warn("Assertion.showDiff is deprecated, use chai.config.showDiff instead."); + config2.showDiff = value; + } + }); + Assertion2.addProperty = function(name, fn) { + util2.addProperty(this.prototype, name, fn); + }; + Assertion2.addMethod = function(name, fn) { + util2.addMethod(this.prototype, name, fn); + }; + Assertion2.addChainableMethod = function(name, fn, chainingBehavior) { + util2.addChainableMethod(this.prototype, name, fn, chainingBehavior); + }; + Assertion2.overwriteProperty = function(name, fn) { + util2.overwriteProperty(this.prototype, name, fn); + }; + Assertion2.overwriteMethod = function(name, fn) { + util2.overwriteMethod(this.prototype, name, fn); + }; + Assertion2.overwriteChainableMethod = function(name, fn, chainingBehavior) { + util2.overwriteChainableMethod(this.prototype, name, fn, chainingBehavior); + }; + Assertion2.prototype.assert = function(expr, msg, negateMsg, expected, _actual, showDiff) { + var ok = util2.test(this, arguments); + if (false !== showDiff) + showDiff = true; + if (void 0 === expected && void 0 === _actual) + showDiff = false; + if (true !== config2.showDiff) + showDiff = false; + if (!ok) { + msg = util2.getMessage(this, arguments); + var actual = util2.getActual(this, arguments); + var assertionErrorObjectProperties = { + actual, + expected, + showDiff + }; + var operator = util2.getOperator(this, arguments); + if (operator) { + assertionErrorObjectProperties.operator = operator; + } + throw new AssertionError2( + msg, + assertionErrorObjectProperties, + config2.includeStack ? this.assert : flag(this, "ssfi") + ); + } + }; + Object.defineProperty( + Assertion2.prototype, + "_obj", + { + get: function() { + return flag(this, "object"); + }, + set: function(val) { + flag(this, "object", val); + } + } + ); + }; + } + }); + + // node_modules/chai/lib/chai/core/assertions.js + var require_assertions = __commonJS({ + "node_modules/chai/lib/chai/core/assertions.js"(exports, module) { + "use strict"; + module.exports = function(chai2, _) { + var Assertion2 = chai2.Assertion, AssertionError2 = chai2.AssertionError, flag = _.flag; + [ + "to", + "be", + "been", + "is", + "and", + "has", + "have", + "with", + "that", + "which", + "at", + "of", + "same", + "but", + "does", + "still", + "also" + ].forEach(function(chain) { + Assertion2.addProperty(chain); + }); + Assertion2.addProperty("not", function() { + flag(this, "negate", true); + }); + Assertion2.addProperty("deep", function() { + flag(this, "deep", true); + }); + Assertion2.addProperty("nested", function() { + flag(this, "nested", true); + }); + Assertion2.addProperty("own", function() { + flag(this, "own", true); + }); + Assertion2.addProperty("ordered", function() { + flag(this, "ordered", true); + }); + Assertion2.addProperty("any", function() { + flag(this, "any", true); + flag(this, "all", false); + }); + Assertion2.addProperty("all", function() { + flag(this, "all", true); + flag(this, "any", false); + }); + function an(type, msg) { + if (msg) + flag(this, "message", msg); + type = type.toLowerCase(); + var obj = flag(this, "object"), article = ~["a", "e", "i", "o", "u"].indexOf(type.charAt(0)) ? "an " : "a "; + this.assert( + type === _.type(obj).toLowerCase(), + "expected #{this} to be " + article + type, + "expected #{this} not to be " + article + type + ); + } + Assertion2.addChainableMethod("an", an); + Assertion2.addChainableMethod("a", an); + function SameValueZero(a, b) { + return _.isNaN(a) && _.isNaN(b) || a === b; + } + function includeChainingBehavior() { + flag(this, "contains", true); + } + function include(val, msg) { + if (msg) + flag(this, "message", msg); + var obj = flag(this, "object"), objType = _.type(obj).toLowerCase(), flagMsg = flag(this, "message"), negate = flag(this, "negate"), ssfi = flag(this, "ssfi"), isDeep = flag(this, "deep"), descriptor = isDeep ? "deep " : ""; + flagMsg = flagMsg ? flagMsg + ": " : ""; + var included = false; + switch (objType) { + case "string": + included = obj.indexOf(val) !== -1; + break; + case "weakset": + if (isDeep) { + throw new AssertionError2( + flagMsg + "unable to use .deep.include with WeakSet", + void 0, + ssfi + ); + } + included = obj.has(val); + break; + case "map": + var isEql = isDeep ? _.eql : SameValueZero; + obj.forEach(function(item) { + included = included || isEql(item, val); + }); + break; + case "set": + if (isDeep) { + obj.forEach(function(item) { + included = included || _.eql(item, val); + }); + } else { + included = obj.has(val); + } + break; + case "array": + if (isDeep) { + included = obj.some(function(item) { + return _.eql(item, val); + }); + } else { + included = obj.indexOf(val) !== -1; + } + break; + default: + if (val !== Object(val)) { + throw new AssertionError2( + flagMsg + "the given combination of arguments (" + objType + " and " + _.type(val).toLowerCase() + ") is invalid for this assertion. You can use an array, a map, an object, a set, a string, or a weakset instead of a " + _.type(val).toLowerCase(), + void 0, + ssfi + ); + } + var props = Object.keys(val), firstErr = null, numErrs = 0; + props.forEach(function(prop) { + var propAssertion = new Assertion2(obj); + _.transferFlags(this, propAssertion, true); + flag(propAssertion, "lockSsfi", true); + if (!negate || props.length === 1) { + propAssertion.property(prop, val[prop]); + return; + } + try { + propAssertion.property(prop, val[prop]); + } catch (err) { + if (!_.checkError.compatibleConstructor(err, AssertionError2)) { + throw err; + } + if (firstErr === null) + firstErr = err; + numErrs++; + } + }, this); + if (negate && props.length > 1 && numErrs === props.length) { + throw firstErr; + } + return; + } + this.assert( + included, + "expected #{this} to " + descriptor + "include " + _.inspect(val), + "expected #{this} to not " + descriptor + "include " + _.inspect(val) + ); + } + Assertion2.addChainableMethod("include", include, includeChainingBehavior); + Assertion2.addChainableMethod("contain", include, includeChainingBehavior); + Assertion2.addChainableMethod("contains", include, includeChainingBehavior); + Assertion2.addChainableMethod("includes", include, includeChainingBehavior); + Assertion2.addProperty("ok", function() { + this.assert( + flag(this, "object"), + "expected #{this} to be truthy", + "expected #{this} to be falsy" + ); + }); + Assertion2.addProperty("true", function() { + this.assert( + true === flag(this, "object"), + "expected #{this} to be true", + "expected #{this} to be false", + flag(this, "negate") ? false : true + ); + }); + Assertion2.addProperty("false", function() { + this.assert( + false === flag(this, "object"), + "expected #{this} to be false", + "expected #{this} to be true", + flag(this, "negate") ? true : false + ); + }); + Assertion2.addProperty("null", function() { + this.assert( + null === flag(this, "object"), + "expected #{this} to be null", + "expected #{this} not to be null" + ); + }); + Assertion2.addProperty("undefined", function() { + this.assert( + void 0 === flag(this, "object"), + "expected #{this} to be undefined", + "expected #{this} not to be undefined" + ); + }); + Assertion2.addProperty("NaN", function() { + this.assert( + _.isNaN(flag(this, "object")), + "expected #{this} to be NaN", + "expected #{this} not to be NaN" + ); + }); + function assertExist() { + var val = flag(this, "object"); + this.assert( + val !== null && val !== void 0, + "expected #{this} to exist", + "expected #{this} to not exist" + ); + } + Assertion2.addProperty("exist", assertExist); + Assertion2.addProperty("exists", assertExist); + Assertion2.addProperty("empty", function() { + var val = flag(this, "object"), ssfi = flag(this, "ssfi"), flagMsg = flag(this, "message"), itemsCount; + flagMsg = flagMsg ? flagMsg + ": " : ""; + switch (_.type(val).toLowerCase()) { + case "array": + case "string": + itemsCount = val.length; + break; + case "map": + case "set": + itemsCount = val.size; + break; + case "weakmap": + case "weakset": + throw new AssertionError2( + flagMsg + ".empty was passed a weak collection", + void 0, + ssfi + ); + case "function": + var msg = flagMsg + ".empty was passed a function " + _.getName(val); + throw new AssertionError2(msg.trim(), void 0, ssfi); + default: + if (val !== Object(val)) { + throw new AssertionError2( + flagMsg + ".empty was passed non-string primitive " + _.inspect(val), + void 0, + ssfi + ); + } + itemsCount = Object.keys(val).length; + } + this.assert( + 0 === itemsCount, + "expected #{this} to be empty", + "expected #{this} not to be empty" + ); + }); + function checkArguments() { + var obj = flag(this, "object"), type = _.type(obj); + this.assert( + "Arguments" === type, + "expected #{this} to be arguments but got " + type, + "expected #{this} to not be arguments" + ); + } + Assertion2.addProperty("arguments", checkArguments); + Assertion2.addProperty("Arguments", checkArguments); + function assertEqual(val, msg) { + if (msg) + flag(this, "message", msg); + var obj = flag(this, "object"); + if (flag(this, "deep")) { + var prevLockSsfi = flag(this, "lockSsfi"); + flag(this, "lockSsfi", true); + this.eql(val); + flag(this, "lockSsfi", prevLockSsfi); + } else { + this.assert( + val === obj, + "expected #{this} to equal #{exp}", + "expected #{this} to not equal #{exp}", + val, + this._obj, + true + ); + } + } + Assertion2.addMethod("equal", assertEqual); + Assertion2.addMethod("equals", assertEqual); + Assertion2.addMethod("eq", assertEqual); + function assertEql(obj, msg) { + if (msg) + flag(this, "message", msg); + this.assert( + _.eql(obj, flag(this, "object")), + "expected #{this} to deeply equal #{exp}", + "expected #{this} to not deeply equal #{exp}", + obj, + this._obj, + true + ); + } + Assertion2.addMethod("eql", assertEql); + Assertion2.addMethod("eqls", assertEql); + function assertAbove(n, msg) { + if (msg) + flag(this, "message", msg); + var obj = flag(this, "object"), doLength = flag(this, "doLength"), flagMsg = flag(this, "message"), msgPrefix = flagMsg ? flagMsg + ": " : "", ssfi = flag(this, "ssfi"), objType = _.type(obj).toLowerCase(), nType = _.type(n).toLowerCase(), errorMessage, shouldThrow = true; + if (doLength && objType !== "map" && objType !== "set") { + new Assertion2(obj, flagMsg, ssfi, true).to.have.property("length"); + } + if (!doLength && (objType === "date" && nType !== "date")) { + errorMessage = msgPrefix + "the argument to above must be a date"; + } else if (nType !== "number" && (doLength || objType === "number")) { + errorMessage = msgPrefix + "the argument to above must be a number"; + } else if (!doLength && (objType !== "date" && objType !== "number")) { + var printObj = objType === "string" ? "'" + obj + "'" : obj; + errorMessage = msgPrefix + "expected " + printObj + " to be a number or a date"; + } else { + shouldThrow = false; + } + if (shouldThrow) { + throw new AssertionError2(errorMessage, void 0, ssfi); + } + if (doLength) { + var descriptor = "length", itemsCount; + if (objType === "map" || objType === "set") { + descriptor = "size"; + itemsCount = obj.size; + } else { + itemsCount = obj.length; + } + this.assert( + itemsCount > n, + "expected #{this} to have a " + descriptor + " above #{exp} but got #{act}", + "expected #{this} to not have a " + descriptor + " above #{exp}", + n, + itemsCount + ); + } else { + this.assert( + obj > n, + "expected #{this} to be above #{exp}", + "expected #{this} to be at most #{exp}", + n + ); + } + } + Assertion2.addMethod("above", assertAbove); + Assertion2.addMethod("gt", assertAbove); + Assertion2.addMethod("greaterThan", assertAbove); + function assertLeast(n, msg) { + if (msg) + flag(this, "message", msg); + var obj = flag(this, "object"), doLength = flag(this, "doLength"), flagMsg = flag(this, "message"), msgPrefix = flagMsg ? flagMsg + ": " : "", ssfi = flag(this, "ssfi"), objType = _.type(obj).toLowerCase(), nType = _.type(n).toLowerCase(), errorMessage, shouldThrow = true; + if (doLength && objType !== "map" && objType !== "set") { + new Assertion2(obj, flagMsg, ssfi, true).to.have.property("length"); + } + if (!doLength && (objType === "date" && nType !== "date")) { + errorMessage = msgPrefix + "the argument to least must be a date"; + } else if (nType !== "number" && (doLength || objType === "number")) { + errorMessage = msgPrefix + "the argument to least must be a number"; + } else if (!doLength && (objType !== "date" && objType !== "number")) { + var printObj = objType === "string" ? "'" + obj + "'" : obj; + errorMessage = msgPrefix + "expected " + printObj + " to be a number or a date"; + } else { + shouldThrow = false; + } + if (shouldThrow) { + throw new AssertionError2(errorMessage, void 0, ssfi); + } + if (doLength) { + var descriptor = "length", itemsCount; + if (objType === "map" || objType === "set") { + descriptor = "size"; + itemsCount = obj.size; + } else { + itemsCount = obj.length; + } + this.assert( + itemsCount >= n, + "expected #{this} to have a " + descriptor + " at least #{exp} but got #{act}", + "expected #{this} to have a " + descriptor + " below #{exp}", + n, + itemsCount + ); + } else { + this.assert( + obj >= n, + "expected #{this} to be at least #{exp}", + "expected #{this} to be below #{exp}", + n + ); + } + } + Assertion2.addMethod("least", assertLeast); + Assertion2.addMethod("gte", assertLeast); + Assertion2.addMethod("greaterThanOrEqual", assertLeast); + function assertBelow(n, msg) { + if (msg) + flag(this, "message", msg); + var obj = flag(this, "object"), doLength = flag(this, "doLength"), flagMsg = flag(this, "message"), msgPrefix = flagMsg ? flagMsg + ": " : "", ssfi = flag(this, "ssfi"), objType = _.type(obj).toLowerCase(), nType = _.type(n).toLowerCase(), errorMessage, shouldThrow = true; + if (doLength && objType !== "map" && objType !== "set") { + new Assertion2(obj, flagMsg, ssfi, true).to.have.property("length"); + } + if (!doLength && (objType === "date" && nType !== "date")) { + errorMessage = msgPrefix + "the argument to below must be a date"; + } else if (nType !== "number" && (doLength || objType === "number")) { + errorMessage = msgPrefix + "the argument to below must be a number"; + } else if (!doLength && (objType !== "date" && objType !== "number")) { + var printObj = objType === "string" ? "'" + obj + "'" : obj; + errorMessage = msgPrefix + "expected " + printObj + " to be a number or a date"; + } else { + shouldThrow = false; + } + if (shouldThrow) { + throw new AssertionError2(errorMessage, void 0, ssfi); + } + if (doLength) { + var descriptor = "length", itemsCount; + if (objType === "map" || objType === "set") { + descriptor = "size"; + itemsCount = obj.size; + } else { + itemsCount = obj.length; + } + this.assert( + itemsCount < n, + "expected #{this} to have a " + descriptor + " below #{exp} but got #{act}", + "expected #{this} to not have a " + descriptor + " below #{exp}", + n, + itemsCount + ); + } else { + this.assert( + obj < n, + "expected #{this} to be below #{exp}", + "expected #{this} to be at least #{exp}", + n + ); + } + } + Assertion2.addMethod("below", assertBelow); + Assertion2.addMethod("lt", assertBelow); + Assertion2.addMethod("lessThan", assertBelow); + function assertMost(n, msg) { + if (msg) + flag(this, "message", msg); + var obj = flag(this, "object"), doLength = flag(this, "doLength"), flagMsg = flag(this, "message"), msgPrefix = flagMsg ? flagMsg + ": " : "", ssfi = flag(this, "ssfi"), objType = _.type(obj).toLowerCase(), nType = _.type(n).toLowerCase(), errorMessage, shouldThrow = true; + if (doLength && objType !== "map" && objType !== "set") { + new Assertion2(obj, flagMsg, ssfi, true).to.have.property("length"); + } + if (!doLength && (objType === "date" && nType !== "date")) { + errorMessage = msgPrefix + "the argument to most must be a date"; + } else if (nType !== "number" && (doLength || objType === "number")) { + errorMessage = msgPrefix + "the argument to most must be a number"; + } else if (!doLength && (objType !== "date" && objType !== "number")) { + var printObj = objType === "string" ? "'" + obj + "'" : obj; + errorMessage = msgPrefix + "expected " + printObj + " to be a number or a date"; + } else { + shouldThrow = false; + } + if (shouldThrow) { + throw new AssertionError2(errorMessage, void 0, ssfi); + } + if (doLength) { + var descriptor = "length", itemsCount; + if (objType === "map" || objType === "set") { + descriptor = "size"; + itemsCount = obj.size; + } else { + itemsCount = obj.length; + } + this.assert( + itemsCount <= n, + "expected #{this} to have a " + descriptor + " at most #{exp} but got #{act}", + "expected #{this} to have a " + descriptor + " above #{exp}", + n, + itemsCount + ); + } else { + this.assert( + obj <= n, + "expected #{this} to be at most #{exp}", + "expected #{this} to be above #{exp}", + n + ); + } + } + Assertion2.addMethod("most", assertMost); + Assertion2.addMethod("lte", assertMost); + Assertion2.addMethod("lessThanOrEqual", assertMost); + Assertion2.addMethod("within", function(start, finish, msg) { + if (msg) + flag(this, "message", msg); + var obj = flag(this, "object"), doLength = flag(this, "doLength"), flagMsg = flag(this, "message"), msgPrefix = flagMsg ? flagMsg + ": " : "", ssfi = flag(this, "ssfi"), objType = _.type(obj).toLowerCase(), startType = _.type(start).toLowerCase(), finishType = _.type(finish).toLowerCase(), errorMessage, shouldThrow = true, range = startType === "date" && finishType === "date" ? start.toISOString() + ".." + finish.toISOString() : start + ".." + finish; + if (doLength && objType !== "map" && objType !== "set") { + new Assertion2(obj, flagMsg, ssfi, true).to.have.property("length"); + } + if (!doLength && (objType === "date" && (startType !== "date" || finishType !== "date"))) { + errorMessage = msgPrefix + "the arguments to within must be dates"; + } else if ((startType !== "number" || finishType !== "number") && (doLength || objType === "number")) { + errorMessage = msgPrefix + "the arguments to within must be numbers"; + } else if (!doLength && (objType !== "date" && objType !== "number")) { + var printObj = objType === "string" ? "'" + obj + "'" : obj; + errorMessage = msgPrefix + "expected " + printObj + " to be a number or a date"; + } else { + shouldThrow = false; + } + if (shouldThrow) { + throw new AssertionError2(errorMessage, void 0, ssfi); + } + if (doLength) { + var descriptor = "length", itemsCount; + if (objType === "map" || objType === "set") { + descriptor = "size"; + itemsCount = obj.size; + } else { + itemsCount = obj.length; + } + this.assert( + itemsCount >= start && itemsCount <= finish, + "expected #{this} to have a " + descriptor + " within " + range, + "expected #{this} to not have a " + descriptor + " within " + range + ); + } else { + this.assert( + obj >= start && obj <= finish, + "expected #{this} to be within " + range, + "expected #{this} to not be within " + range + ); + } + }); + function assertInstanceOf(constructor, msg) { + if (msg) + flag(this, "message", msg); + var target = flag(this, "object"); + var ssfi = flag(this, "ssfi"); + var flagMsg = flag(this, "message"); + try { + var isInstanceOf = target instanceof constructor; + } catch (err) { + if (err instanceof TypeError) { + flagMsg = flagMsg ? flagMsg + ": " : ""; + throw new AssertionError2( + flagMsg + "The instanceof assertion needs a constructor but " + _.type(constructor) + " was given.", + void 0, + ssfi + ); + } + throw err; + } + var name = _.getName(constructor); + if (name === null) { + name = "an unnamed constructor"; + } + this.assert( + isInstanceOf, + "expected #{this} to be an instance of " + name, + "expected #{this} to not be an instance of " + name + ); + } + ; + Assertion2.addMethod("instanceof", assertInstanceOf); + Assertion2.addMethod("instanceOf", assertInstanceOf); + function assertProperty(name, val, msg) { + if (msg) + flag(this, "message", msg); + var isNested = flag(this, "nested"), isOwn = flag(this, "own"), flagMsg = flag(this, "message"), obj = flag(this, "object"), ssfi = flag(this, "ssfi"), nameType = typeof name; + flagMsg = flagMsg ? flagMsg + ": " : ""; + if (isNested) { + if (nameType !== "string") { + throw new AssertionError2( + flagMsg + "the argument to property must be a string when using nested syntax", + void 0, + ssfi + ); + } + } else { + if (nameType !== "string" && nameType !== "number" && nameType !== "symbol") { + throw new AssertionError2( + flagMsg + "the argument to property must be a string, number, or symbol", + void 0, + ssfi + ); + } + } + if (isNested && isOwn) { + throw new AssertionError2( + flagMsg + 'The "nested" and "own" flags cannot be combined.', + void 0, + ssfi + ); + } + if (obj === null || obj === void 0) { + throw new AssertionError2( + flagMsg + "Target cannot be null or undefined.", + void 0, + ssfi + ); + } + var isDeep = flag(this, "deep"), negate = flag(this, "negate"), pathInfo = isNested ? _.getPathInfo(obj, name) : null, value = isNested ? pathInfo.value : obj[name]; + var descriptor = ""; + if (isDeep) + descriptor += "deep "; + if (isOwn) + descriptor += "own "; + if (isNested) + descriptor += "nested "; + descriptor += "property "; + var hasProperty; + if (isOwn) + hasProperty = Object.prototype.hasOwnProperty.call(obj, name); + else if (isNested) + hasProperty = pathInfo.exists; + else + hasProperty = _.hasProperty(obj, name); + if (!negate || arguments.length === 1) { + this.assert( + hasProperty, + "expected #{this} to have " + descriptor + _.inspect(name), + "expected #{this} to not have " + descriptor + _.inspect(name) + ); + } + if (arguments.length > 1) { + this.assert( + hasProperty && (isDeep ? _.eql(val, value) : val === value), + "expected #{this} to have " + descriptor + _.inspect(name) + " of #{exp}, but got #{act}", + "expected #{this} to not have " + descriptor + _.inspect(name) + " of #{act}", + val, + value + ); + } + flag(this, "object", value); + } + Assertion2.addMethod("property", assertProperty); + function assertOwnProperty(name, value, msg) { + flag(this, "own", true); + assertProperty.apply(this, arguments); + } + Assertion2.addMethod("ownProperty", assertOwnProperty); + Assertion2.addMethod("haveOwnProperty", assertOwnProperty); + function assertOwnPropertyDescriptor(name, descriptor, msg) { + if (typeof descriptor === "string") { + msg = descriptor; + descriptor = null; + } + if (msg) + flag(this, "message", msg); + var obj = flag(this, "object"); + var actualDescriptor = Object.getOwnPropertyDescriptor(Object(obj), name); + if (actualDescriptor && descriptor) { + this.assert( + _.eql(descriptor, actualDescriptor), + "expected the own property descriptor for " + _.inspect(name) + " on #{this} to match " + _.inspect(descriptor) + ", got " + _.inspect(actualDescriptor), + "expected the own property descriptor for " + _.inspect(name) + " on #{this} to not match " + _.inspect(descriptor), + descriptor, + actualDescriptor, + true + ); + } else { + this.assert( + actualDescriptor, + "expected #{this} to have an own property descriptor for " + _.inspect(name), + "expected #{this} to not have an own property descriptor for " + _.inspect(name) + ); + } + flag(this, "object", actualDescriptor); + } + Assertion2.addMethod("ownPropertyDescriptor", assertOwnPropertyDescriptor); + Assertion2.addMethod("haveOwnPropertyDescriptor", assertOwnPropertyDescriptor); + function assertLengthChain() { + flag(this, "doLength", true); + } + function assertLength(n, msg) { + if (msg) + flag(this, "message", msg); + var obj = flag(this, "object"), objType = _.type(obj).toLowerCase(), flagMsg = flag(this, "message"), ssfi = flag(this, "ssfi"), descriptor = "length", itemsCount; + switch (objType) { + case "map": + case "set": + descriptor = "size"; + itemsCount = obj.size; + break; + default: + new Assertion2(obj, flagMsg, ssfi, true).to.have.property("length"); + itemsCount = obj.length; + } + this.assert( + itemsCount == n, + "expected #{this} to have a " + descriptor + " of #{exp} but got #{act}", + "expected #{this} to not have a " + descriptor + " of #{act}", + n, + itemsCount + ); + } + Assertion2.addChainableMethod("length", assertLength, assertLengthChain); + Assertion2.addChainableMethod("lengthOf", assertLength, assertLengthChain); + function assertMatch(re, msg) { + if (msg) + flag(this, "message", msg); + var obj = flag(this, "object"); + this.assert( + re.exec(obj), + "expected #{this} to match " + re, + "expected #{this} not to match " + re + ); + } + Assertion2.addMethod("match", assertMatch); + Assertion2.addMethod("matches", assertMatch); + Assertion2.addMethod("string", function(str, msg) { + if (msg) + flag(this, "message", msg); + var obj = flag(this, "object"), flagMsg = flag(this, "message"), ssfi = flag(this, "ssfi"); + new Assertion2(obj, flagMsg, ssfi, true).is.a("string"); + this.assert( + ~obj.indexOf(str), + "expected #{this} to contain " + _.inspect(str), + "expected #{this} to not contain " + _.inspect(str) + ); + }); + function assertKeys(keys) { + var obj = flag(this, "object"), objType = _.type(obj), keysType = _.type(keys), ssfi = flag(this, "ssfi"), isDeep = flag(this, "deep"), str, deepStr = "", actual, ok = true, flagMsg = flag(this, "message"); + flagMsg = flagMsg ? flagMsg + ": " : ""; + var mixedArgsMsg = flagMsg + "when testing keys against an object or an array you must give a single Array|Object|String argument or multiple String arguments"; + if (objType === "Map" || objType === "Set") { + deepStr = isDeep ? "deeply " : ""; + actual = []; + obj.forEach(function(val, key) { + actual.push(key); + }); + if (keysType !== "Array") { + keys = Array.prototype.slice.call(arguments); + } + } else { + actual = _.getOwnEnumerableProperties(obj); + switch (keysType) { + case "Array": + if (arguments.length > 1) { + throw new AssertionError2(mixedArgsMsg, void 0, ssfi); + } + break; + case "Object": + if (arguments.length > 1) { + throw new AssertionError2(mixedArgsMsg, void 0, ssfi); + } + keys = Object.keys(keys); + break; + default: + keys = Array.prototype.slice.call(arguments); + } + keys = keys.map(function(val) { + return typeof val === "symbol" ? val : String(val); + }); + } + if (!keys.length) { + throw new AssertionError2(flagMsg + "keys required", void 0, ssfi); + } + var len = keys.length, any = flag(this, "any"), all = flag(this, "all"), expected = keys; + if (!any && !all) { + all = true; + } + if (any) { + ok = expected.some(function(expectedKey) { + return actual.some(function(actualKey) { + if (isDeep) { + return _.eql(expectedKey, actualKey); + } else { + return expectedKey === actualKey; + } + }); + }); + } + if (all) { + ok = expected.every(function(expectedKey) { + return actual.some(function(actualKey) { + if (isDeep) { + return _.eql(expectedKey, actualKey); + } else { + return expectedKey === actualKey; + } + }); + }); + if (!flag(this, "contains")) { + ok = ok && keys.length == actual.length; + } + } + if (len > 1) { + keys = keys.map(function(key) { + return _.inspect(key); + }); + var last = keys.pop(); + if (all) { + str = keys.join(", ") + ", and " + last; + } + if (any) { + str = keys.join(", ") + ", or " + last; + } + } else { + str = _.inspect(keys[0]); + } + str = (len > 1 ? "keys " : "key ") + str; + str = (flag(this, "contains") ? "contain " : "have ") + str; + this.assert( + ok, + "expected #{this} to " + deepStr + str, + "expected #{this} to not " + deepStr + str, + expected.slice(0).sort(_.compareByInspect), + actual.sort(_.compareByInspect), + true + ); + } + Assertion2.addMethod("keys", assertKeys); + Assertion2.addMethod("key", assertKeys); + function assertThrows(errorLike, errMsgMatcher, msg) { + if (msg) + flag(this, "message", msg); + var obj = flag(this, "object"), ssfi = flag(this, "ssfi"), flagMsg = flag(this, "message"), negate = flag(this, "negate") || false; + new Assertion2(obj, flagMsg, ssfi, true).is.a("function"); + if (errorLike instanceof RegExp || typeof errorLike === "string") { + errMsgMatcher = errorLike; + errorLike = null; + } + var caughtErr; + try { + obj(); + } catch (err) { + caughtErr = err; + } + var everyArgIsUndefined = errorLike === void 0 && errMsgMatcher === void 0; + var everyArgIsDefined = Boolean(errorLike && errMsgMatcher); + var errorLikeFail = false; + var errMsgMatcherFail = false; + if (everyArgIsUndefined || !everyArgIsUndefined && !negate) { + var errorLikeString = "an error"; + if (errorLike instanceof Error) { + errorLikeString = "#{exp}"; + } else if (errorLike) { + errorLikeString = _.checkError.getConstructorName(errorLike); + } + this.assert( + caughtErr, + "expected #{this} to throw " + errorLikeString, + "expected #{this} to not throw an error but #{act} was thrown", + errorLike && errorLike.toString(), + caughtErr instanceof Error ? caughtErr.toString() : typeof caughtErr === "string" ? caughtErr : caughtErr && _.checkError.getConstructorName(caughtErr) + ); + } + if (errorLike && caughtErr) { + if (errorLike instanceof Error) { + var isCompatibleInstance = _.checkError.compatibleInstance(caughtErr, errorLike); + if (isCompatibleInstance === negate) { + if (everyArgIsDefined && negate) { + errorLikeFail = true; + } else { + this.assert( + negate, + "expected #{this} to throw #{exp} but #{act} was thrown", + "expected #{this} to not throw #{exp}" + (caughtErr && !negate ? " but #{act} was thrown" : ""), + errorLike.toString(), + caughtErr.toString() + ); + } + } + } + var isCompatibleConstructor = _.checkError.compatibleConstructor(caughtErr, errorLike); + if (isCompatibleConstructor === negate) { + if (everyArgIsDefined && negate) { + errorLikeFail = true; + } else { + this.assert( + negate, + "expected #{this} to throw #{exp} but #{act} was thrown", + "expected #{this} to not throw #{exp}" + (caughtErr ? " but #{act} was thrown" : ""), + errorLike instanceof Error ? errorLike.toString() : errorLike && _.checkError.getConstructorName(errorLike), + caughtErr instanceof Error ? caughtErr.toString() : caughtErr && _.checkError.getConstructorName(caughtErr) + ); + } + } + } + if (caughtErr && errMsgMatcher !== void 0 && errMsgMatcher !== null) { + var placeholder = "including"; + if (errMsgMatcher instanceof RegExp) { + placeholder = "matching"; + } + var isCompatibleMessage = _.checkError.compatibleMessage(caughtErr, errMsgMatcher); + if (isCompatibleMessage === negate) { + if (everyArgIsDefined && negate) { + errMsgMatcherFail = true; + } else { + this.assert( + negate, + "expected #{this} to throw error " + placeholder + " #{exp} but got #{act}", + "expected #{this} to throw error not " + placeholder + " #{exp}", + errMsgMatcher, + _.checkError.getMessage(caughtErr) + ); + } + } + } + if (errorLikeFail && errMsgMatcherFail) { + this.assert( + negate, + "expected #{this} to throw #{exp} but #{act} was thrown", + "expected #{this} to not throw #{exp}" + (caughtErr ? " but #{act} was thrown" : ""), + errorLike instanceof Error ? errorLike.toString() : errorLike && _.checkError.getConstructorName(errorLike), + caughtErr instanceof Error ? caughtErr.toString() : caughtErr && _.checkError.getConstructorName(caughtErr) + ); + } + flag(this, "object", caughtErr); + } + ; + Assertion2.addMethod("throw", assertThrows); + Assertion2.addMethod("throws", assertThrows); + Assertion2.addMethod("Throw", assertThrows); + function respondTo(method, msg) { + if (msg) + flag(this, "message", msg); + var obj = flag(this, "object"), itself = flag(this, "itself"), context = "function" === typeof obj && !itself ? obj.prototype[method] : obj[method]; + this.assert( + "function" === typeof context, + "expected #{this} to respond to " + _.inspect(method), + "expected #{this} to not respond to " + _.inspect(method) + ); + } + Assertion2.addMethod("respondTo", respondTo); + Assertion2.addMethod("respondsTo", respondTo); + Assertion2.addProperty("itself", function() { + flag(this, "itself", true); + }); + function satisfy(matcher, msg) { + if (msg) + flag(this, "message", msg); + var obj = flag(this, "object"); + var result = matcher(obj); + this.assert( + result, + "expected #{this} to satisfy " + _.objDisplay(matcher), + "expected #{this} to not satisfy" + _.objDisplay(matcher), + flag(this, "negate") ? false : true, + result + ); + } + Assertion2.addMethod("satisfy", satisfy); + Assertion2.addMethod("satisfies", satisfy); + function closeTo(expected, delta, msg) { + if (msg) + flag(this, "message", msg); + var obj = flag(this, "object"), flagMsg = flag(this, "message"), ssfi = flag(this, "ssfi"); + new Assertion2(obj, flagMsg, ssfi, true).is.a("number"); + if (typeof expected !== "number" || typeof delta !== "number") { + flagMsg = flagMsg ? flagMsg + ": " : ""; + var deltaMessage = delta === void 0 ? ", and a delta is required" : ""; + throw new AssertionError2( + flagMsg + "the arguments to closeTo or approximately must be numbers" + deltaMessage, + void 0, + ssfi + ); + } + this.assert( + Math.abs(obj - expected) <= delta, + "expected #{this} to be close to " + expected + " +/- " + delta, + "expected #{this} not to be close to " + expected + " +/- " + delta + ); + } + Assertion2.addMethod("closeTo", closeTo); + Assertion2.addMethod("approximately", closeTo); + function isSubsetOf(subset, superset, cmp, contains, ordered) { + if (!contains) { + if (subset.length !== superset.length) + return false; + superset = superset.slice(); + } + return subset.every(function(elem, idx) { + if (ordered) + return cmp ? cmp(elem, superset[idx]) : elem === superset[idx]; + if (!cmp) { + var matchIdx = superset.indexOf(elem); + if (matchIdx === -1) + return false; + if (!contains) + superset.splice(matchIdx, 1); + return true; + } + return superset.some(function(elem2, matchIdx2) { + if (!cmp(elem, elem2)) + return false; + if (!contains) + superset.splice(matchIdx2, 1); + return true; + }); + }); + } + Assertion2.addMethod("members", function(subset, msg) { + if (msg) + flag(this, "message", msg); + var obj = flag(this, "object"), flagMsg = flag(this, "message"), ssfi = flag(this, "ssfi"); + new Assertion2(obj, flagMsg, ssfi, true).to.be.an("array"); + new Assertion2(subset, flagMsg, ssfi, true).to.be.an("array"); + var contains = flag(this, "contains"); + var ordered = flag(this, "ordered"); + var subject, failMsg, failNegateMsg; + if (contains) { + subject = ordered ? "an ordered superset" : "a superset"; + failMsg = "expected #{this} to be " + subject + " of #{exp}"; + failNegateMsg = "expected #{this} to not be " + subject + " of #{exp}"; + } else { + subject = ordered ? "ordered members" : "members"; + failMsg = "expected #{this} to have the same " + subject + " as #{exp}"; + failNegateMsg = "expected #{this} to not have the same " + subject + " as #{exp}"; + } + var cmp = flag(this, "deep") ? _.eql : void 0; + this.assert( + isSubsetOf(subset, obj, cmp, contains, ordered), + failMsg, + failNegateMsg, + subset, + obj, + true + ); + }); + function oneOf(list, msg) { + if (msg) + flag(this, "message", msg); + var expected = flag(this, "object"), flagMsg = flag(this, "message"), ssfi = flag(this, "ssfi"), contains = flag(this, "contains"), isDeep = flag(this, "deep"); + new Assertion2(list, flagMsg, ssfi, true).to.be.an("array"); + if (contains) { + this.assert( + list.some(function(possibility) { + return expected.indexOf(possibility) > -1; + }), + "expected #{this} to contain one of #{exp}", + "expected #{this} to not contain one of #{exp}", + list, + expected + ); + } else { + if (isDeep) { + this.assert( + list.some(function(possibility) { + return _.eql(expected, possibility); + }), + "expected #{this} to deeply equal one of #{exp}", + "expected #{this} to deeply equal one of #{exp}", + list, + expected + ); + } else { + this.assert( + list.indexOf(expected) > -1, + "expected #{this} to be one of #{exp}", + "expected #{this} to not be one of #{exp}", + list, + expected + ); + } + } + } + Assertion2.addMethod("oneOf", oneOf); + function assertChanges(subject, prop, msg) { + if (msg) + flag(this, "message", msg); + var fn = flag(this, "object"), flagMsg = flag(this, "message"), ssfi = flag(this, "ssfi"); + new Assertion2(fn, flagMsg, ssfi, true).is.a("function"); + var initial; + if (!prop) { + new Assertion2(subject, flagMsg, ssfi, true).is.a("function"); + initial = subject(); + } else { + new Assertion2(subject, flagMsg, ssfi, true).to.have.property(prop); + initial = subject[prop]; + } + fn(); + var final = prop === void 0 || prop === null ? subject() : subject[prop]; + var msgObj = prop === void 0 || prop === null ? initial : "." + prop; + flag(this, "deltaMsgObj", msgObj); + flag(this, "initialDeltaValue", initial); + flag(this, "finalDeltaValue", final); + flag(this, "deltaBehavior", "change"); + flag(this, "realDelta", final !== initial); + this.assert( + initial !== final, + "expected " + msgObj + " to change", + "expected " + msgObj + " to not change" + ); + } + Assertion2.addMethod("change", assertChanges); + Assertion2.addMethod("changes", assertChanges); + function assertIncreases(subject, prop, msg) { + if (msg) + flag(this, "message", msg); + var fn = flag(this, "object"), flagMsg = flag(this, "message"), ssfi = flag(this, "ssfi"); + new Assertion2(fn, flagMsg, ssfi, true).is.a("function"); + var initial; + if (!prop) { + new Assertion2(subject, flagMsg, ssfi, true).is.a("function"); + initial = subject(); + } else { + new Assertion2(subject, flagMsg, ssfi, true).to.have.property(prop); + initial = subject[prop]; + } + new Assertion2(initial, flagMsg, ssfi, true).is.a("number"); + fn(); + var final = prop === void 0 || prop === null ? subject() : subject[prop]; + var msgObj = prop === void 0 || prop === null ? initial : "." + prop; + flag(this, "deltaMsgObj", msgObj); + flag(this, "initialDeltaValue", initial); + flag(this, "finalDeltaValue", final); + flag(this, "deltaBehavior", "increase"); + flag(this, "realDelta", final - initial); + this.assert( + final - initial > 0, + "expected " + msgObj + " to increase", + "expected " + msgObj + " to not increase" + ); + } + Assertion2.addMethod("increase", assertIncreases); + Assertion2.addMethod("increases", assertIncreases); + function assertDecreases(subject, prop, msg) { + if (msg) + flag(this, "message", msg); + var fn = flag(this, "object"), flagMsg = flag(this, "message"), ssfi = flag(this, "ssfi"); + new Assertion2(fn, flagMsg, ssfi, true).is.a("function"); + var initial; + if (!prop) { + new Assertion2(subject, flagMsg, ssfi, true).is.a("function"); + initial = subject(); + } else { + new Assertion2(subject, flagMsg, ssfi, true).to.have.property(prop); + initial = subject[prop]; + } + new Assertion2(initial, flagMsg, ssfi, true).is.a("number"); + fn(); + var final = prop === void 0 || prop === null ? subject() : subject[prop]; + var msgObj = prop === void 0 || prop === null ? initial : "." + prop; + flag(this, "deltaMsgObj", msgObj); + flag(this, "initialDeltaValue", initial); + flag(this, "finalDeltaValue", final); + flag(this, "deltaBehavior", "decrease"); + flag(this, "realDelta", initial - final); + this.assert( + final - initial < 0, + "expected " + msgObj + " to decrease", + "expected " + msgObj + " to not decrease" + ); + } + Assertion2.addMethod("decrease", assertDecreases); + Assertion2.addMethod("decreases", assertDecreases); + function assertDelta(delta, msg) { + if (msg) + flag(this, "message", msg); + var msgObj = flag(this, "deltaMsgObj"); + var initial = flag(this, "initialDeltaValue"); + var final = flag(this, "finalDeltaValue"); + var behavior = flag(this, "deltaBehavior"); + var realDelta = flag(this, "realDelta"); + var expression; + if (behavior === "change") { + expression = Math.abs(final - initial) === Math.abs(delta); + } else { + expression = realDelta === Math.abs(delta); + } + this.assert( + expression, + "expected " + msgObj + " to " + behavior + " by " + delta, + "expected " + msgObj + " to not " + behavior + " by " + delta + ); + } + Assertion2.addMethod("by", assertDelta); + Assertion2.addProperty("extensible", function() { + var obj = flag(this, "object"); + var isExtensible = obj === Object(obj) && Object.isExtensible(obj); + this.assert( + isExtensible, + "expected #{this} to be extensible", + "expected #{this} to not be extensible" + ); + }); + Assertion2.addProperty("sealed", function() { + var obj = flag(this, "object"); + var isSealed = obj === Object(obj) ? Object.isSealed(obj) : true; + this.assert( + isSealed, + "expected #{this} to be sealed", + "expected #{this} to not be sealed" + ); + }); + Assertion2.addProperty("frozen", function() { + var obj = flag(this, "object"); + var isFrozen = obj === Object(obj) ? Object.isFrozen(obj) : true; + this.assert( + isFrozen, + "expected #{this} to be frozen", + "expected #{this} to not be frozen" + ); + }); + Assertion2.addProperty("finite", function(msg) { + var obj = flag(this, "object"); + this.assert( + typeof obj === "number" && isFinite(obj), + "expected #{this} to be a finite number", + "expected #{this} to not be a finite number" + ); + }); + }; + } + }); + + // node_modules/chai/lib/chai/interface/expect.js + var require_expect = __commonJS({ + "node_modules/chai/lib/chai/interface/expect.js"(exports, module) { + "use strict"; + module.exports = function(chai2, util2) { + chai2.expect = function(val, message) { + return new chai2.Assertion(val, message); + }; + chai2.expect.fail = function(actual, expected, message, operator) { + if (arguments.length < 2) { + message = actual; + actual = void 0; + } + message = message || "expect.fail()"; + throw new chai2.AssertionError(message, { + actual, + expected, + operator + }, chai2.expect.fail); + }; + }; + } + }); + + // node_modules/chai/lib/chai/interface/should.js + var require_should = __commonJS({ + "node_modules/chai/lib/chai/interface/should.js"(exports, module) { + "use strict"; + module.exports = function(chai2, util2) { + var Assertion2 = chai2.Assertion; + function loadShould() { + function shouldGetter() { + if (this instanceof String || this instanceof Number || this instanceof Boolean || typeof Symbol === "function" && this instanceof Symbol || typeof BigInt === "function" && this instanceof BigInt) { + return new Assertion2(this.valueOf(), null, shouldGetter); + } + return new Assertion2(this, null, shouldGetter); + } + function shouldSetter(value) { + Object.defineProperty(this, "should", { + value, + enumerable: true, + configurable: true, + writable: true + }); + } + Object.defineProperty(Object.prototype, "should", { + set: shouldSetter, + get: shouldGetter, + configurable: true + }); + var should2 = {}; + should2.fail = function(actual, expected, message, operator) { + if (arguments.length < 2) { + message = actual; + actual = void 0; + } + message = message || "should.fail()"; + throw new chai2.AssertionError(message, { + actual, + expected, + operator + }, should2.fail); + }; + should2.equal = function(val1, val2, msg) { + new Assertion2(val1, msg).to.equal(val2); + }; + should2.Throw = function(fn, errt, errs, msg) { + new Assertion2(fn, msg).to.Throw(errt, errs); + }; + should2.exist = function(val, msg) { + new Assertion2(val, msg).to.exist; + }; + should2.not = {}; + should2.not.equal = function(val1, val2, msg) { + new Assertion2(val1, msg).to.not.equal(val2); + }; + should2.not.Throw = function(fn, errt, errs, msg) { + new Assertion2(fn, msg).to.not.Throw(errt, errs); + }; + should2.not.exist = function(val, msg) { + new Assertion2(val, msg).to.not.exist; + }; + should2["throw"] = should2["Throw"]; + should2.not["throw"] = should2.not["Throw"]; + return should2; + } + ; + chai2.should = loadShould; + chai2.Should = loadShould; + }; + } + }); + + // node_modules/chai/lib/chai/interface/assert.js + var require_assert = __commonJS({ + "node_modules/chai/lib/chai/interface/assert.js"(exports, module) { + "use strict"; + module.exports = function(chai2, util2) { + var Assertion2 = chai2.Assertion, flag = util2.flag; + var assert2 = chai2.assert = function(express, errmsg) { + var test = new Assertion2(null, null, chai2.assert, true); + test.assert( + express, + errmsg, + "[ negation message unavailable ]" + ); + }; + assert2.fail = function(actual, expected, message, operator) { + if (arguments.length < 2) { + message = actual; + actual = void 0; + } + message = message || "assert.fail()"; + throw new chai2.AssertionError(message, { + actual, + expected, + operator + }, assert2.fail); + }; + assert2.isOk = function(val, msg) { + new Assertion2(val, msg, assert2.isOk, true).is.ok; + }; + assert2.isNotOk = function(val, msg) { + new Assertion2(val, msg, assert2.isNotOk, true).is.not.ok; + }; + assert2.equal = function(act, exp, msg) { + var test = new Assertion2(act, msg, assert2.equal, true); + test.assert( + exp == flag(test, "object"), + "expected #{this} to equal #{exp}", + "expected #{this} to not equal #{act}", + exp, + act, + true + ); + }; + assert2.notEqual = function(act, exp, msg) { + var test = new Assertion2(act, msg, assert2.notEqual, true); + test.assert( + exp != flag(test, "object"), + "expected #{this} to not equal #{exp}", + "expected #{this} to equal #{act}", + exp, + act, + true + ); + }; + assert2.strictEqual = function(act, exp, msg) { + new Assertion2(act, msg, assert2.strictEqual, true).to.equal(exp); + }; + assert2.notStrictEqual = function(act, exp, msg) { + new Assertion2(act, msg, assert2.notStrictEqual, true).to.not.equal(exp); + }; + assert2.deepEqual = assert2.deepStrictEqual = function(act, exp, msg) { + new Assertion2(act, msg, assert2.deepEqual, true).to.eql(exp); + }; + assert2.notDeepEqual = function(act, exp, msg) { + new Assertion2(act, msg, assert2.notDeepEqual, true).to.not.eql(exp); + }; + assert2.isAbove = function(val, abv, msg) { + new Assertion2(val, msg, assert2.isAbove, true).to.be.above(abv); + }; + assert2.isAtLeast = function(val, atlst, msg) { + new Assertion2(val, msg, assert2.isAtLeast, true).to.be.least(atlst); + }; + assert2.isBelow = function(val, blw, msg) { + new Assertion2(val, msg, assert2.isBelow, true).to.be.below(blw); + }; + assert2.isAtMost = function(val, atmst, msg) { + new Assertion2(val, msg, assert2.isAtMost, true).to.be.most(atmst); + }; + assert2.isTrue = function(val, msg) { + new Assertion2(val, msg, assert2.isTrue, true).is["true"]; + }; + assert2.isNotTrue = function(val, msg) { + new Assertion2(val, msg, assert2.isNotTrue, true).to.not.equal(true); + }; + assert2.isFalse = function(val, msg) { + new Assertion2(val, msg, assert2.isFalse, true).is["false"]; + }; + assert2.isNotFalse = function(val, msg) { + new Assertion2(val, msg, assert2.isNotFalse, true).to.not.equal(false); + }; + assert2.isNull = function(val, msg) { + new Assertion2(val, msg, assert2.isNull, true).to.equal(null); + }; + assert2.isNotNull = function(val, msg) { + new Assertion2(val, msg, assert2.isNotNull, true).to.not.equal(null); + }; + assert2.isNaN = function(val, msg) { + new Assertion2(val, msg, assert2.isNaN, true).to.be.NaN; + }; + assert2.isNotNaN = function(val, msg) { + new Assertion2(val, msg, assert2.isNotNaN, true).not.to.be.NaN; + }; + assert2.exists = function(val, msg) { + new Assertion2(val, msg, assert2.exists, true).to.exist; + }; + assert2.notExists = function(val, msg) { + new Assertion2(val, msg, assert2.notExists, true).to.not.exist; + }; + assert2.isUndefined = function(val, msg) { + new Assertion2(val, msg, assert2.isUndefined, true).to.equal(void 0); + }; + assert2.isDefined = function(val, msg) { + new Assertion2(val, msg, assert2.isDefined, true).to.not.equal(void 0); + }; + assert2.isFunction = function(val, msg) { + new Assertion2(val, msg, assert2.isFunction, true).to.be.a("function"); + }; + assert2.isNotFunction = function(val, msg) { + new Assertion2(val, msg, assert2.isNotFunction, true).to.not.be.a("function"); + }; + assert2.isObject = function(val, msg) { + new Assertion2(val, msg, assert2.isObject, true).to.be.a("object"); + }; + assert2.isNotObject = function(val, msg) { + new Assertion2(val, msg, assert2.isNotObject, true).to.not.be.a("object"); + }; + assert2.isArray = function(val, msg) { + new Assertion2(val, msg, assert2.isArray, true).to.be.an("array"); + }; + assert2.isNotArray = function(val, msg) { + new Assertion2(val, msg, assert2.isNotArray, true).to.not.be.an("array"); + }; + assert2.isString = function(val, msg) { + new Assertion2(val, msg, assert2.isString, true).to.be.a("string"); + }; + assert2.isNotString = function(val, msg) { + new Assertion2(val, msg, assert2.isNotString, true).to.not.be.a("string"); + }; + assert2.isNumber = function(val, msg) { + new Assertion2(val, msg, assert2.isNumber, true).to.be.a("number"); + }; + assert2.isNotNumber = function(val, msg) { + new Assertion2(val, msg, assert2.isNotNumber, true).to.not.be.a("number"); + }; + assert2.isFinite = function(val, msg) { + new Assertion2(val, msg, assert2.isFinite, true).to.be.finite; + }; + assert2.isBoolean = function(val, msg) { + new Assertion2(val, msg, assert2.isBoolean, true).to.be.a("boolean"); + }; + assert2.isNotBoolean = function(val, msg) { + new Assertion2(val, msg, assert2.isNotBoolean, true).to.not.be.a("boolean"); + }; + assert2.typeOf = function(val, type, msg) { + new Assertion2(val, msg, assert2.typeOf, true).to.be.a(type); + }; + assert2.notTypeOf = function(val, type, msg) { + new Assertion2(val, msg, assert2.notTypeOf, true).to.not.be.a(type); + }; + assert2.instanceOf = function(val, type, msg) { + new Assertion2(val, msg, assert2.instanceOf, true).to.be.instanceOf(type); + }; + assert2.notInstanceOf = function(val, type, msg) { + new Assertion2(val, msg, assert2.notInstanceOf, true).to.not.be.instanceOf(type); + }; + assert2.include = function(exp, inc, msg) { + new Assertion2(exp, msg, assert2.include, true).include(inc); + }; + assert2.notInclude = function(exp, inc, msg) { + new Assertion2(exp, msg, assert2.notInclude, true).not.include(inc); + }; + assert2.deepInclude = function(exp, inc, msg) { + new Assertion2(exp, msg, assert2.deepInclude, true).deep.include(inc); + }; + assert2.notDeepInclude = function(exp, inc, msg) { + new Assertion2(exp, msg, assert2.notDeepInclude, true).not.deep.include(inc); + }; + assert2.nestedInclude = function(exp, inc, msg) { + new Assertion2(exp, msg, assert2.nestedInclude, true).nested.include(inc); + }; + assert2.notNestedInclude = function(exp, inc, msg) { + new Assertion2(exp, msg, assert2.notNestedInclude, true).not.nested.include(inc); + }; + assert2.deepNestedInclude = function(exp, inc, msg) { + new Assertion2(exp, msg, assert2.deepNestedInclude, true).deep.nested.include(inc); + }; + assert2.notDeepNestedInclude = function(exp, inc, msg) { + new Assertion2(exp, msg, assert2.notDeepNestedInclude, true).not.deep.nested.include(inc); + }; + assert2.ownInclude = function(exp, inc, msg) { + new Assertion2(exp, msg, assert2.ownInclude, true).own.include(inc); + }; + assert2.notOwnInclude = function(exp, inc, msg) { + new Assertion2(exp, msg, assert2.notOwnInclude, true).not.own.include(inc); + }; + assert2.deepOwnInclude = function(exp, inc, msg) { + new Assertion2(exp, msg, assert2.deepOwnInclude, true).deep.own.include(inc); + }; + assert2.notDeepOwnInclude = function(exp, inc, msg) { + new Assertion2(exp, msg, assert2.notDeepOwnInclude, true).not.deep.own.include(inc); + }; + assert2.match = function(exp, re, msg) { + new Assertion2(exp, msg, assert2.match, true).to.match(re); + }; + assert2.notMatch = function(exp, re, msg) { + new Assertion2(exp, msg, assert2.notMatch, true).to.not.match(re); + }; + assert2.property = function(obj, prop, msg) { + new Assertion2(obj, msg, assert2.property, true).to.have.property(prop); + }; + assert2.notProperty = function(obj, prop, msg) { + new Assertion2(obj, msg, assert2.notProperty, true).to.not.have.property(prop); + }; + assert2.propertyVal = function(obj, prop, val, msg) { + new Assertion2(obj, msg, assert2.propertyVal, true).to.have.property(prop, val); + }; + assert2.notPropertyVal = function(obj, prop, val, msg) { + new Assertion2(obj, msg, assert2.notPropertyVal, true).to.not.have.property(prop, val); + }; + assert2.deepPropertyVal = function(obj, prop, val, msg) { + new Assertion2(obj, msg, assert2.deepPropertyVal, true).to.have.deep.property(prop, val); + }; + assert2.notDeepPropertyVal = function(obj, prop, val, msg) { + new Assertion2(obj, msg, assert2.notDeepPropertyVal, true).to.not.have.deep.property(prop, val); + }; + assert2.ownProperty = function(obj, prop, msg) { + new Assertion2(obj, msg, assert2.ownProperty, true).to.have.own.property(prop); + }; + assert2.notOwnProperty = function(obj, prop, msg) { + new Assertion2(obj, msg, assert2.notOwnProperty, true).to.not.have.own.property(prop); + }; + assert2.ownPropertyVal = function(obj, prop, value, msg) { + new Assertion2(obj, msg, assert2.ownPropertyVal, true).to.have.own.property(prop, value); + }; + assert2.notOwnPropertyVal = function(obj, prop, value, msg) { + new Assertion2(obj, msg, assert2.notOwnPropertyVal, true).to.not.have.own.property(prop, value); + }; + assert2.deepOwnPropertyVal = function(obj, prop, value, msg) { + new Assertion2(obj, msg, assert2.deepOwnPropertyVal, true).to.have.deep.own.property(prop, value); + }; + assert2.notDeepOwnPropertyVal = function(obj, prop, value, msg) { + new Assertion2(obj, msg, assert2.notDeepOwnPropertyVal, true).to.not.have.deep.own.property(prop, value); + }; + assert2.nestedProperty = function(obj, prop, msg) { + new Assertion2(obj, msg, assert2.nestedProperty, true).to.have.nested.property(prop); + }; + assert2.notNestedProperty = function(obj, prop, msg) { + new Assertion2(obj, msg, assert2.notNestedProperty, true).to.not.have.nested.property(prop); + }; + assert2.nestedPropertyVal = function(obj, prop, val, msg) { + new Assertion2(obj, msg, assert2.nestedPropertyVal, true).to.have.nested.property(prop, val); + }; + assert2.notNestedPropertyVal = function(obj, prop, val, msg) { + new Assertion2(obj, msg, assert2.notNestedPropertyVal, true).to.not.have.nested.property(prop, val); + }; + assert2.deepNestedPropertyVal = function(obj, prop, val, msg) { + new Assertion2(obj, msg, assert2.deepNestedPropertyVal, true).to.have.deep.nested.property(prop, val); + }; + assert2.notDeepNestedPropertyVal = function(obj, prop, val, msg) { + new Assertion2(obj, msg, assert2.notDeepNestedPropertyVal, true).to.not.have.deep.nested.property(prop, val); + }; + assert2.lengthOf = function(exp, len, msg) { + new Assertion2(exp, msg, assert2.lengthOf, true).to.have.lengthOf(len); + }; + assert2.hasAnyKeys = function(obj, keys, msg) { + new Assertion2(obj, msg, assert2.hasAnyKeys, true).to.have.any.keys(keys); + }; + assert2.hasAllKeys = function(obj, keys, msg) { + new Assertion2(obj, msg, assert2.hasAllKeys, true).to.have.all.keys(keys); + }; + assert2.containsAllKeys = function(obj, keys, msg) { + new Assertion2(obj, msg, assert2.containsAllKeys, true).to.contain.all.keys(keys); + }; + assert2.doesNotHaveAnyKeys = function(obj, keys, msg) { + new Assertion2(obj, msg, assert2.doesNotHaveAnyKeys, true).to.not.have.any.keys(keys); + }; + assert2.doesNotHaveAllKeys = function(obj, keys, msg) { + new Assertion2(obj, msg, assert2.doesNotHaveAllKeys, true).to.not.have.all.keys(keys); + }; + assert2.hasAnyDeepKeys = function(obj, keys, msg) { + new Assertion2(obj, msg, assert2.hasAnyDeepKeys, true).to.have.any.deep.keys(keys); + }; + assert2.hasAllDeepKeys = function(obj, keys, msg) { + new Assertion2(obj, msg, assert2.hasAllDeepKeys, true).to.have.all.deep.keys(keys); + }; + assert2.containsAllDeepKeys = function(obj, keys, msg) { + new Assertion2(obj, msg, assert2.containsAllDeepKeys, true).to.contain.all.deep.keys(keys); + }; + assert2.doesNotHaveAnyDeepKeys = function(obj, keys, msg) { + new Assertion2(obj, msg, assert2.doesNotHaveAnyDeepKeys, true).to.not.have.any.deep.keys(keys); + }; + assert2.doesNotHaveAllDeepKeys = function(obj, keys, msg) { + new Assertion2(obj, msg, assert2.doesNotHaveAllDeepKeys, true).to.not.have.all.deep.keys(keys); + }; + assert2.throws = function(fn, errorLike, errMsgMatcher, msg) { + if ("string" === typeof errorLike || errorLike instanceof RegExp) { + errMsgMatcher = errorLike; + errorLike = null; + } + var assertErr = new Assertion2(fn, msg, assert2.throws, true).to.throw(errorLike, errMsgMatcher); + return flag(assertErr, "object"); + }; + assert2.doesNotThrow = function(fn, errorLike, errMsgMatcher, msg) { + if ("string" === typeof errorLike || errorLike instanceof RegExp) { + errMsgMatcher = errorLike; + errorLike = null; + } + new Assertion2(fn, msg, assert2.doesNotThrow, true).to.not.throw(errorLike, errMsgMatcher); + }; + assert2.operator = function(val, operator, val2, msg) { + var ok; + switch (operator) { + case "==": + ok = val == val2; + break; + case "===": + ok = val === val2; + break; + case ">": + ok = val > val2; + break; + case ">=": + ok = val >= val2; + break; + case "<": + ok = val < val2; + break; + case "<=": + ok = val <= val2; + break; + case "!=": + ok = val != val2; + break; + case "!==": + ok = val !== val2; + break; + default: + msg = msg ? msg + ": " : msg; + throw new chai2.AssertionError( + msg + 'Invalid operator "' + operator + '"', + void 0, + assert2.operator + ); + } + var test = new Assertion2(ok, msg, assert2.operator, true); + test.assert( + true === flag(test, "object"), + "expected " + util2.inspect(val) + " to be " + operator + " " + util2.inspect(val2), + "expected " + util2.inspect(val) + " to not be " + operator + " " + util2.inspect(val2) + ); + }; + assert2.closeTo = function(act, exp, delta, msg) { + new Assertion2(act, msg, assert2.closeTo, true).to.be.closeTo(exp, delta); + }; + assert2.approximately = function(act, exp, delta, msg) { + new Assertion2(act, msg, assert2.approximately, true).to.be.approximately(exp, delta); + }; + assert2.sameMembers = function(set1, set2, msg) { + new Assertion2(set1, msg, assert2.sameMembers, true).to.have.same.members(set2); + }; + assert2.notSameMembers = function(set1, set2, msg) { + new Assertion2(set1, msg, assert2.notSameMembers, true).to.not.have.same.members(set2); + }; + assert2.sameDeepMembers = function(set1, set2, msg) { + new Assertion2(set1, msg, assert2.sameDeepMembers, true).to.have.same.deep.members(set2); + }; + assert2.notSameDeepMembers = function(set1, set2, msg) { + new Assertion2(set1, msg, assert2.notSameDeepMembers, true).to.not.have.same.deep.members(set2); + }; + assert2.sameOrderedMembers = function(set1, set2, msg) { + new Assertion2(set1, msg, assert2.sameOrderedMembers, true).to.have.same.ordered.members(set2); + }; + assert2.notSameOrderedMembers = function(set1, set2, msg) { + new Assertion2(set1, msg, assert2.notSameOrderedMembers, true).to.not.have.same.ordered.members(set2); + }; + assert2.sameDeepOrderedMembers = function(set1, set2, msg) { + new Assertion2(set1, msg, assert2.sameDeepOrderedMembers, true).to.have.same.deep.ordered.members(set2); + }; + assert2.notSameDeepOrderedMembers = function(set1, set2, msg) { + new Assertion2(set1, msg, assert2.notSameDeepOrderedMembers, true).to.not.have.same.deep.ordered.members(set2); + }; + assert2.includeMembers = function(superset, subset, msg) { + new Assertion2(superset, msg, assert2.includeMembers, true).to.include.members(subset); + }; + assert2.notIncludeMembers = function(superset, subset, msg) { + new Assertion2(superset, msg, assert2.notIncludeMembers, true).to.not.include.members(subset); + }; + assert2.includeDeepMembers = function(superset, subset, msg) { + new Assertion2(superset, msg, assert2.includeDeepMembers, true).to.include.deep.members(subset); + }; + assert2.notIncludeDeepMembers = function(superset, subset, msg) { + new Assertion2(superset, msg, assert2.notIncludeDeepMembers, true).to.not.include.deep.members(subset); + }; + assert2.includeOrderedMembers = function(superset, subset, msg) { + new Assertion2(superset, msg, assert2.includeOrderedMembers, true).to.include.ordered.members(subset); + }; + assert2.notIncludeOrderedMembers = function(superset, subset, msg) { + new Assertion2(superset, msg, assert2.notIncludeOrderedMembers, true).to.not.include.ordered.members(subset); + }; + assert2.includeDeepOrderedMembers = function(superset, subset, msg) { + new Assertion2(superset, msg, assert2.includeDeepOrderedMembers, true).to.include.deep.ordered.members(subset); + }; + assert2.notIncludeDeepOrderedMembers = function(superset, subset, msg) { + new Assertion2(superset, msg, assert2.notIncludeDeepOrderedMembers, true).to.not.include.deep.ordered.members(subset); + }; + assert2.oneOf = function(inList, list, msg) { + new Assertion2(inList, msg, assert2.oneOf, true).to.be.oneOf(list); + }; + assert2.changes = function(fn, obj, prop, msg) { + if (arguments.length === 3 && typeof obj === "function") { + msg = prop; + prop = null; + } + new Assertion2(fn, msg, assert2.changes, true).to.change(obj, prop); + }; + assert2.changesBy = function(fn, obj, prop, delta, msg) { + if (arguments.length === 4 && typeof obj === "function") { + var tmpMsg = delta; + delta = prop; + msg = tmpMsg; + } else if (arguments.length === 3) { + delta = prop; + prop = null; + } + new Assertion2(fn, msg, assert2.changesBy, true).to.change(obj, prop).by(delta); + }; + assert2.doesNotChange = function(fn, obj, prop, msg) { + if (arguments.length === 3 && typeof obj === "function") { + msg = prop; + prop = null; + } + return new Assertion2(fn, msg, assert2.doesNotChange, true).to.not.change(obj, prop); + }; + assert2.changesButNotBy = function(fn, obj, prop, delta, msg) { + if (arguments.length === 4 && typeof obj === "function") { + var tmpMsg = delta; + delta = prop; + msg = tmpMsg; + } else if (arguments.length === 3) { + delta = prop; + prop = null; + } + new Assertion2(fn, msg, assert2.changesButNotBy, true).to.change(obj, prop).but.not.by(delta); + }; + assert2.increases = function(fn, obj, prop, msg) { + if (arguments.length === 3 && typeof obj === "function") { + msg = prop; + prop = null; + } + return new Assertion2(fn, msg, assert2.increases, true).to.increase(obj, prop); + }; + assert2.increasesBy = function(fn, obj, prop, delta, msg) { + if (arguments.length === 4 && typeof obj === "function") { + var tmpMsg = delta; + delta = prop; + msg = tmpMsg; + } else if (arguments.length === 3) { + delta = prop; + prop = null; + } + new Assertion2(fn, msg, assert2.increasesBy, true).to.increase(obj, prop).by(delta); + }; + assert2.doesNotIncrease = function(fn, obj, prop, msg) { + if (arguments.length === 3 && typeof obj === "function") { + msg = prop; + prop = null; + } + return new Assertion2(fn, msg, assert2.doesNotIncrease, true).to.not.increase(obj, prop); + }; + assert2.increasesButNotBy = function(fn, obj, prop, delta, msg) { + if (arguments.length === 4 && typeof obj === "function") { + var tmpMsg = delta; + delta = prop; + msg = tmpMsg; + } else if (arguments.length === 3) { + delta = prop; + prop = null; + } + new Assertion2(fn, msg, assert2.increasesButNotBy, true).to.increase(obj, prop).but.not.by(delta); + }; + assert2.decreases = function(fn, obj, prop, msg) { + if (arguments.length === 3 && typeof obj === "function") { + msg = prop; + prop = null; + } + return new Assertion2(fn, msg, assert2.decreases, true).to.decrease(obj, prop); + }; + assert2.decreasesBy = function(fn, obj, prop, delta, msg) { + if (arguments.length === 4 && typeof obj === "function") { + var tmpMsg = delta; + delta = prop; + msg = tmpMsg; + } else if (arguments.length === 3) { + delta = prop; + prop = null; + } + new Assertion2(fn, msg, assert2.decreasesBy, true).to.decrease(obj, prop).by(delta); + }; + assert2.doesNotDecrease = function(fn, obj, prop, msg) { + if (arguments.length === 3 && typeof obj === "function") { + msg = prop; + prop = null; + } + return new Assertion2(fn, msg, assert2.doesNotDecrease, true).to.not.decrease(obj, prop); + }; + assert2.doesNotDecreaseBy = function(fn, obj, prop, delta, msg) { + if (arguments.length === 4 && typeof obj === "function") { + var tmpMsg = delta; + delta = prop; + msg = tmpMsg; + } else if (arguments.length === 3) { + delta = prop; + prop = null; + } + return new Assertion2(fn, msg, assert2.doesNotDecreaseBy, true).to.not.decrease(obj, prop).by(delta); + }; + assert2.decreasesButNotBy = function(fn, obj, prop, delta, msg) { + if (arguments.length === 4 && typeof obj === "function") { + var tmpMsg = delta; + delta = prop; + msg = tmpMsg; + } else if (arguments.length === 3) { + delta = prop; + prop = null; + } + new Assertion2(fn, msg, assert2.decreasesButNotBy, true).to.decrease(obj, prop).but.not.by(delta); + }; + assert2.ifError = function(val) { + if (val) { + throw val; + } + }; + assert2.isExtensible = function(obj, msg) { + new Assertion2(obj, msg, assert2.isExtensible, true).to.be.extensible; + }; + assert2.isNotExtensible = function(obj, msg) { + new Assertion2(obj, msg, assert2.isNotExtensible, true).to.not.be.extensible; + }; + assert2.isSealed = function(obj, msg) { + new Assertion2(obj, msg, assert2.isSealed, true).to.be.sealed; + }; + assert2.isNotSealed = function(obj, msg) { + new Assertion2(obj, msg, assert2.isNotSealed, true).to.not.be.sealed; + }; + assert2.isFrozen = function(obj, msg) { + new Assertion2(obj, msg, assert2.isFrozen, true).to.be.frozen; + }; + assert2.isNotFrozen = function(obj, msg) { + new Assertion2(obj, msg, assert2.isNotFrozen, true).to.not.be.frozen; + }; + assert2.isEmpty = function(val, msg) { + new Assertion2(val, msg, assert2.isEmpty, true).to.be.empty; + }; + assert2.isNotEmpty = function(val, msg) { + new Assertion2(val, msg, assert2.isNotEmpty, true).to.not.be.empty; + }; + (function alias(name, as) { + assert2[as] = assert2[name]; + return alias; + })("isOk", "ok")("isNotOk", "notOk")("throws", "throw")("throws", "Throw")("isExtensible", "extensible")("isNotExtensible", "notExtensible")("isSealed", "sealed")("isNotSealed", "notSealed")("isFrozen", "frozen")("isNotFrozen", "notFrozen")("isEmpty", "empty")("isNotEmpty", "notEmpty"); + }; + } + }); + + // node_modules/chai/lib/chai.js + var require_chai = __commonJS({ + "node_modules/chai/lib/chai.js"(exports) { + "use strict"; + var used = []; + exports.version = "4.3.8"; + exports.AssertionError = require_assertion_error(); + var util2 = require_utils(); + exports.use = function(fn) { + if (!~used.indexOf(fn)) { + fn(exports, util2); + used.push(fn); + } + return exports; + }; + exports.util = util2; + var config2 = require_config(); + exports.config = config2; + var assertion = require_assertion(); + exports.use(assertion); + var core2 = require_assertions(); + exports.use(core2); + var expect2 = require_expect(); + exports.use(expect2); + var should2 = require_should(); + exports.use(should2); + var assert2 = require_assert(); + exports.use(assert2); + } + }); + + // node_modules/chai/index.js + var require_chai2 = __commonJS({ + "node_modules/chai/index.js"(exports, module) { + "use strict"; + module.exports = require_chai(); + } + }); + + // node_modules/chai/index.mjs + var import_index = __toESM(require_chai2(), 1); + var expect = import_index.default.expect; + var version = import_index.default.version; + var Assertion = import_index.default.Assertion; + var AssertionError = import_index.default.AssertionError; + var util = import_index.default.util; + var config = import_index.default.config; + var use = import_index.default.use; + var should = import_index.default.should; + var assert = import_index.default.assert; + var core = import_index.default.core; + + // src/sensors/sensor.ts + var SensorEventType = { + start: "start", + move: "move", + cancel: "cancel", + end: "end", + destroy: "destroy" + }; + + // node_modules/eventti/dist/eventti.js + function getOrCreateEventData(e, t) { + let i = e.get(t); + return i || (i = new EventData(), e.set(t, i)), i; + } + var EventData = class { + constructor() { + this.idMap = /* @__PURE__ */ new Map(), this.fnMap = /* @__PURE__ */ new Map(), this.onceList = /* @__PURE__ */ new Set(), this.emitList = null; + } + add(e, t, i, s, n) { + if (!n && this.fnMap.has(e)) + throw new Error("Emitter: tried to add an existing event listener to an event!"); + if (this.idMap.has(i)) + switch (s) { + case "throw": + throw new Error("Emitter: tried to add an existing event listener id to an event!"); + case "ignore": + return i; + default: + this.delId(i, "update" === s); + } + let r = this.fnMap.get(e); + return r || (r = /* @__PURE__ */ new Set(), this.fnMap.set(e, r)), r.add(i), this.idMap.set(i, e), t && this.onceList.add(i), this.emitList && this.emitList.push(e), i; + } + delId(e, t = false) { + const i = this.idMap.get(e); + if (!i) + return; + const s = this.fnMap.get(i); + t || this.idMap.delete(e), this.onceList.delete(e), s.delete(e), s.size || this.fnMap.delete(i), this.emitList = null; + } + delFn(e) { + const t = this.fnMap.get(e); + t && (t.forEach((e2) => { + this.onceList.delete(e2), this.idMap.delete(e2); + }), this.fnMap.delete(e), this.emitList = null); + } + }; + var Emitter = class { + constructor(e = {}) { + const { idDedupeMode: t = "replace", allowDuplicateListeners: i = true } = e; + this.idDedupeMode = t, this.allowDuplicateListeners = i, this._events = /* @__PURE__ */ new Map(); + } + _getListeners(e) { + const t = this._events.get(e); + if (!t) + return null; + const { idMap: i, onceList: s } = t; + if (!i.size) + return null; + const n = t.emitList || [...i.values()]; + if (s.size) + if (s.size === i.size) + this._events.delete(e); + else + for (const e2 of s) + t.delId(e2); + else + t.emitList = n; + return n; + } + on(e, t, i = Symbol()) { + return getOrCreateEventData(this._events, e).add(t, false, i, this.idDedupeMode, this.allowDuplicateListeners); + } + once(e, t, i = Symbol()) { + return getOrCreateEventData(this._events, e).add(t, true, i, this.idDedupeMode, this.allowDuplicateListeners); + } + off(e, t) { + if (void 0 === e) + return void this._events.clear(); + if (void 0 === t) + return void this._events.delete(e); + const i = this._events.get(e); + i && ("function" == typeof t ? i.delFn(t) : i.delId(t), i.idMap.size || this._events.delete(e)); + } + emit(e, ...t) { + const i = this._getListeners(e); + if (!i) + return; + let s = 0, n = i.length; + for (; s < n; s++) + i[s](...t); + } + listenerCount(e) { + var t; + if (void 0 === e) { + let e2 = 0; + return this._events.forEach((t2, i) => { + e2 += this.listenerCount(i); + }), e2; + } + return (null === (t = this._events.get(e)) || void 0 === t ? void 0 : t.idMap.size) || 0; + } + }; + + // src/sensors/base-sensor.ts + var BaseSensor = class { + constructor() { + this.drag = null; + this.isDestroyed = false; + this._emitter = new Emitter(); + } + _createDragData(data) { + return { + x: data.x, + y: data.y + }; + } + _updateDragData(data) { + if (!this.drag) + return; + this.drag.x = data.x; + this.drag.y = data.y; + } + _resetDragData() { + this.drag = null; + } + _start(data) { + if (this.isDestroyed || this.drag) + return; + this.drag = this._createDragData(data); + this._emitter.emit(SensorEventType.start, data); + } + _move(data) { + if (!this.drag) + return; + this._updateDragData(data); + this._emitter.emit(SensorEventType.move, data); + } + _end(data) { + if (!this.drag) + return; + this._updateDragData(data); + this._emitter.emit(SensorEventType.end, data); + this._resetDragData(); + } + _cancel(data) { + if (!this.drag) + return; + this._updateDragData(data); + this._emitter.emit(SensorEventType.cancel, data); + this._resetDragData(); + } + on(eventName, listener, listenerId) { + return this._emitter.on(eventName, listener, listenerId); + } + off(eventName, listener) { + this._emitter.off(eventName, listener); + } + cancel() { + if (!this.drag) + return; + this._emitter.emit(SensorEventType.cancel, { + type: SensorEventType.cancel, + x: this.drag.x, + y: this.drag.y + }); + this._resetDragData(); + } + destroy() { + if (this.isDestroyed) + return; + this.isDestroyed = true; + this.cancel(); + this._emitter.emit(SensorEventType.destroy, { + type: SensorEventType.destroy + }); + this._emitter.off(); + } + }; + + // node_modules/tikki/dist/tikki.js + function createRequestFrame(e = 60) { + if ("function" == typeof requestAnimationFrame && "function" == typeof cancelAnimationFrame) + return (e2) => { + const t = requestAnimationFrame(e2); + return () => cancelAnimationFrame(t); + }; + { + const t = 1e3 / e, i = "undefined" == typeof performance ? () => Date.now() : () => performance.now(); + return (e2) => { + const r = setTimeout(() => e2(i()), t); + return () => clearTimeout(r); + }; + } + } + var AutoTickState; + !function(e) { + e[e.PAUSED = 1] = "PAUSED", e[e.ON_DEMAND = 2] = "ON_DEMAND", e[e.CONTINUOUS = 3] = "CONTINUOUS"; + }(AutoTickState || (AutoTickState = {})); + var Ticker = class { + constructor(e = {}) { + const { phases: t = [], autoTick: i = AutoTickState.ON_DEMAND, allowDuplicateListeners: r = true, idDedupeMode: s = "replace", requestFrame: n = createRequestFrame() } = e; + this.phases = t, this._autoTick = i, this._requestFrame = n, this._cancelFrame = null, this._queue = [], this._emitter = new Emitter({ allowDuplicateListeners: r, idDedupeMode: s }), this.tick = this.tick.bind(this); + } + get requestFrame() { + return this._requestFrame; + } + set requestFrame(e) { + this._requestFrame = e, this._kickstart(); + } + get autoTick() { + return this._autoTick; + } + set autoTick(e) { + this._autoTick = e, this._kickstart(); + } + get allowDuplicateListeners() { + return this._emitter.allowDuplicateListeners; + } + set allowDuplicateListeners(e) { + this._emitter.allowDuplicateListeners = e; + } + get idDedupeMode() { + return this._emitter.idDedupeMode; + } + set idDedupeMode(e) { + this._emitter.idDedupeMode = e; + } + tick(...e) { + this._cancelFrame = null; + const { _queue: t } = this; + if (t.length) + throw new Error("Ticker: Can't tick before the previous tick has finished!"); + this._request(); + const { phases: i, _emitter: r } = this; + let s, n, a, c, u, o; + for (s = 0, a = i.length; s < a; s++) + o = r._getListeners(i[s]), o && t.push(o); + for (s = 0, a = t.length; s < a; s++) + for (u = t[s], n = 0, c = u.length; n < c; n++) + u[n](...e); + t.length = 0, this._autoTick !== AutoTickState.ON_DEMAND || r.listenerCount() || this._cancel(); + } + on(e, t, i) { + const r = this._emitter.on(e, t, i); + return this._request(), r; + } + once(e, t, i) { + const r = this._emitter.once(e, t, i); + return this._request(), r; + } + off(e, t) { + return this._emitter.off(e, t); + } + listenerCount(e) { + return this._emitter.listenerCount(e); + } + _request() { + this._requestFrame && !this._cancelFrame && this._autoTick >= AutoTickState.ON_DEMAND && (this._cancelFrame = this._requestFrame(this.tick)); + } + _cancel() { + this._cancelFrame && (this._cancelFrame(), this._cancelFrame = null); + } + _kickstart() { + this._autoTick === AutoTickState.ON_DEMAND ? this._emitter.listenerCount() && this._request() : this._autoTick === AutoTickState.CONTINUOUS ? this._request() : this._cancel(); + } + }; + + // src/singletons/ticker.ts + var tickerReadPhase = Symbol(); + var tickerWritePhase = Symbol(); + var ticker = new Ticker({ phases: [tickerReadPhase, tickerWritePhase] }); + + // src/utils/get-pointer-event-data.ts + function getPointerEventData(e, id) { + if ("pointerId" in e) { + return e.pointerId === id ? e : null; + } + if ("changedTouches" in e) { + let i = 0; + for (; i < e.changedTouches.length; i++) { + if (e.changedTouches[i].identifier === id) { + return e.changedTouches[i]; + } + } + return null; + } + return e; + } + + // src/utils/get-pointer-type.ts + function getPointerType(e) { + return "pointerType" in e ? e.pointerType : "touches" in e ? "touch" : "mouse"; + } + + // src/utils/get-pointer-id.ts + function getPointerId(e) { + if ("pointerId" in e) + return e.pointerId; + if ("changedTouches" in e) + return e.changedTouches[0] ? e.changedTouches[0].identifier : null; + return -1; + } + + // src/constants.ts + var IS_BROWSER = typeof window !== "undefined" && typeof window.document !== "undefined"; + var HAS_PASSIVE_EVENTS = (() => { + let isPassiveEventsSupported = false; + try { + const passiveOpts = Object.defineProperty({}, "passive", { + get: function() { + isPassiveEventsSupported = true; + } + }); + window.addEventListener("testPassive", null, passiveOpts); + window.removeEventListener("testPassive", null, passiveOpts); + } catch (e) { + } + return isPassiveEventsSupported; + })(); + var HAS_TOUCH_EVENTS = IS_BROWSER && "ontouchstart" in window; + var HAS_POINTER_EVENTS = IS_BROWSER && !!window.PointerEvent; + var IS_SAFARI = !!(IS_BROWSER && navigator.vendor && navigator.vendor.indexOf("Apple") > -1 && navigator.userAgent && navigator.userAgent.indexOf("CriOS") == -1 && navigator.userAgent.indexOf("FxiOS") == -1); + + // src/utils/parse-listener-options.ts + function parseListenerOptions(options = {}) { + const { capture = true, passive = true } = options; + if (HAS_PASSIVE_EVENTS) { + return { capture, passive }; + } else { + return { capture }; + } + } + + // src/utils/parse-source-events.ts + function parseSourceEvents(sourceEvents) { + return sourceEvents === "auto" || sourceEvents === void 0 ? HAS_POINTER_EVENTS ? "pointer" : HAS_TOUCH_EVENTS ? "touch" : "mouse" : sourceEvents; + } + + // src/sensors/pointer-sensor.ts + var POINTER_EVENTS = { + start: "pointerdown", + move: "pointermove", + cancel: "pointercancel", + end: "pointerup" + }; + var TOUCH_EVENTS = { + start: "touchstart", + move: "touchmove", + cancel: "touchcancel", + end: "touchend" + }; + var MOUSE_EVENTS = { + start: "mousedown", + move: "mousemove", + cancel: "", + end: "mouseup" + }; + var SOURCE_EVENTS = { + pointer: POINTER_EVENTS, + touch: TOUCH_EVENTS, + mouse: MOUSE_EVENTS + }; + var PointerSensor = class { + constructor(element, options = {}) { + const { + listenerOptions = {}, + sourceEvents = "auto", + startPredicate = (e) => "button" in e && e.button > 0 ? false : true + } = options; + this.element = element; + this.drag = null; + this.isDestroyed = false; + this._areWindowListenersBound = false; + this._startPredicate = startPredicate; + this._listenerOptions = parseListenerOptions(listenerOptions); + this._sourceEvents = parseSourceEvents(sourceEvents); + this._emitter = new Emitter(); + this._onStart = this._onStart.bind(this); + this._onMove = this._onMove.bind(this); + this._onCancel = this._onCancel.bind(this); + this._onEnd = this._onEnd.bind(this); + element.addEventListener( + SOURCE_EVENTS[this._sourceEvents].start, + this._onStart, + this._listenerOptions + ); + } + /** + * Check if the provided event contains the tracked pointer id or in the case + * of touch event if the first changed touch is the tracked touch object and + * return the event or touch object. Otherwise return null. + */ + _getTrackedPointerEventData(e) { + return this.drag ? getPointerEventData(e, this.drag.pointerId) : null; + } + /** + * Listener for start event. + */ + _onStart(e) { + if (this.isDestroyed || this.drag) + return; + if (!this._startPredicate(e)) + return; + const pointerId = getPointerId(e); + if (pointerId === null) + return; + const pointerEventData = getPointerEventData(e, pointerId); + if (pointerEventData === null) + return; + const dragData = { + pointerId, + pointerType: getPointerType(e), + x: pointerEventData.clientX, + y: pointerEventData.clientY + }; + this.drag = dragData; + const eventData = { + ...dragData, + type: SensorEventType.start, + srcEvent: e, + target: pointerEventData.target + }; + this._emitter.emit(eventData.type, eventData); + if (this.drag) { + this._bindWindowListeners(); + } + } + /** + * Listener for move event. + */ + _onMove(e) { + if (!this.drag) + return; + const pointerEventData = this._getTrackedPointerEventData(e); + if (!pointerEventData) + return; + this.drag.x = pointerEventData.clientX; + this.drag.y = pointerEventData.clientY; + const eventData = { + type: SensorEventType.move, + srcEvent: e, + target: pointerEventData.target, + ...this.drag + }; + this._emitter.emit(eventData.type, eventData); + } + /** + * Listener for cancel event. + */ + _onCancel(e) { + if (!this.drag) + return; + const pointerEventData = this._getTrackedPointerEventData(e); + if (!pointerEventData) + return; + this.drag.x = pointerEventData.clientX; + this.drag.y = pointerEventData.clientY; + const eventData = { + type: SensorEventType.cancel, + srcEvent: e, + target: pointerEventData.target, + ...this.drag + }; + this._emitter.emit(eventData.type, eventData); + this._resetDrag(); + } + /** + * Listener for end event. + */ + _onEnd(e) { + if (!this.drag) + return; + const pointerEventData = this._getTrackedPointerEventData(e); + if (!pointerEventData) + return; + this.drag.x = pointerEventData.clientX; + this.drag.y = pointerEventData.clientY; + const eventData = { + type: SensorEventType.end, + srcEvent: e, + target: pointerEventData.target, + ...this.drag + }; + this._emitter.emit(eventData.type, eventData); + this._resetDrag(); + } + /** + * Bind window event listeners for move/end/cancel. + */ + _bindWindowListeners() { + if (this._areWindowListenersBound) + return; + const { move, end, cancel } = SOURCE_EVENTS[this._sourceEvents]; + window.addEventListener(move, this._onMove, this._listenerOptions); + window.addEventListener(end, this._onEnd, this._listenerOptions); + if (cancel) { + window.addEventListener(cancel, this._onCancel, this._listenerOptions); + } + this._areWindowListenersBound = true; + } + /** + * Unbind window event listeners for move/end/cancel. + */ + _unbindWindowListeners() { + if (this._areWindowListenersBound) { + const { move, end, cancel } = SOURCE_EVENTS[this._sourceEvents]; + window.removeEventListener(move, this._onMove, this._listenerOptions); + window.removeEventListener(end, this._onEnd, this._listenerOptions); + if (cancel) { + window.removeEventListener(cancel, this._onCancel, this._listenerOptions); + } + this._areWindowListenersBound = false; + } + } + /** + * Reset drag data. + */ + _resetDrag() { + this.drag = null; + this._unbindWindowListeners(); + } + /** + * Forcefully cancel the drag process. + */ + cancel() { + if (!this.drag) + return; + const eventData = { + type: SensorEventType.cancel, + srcEvent: null, + target: null, + ...this.drag + }; + this._emitter.emit(eventData.type, eventData); + this._resetDrag(); + } + /** + * Update the instance's settings. + */ + updateSettings(options) { + if (this.isDestroyed) + return; + const { listenerOptions, sourceEvents, startPredicate } = options; + const nextSourceEvents = parseSourceEvents(sourceEvents); + const nextListenerOptions = parseListenerOptions(listenerOptions); + if (startPredicate && this._startPredicate !== startPredicate) { + this._startPredicate = startPredicate; + } + if (listenerOptions && (this._listenerOptions.capture !== nextListenerOptions.capture || this._listenerOptions.passive === nextListenerOptions.passive) || sourceEvents && this._sourceEvents !== nextSourceEvents) { + this.element.removeEventListener( + SOURCE_EVENTS[this._sourceEvents].start, + this._onStart, + this._listenerOptions + ); + this._unbindWindowListeners(); + this.cancel(); + if (sourceEvents) { + this._sourceEvents = nextSourceEvents; + } + if (listenerOptions && nextListenerOptions) { + this._listenerOptions = nextListenerOptions; + } + this.element.addEventListener( + SOURCE_EVENTS[this._sourceEvents].start, + this._onStart, + this._listenerOptions + ); + } + } + /** + * Bind a drag event listener. + */ + on(eventName, listener, listenerId) { + return this._emitter.on(eventName, listener, listenerId); + } + /** + * Unbind a drag event listener. + */ + off(eventName, listener) { + this._emitter.off(eventName, listener); + } + /** + * Destroy the instance and unbind all drag event listeners. + */ + destroy() { + if (this.isDestroyed) + return; + this.isDestroyed = true; + this.cancel(); + this._emitter.emit(SensorEventType.destroy, { + type: SensorEventType.destroy + }); + this._emitter.off(); + this.element.removeEventListener( + SOURCE_EVENTS[this._sourceEvents].start, + this._onStart, + this._listenerOptions + ); + } + }; + + // src/sensors/keyboard-sensor.ts + var KeyboardSensor = class extends BaseSensor { + constructor(options = {}) { + super(); + const { + moveDistance = 25, + startPredicate = (e) => { + if (e.key === "Enter" || e.key === " ") { + if (document.activeElement && document.activeElement !== document.body) { + const { left, top } = document.activeElement.getBoundingClientRect(); + return { x: left, y: top }; + } + } + return null; + }, + movePredicate = (e, sensor, moveDistance2) => { + if (!sensor.drag) + return null; + switch (e.key) { + case "ArrowLeft": { + return { + x: sensor.drag.x - moveDistance2.x, + y: sensor.drag.y + }; + } + case "ArrowRight": { + return { + x: sensor.drag.x + moveDistance2.x, + y: sensor.drag.y + }; + } + case "ArrowUp": { + return { + x: sensor.drag.x, + y: sensor.drag.y - moveDistance2.y + }; + } + case "ArrowDown": { + return { + x: sensor.drag.x, + y: sensor.drag.y + moveDistance2.y + }; + } + default: { + return null; + } + } + }, + cancelPredicate = (e, sensor) => { + if (sensor.drag && e.key === "Escape") { + return { x: sensor.drag.x, y: sensor.drag.y }; + } + return null; + }, + endPredicate = (e, sensor) => { + if (sensor.drag && (e.key === "Enter" || e.key === " ")) { + return { x: sensor.drag.x, y: sensor.drag.y }; + } + return null; + } + } = options; + this._moveDistance = typeof moveDistance === "number" ? { x: moveDistance, y: moveDistance } : { ...moveDistance }; + this._startPredicate = startPredicate; + this._movePredicate = movePredicate; + this._cancelPredicate = cancelPredicate; + this._endPredicate = endPredicate; + this.cancel = this.cancel.bind(this); + this._onKeyDown = this._onKeyDown.bind(this); + document.addEventListener("keydown", this._onKeyDown); + window.addEventListener("blur", this.cancel); + window.addEventListener("visibilitychange", this.cancel); + } + _onKeyDown(e) { + if (!this.drag) { + const startPosition = this._startPredicate(e, this, this._moveDistance); + if (startPosition) { + e.preventDefault(); + this._start({ + type: "start", + x: startPosition.x, + y: startPosition.y, + srcEvent: e + }); + } + return; + } + const cancelPosition = this._cancelPredicate(e, this, this._moveDistance); + if (cancelPosition) { + e.preventDefault(); + this._cancel({ + type: "cancel", + x: cancelPosition.x, + y: cancelPosition.y, + srcEvent: e + }); + return; + } + const endPosition = this._endPredicate(e, this, this._moveDistance); + if (endPosition) { + e.preventDefault(); + this._end({ + type: "end", + x: endPosition.x, + y: endPosition.y, + srcEvent: e + }); + return; + } + const movePosition = this._movePredicate(e, this, this._moveDistance); + if (movePosition) { + e.preventDefault(); + this._move({ + type: "move", + x: movePosition.x, + y: movePosition.y, + srcEvent: e + }); + return; + } + } + updateSettings(options = {}) { + if (options.moveDistance !== void 0) { + if (typeof options.moveDistance === "number") { + this._moveDistance.x = options.moveDistance; + this._moveDistance.y = options.moveDistance; + } else { + this._moveDistance.x = options.moveDistance.x; + this._moveDistance.y = options.moveDistance.y; + } + } + if (options.startPredicate !== void 0) { + this._startPredicate = options.startPredicate; + } + if (options.movePredicate !== void 0) { + this._movePredicate = options.movePredicate; + } + if (options.cancelPredicate !== void 0) { + this._cancelPredicate = options.cancelPredicate; + } + if (options.endPredicate !== void 0) { + this._endPredicate = options.endPredicate; + } + } + destroy() { + if (this.isDestroyed) + return; + super.destroy(); + document.removeEventListener("keydown", this._onKeyDown); + window.removeEventListener("blur", this.cancel); + window.removeEventListener("visibilitychange", this.cancel); + } + }; + + // node_modules/mezr/dist/esm/utils/getStyle.js + var STYLE_DECLARATION_CACHE = /* @__PURE__ */ new WeakMap(); + function getStyle(e, t) { + if (t) + return window.getComputedStyle(e, t); + let C = STYLE_DECLARATION_CACHE.get(e)?.deref(); + return C || (C = window.getComputedStyle(e, null), STYLE_DECLARATION_CACHE.set(e, new WeakRef(C))), C; + } + + // node_modules/mezr/dist/esm/utils/constants.js + var IS_BROWSER2 = "undefined" != typeof window && void 0 !== window.document; + var IS_SAFARI2 = !!(IS_BROWSER2 && navigator.vendor && navigator.vendor.indexOf("Apple") > -1 && navigator.userAgent && -1 == navigator.userAgent.indexOf("CriOS") && -1 == navigator.userAgent.indexOf("FxiOS")); + var BOX_EDGE = { content: "content", padding: "padding", scrollbar: "scrollbar", border: "border", margin: "margin" }; + var INCLUDE_WINDOW_SCROLLBAR = { [BOX_EDGE.content]: false, [BOX_EDGE.padding]: false, [BOX_EDGE.scrollbar]: true, [BOX_EDGE.border]: true, [BOX_EDGE.margin]: true }; + var SCROLLABLE_OVERFLOWS = /* @__PURE__ */ new Set(["auto", "scroll"]); + var IS_CHROMIUM = (() => { + try { + return window.navigator.userAgentData.brands.some(({ brand: n }) => "Chromium" === n); + } catch (n) { + return false; + } + })(); + + // node_modules/mezr/dist/esm/utils/isDocumentElement.js + function isDocumentElement(e) { + return e instanceof HTMLHtmlElement; + } + + // node_modules/mezr/dist/esm/utils/isIntersecting.js + function isIntersecting(t, e) { + return !(t.left + t.width <= e.left || e.left + e.width <= t.left || t.top + t.height <= e.top || e.top + e.height <= t.top); + } + + // node_modules/mezr/dist/esm/utils/getDistanceBetweenPoints.js + function getDistanceBetweenPoints(t, e, n, o) { + return Math.sqrt(Math.pow(n - t, 2) + Math.pow(o - e, 2)); + } + + // node_modules/mezr/dist/esm/utils/getDistanceBetweenRects.js + function getDistanceBetweenRects(t, e) { + if (isIntersecting(t, e)) + return null; + const n = t.left + t.width, i = t.top + t.height, o = e.left + e.width, s = e.top + e.height; + return n <= e.left ? i <= e.top ? getDistanceBetweenPoints(n, i, e.left, e.top) : t.top >= s ? getDistanceBetweenPoints(n, t.top, e.left, s) : e.left - n : t.left >= o ? i <= e.top ? getDistanceBetweenPoints(t.left, i, o, e.top) : t.top >= s ? getDistanceBetweenPoints(t.left, t.top, o, s) : t.left - o : i <= e.top ? e.top - i : t.top - s; + } + + // node_modules/mezr/dist/esm/utils/isWindow.js + function isWindow(n) { + return n instanceof Window; + } + + // node_modules/mezr/dist/esm/utils/isDocument.js + function isDocument(n) { + return n instanceof Document; + } + + // node_modules/mezr/dist/esm/utils/getPreciseScrollbarSize.js + var SUBPIXEL_OFFSET = /* @__PURE__ */ new Map(); + var testStyleElement = null; + var testParentElement = null; + var testChildElement = null; + function getSubpixelScrollbarSize(t, e) { + const n = t.split("."); + let l = SUBPIXEL_OFFSET.get(n[1]); + if (void 0 === l) { + testStyleElement || (testStyleElement = document.createElement("style")), testStyleElement.innerHTML = ` + #mezr-scrollbar-test::-webkit-scrollbar { + width: ${t} !important; + } + `, testParentElement && testChildElement || (testParentElement = document.createElement("div"), testChildElement = document.createElement("div"), testParentElement.appendChild(testChildElement), testParentElement.id = "mezr-scrollbar-test", testParentElement.style.cssText = "\n all: unset !important;\n position: fixed !important;\n top: -200px !important;\n left: 0px !important;\n width: 100px !important;\n height: 100px !important;\n overflow: scroll !important;\n pointer-events: none !important;\n visibility: hidden !important;\n ", testChildElement.style.cssText = "\n all: unset !important;\n position: absolute !important;\n inset: 0 !important;\n "), document.body.appendChild(testStyleElement), document.body.appendChild(testParentElement); + l = testParentElement.getBoundingClientRect().width - testChildElement.getBoundingClientRect().width - e, SUBPIXEL_OFFSET.set(n[1], l), document.body.removeChild(testParentElement), document.body.removeChild(testStyleElement); + } + return e + l; + } + function getPreciseScrollbarSize(t, e, n) { + if (n <= 0) + return 0; + if (IS_CHROMIUM) { + const n2 = getStyle(t, "::-webkit-scrollbar"), l = "x" === e ? n2.height : n2.width, i = parseFloat(l); + if (!Number.isNaN(i) && !Number.isInteger(i)) + return getSubpixelScrollbarSize(l, i); + } + return n; + } + + // node_modules/mezr/dist/esm/utils/getWindowWidth.js + function getWindowWidth(e, r = false) { + if (r) + return e.innerWidth; + const { innerWidth: t, document: i } = e, { documentElement: n } = i, { clientWidth: c } = n; + return t - getPreciseScrollbarSize(n, "y", t - c); + } + + // node_modules/mezr/dist/esm/utils/getDocumentWidth.js + function getDocumentWidth({ documentElement: t }) { + return Math.max(t.scrollWidth, t.clientWidth, t.getBoundingClientRect().width); + } + + // node_modules/mezr/dist/esm/utils/getElementWidth.js + function getElementWidth(t, e = BOX_EDGE.border) { + let { width: r } = t.getBoundingClientRect(); + if (e === BOX_EDGE.border) + return r; + const o = getStyle(t); + return e === BOX_EDGE.margin ? (r += Math.max(0, parseFloat(o.marginLeft) || 0), r += Math.max(0, parseFloat(o.marginRight) || 0), r) : (r -= parseFloat(o.borderLeftWidth) || 0, r -= parseFloat(o.borderRightWidth) || 0, e === BOX_EDGE.scrollbar ? r : (!isDocumentElement(t) && SCROLLABLE_OVERFLOWS.has(o.overflowY) && (r -= getPreciseScrollbarSize(t, "y", Math.round(r) - t.clientWidth)), e === BOX_EDGE.padding || (r -= parseFloat(o.paddingLeft) || 0, r -= parseFloat(o.paddingRight) || 0), r)); + } + + // node_modules/mezr/dist/esm/getWidth.js + function getWidth(t, i = BOX_EDGE.border) { + return isWindow(t) ? getWindowWidth(t, INCLUDE_WINDOW_SCROLLBAR[i]) : isDocument(t) ? getDocumentWidth(t) : getElementWidth(t, i); + } + + // node_modules/mezr/dist/esm/utils/getWindowHeight.js + function getWindowHeight(e, r = false) { + if (r) + return e.innerHeight; + const { innerHeight: t, document: i } = e, { documentElement: n } = i, { clientHeight: c } = n; + return t - getPreciseScrollbarSize(n, "x", t - c); + } + + // node_modules/mezr/dist/esm/utils/getDocumentHeight.js + function getDocumentHeight({ documentElement: t }) { + return Math.max(t.scrollHeight, t.clientHeight, t.getBoundingClientRect().height); + } + + // node_modules/mezr/dist/esm/utils/getElementHeight.js + function getElementHeight(t, e = BOX_EDGE.border) { + let { height: r } = t.getBoundingClientRect(); + if (e === BOX_EDGE.border) + return r; + const o = getStyle(t); + return e === BOX_EDGE.margin ? (r += Math.max(0, parseFloat(o.marginTop) || 0), r += Math.max(0, parseFloat(o.marginBottom) || 0), r) : (r -= parseFloat(o.borderTopWidth) || 0, r -= parseFloat(o.borderBottomWidth) || 0, e === BOX_EDGE.scrollbar ? r : (!isDocumentElement(t) && SCROLLABLE_OVERFLOWS.has(o.overflowX) && (r -= getPreciseScrollbarSize(t, "x", Math.round(r) - t.clientHeight)), e === BOX_EDGE.padding || (r -= parseFloat(o.paddingTop) || 0, r -= parseFloat(o.paddingBottom) || 0), r)); + } + + // node_modules/mezr/dist/esm/getHeight.js + function getHeight(t, e = BOX_EDGE.border) { + return isWindow(t) ? getWindowHeight(t, INCLUDE_WINDOW_SCROLLBAR[e]) : isDocument(t) ? getDocumentHeight(t) : getElementHeight(t, e); + } + + // node_modules/mezr/dist/esm/utils/isRectObject.js + function isRectObject(t) { + return t?.constructor === Object; + } + + // node_modules/mezr/dist/esm/utils/getOffsetFromDocument.js + function getOffsetFromDocument(t, o = BOX_EDGE.border) { + const e = { left: 0, top: 0 }; + if (isDocument(t)) + return e; + if (isWindow(t)) + return e.left += t.scrollX || 0, e.top += t.scrollY || 0, e; + const r = t.ownerDocument.defaultView; + r && (e.left += r.scrollX || 0, e.top += r.scrollY || 0); + const n = t.getBoundingClientRect(); + if (e.left += n.left, e.top += n.top, o === BOX_EDGE.border) + return e; + const l = getStyle(t); + return o === BOX_EDGE.margin ? (e.left -= Math.max(0, parseFloat(l.marginLeft) || 0), e.top -= Math.max(0, parseFloat(l.marginTop) || 0), e) : (e.left += parseFloat(l.borderLeftWidth) || 0, e.top += parseFloat(l.borderTopWidth) || 0, o === BOX_EDGE.scrollbar || o === BOX_EDGE.padding || (e.left += parseFloat(l.paddingLeft) || 0, e.top += parseFloat(l.paddingTop) || 0), e); + } + + // node_modules/mezr/dist/esm/getOffset.js + function getOffset(t, e) { + const o = isRectObject(t) ? { left: t.left, top: t.top } : Array.isArray(t) ? getOffsetFromDocument(...t) : getOffsetFromDocument(t); + if (e && !isDocument(e)) { + const t2 = isRectObject(e) ? e : Array.isArray(e) ? getOffsetFromDocument(e[0], e[1]) : getOffsetFromDocument(e); + o.left -= t2.left, o.top -= t2.top; + } + return o; + } + + // node_modules/mezr/dist/esm/getRect.js + function getRect(t, e) { + let i = 0, g = 0; + isRectObject(t) ? (i = t.width, g = t.height) : Array.isArray(t) ? (i = getWidth(...t), g = getHeight(...t)) : (i = getWidth(t), g = getHeight(t)); + const r = getOffset(t, e); + return { width: i, height: g, ...r, right: r.left + i, bottom: r.top + g }; + } + + // node_modules/mezr/dist/esm/utils/getNormalizedRect.js + function getNormalizedRect(t) { + return isRectObject(t) ? t : getRect(t); + } + + // node_modules/mezr/dist/esm/getDistance.js + function getDistance(e, t) { + const c = getNormalizedRect(e), i = getNormalizedRect(t); + return getDistanceBetweenRects(c, i); + } + + // node_modules/mezr/dist/esm/getIntersection.js + function getIntersection(t, ...e) { + const o = { ...getNormalizedRect(t), right: 0, bottom: 0 }; + for (const t2 of e) { + const e2 = getNormalizedRect(t2), i = Math.max(o.left, e2.left), h = Math.min(o.left + o.width, e2.left + e2.width); + if (h <= i) + return null; + const r = Math.max(o.top, e2.top), l = Math.min(o.top + o.height, e2.height + e2.top); + if (l <= r) + return null; + o.left = i, o.top = r, o.width = h - i, o.height = l - r; + } + return o.right = o.left + o.width, o.bottom = o.top + o.height, o; + } + + // src/pool.ts + var Pool = class { + constructor(createObject, onPut) { + this._data = []; + this._createObject = createObject; + this._onPut = onPut; + } + pick() { + return this._data.length ? this._data.pop() : this._createObject(); + } + put(object) { + if (this._data.indexOf(object) === -1) { + this._onPut && this._onPut(object); + this._data.push(object); + } + } + reset() { + this._data.length = 0; + } + }; + + // src/utils/get-intersection-area.ts + function getIntersectionArea(a, b) { + const intersection = getIntersection(a, b); + return intersection ? intersection.width * intersection.height : 0; + } + + // src/utils/get-intersection-score.ts + function getIntersectionScore(a, b) { + const area = getIntersectionArea(a, b); + if (!area) + return 0; + const maxArea = Math.min(a.width, b.width) * Math.min(a.height, b.height); + return area / maxArea * 100; + } + + // src/utils/is-window.ts + function isWindow2(value) { + return value instanceof Window; + } + + // src/utils/get-scroll-element.ts + function getScrollElement(element) { + if (isWindow2(element) || element === document.documentElement || element === document.body) { + return window; + } else { + return element; + } + } + + // src/utils/get-scroll-left.ts + function getScrollLeft(element) { + return isWindow2(element) ? element.pageXOffset : element.scrollLeft; + } + + // src/utils/get-scroll-left-max.ts + function getScrollLeftMax(element) { + if (isWindow2(element)) + element = document.documentElement; + return element.scrollWidth - element.clientWidth; + } + + // src/utils/get-scroll-top.ts + function getScrollTop(element) { + return isWindow2(element) ? element.pageYOffset : element.scrollTop; + } + + // src/utils/get-scroll-top-max.ts + function getScrollTopMax(element) { + if (isWindow2(element)) + element = document.documentElement; + return element.scrollHeight - element.clientHeight; + } + + // src/utils/is-intersecting.ts + function isIntersecting2(a, b) { + return !(a.right <= b.left || b.right <= a.left || a.bottom <= b.top || b.bottom <= a.top); + } + + // src/auto-scroll/auto-scroll.ts + var R1 = { + width: 0, + height: 0, + left: 0, + right: 0, + top: 0, + bottom: 0 + }; + var R2 = { ...R1 }; + var DEFAULT_THRESHOLD = 50; + var SPEED_DATA = { + direction: "none", + threshold: 0, + distance: 0, + value: 0, + maxValue: 0, + duration: 0, + speed: 0, + deltaTime: 0, + isEnding: false + }; + var AUTO_SCROLL_AXIS = { + x: 1, + y: 2 + }; + var AUTO_SCROLL_AXIS_DIRECTION = { + forward: 4, + reverse: 8 + }; + var AUTO_SCROLL_DIRECTION_X = { + none: 0, + left: AUTO_SCROLL_AXIS.x | AUTO_SCROLL_AXIS_DIRECTION.reverse, + right: AUTO_SCROLL_AXIS.x | AUTO_SCROLL_AXIS_DIRECTION.forward + }; + var AUTO_SCROLL_DIRECTION_Y = { + none: 0, + up: AUTO_SCROLL_AXIS.y | AUTO_SCROLL_AXIS_DIRECTION.reverse, + down: AUTO_SCROLL_AXIS.y | AUTO_SCROLL_AXIS_DIRECTION.forward + }; + var AUTO_SCROLL_DIRECTION = { + ...AUTO_SCROLL_DIRECTION_X, + ...AUTO_SCROLL_DIRECTION_Y + }; + function getDirectionAsString(direction) { + switch (direction) { + case AUTO_SCROLL_DIRECTION_X.none: + case AUTO_SCROLL_DIRECTION_Y.none: + return "none"; + case AUTO_SCROLL_DIRECTION_X.left: + return "left"; + case AUTO_SCROLL_DIRECTION_X.right: + return "right"; + case AUTO_SCROLL_DIRECTION_Y.up: + return "up"; + case AUTO_SCROLL_DIRECTION_Y.down: + return "down"; + default: + throw new Error(`Unknown direction value: ${direction}`); + } + } + function getPaddedRect(rect, padding, result) { + let { left = 0, right = 0, top = 0, bottom = 0 } = padding; + left = Math.max(0, left); + right = Math.max(0, right); + top = Math.max(0, top); + bottom = Math.max(0, bottom); + result.width = rect.width + left + right; + result.height = rect.height + top + bottom; + result.left = rect.left - left; + result.top = rect.top - top; + result.right = rect.right + right; + result.bottom = rect.bottom + bottom; + return result; + } + function isScrolledToMax(scrollValue, maxScrollValue) { + return Math.ceil(scrollValue) >= Math.floor(maxScrollValue); + } + function computeThreshold(idealThreshold, targetSize) { + return Math.min(targetSize / 2, idealThreshold); + } + function computeEdgeOffset(threshold, inertAreaSize, itemSize, targetSize) { + return Math.max(0, itemSize + threshold * 2 + targetSize * inertAreaSize - targetSize) / 2; + } + var AutoScrollItemData = class { + constructor() { + this.positionX = 0; + this.positionY = 0; + this.directionX = AUTO_SCROLL_DIRECTION.none; + this.directionY = AUTO_SCROLL_DIRECTION.none; + this.overlapCheckRequestTime = 0; + } + }; + var AutoScrollAction = class { + constructor() { + this.element = null; + this.requestX = null; + this.requestY = null; + this.scrollLeft = 0; + this.scrollTop = 0; + } + reset() { + if (this.requestX) + this.requestX.action = null; + if (this.requestY) + this.requestY.action = null; + this.element = null; + this.requestX = null; + this.requestY = null; + this.scrollLeft = 0; + this.scrollTop = 0; + } + addRequest(request) { + if (AUTO_SCROLL_AXIS.x & request.direction) { + this.requestX && this.removeRequest(this.requestX); + this.requestX = request; + } else { + this.requestY && this.removeRequest(this.requestY); + this.requestY = request; + } + request.action = this; + } + removeRequest(request) { + if (this.requestX === request) { + this.requestX = null; + request.action = null; + } else if (this.requestY === request) { + this.requestY = null; + request.action = null; + } + } + computeScrollValues() { + if (!this.element) + return; + this.scrollLeft = this.requestX ? this.requestX.value : getScrollLeft(this.element); + this.scrollTop = this.requestY ? this.requestY.value : getScrollTop(this.element); + } + scroll() { + if (!this.element) + return; + if (this.element.scrollTo) { + this.element.scrollTo(this.scrollLeft, this.scrollTop); + } else { + this.element.scrollLeft = this.scrollLeft; + this.element.scrollTop = this.scrollTop; + } + } + }; + var AutoScrollRequest = class { + constructor() { + this.item = null; + this.element = null; + this.isActive = false; + this.isEnding = false; + this.direction = 0; + this.value = NaN; + this.maxValue = 0; + this.threshold = 0; + this.distance = 0; + this.deltaTime = 0; + this.speed = 0; + this.duration = 0; + this.action = null; + } + reset() { + if (this.isActive) + this.onStop(); + this.item = null; + this.element = null; + this.isActive = false; + this.isEnding = false; + this.direction = 0; + this.value = NaN; + this.maxValue = 0; + this.threshold = 0; + this.distance = 0; + this.deltaTime = 0; + this.speed = 0; + this.duration = 0; + this.action = null; + } + hasReachedEnd() { + return AUTO_SCROLL_AXIS_DIRECTION.forward & this.direction ? isScrolledToMax(this.value, this.maxValue) : this.value <= 0; + } + computeCurrentScrollValue() { + if (!this.element) + return 0; + if (this.value !== this.value) { + return AUTO_SCROLL_AXIS.x & this.direction ? getScrollLeft(this.element) : getScrollTop(this.element); + } + return Math.max(0, Math.min(this.value, this.maxValue)); + } + computeNextScrollValue() { + const delta = this.speed * (this.deltaTime / 1e3); + const nextValue = AUTO_SCROLL_AXIS_DIRECTION.forward & this.direction ? this.value + delta : this.value - delta; + return Math.max(0, Math.min(nextValue, this.maxValue)); + } + computeSpeed() { + if (!this.item || !this.element) + return 0; + const { speed } = this.item; + if (typeof speed === "function") { + SPEED_DATA.direction = getDirectionAsString(this.direction); + SPEED_DATA.threshold = this.threshold; + SPEED_DATA.distance = this.distance; + SPEED_DATA.value = this.value; + SPEED_DATA.maxValue = this.maxValue; + SPEED_DATA.duration = this.duration; + SPEED_DATA.speed = this.speed; + SPEED_DATA.deltaTime = this.deltaTime; + SPEED_DATA.isEnding = this.isEnding; + return speed(this.element, SPEED_DATA); + } else { + return speed; + } + } + tick(deltaTime) { + if (!this.isActive) { + this.isActive = true; + this.onStart(); + } + this.deltaTime = deltaTime; + this.value = this.computeCurrentScrollValue(); + this.speed = this.computeSpeed(); + this.value = this.computeNextScrollValue(); + this.duration += deltaTime; + return this.value; + } + onStart() { + if (!this.item || !this.element) + return; + const { onStart } = this.item; + if (typeof onStart === "function") { + onStart(this.element, getDirectionAsString(this.direction)); + } + } + onStop() { + if (!this.item || !this.element) + return; + const { onStop } = this.item; + if (typeof onStop === "function") { + onStop(this.element, getDirectionAsString(this.direction)); + } + } + }; + var AutoScroll = class { + constructor(options = {}) { + const { overlapCheckInterval = 150 } = options; + this.items = []; + this.settings = { + overlapCheckInterval + }; + this._actions = []; + this._isDestroyed = false; + this._isTicking = false; + this._tickTime = 0; + this._tickDeltaTime = 0; + this._requests = { + [AUTO_SCROLL_AXIS.x]: /* @__PURE__ */ new Map(), + [AUTO_SCROLL_AXIS.y]: /* @__PURE__ */ new Map() + }; + this._itemData = /* @__PURE__ */ new Map(); + this._requestPool = new Pool( + () => new AutoScrollRequest(), + (request) => request.reset() + ); + this._actionPool = new Pool( + () => new AutoScrollAction(), + (action) => action.reset() + ); + this._emitter = new Emitter(); + this._frameRead = this._frameRead.bind(this); + this._frameWrite = this._frameWrite.bind(this); + } + _frameRead(time) { + if (this._isDestroyed) + return; + if (time && this._tickTime) { + this._tickDeltaTime = time - this._tickTime; + this._tickTime = time; + this._updateItems(); + this._updateRequests(); + this._updateActions(); + } else { + this._tickTime = time; + this._tickDeltaTime = 0; + } + } + _frameWrite() { + if (this._isDestroyed) + return; + this._applyActions(); + } + _startTicking() { + if (this._isTicking) + return; + this._isTicking = true; + ticker.on(tickerReadPhase, this._frameRead); + ticker.on(tickerWritePhase, this._frameWrite); + } + _stopTicking() { + if (!this._isTicking) + return; + this._isTicking = false; + this._tickTime = 0; + this._tickDeltaTime = 0; + ticker.off(tickerReadPhase, this._frameRead); + ticker.off(tickerWritePhase, this._frameWrite); + } + _getItemClientRect(item, result = { width: 0, height: 0, left: 0, right: 0, top: 0, bottom: 0 }) { + const { clientRect } = item; + result.left = clientRect.left; + result.top = clientRect.top; + result.width = clientRect.width; + result.height = clientRect.height; + result.right = clientRect.left + clientRect.width; + result.bottom = clientRect.top + clientRect.height; + return result; + } + _requestItemScroll(item, axis, element, direction, threshold, distance, maxValue) { + const reqMap = this._requests[axis]; + let request = reqMap.get(item); + if (request) { + if (request.element !== element || request.direction !== direction) { + request.reset(); + } + } else { + request = this._requestPool.pick(); + reqMap.set(item, request); + } + request.item = item; + request.element = element; + request.direction = direction; + request.threshold = threshold; + request.distance = distance; + request.maxValue = maxValue; + } + _cancelItemScroll(item, axis) { + const reqMap = this._requests[axis]; + const request = reqMap.get(item); + if (!request) + return; + if (request.action) + request.action.removeRequest(request); + this._requestPool.put(request); + reqMap.delete(item); + } + _checkItemOverlap(item, checkX, checkY) { + const { inertAreaSize, targets } = item; + if (!targets.length) { + checkX && this._cancelItemScroll(item, AUTO_SCROLL_AXIS.x); + checkY && this._cancelItemScroll(item, AUTO_SCROLL_AXIS.y); + return; + } + const itemData = this._itemData.get(item); + const moveDirectionX = itemData?.directionX; + const moveDirectionY = itemData?.directionY; + if (!moveDirectionX && !moveDirectionY) { + checkX && this._cancelItemScroll(item, AUTO_SCROLL_AXIS.x); + checkY && this._cancelItemScroll(item, AUTO_SCROLL_AXIS.y); + return; + } + const itemRect = this._getItemClientRect(item, R1); + let xElement = null; + let xPriority = -Infinity; + let xThreshold = 0; + let xScore = -Infinity; + let xDirection = AUTO_SCROLL_DIRECTION.none; + let xDistance = 0; + let xMaxScroll = 0; + let yElement = null; + let yPriority = -Infinity; + let yThreshold = 0; + let yScore = -Infinity; + let yDirection = AUTO_SCROLL_DIRECTION.none; + let yDistance = 0; + let yMaxScroll = 0; + let i = 0; + for (; i < targets.length; i++) { + const target = targets[i]; + const targetThreshold = typeof target.threshold === "number" ? target.threshold : DEFAULT_THRESHOLD; + const testAxisX = !!(checkX && moveDirectionX && target.axis !== "y"); + const testAxisY = !!(checkY && moveDirectionY && target.axis !== "x"); + const testPriority = target.priority || 0; + if ((!testAxisX || testPriority < xPriority) && (!testAxisY || testPriority < yPriority)) { + continue; + } + const testElement = getScrollElement(target.element || target); + const testMaxScrollX = testAxisX ? getScrollLeftMax(testElement) : -1; + const testMaxScrollY = testAxisY ? getScrollTopMax(testElement) : -1; + if (testMaxScrollX <= 0 && testMaxScrollY <= 0) + continue; + const testRect = getRect([testElement, "padding"], window); + let testScore = getIntersectionScore(itemRect, testRect) || -Infinity; + if (testScore === -Infinity) { + if (target.padding && isIntersecting2(itemRect, getPaddedRect(testRect, target.padding, R2))) { + testScore = -(getDistance(itemRect, testRect) || 0); + } else { + continue; + } + } + if (testAxisX && testPriority >= xPriority && testMaxScrollX > 0 && (testPriority > xPriority || testScore > xScore)) { + let testDistance = 0; + let testDirection = AUTO_SCROLL_DIRECTION.none; + const testThreshold = computeThreshold(targetThreshold, testRect.width); + const testEdgeOffset = computeEdgeOffset( + testThreshold, + inertAreaSize, + itemRect.width, + testRect.width + ); + if (moveDirectionX === AUTO_SCROLL_DIRECTION.right) { + testDistance = testRect.right + testEdgeOffset - itemRect.right; + if (testDistance <= testThreshold && !isScrolledToMax(getScrollLeft(testElement), testMaxScrollX)) { + testDirection = AUTO_SCROLL_DIRECTION.right; + } + } else if (moveDirectionX === AUTO_SCROLL_DIRECTION.left) { + testDistance = itemRect.left - (testRect.left - testEdgeOffset); + if (testDistance <= testThreshold && getScrollLeft(testElement) > 0) { + testDirection = AUTO_SCROLL_DIRECTION.left; + } + } + if (testDirection) { + xElement = testElement; + xPriority = testPriority; + xThreshold = testThreshold; + xScore = testScore; + xDirection = testDirection; + xDistance = testDistance; + xMaxScroll = testMaxScrollX; + } + } + if (testAxisY && testPriority >= yPriority && testMaxScrollY > 0 && (testPriority > yPriority || testScore > yScore)) { + let testDistance = 0; + let testDirection = AUTO_SCROLL_DIRECTION_Y.none; + const testThreshold = computeThreshold(targetThreshold, testRect.height); + const testEdgeOffset = computeEdgeOffset( + testThreshold, + inertAreaSize, + itemRect.height, + testRect.height + ); + if (moveDirectionY === AUTO_SCROLL_DIRECTION.down) { + testDistance = testRect.bottom + testEdgeOffset - itemRect.bottom; + if (testDistance <= testThreshold && !isScrolledToMax(getScrollTop(testElement), testMaxScrollY)) { + testDirection = AUTO_SCROLL_DIRECTION.down; + } + } else if (moveDirectionY === AUTO_SCROLL_DIRECTION.up) { + testDistance = itemRect.top - (testRect.top - testEdgeOffset); + if (testDistance <= testThreshold && getScrollTop(testElement) > 0) { + testDirection = AUTO_SCROLL_DIRECTION.up; + } + } + if (testDirection) { + yElement = testElement; + yPriority = testPriority; + yThreshold = testThreshold; + yScore = testScore; + yDirection = testDirection; + yDistance = testDistance; + yMaxScroll = testMaxScrollY; + } + } + } + if (checkX) { + if (xElement && xDirection) { + this._requestItemScroll( + item, + AUTO_SCROLL_AXIS.x, + xElement, + xDirection, + xThreshold, + xDistance, + xMaxScroll + ); + } else { + this._cancelItemScroll(item, AUTO_SCROLL_AXIS.x); + } + } + if (checkY) { + if (yElement && yDirection) { + this._requestItemScroll( + item, + AUTO_SCROLL_AXIS.y, + yElement, + yDirection, + yThreshold, + yDistance, + yMaxScroll + ); + } else { + this._cancelItemScroll(item, AUTO_SCROLL_AXIS.y); + } + } + } + _updateScrollRequest(scrollRequest) { + const item = scrollRequest.item; + const { inertAreaSize, smoothStop, targets } = item; + const itemRect = this._getItemClientRect(item, R1); + let hasReachedEnd = null; + let i = 0; + for (; i < targets.length; i++) { + const target = targets[i]; + const testElement = getScrollElement(target.element || target); + if (testElement !== scrollRequest.element) + continue; + const testIsAxisX = !!(AUTO_SCROLL_AXIS.x & scrollRequest.direction); + if (testIsAxisX) { + if (target.axis === "y") + continue; + } else { + if (target.axis === "x") + continue; + } + const testMaxScroll = testIsAxisX ? getScrollLeftMax(testElement) : getScrollTopMax(testElement); + if (testMaxScroll <= 0) { + break; + } + const testRect = getRect([testElement, "padding"], window); + const testScore = getIntersectionScore(itemRect, testRect) || -Infinity; + if (testScore === -Infinity) { + const padding = target.scrollPadding || target.padding; + if (!(padding && isIntersecting2(itemRect, getPaddedRect(testRect, padding, R2)))) { + break; + } + } + const targetThreshold = typeof target.threshold === "number" ? target.threshold : DEFAULT_THRESHOLD; + const testThreshold = computeThreshold( + targetThreshold, + testIsAxisX ? testRect.width : testRect.height + ); + const testEdgeOffset = computeEdgeOffset( + testThreshold, + inertAreaSize, + testIsAxisX ? itemRect.width : itemRect.height, + testIsAxisX ? testRect.width : testRect.height + ); + let testDistance = 0; + if (scrollRequest.direction === AUTO_SCROLL_DIRECTION.left) { + testDistance = itemRect.left - (testRect.left - testEdgeOffset); + } else if (scrollRequest.direction === AUTO_SCROLL_DIRECTION.right) { + testDistance = testRect.right + testEdgeOffset - itemRect.right; + } else if (scrollRequest.direction === AUTO_SCROLL_DIRECTION.up) { + testDistance = itemRect.top - (testRect.top - testEdgeOffset); + } else { + testDistance = testRect.bottom + testEdgeOffset - itemRect.bottom; + } + if (testDistance > testThreshold) { + break; + } + const testScroll = testIsAxisX ? getScrollLeft(testElement) : getScrollTop(testElement); + hasReachedEnd = AUTO_SCROLL_AXIS_DIRECTION.forward & scrollRequest.direction ? isScrolledToMax(testScroll, testMaxScroll) : testScroll <= 0; + if (hasReachedEnd) + break; + scrollRequest.maxValue = testMaxScroll; + scrollRequest.threshold = testThreshold; + scrollRequest.distance = testDistance; + scrollRequest.isEnding = false; + return true; + } + if (smoothStop === true && scrollRequest.speed > 0) { + if (hasReachedEnd === null) + hasReachedEnd = scrollRequest.hasReachedEnd(); + scrollRequest.isEnding = hasReachedEnd ? false : true; + } else { + scrollRequest.isEnding = false; + } + return scrollRequest.isEnding; + } + _updateItems() { + for (let i = 0; i < this.items.length; i++) { + const item = this.items[i]; + const itemData = this._itemData.get(item); + const { x, y } = item.position; + const prevX = itemData.positionX; + const prevY = itemData.positionY; + if (x === prevX && y === prevY) { + continue; + } + itemData.directionX = x > prevX ? AUTO_SCROLL_DIRECTION.right : x < prevX ? AUTO_SCROLL_DIRECTION.left : itemData.directionX; + itemData.directionY = y > prevY ? AUTO_SCROLL_DIRECTION.down : y < prevY ? AUTO_SCROLL_DIRECTION.up : itemData.directionY; + itemData.positionX = x; + itemData.positionY = y; + if (itemData.overlapCheckRequestTime === 0) { + itemData.overlapCheckRequestTime = this._tickTime; + } + } + } + _updateRequests() { + const items = this.items; + const requestsX = this._requests[AUTO_SCROLL_AXIS.x]; + const requestsY = this._requests[AUTO_SCROLL_AXIS.y]; + let i = 0; + for (; i < items.length; i++) { + const item = items[i]; + const itemData = this._itemData.get(item); + const checkTime = itemData.overlapCheckRequestTime; + let needsCheck = checkTime > 0 && this._tickTime - checkTime > this.settings.overlapCheckInterval; + let checkX = true; + const reqX = requestsX.get(item); + if (reqX && reqX.isActive) { + checkX = !this._updateScrollRequest(reqX); + if (checkX) { + needsCheck = true; + this._cancelItemScroll(item, AUTO_SCROLL_AXIS.x); + } + } + let checkY = true; + const reqY = requestsY.get(item); + if (reqY && reqY.isActive) { + checkY = !this._updateScrollRequest(reqY); + if (checkY) { + needsCheck = true; + this._cancelItemScroll(item, AUTO_SCROLL_AXIS.y); + } + } + if (needsCheck) { + itemData.overlapCheckRequestTime = 0; + this._checkItemOverlap(item, checkX, checkY); + } + } + } + _requestAction(request, axis) { + const isAxisX = axis === AUTO_SCROLL_AXIS.x; + let action = null; + let i = 0; + for (; i < this._actions.length; i++) { + action = this._actions[i]; + if (request.element !== action.element) { + action = null; + continue; + } + if (isAxisX ? action.requestX : action.requestY) { + this._cancelItemScroll(request.item, axis); + return; + } + break; + } + if (!action) + action = this._actionPool.pick(); + action.element = request.element; + action.addRequest(request); + request.tick(this._tickDeltaTime); + this._actions.push(action); + } + _updateActions() { + let i = 0; + for (i = 0; i < this.items.length; i++) { + const item = this.items[i]; + const reqX = this._requests[AUTO_SCROLL_AXIS.x].get(item); + const reqY = this._requests[AUTO_SCROLL_AXIS.y].get(item); + if (reqX) + this._requestAction(reqX, AUTO_SCROLL_AXIS.x); + if (reqY) + this._requestAction(reqY, AUTO_SCROLL_AXIS.y); + } + for (i = 0; i < this._actions.length; i++) { + this._actions[i].computeScrollValues(); + } + } + _applyActions() { + if (!this._actions.length) + return; + this._emitter.emit("beforescroll"); + let i = 0; + for (i = 0; i < this._actions.length; i++) { + this._actions[i].scroll(); + this._actionPool.put(this._actions[i]); + } + this._actions.length = 0; + let item; + for (i = 0; i < this.items.length; i++) { + item = this.items[i]; + if (item.onPrepareScrollEffect) { + item.onPrepareScrollEffect(); + } + } + for (i = 0; i < this.items.length; i++) { + item = this.items[i]; + if (item.onApplyScrollEffect) { + item.onApplyScrollEffect(); + } + } + this._emitter.emit("afterscroll"); + } + /** + * Bind a listener. + */ + on(eventName, listener) { + return this._emitter.on(eventName, listener); + } + /** + * Unbind a listener. + */ + off(eventName, listener) { + this._emitter.off(eventName, listener); + } + addItem(item) { + if (this._isDestroyed || this._itemData.has(item)) + return; + const { x, y } = item.position; + const itemData = new AutoScrollItemData(); + itemData.positionX = x; + itemData.positionY = y; + itemData.directionX = AUTO_SCROLL_DIRECTION.none; + itemData.directionY = AUTO_SCROLL_DIRECTION.none; + itemData.overlapCheckRequestTime = this._tickTime; + this._itemData.set(item, itemData); + this.items.push(item); + if (!this._isTicking) + this._startTicking(); + } + removeItem(item) { + if (this._isDestroyed) + return; + const index = this.items.indexOf(item); + if (index === -1) + return; + if (this._requests[AUTO_SCROLL_AXIS.x].get(item)) { + this._cancelItemScroll(item, AUTO_SCROLL_AXIS.x); + this._requests[AUTO_SCROLL_AXIS.x].delete(item); + } + if (this._requests[AUTO_SCROLL_AXIS.y].get(item)) { + this._cancelItemScroll(item, AUTO_SCROLL_AXIS.y); + this._requests[AUTO_SCROLL_AXIS.y].delete(item); + } + this._itemData.delete(item); + this.items.splice(index, 1); + if (this._isTicking && !this.items.length) { + this._stopTicking(); + } + } + isDestroyed() { + return this._isDestroyed; + } + isItemScrollingX(item) { + return !!this._requests[AUTO_SCROLL_AXIS.x].get(item)?.isActive; + } + isItemScrollingY(item) { + return !!this._requests[AUTO_SCROLL_AXIS.y].get(item)?.isActive; + } + isItemScrolling(item) { + return this.isItemScrollingX(item) || this.isItemScrollingY(item); + } + updateSettings(options = {}) { + const { overlapCheckInterval = this.settings.overlapCheckInterval } = options; + this.settings.overlapCheckInterval = overlapCheckInterval; + } + destroy() { + if (this._isDestroyed) + return; + const items = this.items.slice(0); + let i = 0; + for (; i < items.length; i++) { + this.removeItem(items[i]); + } + this._actions.length = 0; + this._requestPool.reset(); + this._actionPool.reset(); + this._emitter.off(); + this._isDestroyed = true; + } + }; + + // src/singletons/auto-scroll.ts + var autoScroll = new AutoScroll(); + + // tests/src/BaseSensor.ts + describe("BaseSensor", () => { + describe("drag property", () => { + it(`should be null on init`, function() { + const s = new BaseSensor(); + assert.equal(s.drag, null); + s.destroy(); + }); + }); + describe("isDestroyed property", () => { + it(`should be false on init`, function() { + const s = new BaseSensor(); + assert.equal(s.isDestroyed, false); + s.destroy(); + }); + }); + describe("_emitter", () => { + it("should allow duplicate listeners by default", () => { + const s = new BaseSensor(); + assert.equal(s["_emitter"].allowDuplicateListeners, true); + }); + it("should replace event listeners with duplicate ids by default", () => { + const s = new BaseSensor(); + assert.equal(s["_emitter"].idDedupeMode, "replace"); + }); + }); + describe("_start method", () => { + it(`should create drag data`, function() { + const s = new BaseSensor(); + s["_start"]({ type: "start", x: 1, y: 2 }); + assert.deepEqual(s.drag, { x: 1, y: 2 }); + s.destroy(); + }); + it(`should not modify isDestroyed property`, function() { + const s = new BaseSensor(); + assert.equal(s.isDestroyed, false); + s["_start"]({ type: "start", x: 1, y: 2 }); + assert.equal(s.isDestroyed, false); + s.destroy(); + }); + it(`should emit "start" event with correct arguments after updating instance properties`, function() { + const s = new BaseSensor(); + const startArgs = { type: "start", x: 1, y: 2 }; + let emitCount = 0; + s.on("start", (data) => { + assert.deepEqual(s.drag, { x: data.x, y: data.y }); + assert.equal(s.isDestroyed, false); + assert.deepEqual(data, startArgs); + ++emitCount; + }); + s["_start"](startArgs); + assert.equal(emitCount, 1); + s.destroy(); + }); + it(`should not do anything if drag is already active`, function() { + const s = new BaseSensor(); + let emitCount = 0; + s.on("start", () => void ++emitCount); + s["_start"]({ type: "start", x: 1, y: 2 }); + const isDestroyed = s.isDestroyed; + const { drag } = s; + s["_start"]({ type: "start", x: 3, y: 4 }); + assert.deepEqual(s.drag, drag); + assert.equal(s.isDestroyed, isDestroyed); + assert.equal(emitCount, 1); + s.destroy(); + }); + it(`should not do anything if instance is destroyed (isDestroyed is true)`, function() { + const s = new BaseSensor(); + let emitCount = 0; + s.on("start", () => void ++emitCount); + s.destroy(); + const { drag, isDestroyed } = s; + s["_start"]({ type: "start", x: 3, y: 4 }); + assert.deepEqual(s.drag, drag); + assert.equal(s.isDestroyed, isDestroyed); + assert.equal(emitCount, 0); + s.destroy(); + }); + }); + describe("_move method", () => { + it(`should update drag data to reflect the provided coordinates`, function() { + const s = new BaseSensor(); + s["_start"]({ type: "start", x: 1, y: 2 }); + s["_move"]({ type: "move", x: 3, y: 4 }); + assert.deepEqual(s.drag, { x: 3, y: 4 }); + s.destroy(); + }); + it(`should not modify isDestroyed property`, function() { + const s = new BaseSensor(); + s["_start"]({ type: "start", x: 1, y: 2 }); + assert.equal(s.isDestroyed, false); + s["_move"]({ type: "move", x: 3, y: 4 }); + assert.equal(s.isDestroyed, false); + s.destroy(); + }); + it(`should emit "move" event with correct arguments after updating instance properties`, function() { + const s = new BaseSensor(); + const moveArgs = { type: "move", x: 3, y: 4 }; + let emitCount = 0; + s.on("move", (data) => { + assert.deepEqual(s.drag, { x: data.x, y: data.y }); + assert.equal(s.isDestroyed, false); + assert.deepEqual(data, moveArgs); + ++emitCount; + }); + s["_start"]({ type: "start", x: 1, y: 2 }); + s["_move"](moveArgs); + assert.equal(emitCount, 1); + s.destroy(); + }); + it(`should not do anything if drag is not active`, function() { + const s = new BaseSensor(); + const { drag, isDestroyed } = s; + let emitCount = 0; + s.on("move", () => void ++emitCount); + s["_move"]({ type: "move", x: 3, y: 4 }); + assert.deepEqual(s.drag, drag); + assert.equal(s.isDestroyed, isDestroyed); + assert.equal(emitCount, 0); + s.destroy(); + }); + }); + describe("_cancel method", () => { + it(`should reset drag data`, function() { + const s = new BaseSensor(); + s["_start"]({ type: "start", x: 1, y: 2 }); + s["_cancel"]({ type: "cancel", x: 5, y: 6 }); + assert.equal(s.drag, null); + s.destroy(); + }); + it(`should not modify isDestroyed property`, function() { + const s = new BaseSensor(); + s["_start"]({ type: "start", x: 1, y: 2 }); + assert.equal(s.isDestroyed, false); + s["_cancel"]({ type: "cancel", x: 5, y: 6 }); + assert.equal(s.isDestroyed, false); + s.destroy(); + }); + it(`should emit "cancel" event with correct arguments after updating instance properties`, function() { + const s = new BaseSensor(); + const cancelArgs = { type: "cancel", x: 5, y: 6 }; + let emitCount = 0; + s.on("cancel", (data) => { + assert.deepEqual(s.drag, { x: data.x, y: data.y }); + assert.equal(s.isDestroyed, false); + assert.deepEqual(data, cancelArgs); + ++emitCount; + }); + s["_start"]({ type: "start", x: 1, y: 2 }); + s["_cancel"](cancelArgs); + assert.equal(emitCount, 1); + s.destroy(); + }); + it(`should not do anything if drag is not active`, function() { + const s = new BaseSensor(); + const { drag, isDestroyed } = s; + let emitCount = 0; + s.on("cancel", () => void ++emitCount); + s["_cancel"]({ type: "cancel", x: 3, y: 4 }); + assert.deepEqual(s.drag, drag); + assert.equal(s.isDestroyed, isDestroyed); + assert.equal(emitCount, 0); + s.destroy(); + }); + }); + describe("_end method", () => { + it(`should reset drag data`, function() { + const s = new BaseSensor(); + s["_start"]({ type: "start", x: 1, y: 2 }); + s["_end"]({ type: "end", x: 5, y: 6 }); + assert.equal(s.drag, null); + s.destroy(); + }); + it(`should not modify isDestroyed property`, function() { + const s = new BaseSensor(); + s["_start"]({ type: "start", x: 1, y: 2 }); + assert.equal(s.isDestroyed, false); + s["_end"]({ type: "end", x: 5, y: 6 }); + assert.equal(s.isDestroyed, false); + s.destroy(); + }); + it(`should emit "end" event with correct arguments after updating instance properties`, function() { + const s = new BaseSensor(); + const endArgs = { type: "end", x: 5, y: 6 }; + let emitCount = 0; + s.on("end", (data) => { + assert.deepEqual(s.drag, { x: data.x, y: data.y }); + assert.equal(s.isDestroyed, false); + assert.deepEqual(data, endArgs); + ++emitCount; + }); + s["_start"]({ type: "start", x: 1, y: 2 }); + s["_end"](endArgs); + assert.equal(emitCount, 1); + s.destroy(); + }); + it(`should not do anything if drag is not active`, function() { + const s = new BaseSensor(); + const { drag, isDestroyed } = s; + let emitCount = 0; + s.on("end", () => void ++emitCount); + s["_end"]({ type: "end", x: 3, y: 4 }); + assert.deepEqual(s.drag, drag); + assert.equal(s.isDestroyed, isDestroyed); + assert.equal(emitCount, 0); + s.destroy(); + }); + }); + describe("cancel method", () => { + it(`should reset drag data`, function() { + const s = new BaseSensor(); + s["_start"]({ type: "start", x: 1, y: 2 }); + s.cancel(); + assert.equal(s.drag, null); + s.destroy(); + }); + it(`should not modify isDestroyed property`, function() { + const s = new BaseSensor(); + s["_start"]({ type: "start", x: 1, y: 2 }); + assert.equal(s.isDestroyed, false); + s.cancel(); + assert.equal(s.isDestroyed, false); + s.destroy(); + }); + it(`should emit "cancel" event with correct arguments after updating instance properties`, function() { + const s = new BaseSensor(); + let emitCount = 0; + s.on("cancel", (data) => { + assert.deepEqual(s.drag, { x: data.x, y: data.y }); + assert.equal(s.isDestroyed, false); + assert.deepEqual(data, { + type: "cancel", + x: 1, + y: 2 + }); + ++emitCount; + }); + s["_start"]({ type: "start", x: 1, y: 2 }); + s.cancel(); + assert.equal(emitCount, 1); + s.destroy(); + }); + it(`should not do anything if drag is not active`, function() { + const s = new BaseSensor(); + const { drag, isDestroyed } = s; + let emitCount = 0; + s.on("cancel", () => void ++emitCount); + s.cancel(); + assert.deepEqual(s.drag, drag); + assert.equal(s.isDestroyed, isDestroyed); + assert.equal(emitCount, 0); + s.destroy(); + }); + }); + describe("on method", () => { + it("should return a symbol (by default) which acts as an id for removing the event listener", () => { + const s = new BaseSensor(); + const idA = s.on("start", () => { + }); + assert.equal(typeof idA, "symbol"); + }); + it("should allow defining a custom id (string/symbol/number) for the event listener via third argument", () => { + const s = new BaseSensor(); + const idA = Symbol(); + assert.equal( + s.on("start", () => { + }, idA), + idA + ); + const idB = 1; + assert.equal( + s.on("start", () => { + }, idB), + idB + ); + const idC = "foo"; + assert.equal( + s.on("start", () => { + }, idC), + idC + ); + }); + }); + describe("off method", () => { + it("should remove an event listener based on id", () => { + const s = new BaseSensor(); + let msg = ""; + const idA = s.on("start", () => void (msg += "a")); + s.on("start", () => void (msg += "b")); + s.off("start", idA); + s["_start"]({ type: "start", x: 1, y: 2 }); + assert.equal(msg, "b"); + }); + it("should remove event listeners based on the listener callback", () => { + const s = new BaseSensor(); + let msg = ""; + const listenerA = () => void (msg += "a"); + const listenerB = () => void (msg += "b"); + s.on("start", listenerA); + s.on("start", listenerB); + s.on("start", listenerB); + s.on("start", listenerA); + s.off("start", listenerA); + s["_start"]({ type: "start", x: 1, y: 2 }); + assert.equal(msg, "bb"); + }); + }); + describe("destroy method", () => { + it(`should (if drag is active): + 1. set isDestroyed property to true + 2. emit "cancel" event with the current x/y coordinates + 3. reset drag data + 4. emit "destroy" event + 5. remove all listeners from the internal emitter + `, function() { + const s = new BaseSensor(); + const startArgs = { type: "start", x: 1, y: 2 }; + let events = []; + s["_start"](startArgs); + s.on("start", (data) => void events.push(data.type)); + s.on("move", (data) => void events.push(data.type)); + s.on("end", (data) => void events.push(data.type)); + s.on("cancel", (data) => { + assert.deepEqual(s.drag, { x: startArgs.x, y: startArgs.y }); + assert.equal(s.isDestroyed, true); + assert.deepEqual(data, { + type: "cancel", + x: startArgs.x, + y: startArgs.y + }); + events.push(data.type); + }); + s.on("destroy", (data) => { + assert.equal(s.drag, null); + assert.equal(s.isDestroyed, true); + assert.deepEqual(data, { + type: "destroy" + }); + events.push(data.type); + }); + assert.equal(s["_emitter"].listenerCount(), 5); + s.destroy(); + assert.equal(s.drag, null); + assert.equal(s.isDestroyed, true); + assert.deepEqual(events, ["cancel", "destroy"]); + assert.equal(s["_emitter"].listenerCount(), 0); + }); + it(`should (if drag is not active): + 1. set isDestroyed property to true + 2. emit "destroy" event + 3. remove all listeners from the internal emitter + `, function() { + const s = new BaseSensor(); + let events = []; + s.on("start", (data) => void events.push(data.type)); + s.on("move", (data) => void events.push(data.type)); + s.on("end", (data) => void events.push(data.type)); + s.on("cancel", (data) => void events.push(data.type)); + s.on("destroy", (data) => { + assert.equal(s.drag, null); + assert.equal(s.isDestroyed, true); + assert.deepEqual(data, { + type: "destroy" + }); + events.push(data.type); + }); + assert.equal(s["_emitter"].listenerCount(), 5); + s.destroy(); + assert.equal(s.drag, null); + assert.equal(s.isDestroyed, true); + assert.deepEqual(events, ["destroy"]); + assert.equal(s["_emitter"].listenerCount(), 0); + }); + it("should not do anything if the sensor is already destroyed", () => { + const s = new BaseSensor(); + s.destroy(); + let events = []; + s.on("start", (data) => void events.push(data.type)); + s.on("move", (data) => void events.push(data.type)); + s.on("end", (data) => void events.push(data.type)); + s.on("cancel", (data) => void events.push(data.type)); + s.on("destroy", (data) => void events.push(data.type)); + s.destroy(); + assert.equal(s.drag, null); + assert.equal(s.isDestroyed, true); + assert.deepEqual(events, []); + }); + }); + }); + + // tests/src/utils/createTestElement.ts + var defaultStyles = { + display: "block", + position: "absolute", + left: "0px", + top: "0px", + width: "100px", + height: "100px", + padding: "0px", + margin: "0px", + boxSizing: "border-box", + backgroundColor: "red" + }; + function createTestElement(styles2 = {}) { + const el = document.createElement("div"); + el.tabIndex = 0; + Object.assign(el.style, { ...defaultStyles, ...styles2 }); + document.body.appendChild(el); + return el; + } + + // tests/src/utils/FakeTouch.ts + var FakeTouch = class { + constructor(options = {}) { + const { + identifier = 0, + target = null, + clientX = 0, + clientY = 0, + screenX = 0, + screenY = 0, + radiusX = 0, + radiusY = 0, + rotationAngle = 0, + force = 0 + } = options; + const mouseEvent = new MouseEvent("mousedown", { clientX, clientY, screenX, screenY }); + this.identifier = identifier; + this.target = target || document.elementFromPoint(mouseEvent.clientX, mouseEvent.clientY) || document.documentElement; + this.clientX = mouseEvent.clientX; + this.clientY = mouseEvent.clientY; + this.screenX = mouseEvent.screenX; + this.screenY = mouseEvent.screenY; + this.pageX = mouseEvent.pageX; + this.pageY = mouseEvent.pageY; + this.radiusX = radiusX; + this.radiusY = radiusY; + this.rotationAngle = rotationAngle; + this.force = force; + } + }; + var FakeTouchEvent = class extends UIEvent { + constructor(type, options = {}) { + const { + altKey = false, + ctrlKey = false, + metaKey = false, + shiftKey = false, + touches = [], + targetTouches = [], + changedTouches = [], + ...parentOptions + } = options; + super(type, parentOptions); + this.altKey = altKey; + this.ctrlKey = ctrlKey; + this.metaKey = metaKey; + this.shiftKey = shiftKey; + this.touches = touches; + this.targetTouches = targetTouches; + this.changedTouches = changedTouches; + } + }; + + // tests/src/utils/createFakeTouchEvent.ts + function createFakeTouchEvent(type, options = {}) { + const { + identifier, + target, + clientX, + clientY, + screenX, + screenY, + radiusX, + radiusY, + rotationAngle, + force, + ...eventOptions + } = options; + const touch = new FakeTouch({ + identifier, + target, + clientX, + clientY, + screenX, + screenY, + radiusX, + radiusY, + rotationAngle, + force + }); + const touchEvent = new FakeTouchEvent(type, { + ...eventOptions, + touches: [touch], + changedTouches: [touch], + targetTouches: [touch] + }); + return touchEvent; + } + + // tests/src/utils/createFakeDrag.ts + var idCounter = 100; + async function createFakeDrag(steps, options) { + const { + eventType = "mouse", + stepDuration = 16, + extraSteps = 0, + cancelAtEnd = false, + pointerId = ++idCounter, + pointerType = "touch", + onAfterStep + } = options; + const finalSteps = [...steps]; + if (extraSteps > 0) { + const stepTo = finalSteps.pop(); + const stepFrom = finalSteps.pop(); + finalSteps.push(stepFrom); + for (let i = 0; i < extraSteps; i++) { + const alpha = (i + 1) / (extraSteps + 1); + const x = stepFrom.x + (stepTo.x - stepFrom.x) * alpha; + const y = stepFrom.y + (stepTo.y - stepFrom.y) * alpha; + finalSteps.push({ + x: Math.round(x), + y: Math.round(y) + }); + } + finalSteps.push(stepTo); + } + for (let i = 0; i < finalSteps.length; i++) { + const isStart = i === 0; + const isEnd = i === finalSteps.length - 1; + const { x, y } = finalSteps[i]; + if (!isStart && !isEnd) { + const prevStep = finalSteps[i - 1]; + if (prevStep.x === x && prevStep.y === y) { + continue; + } + } + if (!isStart && stepDuration > 0) { + await new Promise((resolve) => setTimeout(resolve, stepDuration)); + } + const target = document.elementFromPoint(x, y); + if (!target) + throw new Error("No event target found!"); + switch (eventType) { + case "mouse": { + const eventName = isStart ? "mousedown" : isEnd ? "mouseup" : "mousemove"; + const event = new MouseEvent(eventName, { + clientX: x, + clientY: y, + bubbles: true, + cancelable: true, + view: window + }); + target.dispatchEvent(event); + if (onAfterStep) + onAfterStep(event); + break; + } + case "touch": { + const eventName = isStart ? "touchstart" : isEnd ? cancelAtEnd ? "touchcancel" : "touchend" : "touchmove"; + const event = createFakeTouchEvent(eventName, { + clientX: x, + clientY: y, + bubbles: true, + cancelable: true, + view: window, + target, + identifier: pointerId + }); + target.dispatchEvent(event); + if (onAfterStep) + onAfterStep(event); + break; + } + case "pointer": { + const eventName = isStart ? "pointerdown" : isEnd ? cancelAtEnd ? "pointercancel" : "pointerup" : "pointermove"; + const event = new PointerEvent(eventName, { + clientX: x, + clientY: y, + bubbles: true, + cancelable: true, + view: window, + pointerId, + pointerType, + isPrimary: true, + width: 100, + height: 100 + }); + target.dispatchEvent(event); + if (onAfterStep) + onAfterStep(event); + break; + } + } + } + } + + // tests/src/utils/defaultPageStyles.ts + function addDefaultPageStyles(doc) { + if (doc.getElementById("default-page-styles")) + return; + const styleSheet = doc.createElement("style"); + styleSheet.id = "default-page-styles"; + styleSheet.type = "text/css"; + styleSheet.innerHTML = ` + * { + box-sizing: border-box; + } + html { + width: 100%; + height: 100%; + } + body { + width: 100%; + min-height: 100%; + margin: 0; + } + `; + doc.head.appendChild(styleSheet); + } + function removeDefaultPageStyles(doc) { + doc.getElementById("default-page-styles")?.remove(); + } + + // tests/src/PointerSensor.ts + describe("PointerSensor", () => { + beforeEach(() => { + if (IS_BROWSER) { + addDefaultPageStyles(document); + return new Promise((resolve) => requestAnimationFrame(() => requestAnimationFrame(resolve))); + } + return; + }); + afterEach(() => { + if (IS_BROWSER) { + removeDefaultPageStyles(document); + return new Promise((resolve) => requestAnimationFrame(() => requestAnimationFrame(resolve))); + } + return; + }); + describe("drag property", () => { + it(`should be null on init`, function() { + const s = new PointerSensor(document.body); + assert.equal(s.drag, null); + s.destroy(); + }); + }); + describe("isDestroyed property", () => { + it(`should be false on init`, function() { + const s = new PointerSensor(document.body); + assert.equal(s.isDestroyed, false); + s.destroy(); + }); + }); + describe("target element parameter", () => { + it("should accept document.documentElement", function() { + if (!IS_BROWSER) + this.skip(); + const s = new PointerSensor(document.documentElement, { sourceEvents: "mouse" }); + document.documentElement.dispatchEvent(new MouseEvent("mousedown")); + assert.notEqual(s.drag, null); + s.destroy(); + }); + it("should accept document.body", function() { + if (!IS_BROWSER) + this.skip(); + const s = new PointerSensor(document.body, { sourceEvents: "mouse" }); + document.body.dispatchEvent(new MouseEvent("mousedown")); + assert.notEqual(s.drag, null); + s.destroy(); + }); + it("should accept a descendant of document.body", function() { + if (!IS_BROWSER) + this.skip(); + const el = createTestElement(); + const s = new PointerSensor(el, { sourceEvents: "mouse" }); + el.dispatchEvent(new MouseEvent("mousedown")); + assert.notEqual(s.drag, null); + el.remove(); + s.destroy(); + }); + }); + describe("sourceEvents option", () => { + it('should listen to mouse/pointer/touch events when set to "mouse"/"pointer"/"touch"', function() { + if (!IS_BROWSER) + this.skip(); + const mouseSensor = new PointerSensor(document.body, { sourceEvents: "mouse" }); + const pointerSensor = new PointerSensor(document.body, { sourceEvents: "pointer" }); + const touchSensor = new PointerSensor(document.body, { sourceEvents: "touch" }); + const mouseList = []; + const pointerList = []; + const touchList = []; + mouseSensor.on("start", (e) => mouseList.push(e.type)); + mouseSensor.on("move", (e) => mouseList.push(e.type)); + mouseSensor.on("end", (e) => mouseList.push(e.type)); + pointerSensor.on("start", (e) => pointerList.push(e.type)); + pointerSensor.on("move", (e) => pointerList.push(e.type)); + pointerSensor.on("end", (e) => pointerList.push(e.type)); + touchSensor.on("start", (e) => touchList.push(e.type)); + touchSensor.on("move", (e) => touchList.push(e.type)); + touchSensor.on("end", (e) => touchList.push(e.type)); + createFakeDrag( + [ + { x: 1, y: 1 }, + { x: 2, y: 2 }, + { x: 3, y: 3 } + ], + { + eventType: "mouse", + stepDuration: 0 + } + ); + assert.deepEqual(mouseList, ["start", "move", "end"]); + assert.deepEqual(pointerList, []); + assert.deepEqual(touchList, []); + mouseList.length = 0; + createFakeDrag( + [ + { x: 1, y: 1 }, + { x: 2, y: 2 }, + { x: 3, y: 3 } + ], + { + eventType: "pointer", + stepDuration: 0 + } + ); + assert.deepEqual(mouseList, []); + assert.deepEqual(pointerList, ["start", "move", "end"]); + assert.deepEqual(touchList, []); + pointerList.length = 0; + createFakeDrag( + [ + { x: 1, y: 1 }, + { x: 2, y: 2 }, + { x: 3, y: 3 } + ], + { + eventType: "touch", + stepDuration: 0 + } + ); + assert.deepEqual(mouseList, []); + assert.deepEqual(pointerList, []); + assert.deepEqual(touchList, ["start", "move", "end"]); + mouseSensor.destroy(); + pointerSensor.destroy(); + touchSensor.destroy(); + }); + }); + describe("startPredicate option", () => { + it("should allow start only when e.button is 0 by default", function() { + const s = new PointerSensor(document.body, { sourceEvents: "mouse" }); + document.body.dispatchEvent(new MouseEvent("mousedown", { button: 1 })); + assert.equal(s.drag, null); + document.body.dispatchEvent(new MouseEvent("mousedown", { button: 0 })); + assert.notEqual(s.drag, null); + s.destroy(); + }); + it("should allow start when true is returned and prevent start when false is returned", function() { + const s1 = new PointerSensor(document.body, { + sourceEvents: "mouse", + startPredicate: () => true + }); + const s2 = new PointerSensor(document.body, { + sourceEvents: "mouse", + startPredicate: () => false + }); + document.body.dispatchEvent(new MouseEvent("mousedown")); + assert.notEqual(s1.drag, null); + assert.equal(s2.drag, null); + s1.destroy(); + s2.destroy(); + }); + }); + describe("updateSettings method", () => { + it(`should update startPredicate setting`, function() { + const s = new PointerSensor(document.body, { + sourceEvents: "mouse", + startPredicate: () => false + }); + document.body.dispatchEvent(new MouseEvent("mousedown")); + assert.equal(s.drag, null); + s.updateSettings({ startPredicate: () => true }); + document.body.dispatchEvent(new MouseEvent("mousedown")); + assert.notEqual(s.drag, null); + }); + it(`should update sourceEvents setting`, function() { + const s = new PointerSensor(document.body, { + sourceEvents: "pointer", + startPredicate: () => true + }); + document.body.dispatchEvent(new MouseEvent("mousedown")); + assert.equal(s.drag, null); + s.updateSettings({ sourceEvents: "mouse" }); + document.body.dispatchEvent(new MouseEvent("mousedown")); + assert.notEqual(s.drag, null); + }); + }); + describe("start event", () => { + it(`should be triggered correctly on mousedown`, function() { + if (!IS_BROWSER) + this.skip(); + const el = createTestElement(); + const s = new PointerSensor(el, { sourceEvents: "mouse" }); + let startEvent = null; + let sourceEvent; + s.on("start", (e) => { + if (startEvent === null) { + startEvent = e; + } else { + assert.fail("start event listener called twice"); + } + }); + createFakeDrag( + [ + { x: 1, y: 1 }, + { x: 2, y: 2 }, + { x: 3, y: 3 } + ], + { + eventType: "mouse", + stepDuration: 0, + onAfterStep: (e) => { + if (e.type === "mousedown") { + sourceEvent = e; + } + } + } + ); + assert.deepEqual(startEvent, { + type: "start", + srcEvent: sourceEvent, + target: el, + pointerId: -1, + pointerType: "mouse", + x: 1, + y: 1 + }); + s.destroy(); + el.remove(); + }); + it(`should be triggered correctly on pointerdown`, function() { + if (!IS_BROWSER) + this.skip(); + const el = createTestElement(); + const s = new PointerSensor(el, { sourceEvents: "pointer" }); + let startEvent = null; + let sourceEvent; + s.on("start", (e) => { + if (startEvent === null) { + startEvent = e; + } else { + assert.fail("start event listener called twice"); + } + }); + createFakeDrag( + [ + { x: 1, y: 1 }, + { x: 2, y: 2 }, + { x: 3, y: 3 } + ], + { + eventType: "pointer", + stepDuration: 0, + onAfterStep: (e) => { + if (e.type === "pointerdown") { + sourceEvent = e; + } + } + } + ); + assert.deepEqual(startEvent, { + type: "start", + srcEvent: sourceEvent, + target: el, + pointerId: sourceEvent.pointerId, + pointerType: sourceEvent.pointerType, + x: 1, + y: 1 + }); + s.destroy(); + el.remove(); + }); + it(`should be triggered correctly on touchstart`, function() { + if (!IS_BROWSER) + this.skip(); + const el = createTestElement(); + const s = new PointerSensor(el, { sourceEvents: "touch" }); + let startEvent = null; + let sourceEvent; + s.on("start", (e) => { + if (startEvent === null) { + startEvent = e; + } else { + assert.fail("start event listener called twice"); + } + }); + createFakeDrag( + [ + { x: 1, y: 1 }, + { x: 2, y: 2 }, + { x: 3, y: 3 } + ], + { + eventType: "touch", + stepDuration: 0, + onAfterStep: (e) => { + if (e.type === "touchstart") { + sourceEvent = e; + } + } + } + ); + assert.deepEqual(startEvent, { + type: "start", + srcEvent: sourceEvent, + target: el, + pointerId: sourceEvent.changedTouches[0].identifier, + pointerType: "touch", + x: 1, + y: 1 + }); + s.destroy(); + el.remove(); + }); + }); + describe("move event", () => { + it(`should be triggered correctly on mousemove`, function() { + if (!IS_BROWSER) + this.skip(); + const el = createTestElement(); + const s = new PointerSensor(el, { sourceEvents: "mouse" }); + let moveEvent = null; + let sourceEvent; + s.on("move", (e) => { + if (moveEvent === null) { + moveEvent = e; + } else { + assert.fail("move event listener called twice"); + } + }); + createFakeDrag( + [ + { x: 1, y: 1 }, + { x: 2, y: 2 }, + { x: 3, y: 3 } + ], + { + eventType: "mouse", + stepDuration: 0, + onAfterStep: (e) => { + if (e.type === "mousemove") { + sourceEvent = e; + } + } + } + ); + assert.deepEqual(moveEvent, { + type: "move", + srcEvent: sourceEvent, + target: el, + pointerId: -1, + pointerType: "mouse", + x: 2, + y: 2 + }); + s.destroy(); + el.remove(); + }); + it(`should be triggered correctly on pointermove`, function() { + if (!IS_BROWSER) + this.skip(); + const el = createTestElement(); + const s = new PointerSensor(el, { sourceEvents: "pointer" }); + let moveEvent = null; + let sourceEvent; + s.on("move", (e) => { + if (moveEvent === null) { + moveEvent = e; + } else { + assert.fail("move event listener called twice"); + } + }); + createFakeDrag( + [ + { x: 1, y: 1 }, + { x: 2, y: 2 }, + { x: 3, y: 3 } + ], + { + eventType: "pointer", + stepDuration: 0, + onAfterStep: (e) => { + if (e.type === "pointermove") { + sourceEvent = e; + } + } + } + ); + assert.deepEqual(moveEvent, { + type: "move", + srcEvent: sourceEvent, + target: el, + pointerId: sourceEvent.pointerId, + pointerType: sourceEvent.pointerType, + x: 2, + y: 2 + }); + s.destroy(); + el.remove(); + }); + it(`should be triggered correctly on touchmove`, function() { + if (!IS_BROWSER) + this.skip(); + const el = createTestElement(); + const s = new PointerSensor(el, { sourceEvents: "touch" }); + let moveEvent = null; + let sourceEvent; + s.on("move", (e) => { + if (moveEvent === null) { + moveEvent = e; + } else { + assert.fail("start event listener called twice"); + } + }); + createFakeDrag( + [ + { x: 1, y: 1 }, + { x: 2, y: 2 }, + { x: 3, y: 3 } + ], + { + eventType: "touch", + stepDuration: 0, + onAfterStep: (e) => { + if (e.type === "touchmove") { + sourceEvent = e; + } + } + } + ); + assert.deepEqual(moveEvent, { + type: "move", + srcEvent: sourceEvent, + target: el, + pointerId: sourceEvent.changedTouches[0].identifier, + pointerType: "touch", + x: 2, + y: 2 + }); + s.destroy(); + el.remove(); + }); + }); + describe("end event", () => { + it(`should be triggered correctly on mouseup`, function() { + if (!IS_BROWSER) + this.skip(); + const el = createTestElement(); + const s = new PointerSensor(el, { sourceEvents: "mouse" }); + let endEvent = null; + let sourceEvent; + s.on("end", (e) => { + if (endEvent === null) { + endEvent = e; + } else { + assert.fail("end event listener called twice"); + } + }); + createFakeDrag( + [ + { x: 1, y: 1 }, + { x: 2, y: 2 }, + { x: 3, y: 3 } + ], + { + eventType: "mouse", + stepDuration: 0, + onAfterStep: (e) => { + if (e.type === "mouseup") { + sourceEvent = e; + } + } + } + ); + assert.deepEqual(endEvent, { + type: "end", + srcEvent: sourceEvent, + target: el, + pointerId: -1, + pointerType: "mouse", + x: 3, + y: 3 + }); + s.destroy(); + el.remove(); + }); + it(`should be triggered correctly on pointerup`, function() { + if (!IS_BROWSER) + this.skip(); + const el = createTestElement(); + const s = new PointerSensor(el, { sourceEvents: "pointer" }); + let endEvent = null; + let sourceEvent; + s.on("end", (e) => { + if (endEvent === null) { + endEvent = e; + } else { + assert.fail("end event listener called twice"); + } + }); + createFakeDrag( + [ + { x: 1, y: 1 }, + { x: 2, y: 2 }, + { x: 3, y: 3 } + ], + { + eventType: "pointer", + stepDuration: 0, + onAfterStep: (e) => { + if (e.type === "pointerup") { + sourceEvent = e; + } + } + } + ); + assert.deepEqual(endEvent, { + type: "end", + srcEvent: sourceEvent, + target: el, + pointerId: sourceEvent.pointerId, + pointerType: sourceEvent.pointerType, + x: 3, + y: 3 + }); + s.destroy(); + el.remove(); + }); + it(`should be triggered correctly on touchend`, function() { + if (!IS_BROWSER) + this.skip(); + const el = createTestElement(); + const s = new PointerSensor(el, { sourceEvents: "touch" }); + let endEvent = null; + let sourceEvent; + s.on("end", (e) => { + if (endEvent === null) { + endEvent = e; + } else { + assert.fail("end event listener called twice"); + } + }); + createFakeDrag( + [ + { x: 1, y: 1 }, + { x: 2, y: 2 }, + { x: 3, y: 3 } + ], + { + eventType: "touch", + stepDuration: 0, + onAfterStep: (e) => { + if (e.type === "touchend") { + sourceEvent = e; + } + } + } + ); + assert.deepEqual(endEvent, { + type: "end", + srcEvent: sourceEvent, + target: el, + pointerId: sourceEvent.changedTouches[0].identifier, + pointerType: "touch", + x: 3, + y: 3 + }); + s.destroy(); + el.remove(); + }); + }); + describe("cancel event", () => { + it(`should be triggered correctly on pointercancel`, function() { + if (!IS_BROWSER) + this.skip(); + const el = createTestElement(); + const s = new PointerSensor(el, { sourceEvents: "pointer" }); + let cancelEvent = null; + let sourceEvent; + s.on("cancel", (e) => { + if (cancelEvent === null) { + cancelEvent = e; + } else { + assert.fail("cancel event listener called twice"); + } + }); + createFakeDrag( + [ + { x: 1, y: 1 }, + { x: 2, y: 2 }, + { x: 3, y: 3 } + ], + { + eventType: "pointer", + stepDuration: 0, + cancelAtEnd: true, + onAfterStep: (e) => { + if (e.type === "pointercancel") { + sourceEvent = e; + } + } + } + ); + assert.deepEqual(cancelEvent, { + type: "cancel", + srcEvent: sourceEvent, + target: el, + pointerId: sourceEvent.pointerId, + pointerType: sourceEvent.pointerType, + x: 3, + y: 3 + }); + s.destroy(); + el.remove(); + }); + it(`should be triggered correctly on touchcancel`, function() { + if (!IS_BROWSER) + this.skip(); + const el = createTestElement(); + const s = new PointerSensor(el, { sourceEvents: "touch" }); + let cancelEvent = null; + let sourceEvent; + s.on("cancel", (e) => { + if (cancelEvent === null) { + cancelEvent = e; + } else { + assert.fail("cancel event listener called twice"); + } + }); + createFakeDrag( + [ + { x: 1, y: 1 }, + { x: 2, y: 2 }, + { x: 3, y: 3 } + ], + { + eventType: "touch", + stepDuration: 0, + cancelAtEnd: true, + onAfterStep: (e) => { + if (e.type === "touchcancel") { + sourceEvent = e; + } + } + } + ); + assert.deepEqual(cancelEvent, { + type: "cancel", + srcEvent: sourceEvent, + target: el, + pointerId: sourceEvent.changedTouches[0].identifier, + pointerType: "touch", + x: 3, + y: 3 + }); + s.destroy(); + el.remove(); + }); + }); + }); + + // tests/src/KeyboardSensor.ts + describe("KeyboardSensor", () => { + beforeEach(() => { + if (IS_BROWSER) { + addDefaultPageStyles(document); + return new Promise((resolve) => requestAnimationFrame(() => requestAnimationFrame(resolve))); + } + return; + }); + afterEach(() => { + if (IS_BROWSER) { + removeDefaultPageStyles(document); + return new Promise((resolve) => requestAnimationFrame(() => requestAnimationFrame(resolve))); + } + return; + }); + describe("drag property", () => { + it(`should be null on init`, function() { + const s = new KeyboardSensor(); + assert.equal(s.drag, null); + s.destroy(); + }); + }); + describe("isDestroyed property", () => { + it(`should be false on init`, function() { + const s = new KeyboardSensor(); + assert.equal(s.isDestroyed, false); + s.destroy(); + }); + }); + describe("start event", () => { + it(`should be triggered correctly on Enter`, function() { + if (!IS_BROWSER) + this.skip(); + const el = createTestElement({ left: "10px", top: "20px" }); + const s = new KeyboardSensor(); + let startEvent = null; + s.on("start", (e) => { + if (startEvent === null) { + startEvent = e; + } else { + assert.fail("start event listener called twice"); + } + }); + const srcEvent = new KeyboardEvent("keydown", { key: "Enter" }); + document.dispatchEvent(srcEvent); + assert.equal(s.drag, null); + el.focus(); + document.dispatchEvent(srcEvent); + assert.deepEqual(startEvent, { + type: "start", + srcEvent, + x: 10, + y: 20 + }); + s.destroy(); + el.remove(); + }); + }); + }); +})(); +/*! Bundled license information: + +assertion-error/index.js: + (*! + * assertion-error + * Copyright(c) 2013 Jake Luer + * MIT Licensed + *) + (*! + * Return a function that will copy properties from + * one object to another excluding any originally + * listed. Returned function will create a new `{}`. + * + * @param {String} excluded properties ... + * @return {Function} + *) + (*! + * Primary Exports + *) + (*! + * Inherit from Error.prototype + *) + (*! + * Statically set name + *) + (*! + * Ensure correct constructor + *) + +chai/lib/chai/utils/flag.js: + (*! + * Chai - flag utility + * Copyright(c) 2012-2014 Jake Luer + * MIT Licensed + *) + +chai/lib/chai/utils/test.js: + (*! + * Chai - test utility + * Copyright(c) 2012-2014 Jake Luer + * MIT Licensed + *) + (*! + * Module dependencies + *) + +chai/lib/chai/utils/expectTypes.js: + (*! + * Chai - expectTypes utility + * Copyright(c) 2012-2014 Jake Luer + * MIT Licensed + *) + +chai/lib/chai/utils/getActual.js: + (*! + * Chai - getActual utility + * Copyright(c) 2012-2014 Jake Luer + * MIT Licensed + *) + +chai/lib/chai/utils/objDisplay.js: + (*! + * Chai - flag utility + * Copyright(c) 2012-2014 Jake Luer + * MIT Licensed + *) + (*! + * Module dependencies + *) + +chai/lib/chai/utils/getMessage.js: + (*! + * Chai - message composition utility + * Copyright(c) 2012-2014 Jake Luer + * MIT Licensed + *) + (*! + * Module dependencies + *) + +chai/lib/chai/utils/transferFlags.js: + (*! + * Chai - transferFlags utility + * Copyright(c) 2012-2014 Jake Luer + * MIT Licensed + *) + +deep-eql/index.js: + (*! + * deep-eql + * Copyright(c) 2013 Jake Luer + * MIT Licensed + *) + (*! + * Check to see if the MemoizeMap has recorded a result of the two operands + * + * @param {Mixed} leftHandOperand + * @param {Mixed} rightHandOperand + * @param {MemoizeMap} memoizeMap + * @returns {Boolean|null} result + *) + (*! + * Set the result of the equality into the MemoizeMap + * + * @param {Mixed} leftHandOperand + * @param {Mixed} rightHandOperand + * @param {MemoizeMap} memoizeMap + * @param {Boolean} result + *) + (*! + * Primary Export + *) + (*! + * The main logic of the `deepEqual` function. + * + * @param {Mixed} leftHandOperand + * @param {Mixed} rightHandOperand + * @param {Object} [options] (optional) Additional options + * @param {Array} [options.comparator] (optional) Override default algorithm, determining custom equality. + * @param {Array} [options.memoize] (optional) Provide a custom memoization object which will cache the results of + complex objects for a speed boost. By passing `false` you can disable memoization, but this will cause circular + references to blow the stack. + * @return {Boolean} equal match + *) + (*! + * Compare two Regular Expressions for equality. + * + * @param {RegExp} leftHandOperand + * @param {RegExp} rightHandOperand + * @return {Boolean} result + *) + (*! + * Compare two Sets/Maps for equality. Faster than other equality functions. + * + * @param {Set} leftHandOperand + * @param {Set} rightHandOperand + * @param {Object} [options] (Optional) + * @return {Boolean} result + *) + (*! + * Simple equality for flat iterable objects such as Arrays, TypedArrays or Node.js buffers. + * + * @param {Iterable} leftHandOperand + * @param {Iterable} rightHandOperand + * @param {Object} [options] (Optional) + * @return {Boolean} result + *) + (*! + * Simple equality for generator objects such as those returned by generator functions. + * + * @param {Iterable} leftHandOperand + * @param {Iterable} rightHandOperand + * @param {Object} [options] (Optional) + * @return {Boolean} result + *) + (*! + * Determine if the given object has an @@iterator function. + * + * @param {Object} target + * @return {Boolean} `true` if the object has an @@iterator function. + *) + (*! + * Gets all iterator entries from the given Object. If the Object has no @@iterator function, returns an empty array. + * This will consume the iterator - which could have side effects depending on the @@iterator implementation. + * + * @param {Object} target + * @returns {Array} an array of entries from the @@iterator function + *) + (*! + * Gets all entries from a Generator. This will consume the generator - which could have side effects. + * + * @param {Generator} target + * @returns {Array} an array of entries from the Generator. + *) + (*! + * Gets all own and inherited enumerable keys from a target. + * + * @param {Object} target + * @returns {Array} an array of own and inherited enumerable keys from the target. + *) + (*! + * Determines if two objects have matching values, given a set of keys. Defers to deepEqual for the equality check of + * each key. If any value of the given key is not equal, the function will return false (early). + * + * @param {Mixed} leftHandOperand + * @param {Mixed} rightHandOperand + * @param {Array} keys An array of keys to compare the values of leftHandOperand and rightHandOperand against + * @param {Object} [options] (Optional) + * @return {Boolean} result + *) + (*! + * Recursively check the equality of two Objects. Once basic sameness has been established it will defer to `deepEqual` + * for each enumerable key in the object. + * + * @param {Mixed} leftHandOperand + * @param {Mixed} rightHandOperand + * @param {Object} [options] (Optional) + * @return {Boolean} result + *) + (*! + * Returns true if the argument is a primitive. + * + * This intentionally returns true for all objects that can be compared by reference, + * including functions and symbols. + * + * @param {Mixed} value + * @return {Boolean} result + *) + +chai/lib/chai/utils/isProxyEnabled.js: + (*! + * Chai - isProxyEnabled helper + * Copyright(c) 2012-2014 Jake Luer + * MIT Licensed + *) + +chai/lib/chai/utils/addProperty.js: + (*! + * Chai - addProperty utility + * Copyright(c) 2012-2014 Jake Luer + * MIT Licensed + *) + +chai/lib/chai/utils/addLengthGuard.js: + (*! + * Chai - addLengthGuard utility + * Copyright(c) 2012-2014 Jake Luer + * MIT Licensed + *) + +chai/lib/chai/utils/getProperties.js: + (*! + * Chai - getProperties utility + * Copyright(c) 2012-2014 Jake Luer + * MIT Licensed + *) + +chai/lib/chai/utils/proxify.js: + (*! + * Chai - proxify utility + * Copyright(c) 2012-2014 Jake Luer + * MIT Licensed + *) + +chai/lib/chai/utils/addMethod.js: + (*! + * Chai - addMethod utility + * Copyright(c) 2012-2014 Jake Luer + * MIT Licensed + *) + +chai/lib/chai/utils/overwriteProperty.js: + (*! + * Chai - overwriteProperty utility + * Copyright(c) 2012-2014 Jake Luer + * MIT Licensed + *) + +chai/lib/chai/utils/overwriteMethod.js: + (*! + * Chai - overwriteMethod utility + * Copyright(c) 2012-2014 Jake Luer + * MIT Licensed + *) + +chai/lib/chai/utils/addChainableMethod.js: + (*! + * Chai - addChainingMethod utility + * Copyright(c) 2012-2014 Jake Luer + * MIT Licensed + *) + (*! + * Module dependencies + *) + (*! + * Module variables + *) + +chai/lib/chai/utils/overwriteChainableMethod.js: + (*! + * Chai - overwriteChainableMethod utility + * Copyright(c) 2012-2014 Jake Luer + * MIT Licensed + *) + +chai/lib/chai/utils/compareByInspect.js: + (*! + * Chai - compareByInspect utility + * Copyright(c) 2011-2016 Jake Luer + * MIT Licensed + *) + (*! + * Module dependencies + *) + +chai/lib/chai/utils/getOwnEnumerablePropertySymbols.js: + (*! + * Chai - getOwnEnumerablePropertySymbols utility + * Copyright(c) 2011-2016 Jake Luer + * MIT Licensed + *) + +chai/lib/chai/utils/getOwnEnumerableProperties.js: + (*! + * Chai - getOwnEnumerableProperties utility + * Copyright(c) 2011-2016 Jake Luer + * MIT Licensed + *) + (*! + * Module dependencies + *) + +chai/lib/chai/utils/isNaN.js: + (*! + * Chai - isNaN utility + * Copyright(c) 2012-2015 Sakthipriyan Vairamani + * MIT Licensed + *) + +chai/lib/chai/utils/index.js: + (*! + * chai + * Copyright(c) 2011 Jake Luer + * MIT Licensed + *) + (*! + * Dependencies that are used for multiple exports are required here only once + *) + (*! + * test utility + *) + (*! + * type utility + *) + (*! + * expectTypes utility + *) + (*! + * message utility + *) + (*! + * actual utility + *) + (*! + * Inspect util + *) + (*! + * Object Display util + *) + (*! + * Flag utility + *) + (*! + * Flag transferring utility + *) + (*! + * Deep equal utility + *) + (*! + * Deep path info + *) + (*! + * Check if a property exists + *) + (*! + * Function name + *) + (*! + * add Property + *) + (*! + * add Method + *) + (*! + * overwrite Property + *) + (*! + * overwrite Method + *) + (*! + * Add a chainable method + *) + (*! + * Overwrite chainable method + *) + (*! + * Compare by inspect method + *) + (*! + * Get own enumerable property symbols method + *) + (*! + * Get own enumerable properties method + *) + (*! + * Checks error against a given set of criteria + *) + (*! + * Proxify util + *) + (*! + * addLengthGuard util + *) + (*! + * isProxyEnabled helper + *) + (*! + * isNaN method + *) + (*! + * getOperator method + *) + +chai/lib/chai/assertion.js: + (*! + * chai + * http://chaijs.com + * Copyright(c) 2011-2014 Jake Luer + * MIT Licensed + *) + (*! + * Module dependencies. + *) + (*! + * Module export. + *) + (*! + * Assertion Constructor + * + * Creates object for chaining. + * + * `Assertion` objects contain metadata in the form of flags. Three flags can + * be assigned during instantiation by passing arguments to this constructor: + * + * - `object`: This flag contains the target of the assertion. For example, in + * the assertion `expect(numKittens).to.equal(7);`, the `object` flag will + * contain `numKittens` so that the `equal` assertion can reference it when + * needed. + * + * - `message`: This flag contains an optional custom error message to be + * prepended to the error message that's generated by the assertion when it + * fails. + * + * - `ssfi`: This flag stands for "start stack function indicator". It + * contains a function reference that serves as the starting point for + * removing frames from the stack trace of the error that's created by the + * assertion when it fails. The goal is to provide a cleaner stack trace to + * end users by removing Chai's internal functions. Note that it only works + * in environments that support `Error.captureStackTrace`, and only when + * `Chai.config.includeStack` hasn't been set to `false`. + * + * - `lockSsfi`: This flag controls whether or not the given `ssfi` flag + * should retain its current value, even as assertions are chained off of + * this object. This is usually set to `true` when creating a new assertion + * from within another assertion. It's also temporarily set to `true` before + * an overwritten assertion gets called by the overwriting assertion. + * + * @param {Mixed} obj target of the assertion + * @param {String} msg (optional) custom error message + * @param {Function} ssfi (optional) starting point for removing stack frames + * @param {Boolean} lockSsfi (optional) whether or not the ssfi flag is locked + * @api private + *) + (*! + * ### ._obj + * + * Quick reference to stored `actual` value for plugin developers. + * + * @api private + *) + +chai/lib/chai/core/assertions.js: + (*! + * chai + * http://chaijs.com + * Copyright(c) 2011-2014 Jake Luer + * MIT Licensed + *) + +chai/lib/chai/interface/expect.js: + (*! + * chai + * Copyright(c) 2011-2014 Jake Luer + * MIT Licensed + *) + +chai/lib/chai/interface/should.js: + (*! + * chai + * Copyright(c) 2011-2014 Jake Luer + * MIT Licensed + *) + +chai/lib/chai/interface/assert.js: + (*! + * chai + * Copyright(c) 2011-2014 Jake Luer + * MIT Licensed + *) + (*! + * Chai dependencies. + *) + (*! + * Module export. + *) + (*! + * ### .ifError(object) + * + * Asserts if value is not a false value, and throws if it is a true value. + * This is added to allow for chai to be a drop-in replacement for Node's + * assert class. + * + * var err = new Error('I am a custom error'); + * assert.ifError(err); // Rethrows err! + * + * @name ifError + * @param {Object} object + * @namespace Assert + * @api public + *) + (*! + * Aliases. + *) + +chai/lib/chai.js: + (*! + * chai + * Copyright(c) 2011-2014 Jake Luer + * MIT Licensed + *) + (*! + * Chai version + *) + (*! + * Assertion Error + *) + (*! + * Utils for plugins (not exported) + *) + (*! + * Utility Functions + *) + (*! + * Configuration + *) + (*! + * Primary `Assertion` prototype + *) + (*! + * Core Assertions + *) + (*! + * Expect interface + *) + (*! + * Should interface + *) + (*! + * Assert interface + *) +*/ diff --git a/tests/dist/tests.js b/tests/dist/tests.js index 834bdb8..69c18e7 100644 --- a/tests/dist/tests.js +++ b/tests/dist/tests.js @@ -1,2004 +1,6257 @@ -import { assert } from 'chai'; -import { Emitter } from 'eventti'; -import { Ticker } from 'tikki'; - -const SensorEventType = { - start: 'start', - move: 'move', - cancel: 'cancel', - end: 'end', - destroy: 'destroy', +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, { + get: (a, b) => (typeof require !== "undefined" ? require : a)[b] +}) : x)(function(x) { + if (typeof require !== "undefined") + return require.apply(this, arguments); + throw Error('Dynamic require of "' + x + '" is not supported'); +}); +var __esm = (fn, res) => function __init() { + return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res; +}; +var __commonJS = (cb, mod) => function __require2() { + return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; +}; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; }; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); -class BaseSensor { - constructor() { - this.drag = null; - this.isDestroyed = false; - this._emitter = new Emitter(); - } - _createDragData(data) { - return { - x: data.x, - y: data.y, - }; - } - _updateDragData(data) { - if (!this.drag) - return; - this.drag.x = data.x; - this.drag.y = data.y; - } - _resetDragData() { - this.drag = null; - } - _start(data) { - if (this.isDestroyed || this.drag) - return; - this.drag = this._createDragData(data); - this._emitter.emit(SensorEventType.start, data); - } - _move(data) { - if (!this.drag) - return; - this._updateDragData(data); - this._emitter.emit(SensorEventType.move, data); - } - _end(data) { - if (!this.drag) - return; - this._updateDragData(data); - this._emitter.emit(SensorEventType.end, data); - this._resetDragData(); - } - _cancel(data) { - if (!this.drag) - return; - this._updateDragData(data); - this._emitter.emit(SensorEventType.cancel, data); - this._resetDragData(); - } - on(eventName, listener, listenerId) { - return this._emitter.on(eventName, listener, listenerId); - } - off(eventName, listener) { - this._emitter.off(eventName, listener); - } - cancel() { - if (!this.drag) - return; - this._emitter.emit(SensorEventType.cancel, { - type: SensorEventType.cancel, - x: this.drag.x, - y: this.drag.y, - }); - this._resetDragData(); - } - destroy() { - if (this.isDestroyed) - return; - this.isDestroyed = true; - this.cancel(); - this._emitter.emit(SensorEventType.destroy, { - type: SensorEventType.destroy, +// node_modules/assertion-error/index.js +var require_assertion_error = __commonJS({ + "node_modules/assertion-error/index.js"(exports, module) { + "use strict"; + function exclude() { + var excludes = [].slice.call(arguments); + function excludeProps(res, obj) { + Object.keys(obj).forEach(function(key) { + if (!~excludes.indexOf(key)) + res[key] = obj[key]; }); - this._emitter.off(); - } -} - -let tickerReadPhase = Symbol(); -let tickerWritePhase = Symbol(); -let ticker = new Ticker({ phases: [tickerReadPhase, tickerWritePhase] }); - -function getPointerEventData(e, id) { - if ('pointerId' in e) { - return e.pointerId === id ? e : null; - } - if ('changedTouches' in e) { - let i = 0; - for (; i < e.changedTouches.length; i++) { - if (e.changedTouches[i].identifier === id) { - return e.changedTouches[i]; - } + } + return function extendExclude() { + var args = [].slice.call(arguments), i = 0, res = {}; + for (; i < args.length; i++) { + excludeProps(res, args[i]); } - return null; + return res; + }; } - return e; -} - -function getPointerType(e) { - return 'pointerType' in e ? e.pointerType : 'touches' in e ? 'touch' : 'mouse'; -} - -function getPointerId(e) { - if ('pointerId' in e) - return e.pointerId; - if ('changedTouches' in e) - return e.changedTouches[0] ? e.changedTouches[0].identifier : null; - return -1; -} - -const IS_BROWSER = typeof window !== 'undefined' && typeof window.document !== 'undefined'; -const HAS_PASSIVE_EVENTS = (() => { - let isPassiveEventsSupported = false; - try { - const passiveOpts = Object.defineProperty({}, 'passive', { - get: function () { - isPassiveEventsSupported = true; - }, - }); - window.addEventListener('testPassive', null, passiveOpts); - window.removeEventListener('testPassive', null, passiveOpts); + module.exports = AssertionError2; + function AssertionError2(message, _props, ssf) { + var extend = exclude("name", "message", "stack", "constructor", "toJSON"), props = extend(_props || {}); + this.message = message || "Unspecified AssertionError"; + this.showDiff = false; + for (var key in props) { + this[key] = props[key]; + } + ssf = ssf || AssertionError2; + if (Error.captureStackTrace) { + Error.captureStackTrace(this, ssf); + } else { + try { + throw new Error(); + } catch (e) { + this.stack = e.stack; + } + } } - catch (e) { } - return isPassiveEventsSupported; -})(); -const HAS_TOUCH_EVENTS = IS_BROWSER && 'ontouchstart' in window; -const HAS_POINTER_EVENTS = IS_BROWSER && !!window.PointerEvent; -!!(IS_BROWSER && - navigator.vendor && - navigator.vendor.indexOf('Apple') > -1 && - navigator.userAgent && - navigator.userAgent.indexOf('CriOS') == -1 && - navigator.userAgent.indexOf('FxiOS') == -1); + AssertionError2.prototype = Object.create(Error.prototype); + AssertionError2.prototype.name = "AssertionError"; + AssertionError2.prototype.constructor = AssertionError2; + AssertionError2.prototype.toJSON = function(stack) { + var extend = exclude("constructor", "toJSON", "stack"), props = extend({ name: this.name }, this); + if (false !== stack && this.stack) { + props.stack = this.stack; + } + return props; + }; + } +}); -function parseListenerOptions(options = {}) { - const { capture = true, passive = true } = options; - if (HAS_PASSIVE_EVENTS) { - return { capture, passive }; - } - else { - return { capture }; +// node_modules/pathval/index.js +var require_pathval = __commonJS({ + "node_modules/pathval/index.js"(exports, module) { + "use strict"; + function hasProperty(obj, name) { + if (typeof obj === "undefined" || obj === null) { + return false; + } + return name in Object(obj); } -} - -function parseSourceEvents(sourceEvents) { - return sourceEvents === 'auto' || sourceEvents === undefined - ? HAS_POINTER_EVENTS - ? 'pointer' - : HAS_TOUCH_EVENTS - ? 'touch' - : 'mouse' - : sourceEvents; -} - -const POINTER_EVENTS = { - start: 'pointerdown', - move: 'pointermove', - cancel: 'pointercancel', - end: 'pointerup', -}; -const TOUCH_EVENTS = { - start: 'touchstart', - move: 'touchmove', - cancel: 'touchcancel', - end: 'touchend', -}; -const MOUSE_EVENTS = { - start: 'mousedown', - move: 'mousemove', - cancel: '', - end: 'mouseup', -}; -const SOURCE_EVENTS = { - pointer: POINTER_EVENTS, - touch: TOUCH_EVENTS, - mouse: MOUSE_EVENTS, -}; -class PointerSensor { - constructor(element, options = {}) { - const { listenerOptions = {}, sourceEvents = 'auto', startPredicate = (e) => ('button' in e && e.button > 0 ? false : true), } = options; - this.element = element; - this.drag = null; - this.isDestroyed = false; - this._areWindowListenersBound = false; - this._startPredicate = startPredicate; - this._listenerOptions = parseListenerOptions(listenerOptions); - this._sourceEvents = parseSourceEvents(sourceEvents); - this._emitter = new Emitter(); - this._onStart = this._onStart.bind(this); - this._onMove = this._onMove.bind(this); - this._onCancel = this._onCancel.bind(this); - this._onEnd = this._onEnd.bind(this); - element.addEventListener(SOURCE_EVENTS[this._sourceEvents].start, this._onStart, this._listenerOptions); - } - _getTrackedPointerEventData(e) { - return this.drag ? getPointerEventData(e, this.drag.pointerId) : null; - } - _onStart(e) { - if (this.isDestroyed || this.drag) - return; - if (!this._startPredicate(e)) - return; - const pointerId = getPointerId(e); - if (pointerId === null) - return; - const pointerEventData = getPointerEventData(e, pointerId); - if (pointerEventData === null) - return; - const dragData = { - pointerId, - pointerType: getPointerType(e), - x: pointerEventData.clientX, - y: pointerEventData.clientY, - }; - this.drag = dragData; - const eventData = Object.assign(Object.assign({}, dragData), { type: SensorEventType.start, srcEvent: e, target: pointerEventData.target }); - this._emitter.emit(eventData.type, eventData); - if (this.drag) { - this._bindWindowListeners(); + function parsePath(path) { + var str = path.replace(/([^\\])\[/g, "$1.["); + var parts = str.match(/(\\\.|[^.]+?)+/g); + return parts.map(function mapMatches(value) { + if (value === "constructor" || value === "__proto__" || value === "prototype") { + return {}; } - } - _onMove(e) { - if (!this.drag) - return; - const pointerEventData = this._getTrackedPointerEventData(e); - if (!pointerEventData) - return; - this.drag.x = pointerEventData.clientX; - this.drag.y = pointerEventData.clientY; - const eventData = Object.assign({ type: SensorEventType.move, srcEvent: e, target: pointerEventData.target }, this.drag); - this._emitter.emit(eventData.type, eventData); - } - _onCancel(e) { - if (!this.drag) - return; - const pointerEventData = this._getTrackedPointerEventData(e); - if (!pointerEventData) - return; - this.drag.x = pointerEventData.clientX; - this.drag.y = pointerEventData.clientY; - const eventData = Object.assign({ type: SensorEventType.cancel, srcEvent: e, target: pointerEventData.target }, this.drag); - this._emitter.emit(eventData.type, eventData); - this._resetDrag(); - } - _onEnd(e) { - if (!this.drag) - return; - const pointerEventData = this._getTrackedPointerEventData(e); - if (!pointerEventData) - return; - this.drag.x = pointerEventData.clientX; - this.drag.y = pointerEventData.clientY; - const eventData = Object.assign({ type: SensorEventType.end, srcEvent: e, target: pointerEventData.target }, this.drag); - this._emitter.emit(eventData.type, eventData); - this._resetDrag(); - } - _bindWindowListeners() { - if (this._areWindowListenersBound) - return; - const { move, end, cancel } = SOURCE_EVENTS[this._sourceEvents]; - window.addEventListener(move, this._onMove, this._listenerOptions); - window.addEventListener(end, this._onEnd, this._listenerOptions); - if (cancel) { - window.addEventListener(cancel, this._onCancel, this._listenerOptions); - } - this._areWindowListenersBound = true; - } - _unbindWindowListeners() { - if (this._areWindowListenersBound) { - const { move, end, cancel } = SOURCE_EVENTS[this._sourceEvents]; - window.removeEventListener(move, this._onMove, this._listenerOptions); - window.removeEventListener(end, this._onEnd, this._listenerOptions); - if (cancel) { - window.removeEventListener(cancel, this._onCancel, this._listenerOptions); - } - this._areWindowListenersBound = false; + var regexp = /^\[(\d+)\]$/; + var mArr = regexp.exec(value); + var parsed = null; + if (mArr) { + parsed = { i: parseFloat(mArr[1]) }; + } else { + parsed = { p: value.replace(/\\([.[\]])/g, "$1") }; } + return parsed; + }); } - _resetDrag() { - this.drag = null; - this._unbindWindowListeners(); - } - cancel() { - if (!this.drag) - return; - const eventData = Object.assign({ type: SensorEventType.cancel, srcEvent: null, target: null }, this.drag); - this._emitter.emit(eventData.type, eventData); - this._resetDrag(); + function internalGetPathValue(obj, parsed, pathDepth) { + var temporaryValue = obj; + var res = null; + pathDepth = typeof pathDepth === "undefined" ? parsed.length : pathDepth; + for (var i = 0; i < pathDepth; i++) { + var part = parsed[i]; + if (temporaryValue) { + if (typeof part.p === "undefined") { + temporaryValue = temporaryValue[part.i]; + } else { + temporaryValue = temporaryValue[part.p]; + } + if (i === pathDepth - 1) { + res = temporaryValue; + } + } + } + return res; } - updateSettings(options) { - if (this.isDestroyed) - return; - const { listenerOptions, sourceEvents, startPredicate } = options; - const nextSourceEvents = parseSourceEvents(sourceEvents); - const nextListenerOptions = parseListenerOptions(listenerOptions); - if (startPredicate && this._startPredicate !== startPredicate) { - this._startPredicate = startPredicate; - } - if ((listenerOptions && - (this._listenerOptions.capture !== nextListenerOptions.capture || - this._listenerOptions.passive === nextListenerOptions.passive)) || - (sourceEvents && this._sourceEvents !== nextSourceEvents)) { - this.element.removeEventListener(SOURCE_EVENTS[this._sourceEvents].start, this._onStart, this._listenerOptions); - this._unbindWindowListeners(); - this.cancel(); - if (sourceEvents) { - this._sourceEvents = nextSourceEvents; - } - if (listenerOptions && nextListenerOptions) { - this._listenerOptions = nextListenerOptions; - } - this.element.addEventListener(SOURCE_EVENTS[this._sourceEvents].start, this._onStart, this._listenerOptions); + function internalSetPathValue(obj, val, parsed) { + var tempObj = obj; + var pathDepth = parsed.length; + var part = null; + for (var i = 0; i < pathDepth; i++) { + var propName = null; + var propVal = null; + part = parsed[i]; + if (i === pathDepth - 1) { + propName = typeof part.p === "undefined" ? part.i : part.p; + tempObj[propName] = val; + } else if (typeof part.p !== "undefined" && tempObj[part.p]) { + tempObj = tempObj[part.p]; + } else if (typeof part.i !== "undefined" && tempObj[part.i]) { + tempObj = tempObj[part.i]; + } else { + var next = parsed[i + 1]; + propName = typeof part.p === "undefined" ? part.i : part.p; + propVal = typeof next.p === "undefined" ? [] : {}; + tempObj[propName] = propVal; + tempObj = tempObj[propName]; } + } } - on(eventName, listener, listenerId) { - return this._emitter.on(eventName, listener, listenerId); + function getPathInfo(obj, path) { + var parsed = parsePath(path); + var last = parsed[parsed.length - 1]; + var info = { + parent: parsed.length > 1 ? internalGetPathValue(obj, parsed, parsed.length - 1) : obj, + name: last.p || last.i, + value: internalGetPathValue(obj, parsed) + }; + info.exists = hasProperty(info.parent, info.name); + return info; } - off(eventName, listener) { - this._emitter.off(eventName, listener); + function getPathValue(obj, path) { + var info = getPathInfo(obj, path); + return info.value; } - destroy() { - if (this.isDestroyed) - return; - this.isDestroyed = true; - this.cancel(); - this._emitter.emit(SensorEventType.destroy, { - type: SensorEventType.destroy, - }); - this._emitter.off(); - this.element.removeEventListener(SOURCE_EVENTS[this._sourceEvents].start, this._onStart, this._listenerOptions); + function setPathValue(obj, path, val) { + var parsed = parsePath(path); + internalSetPathValue(obj, val, parsed); + return obj; } -} + module.exports = { + hasProperty, + getPathInfo, + getPathValue, + setPathValue + }; + } +}); -class KeyboardSensor extends BaseSensor { - constructor(options = {}) { - super(); - const { moveDistance = 25, startPredicate = (e) => { - if (e.key === 'Enter' || e.key === 'Space' || e.key === ' ') { - if (document.activeElement && document.activeElement !== document.body) { - const { left, top } = document.activeElement.getBoundingClientRect(); - return { x: left, y: top }; - } +// node_modules/chai/lib/chai/utils/flag.js +var require_flag = __commonJS({ + "node_modules/chai/lib/chai/utils/flag.js"(exports, module) { + "use strict"; + module.exports = function flag(obj, key, value) { + var flags = obj.__flags || (obj.__flags = /* @__PURE__ */ Object.create(null)); + if (arguments.length === 3) { + flags[key] = value; + } else { + return flags[key]; + } + }; + } +}); + +// node_modules/chai/lib/chai/utils/test.js +var require_test = __commonJS({ + "node_modules/chai/lib/chai/utils/test.js"(exports, module) { + "use strict"; + var flag = require_flag(); + module.exports = function test(obj, args) { + var negate = flag(obj, "negate"), expr = args[0]; + return negate ? !expr : expr; + }; + } +}); + +// node_modules/type-detect/type-detect.js +var require_type_detect = __commonJS({ + "node_modules/type-detect/type-detect.js"(exports, module) { + "use strict"; + (function(global2, factory) { + typeof exports === "object" && typeof module !== "undefined" ? module.exports = factory() : typeof define === "function" && define.amd ? define(factory) : global2.typeDetect = factory(); + })(exports, function() { + "use strict"; + var promiseExists = typeof Promise === "function"; + var globalObject = typeof self === "object" ? self : global; + var symbolExists = typeof Symbol !== "undefined"; + var mapExists = typeof Map !== "undefined"; + var setExists = typeof Set !== "undefined"; + var weakMapExists = typeof WeakMap !== "undefined"; + var weakSetExists = typeof WeakSet !== "undefined"; + var dataViewExists = typeof DataView !== "undefined"; + var symbolIteratorExists = symbolExists && typeof Symbol.iterator !== "undefined"; + var symbolToStringTagExists = symbolExists && typeof Symbol.toStringTag !== "undefined"; + var setEntriesExists = setExists && typeof Set.prototype.entries === "function"; + var mapEntriesExists = mapExists && typeof Map.prototype.entries === "function"; + var setIteratorPrototype = setEntriesExists && Object.getPrototypeOf((/* @__PURE__ */ new Set()).entries()); + var mapIteratorPrototype = mapEntriesExists && Object.getPrototypeOf((/* @__PURE__ */ new Map()).entries()); + var arrayIteratorExists = symbolIteratorExists && typeof Array.prototype[Symbol.iterator] === "function"; + var arrayIteratorPrototype = arrayIteratorExists && Object.getPrototypeOf([][Symbol.iterator]()); + var stringIteratorExists = symbolIteratorExists && typeof String.prototype[Symbol.iterator] === "function"; + var stringIteratorPrototype = stringIteratorExists && Object.getPrototypeOf(""[Symbol.iterator]()); + var toStringLeftSliceLength = 8; + var toStringRightSliceLength = -1; + function typeDetect(obj) { + var typeofObj = typeof obj; + if (typeofObj !== "object") { + return typeofObj; + } + if (obj === null) { + return "null"; + } + if (obj === globalObject) { + return "global"; + } + if (Array.isArray(obj) && (symbolToStringTagExists === false || !(Symbol.toStringTag in obj))) { + return "Array"; + } + if (typeof window === "object" && window !== null) { + if (typeof window.location === "object" && obj === window.location) { + return "Location"; + } + if (typeof window.document === "object" && obj === window.document) { + return "Document"; + } + if (typeof window.navigator === "object") { + if (typeof window.navigator.mimeTypes === "object" && obj === window.navigator.mimeTypes) { + return "MimeTypeArray"; } - return null; - }, movePredicate = (e, sensor, moveDistance) => { - if (!sensor.drag) - return null; - switch (e.key) { - case 'ArrowLeft': { - return { - x: sensor.drag.x - moveDistance, - y: sensor.drag.y, - }; - } - case 'ArrowRight': { - return { - x: sensor.drag.x + moveDistance, - y: sensor.drag.y, - }; - } - case 'ArrowUp': { - return { - x: sensor.drag.x, - y: sensor.drag.y - moveDistance, - }; - } - case 'ArrowDown': { - return { - x: sensor.drag.x, - y: sensor.drag.y + moveDistance, - }; - } - default: { - return null; - } + if (typeof window.navigator.plugins === "object" && obj === window.navigator.plugins) { + return "PluginArray"; } - }, cancelPredicate = (e, sensor) => { - if (sensor.drag && e.key === 'Escape') { - return { x: sensor.drag.x, y: sensor.drag.y }; + } + if ((typeof window.HTMLElement === "function" || typeof window.HTMLElement === "object") && obj instanceof window.HTMLElement) { + if (obj.tagName === "BLOCKQUOTE") { + return "HTMLQuoteElement"; } - return null; - }, endPredicate = (e, sensor) => { - if (sensor.drag && (e.key === 'Enter' || e.key === 'Space' || e.key === ' ')) { - return { x: sensor.drag.x, y: sensor.drag.y }; + if (obj.tagName === "TD") { + return "HTMLTableDataCellElement"; } - return null; - }, } = options; - this._moveDistance = moveDistance; - this._startPredicate = startPredicate; - this._movePredicate = movePredicate; - this._cancelPredicate = cancelPredicate; - this._endPredicate = endPredicate; - this.cancel = this.cancel.bind(this); - this._onKeyDown = this._onKeyDown.bind(this); - document.addEventListener('keydown', this._onKeyDown); - window.addEventListener('blur', this.cancel); - window.addEventListener('visibilitychange', this.cancel); - } - _onKeyDown(e) { - if (!this.drag) { - const startPosition = this._startPredicate(e, this, this._moveDistance); - if (startPosition) { - e.preventDefault(); - this._start({ - type: 'start', - x: startPosition.x, - y: startPosition.y, - srcEvent: e, - }); + if (obj.tagName === "TH") { + return "HTMLTableHeaderCellElement"; } - return; + } } - const cancelPosition = this._cancelPredicate(e, this, this._moveDistance); - if (cancelPosition) { - e.preventDefault(); - this._cancel({ - type: 'cancel', - x: cancelPosition.x, - y: cancelPosition.y, - srcEvent: e, - }); - return; + var stringTag = symbolToStringTagExists && obj[Symbol.toStringTag]; + if (typeof stringTag === "string") { + return stringTag; } - const endPosition = this._endPredicate(e, this, this._moveDistance); - if (endPosition) { - e.preventDefault(); - this._end({ - type: 'end', - x: endPosition.x, - y: endPosition.y, - srcEvent: e, - }); - return; + var objPrototype = Object.getPrototypeOf(obj); + if (objPrototype === RegExp.prototype) { + return "RegExp"; } - const movePosition = this._movePredicate(e, this, this._moveDistance); - if (movePosition) { - e.preventDefault(); - this._move({ - type: 'move', - x: movePosition.x, - y: movePosition.y, - srcEvent: e, - }); - return; + if (objPrototype === Date.prototype) { + return "Date"; } - } - updateSettings(options = {}) { - if (options.moveDistance !== undefined) { - this._moveDistance = options.moveDistance; + if (promiseExists && objPrototype === Promise.prototype) { + return "Promise"; } - if (options.startPredicate !== undefined) { - this._startPredicate = options.startPredicate; + if (setExists && objPrototype === Set.prototype) { + return "Set"; } - if (options.movePredicate !== undefined) { - this._movePredicate = options.movePredicate; + if (mapExists && objPrototype === Map.prototype) { + return "Map"; } - if (options.cancelPredicate !== undefined) { - this._cancelPredicate = options.cancelPredicate; + if (weakSetExists && objPrototype === WeakSet.prototype) { + return "WeakSet"; } - if (options.endPredicate !== undefined) { - this._endPredicate = options.endPredicate; + if (weakMapExists && objPrototype === WeakMap.prototype) { + return "WeakMap"; } - } - destroy() { - if (this.isDestroyed) - return; - super.destroy(); - document.removeEventListener('keydown', this._onKeyDown); - window.removeEventListener('blur', this.cancel); - window.removeEventListener('visibilitychange', this.cancel); - } -} + if (dataViewExists && objPrototype === DataView.prototype) { + return "DataView"; + } + if (mapExists && objPrototype === mapIteratorPrototype) { + return "Map Iterator"; + } + if (setExists && objPrototype === setIteratorPrototype) { + return "Set Iterator"; + } + if (arrayIteratorExists && objPrototype === arrayIteratorPrototype) { + return "Array Iterator"; + } + if (stringIteratorExists && objPrototype === stringIteratorPrototype) { + return "String Iterator"; + } + if (objPrototype === null) { + return "Object"; + } + return Object.prototype.toString.call(obj).slice(toStringLeftSliceLength, toStringRightSliceLength); + } + return typeDetect; + }); + } +}); -const STYLES_CACHE = new WeakMap(); -function getStyle(element, prop) { - if (!prop) - return ''; - let styleDeclaration = STYLES_CACHE.get(element); - if (!styleDeclaration) { - styleDeclaration = window.getComputedStyle(element, null); - STYLES_CACHE.set(element, styleDeclaration); - } - return styleDeclaration.getPropertyValue(prop); -} +// node_modules/chai/lib/chai/utils/expectTypes.js +var require_expectTypes = __commonJS({ + "node_modules/chai/lib/chai/utils/expectTypes.js"(exports, module) { + "use strict"; + var AssertionError2 = require_assertion_error(); + var flag = require_flag(); + var type = require_type_detect(); + module.exports = function expectTypes(obj, types) { + var flagMsg = flag(obj, "message"); + var ssfi = flag(obj, "ssfi"); + flagMsg = flagMsg ? flagMsg + ": " : ""; + obj = flag(obj, "object"); + types = types.map(function(t) { + return t.toLowerCase(); + }); + types.sort(); + var str = types.map(function(t, index) { + var art = ~["a", "e", "i", "o", "u"].indexOf(t.charAt(0)) ? "an" : "a"; + var or = types.length > 1 && index === types.length - 1 ? "or " : ""; + return or + art + " " + t; + }).join(", "); + var objType = type(obj).toLowerCase(); + if (!types.some(function(expected) { + return objType === expected; + })) { + throw new AssertionError2( + flagMsg + "object tested must be " + str + ", but " + objType + " given", + void 0, + ssfi + ); + } + }; + } +}); -function getStyleAsFloat(el, styleProp) { - return parseFloat(getStyle(el, styleProp)) || 0; -} +// node_modules/chai/lib/chai/utils/getActual.js +var require_getActual = __commonJS({ + "node_modules/chai/lib/chai/utils/getActual.js"(exports, module) { + "use strict"; + module.exports = function getActual(obj, args) { + return args.length > 4 ? args[4] : obj._obj; + }; + } +}); -var DraggableStartPredicateState; -(function (DraggableStartPredicateState) { - DraggableStartPredicateState[DraggableStartPredicateState["PENDING"] = 0] = "PENDING"; - DraggableStartPredicateState[DraggableStartPredicateState["RESOLVED"] = 1] = "RESOLVED"; - DraggableStartPredicateState[DraggableStartPredicateState["REJECTED"] = 2] = "REJECTED"; -})(DraggableStartPredicateState || (DraggableStartPredicateState = {})); +// node_modules/get-func-name/index.js +var require_get_func_name = __commonJS({ + "node_modules/get-func-name/index.js"(exports, module) { + "use strict"; + var toString2 = Function.prototype.toString; + var functionNameMatch = /\s*function(?:\s|\s*\/\*[^(?:*\/)]+\*\/\s*)*([^\s\(\/]+)/; + var maxFunctionSourceLength = 512; + function getFuncName3(aFunc) { + if (typeof aFunc !== "function") { + return null; + } + var name = ""; + if (typeof Function.prototype.name === "undefined" && typeof aFunc.name === "undefined") { + var functionSource = toString2.call(aFunc); + if (functionSource.indexOf("(") > maxFunctionSourceLength) { + return name; + } + var match = functionSource.match(functionNameMatch); + if (match) { + name = match[1]; + } + } else { + name = aFunc.name; + } + return name; + } + module.exports = getFuncName3; + } +}); -class Pool { - constructor(createObject, onPut) { - this._data = []; - this._createObject = createObject; - this._onPut = onPut; +// node_modules/loupe/lib/helpers.js +function colorise(value, styleType) { + const color = ansiColors[styles[styleType]] || ansiColors[styleType]; + if (!color) { + return String(value); + } + return `\x1B[${color[0]}m${String(value)}\x1B[${color[1]}m`; +} +function normaliseOptions({ + showHidden = false, + depth = 2, + colors = false, + customInspect = true, + showProxy = false, + maxArrayLength = Infinity, + breakLength = Infinity, + seen = [], + // eslint-disable-next-line no-shadow + truncate: truncate2 = Infinity, + stylize = String +} = {}) { + const options = { + showHidden: Boolean(showHidden), + depth: Number(depth), + colors: Boolean(colors), + customInspect: Boolean(customInspect), + showProxy: Boolean(showProxy), + maxArrayLength: Number(maxArrayLength), + breakLength: Number(breakLength), + truncate: Number(truncate2), + seen, + stylize + }; + if (options.colors) { + options.stylize = colorise; + } + return options; +} +function truncate(string, length, tail = truncator) { + string = String(string); + const tailLength = tail.length; + const stringLength = string.length; + if (tailLength > length && stringLength > tailLength) { + return tail; + } + if (stringLength > length && stringLength > tailLength) { + return `${string.slice(0, length - tailLength)}${tail}`; + } + return string; +} +function inspectList(list, options, inspectItem, separator = ", ") { + inspectItem = inspectItem || options.inspect; + const size = list.length; + if (size === 0) + return ""; + const originalLength = options.truncate; + let output = ""; + let peek = ""; + let truncated = ""; + for (let i = 0; i < size; i += 1) { + const last = i + 1 === list.length; + const secondToLast = i + 2 === list.length; + truncated = `${truncator}(${list.length - i})`; + const value = list[i]; + options.truncate = originalLength - output.length - (last ? 0 : separator.length); + const string = peek || inspectItem(value, options) + (last ? "" : separator); + const nextLength = output.length + string.length; + const truncatedLength = nextLength + truncated.length; + if (last && nextLength > originalLength && output.length + truncated.length <= originalLength) { + break; } - pick() { - return this._data.length ? this._data.pop() : this._createObject(); + if (!last && !secondToLast && truncatedLength > originalLength) { + break; } - put(object) { - if (this._data.indexOf(object) === -1) { - this._onPut && this._onPut(object); - this._data.push(object); - } + peek = last ? "" : inspectItem(list[i + 1], options) + (secondToLast ? "" : separator); + if (!last && secondToLast && truncatedLength > originalLength && nextLength + peek.length > originalLength) { + break; } - reset() { - this._data.length = 0; + output += string; + if (!last && !secondToLast && nextLength + peek.length >= originalLength) { + truncated = `${truncator}(${list.length - i - 1})`; + break; } + truncated = ""; + } + return `${output}${truncated}`; } - -function isRectsOverlapping(a, b) { - return !(a.right <= b.left || b.right <= a.left || a.bottom <= b.top || b.bottom <= a.top); +function quoteComplexKey(key) { + if (key.match(/^[a-zA-Z_][a-zA-Z_0-9]*$/)) { + return key; + } + return JSON.stringify(key).replace(/'/g, "\\'").replace(/\\"/g, '"').replace(/(^"|"$)/g, "'"); } +function inspectProperty([key, value], options) { + options.truncate -= 2; + if (typeof key === "string") { + key = quoteComplexKey(key); + } else if (typeof key !== "number") { + key = `[${options.inspect(key, options)}]`; + } + options.truncate -= key.length; + value = options.inspect(value, options); + return `${key}: ${value}`; +} +var ansiColors, styles, truncator; +var init_helpers = __esm({ + "node_modules/loupe/lib/helpers.js"() { + "use strict"; + ansiColors = { + bold: ["1", "22"], + dim: ["2", "22"], + italic: ["3", "23"], + underline: ["4", "24"], + // 5 & 6 are blinking + inverse: ["7", "27"], + hidden: ["8", "28"], + strike: ["9", "29"], + // 10-20 are fonts + // 21-29 are resets for 1-9 + black: ["30", "39"], + red: ["31", "39"], + green: ["32", "39"], + yellow: ["33", "39"], + blue: ["34", "39"], + magenta: ["35", "39"], + cyan: ["36", "39"], + white: ["37", "39"], + brightblack: ["30;1", "39"], + brightred: ["31;1", "39"], + brightgreen: ["32;1", "39"], + brightyellow: ["33;1", "39"], + brightblue: ["34;1", "39"], + brightmagenta: ["35;1", "39"], + brightcyan: ["36;1", "39"], + brightwhite: ["37;1", "39"], + grey: ["90", "39"] + }; + styles = { + special: "cyan", + number: "yellow", + bigint: "yellow", + boolean: "yellow", + undefined: "grey", + null: "bold", + string: "green", + symbol: "green", + date: "magenta", + regexp: "red" + }; + truncator = "\u2026"; + } +}); -function getIntersectionArea(a, b) { - if (!isRectsOverlapping(a, b)) - return 0; - const width = Math.min(a.right, b.right) - Math.max(a.left, b.left); - const height = Math.min(a.bottom, b.bottom) - Math.max(a.top, b.top); - return width * height; +// node_modules/loupe/lib/array.js +function inspectArray(array, options) { + const nonIndexProperties = Object.keys(array).slice(array.length); + if (!array.length && !nonIndexProperties.length) + return "[]"; + options.truncate -= 4; + const listContents = inspectList(array, options); + options.truncate -= listContents.length; + let propertyContents = ""; + if (nonIndexProperties.length) { + propertyContents = inspectList( + nonIndexProperties.map((key) => [key, array[key]]), + options, + inspectProperty + ); + } + return `[ ${listContents}${propertyContents ? `, ${propertyContents}` : ""} ]`; } +var init_array = __esm({ + "node_modules/loupe/lib/array.js"() { + "use strict"; + init_helpers(); + } +}); -function getIntersectionScore(a, b) { - const area = getIntersectionArea(a, b); - if (!area) - return 0; - const maxArea = Math.min(a.width, b.width) * Math.min(a.height, b.height); - return (area / maxArea) * 100; +// node_modules/loupe/lib/typedarray.js +function inspectTypedArray(array, options) { + const name = getArrayName(array); + options.truncate -= name.length + 4; + const nonIndexProperties = Object.keys(array).slice(array.length); + if (!array.length && !nonIndexProperties.length) + return `${name}[]`; + let output = ""; + for (let i = 0; i < array.length; i++) { + const string = `${options.stylize(truncate(array[i], options.truncate), "number")}${i === array.length - 1 ? "" : ", "}`; + options.truncate -= string.length; + if (array[i] !== array.length && options.truncate <= 3) { + output += `${truncator}(${array.length - array[i] + 1})`; + break; + } + output += string; + } + let propertyContents = ""; + if (nonIndexProperties.length) { + propertyContents = inspectList( + nonIndexProperties.map((key) => [key, array[key]]), + options, + inspectProperty + ); + } + return `${name}[ ${output}${propertyContents ? `, ${propertyContents}` : ""} ]`; } +var import_get_func_name, getArrayName; +var init_typedarray = __esm({ + "node_modules/loupe/lib/typedarray.js"() { + "use strict"; + import_get_func_name = __toESM(require_get_func_name()); + init_helpers(); + getArrayName = (array) => { + if (typeof Buffer === "function" && array instanceof Buffer) { + return "Buffer"; + } + if (array[Symbol.toStringTag]) { + return array[Symbol.toStringTag]; + } + return (0, import_get_func_name.default)(array.constructor); + }; + } +}); -function isWindow(value) { - return value === window; +// node_modules/loupe/lib/date.js +function inspectDate(dateObject, options) { + const stringRepresentation = dateObject.toJSON(); + if (stringRepresentation === null) { + return "Invalid Date"; + } + const split = stringRepresentation.split("T"); + const date = split[0]; + return options.stylize(`${date}T${truncate(split[1], options.truncate - date.length - 1)}`, "date"); } +var init_date = __esm({ + "node_modules/loupe/lib/date.js"() { + "use strict"; + init_helpers(); + } +}); -function getContentRect(element, result = { width: 0, height: 0, left: 0, right: 0, top: 0, bottom: 0 }) { - if (isWindow(element)) { - result.width = document.documentElement.clientWidth; - result.height = document.documentElement.clientHeight; - result.left = 0; - result.right = result.width; - result.top = 0; - result.bottom = result.height; - } - else { - const { left, top } = element.getBoundingClientRect(); - const borderLeft = element.clientLeft || getStyleAsFloat(element, 'border-left-width'); - const borderTop = element.clientTop || getStyleAsFloat(element, 'border-top-width'); - result.width = element.clientWidth; - result.height = element.clientHeight; - result.left = left + borderLeft; - result.right = result.left + result.width; - result.top = top + borderTop; - result.bottom = result.top + result.height; - } - return result; +// node_modules/loupe/lib/function.js +function inspectFunction(func, options) { + const name = (0, import_get_func_name2.default)(func); + if (!name) { + return options.stylize("[Function]", "special"); + } + return options.stylize(`[Function ${truncate(name, options.truncate - 11)}]`, "special"); } +var import_get_func_name2; +var init_function = __esm({ + "node_modules/loupe/lib/function.js"() { + "use strict"; + import_get_func_name2 = __toESM(require_get_func_name()); + init_helpers(); + } +}); -function distanceBetweenPoints(x1, y1, x2, y2) { - return Math.sqrt(Math.pow(x2 - x1, 2) + Math.pow(y2 - y1, 2)); +// node_modules/loupe/lib/map.js +function inspectMapEntry([key, value], options) { + options.truncate -= 4; + key = options.inspect(key, options); + options.truncate -= key.length; + value = options.inspect(value, options); + return `${key} => ${value}`; } -function getDistanceBetweenRects(a, b) { - if (isRectsOverlapping(a, b)) - return 0; - if (a.right < b.left) { - if (a.bottom < b.top) { - return distanceBetweenPoints(a.right, a.bottom, b.left, b.top); - } - else if (a.top > b.bottom) { - return distanceBetweenPoints(a.right, a.top, b.left, b.bottom); - } - else { - return b.left - a.right; - } - } - else if (a.left > b.right) { - if (a.bottom < b.top) { - return distanceBetweenPoints(a.left, a.bottom, b.right, b.top); - } - else if (a.top > b.bottom) { - return distanceBetweenPoints(a.left, a.top, b.right, b.bottom); - } - else { - return a.left - b.right; - } - } - else { - if (a.bottom < b.top) { - return b.top - a.bottom; - } - else { - return a.top - b.bottom; - } - } +function mapToEntries(map) { + const entries = []; + map.forEach((value, key) => { + entries.push([key, value]); + }); + return entries; +} +function inspectMap(map, options) { + const size = map.size - 1; + if (size <= 0) { + return "Map{}"; + } + options.truncate -= 7; + return `Map{ ${inspectList(mapToEntries(map), options, inspectMapEntry)} }`; } +var init_map = __esm({ + "node_modules/loupe/lib/map.js"() { + "use strict"; + init_helpers(); + } +}); -function getScrollElement(element) { - if (isWindow(element) || element === document.documentElement || element === document.body) { - return window; - } - else { - return element; - } +// node_modules/loupe/lib/number.js +function inspectNumber(number, options) { + if (isNaN(number)) { + return options.stylize("NaN", "number"); + } + if (number === Infinity) { + return options.stylize("Infinity", "number"); + } + if (number === -Infinity) { + return options.stylize("-Infinity", "number"); + } + if (number === 0) { + return options.stylize(1 / number === Infinity ? "+0" : "-0", "number"); + } + return options.stylize(truncate(number, options.truncate), "number"); } +var isNaN; +var init_number = __esm({ + "node_modules/loupe/lib/number.js"() { + "use strict"; + init_helpers(); + isNaN = Number.isNaN || ((i) => i !== i); + } +}); -function getScrollLeft(element) { - return isWindow(element) ? element.pageXOffset : element.scrollLeft; +// node_modules/loupe/lib/bigint.js +function inspectBigInt(number, options) { + let nums = truncate(number.toString(), options.truncate - 1); + if (nums !== truncator) + nums += "n"; + return options.stylize(nums, "bigint"); } +var init_bigint = __esm({ + "node_modules/loupe/lib/bigint.js"() { + "use strict"; + init_helpers(); + } +}); -function getScrollLeftMax(element) { - if (isWindow(element)) - element = document.documentElement; - return element.scrollWidth - element.clientWidth; +// node_modules/loupe/lib/regexp.js +function inspectRegExp(value, options) { + const flags = value.toString().split("/")[2]; + const sourceLength = options.truncate - (2 + flags.length); + const source = value.source; + return options.stylize(`/${truncate(source, sourceLength)}/${flags}`, "regexp"); } +var init_regexp = __esm({ + "node_modules/loupe/lib/regexp.js"() { + "use strict"; + init_helpers(); + } +}); -function getScrollTop(element) { - return isWindow(element) ? element.pageYOffset : element.scrollTop; +// node_modules/loupe/lib/set.js +function arrayFromSet(set2) { + const values = []; + set2.forEach((value) => { + values.push(value); + }); + return values; } +function inspectSet(set2, options) { + if (set2.size === 0) + return "Set{}"; + options.truncate -= 7; + return `Set{ ${inspectList(arrayFromSet(set2), options)} }`; +} +var init_set = __esm({ + "node_modules/loupe/lib/set.js"() { + "use strict"; + init_helpers(); + } +}); -function getScrollTopMax(element) { - if (isWindow(element)) - element = document.documentElement; - return element.scrollHeight - element.clientHeight; +// node_modules/loupe/lib/string.js +function escape(char) { + return escapeCharacters[char] || `\\u${`0000${char.charCodeAt(0).toString(hex)}`.slice(-unicodeLength)}`; +} +function inspectString(string, options) { + if (stringEscapeChars.test(string)) { + string = string.replace(stringEscapeChars, escape); + } + return options.stylize(`'${truncate(string, options.truncate - 2)}'`, "string"); } +var stringEscapeChars, escapeCharacters, hex, unicodeLength; +var init_string = __esm({ + "node_modules/loupe/lib/string.js"() { + "use strict"; + init_helpers(); + stringEscapeChars = new RegExp( + "['\\u0000-\\u001f\\u007f-\\u009f\\u00ad\\u0600-\\u0604\\u070f\\u17b4\\u17b5\\u200c-\\u200f\\u2028-\\u202f\\u2060-\\u206f\\ufeff\\ufff0-\\uffff]", + "g" + ); + escapeCharacters = { + "\b": "\\b", + " ": "\\t", + "\n": "\\n", + "\f": "\\f", + "\r": "\\r", + "'": "\\'", + "\\": "\\\\" + }; + hex = 16; + unicodeLength = 4; + } +}); -const R1 = { - width: 0, - height: 0, - left: 0, - right: 0, - top: 0, - bottom: 0, -}; -const R2 = Object.assign({}, R1); -const R3 = Object.assign({}, R1); -const DEFAULT_THRESHOLD = 50; -const SPEED_DATA = { - direction: 'none', - threshold: 0, - distance: 0, - value: 0, - maxValue: 0, - duration: 0, - speed: 0, - deltaTime: 0, - isEnding: false, -}; -const AUTO_SCROLL_AXIS = { - x: 1, - y: 2, -}; -const AUTO_SCROLL_AXIS_DIRECTION = { - forward: 4, - reverse: 8, -}; -const AUTO_SCROLL_DIRECTION_X = { - none: 0, - left: (AUTO_SCROLL_AXIS.x | AUTO_SCROLL_AXIS_DIRECTION.reverse), - right: (AUTO_SCROLL_AXIS.x | AUTO_SCROLL_AXIS_DIRECTION.forward), -}; -const AUTO_SCROLL_DIRECTION_Y = { - none: 0, - up: (AUTO_SCROLL_AXIS.y | AUTO_SCROLL_AXIS_DIRECTION.reverse), - down: (AUTO_SCROLL_AXIS.y | AUTO_SCROLL_AXIS_DIRECTION.forward), -}; -const AUTO_SCROLL_DIRECTION = Object.assign(Object.assign({}, AUTO_SCROLL_DIRECTION_X), AUTO_SCROLL_DIRECTION_Y); -function getDirectionAsString(direction) { - switch (direction) { - case AUTO_SCROLL_DIRECTION_X.none: - case AUTO_SCROLL_DIRECTION_Y.none: - return 'none'; - case AUTO_SCROLL_DIRECTION_X.left: - return 'left'; - case AUTO_SCROLL_DIRECTION_X.right: - return 'right'; - case AUTO_SCROLL_DIRECTION_Y.up: - return 'up'; - case AUTO_SCROLL_DIRECTION_Y.down: - return 'down'; - default: - throw new Error(`Unknown direction value: ${direction}`); +// node_modules/loupe/lib/symbol.js +function inspectSymbol(value) { + if ("description" in Symbol.prototype) { + return value.description ? `Symbol(${value.description})` : "Symbol()"; + } + return value.toString(); +} +var init_symbol = __esm({ + "node_modules/loupe/lib/symbol.js"() { + "use strict"; + } +}); + +// node_modules/loupe/lib/promise.js +var getPromiseValue, promise_default; +var init_promise = __esm({ + "node_modules/loupe/lib/promise.js"() { + "use strict"; + getPromiseValue = () => "Promise{\u2026}"; + try { + const { getPromiseDetails, kPending, kRejected } = process.binding("util"); + if (Array.isArray(getPromiseDetails(Promise.resolve()))) { + getPromiseValue = (value, options) => { + const [state, innerValue] = getPromiseDetails(value); + if (state === kPending) { + return "Promise{}"; + } + return `Promise${state === kRejected ? "!" : ""}{${options.inspect(innerValue, options)}}`; + }; + } + } catch (notNode) { } + promise_default = getPromiseValue; + } +}); + +// node_modules/loupe/lib/object.js +function inspectObject(object, options) { + const properties = Object.getOwnPropertyNames(object); + const symbols = Object.getOwnPropertySymbols ? Object.getOwnPropertySymbols(object) : []; + if (properties.length === 0 && symbols.length === 0) { + return "{}"; + } + options.truncate -= 4; + options.seen = options.seen || []; + if (options.seen.indexOf(object) >= 0) { + return "[Circular]"; + } + options.seen.push(object); + const propertyContents = inspectList( + properties.map((key) => [key, object[key]]), + options, + inspectProperty + ); + const symbolContents = inspectList( + symbols.map((key) => [key, object[key]]), + options, + inspectProperty + ); + options.seen.pop(); + let sep = ""; + if (propertyContents && symbolContents) { + sep = ", "; + } + return `{ ${propertyContents}${sep}${symbolContents} }`; } -function getPaddedRect(rect, padding, result) { - let { left = 0, right = 0, top = 0, bottom = 0 } = padding; - left = Math.max(0, left); - right = Math.max(0, right); - top = Math.max(0, top); - bottom = Math.max(0, bottom); - result.width = rect.width + left + right; - result.height = rect.height + top + bottom; - result.left = rect.left - left; - result.top = rect.top - top; - result.right = rect.right + right; - result.bottom = rect.bottom + bottom; - return result; +var init_object = __esm({ + "node_modules/loupe/lib/object.js"() { + "use strict"; + init_helpers(); + } +}); + +// node_modules/loupe/lib/class.js +function inspectClass(value, options) { + let name = ""; + if (toStringTag && toStringTag in value) { + name = value[toStringTag]; + } + name = name || (0, import_get_func_name3.default)(value.constructor); + if (!name || name === "_class") { + name = ""; + } + options.truncate -= name.length; + return `${name}${inspectObject(value, options)}`; } -function isScrolledToMax(scrollValue, maxScrollValue) { - return Math.ceil(scrollValue) >= Math.floor(maxScrollValue); +var import_get_func_name3, toStringTag; +var init_class = __esm({ + "node_modules/loupe/lib/class.js"() { + "use strict"; + import_get_func_name3 = __toESM(require_get_func_name()); + init_object(); + toStringTag = typeof Symbol !== "undefined" && Symbol.toStringTag ? Symbol.toStringTag : false; + } +}); + +// node_modules/loupe/lib/arguments.js +function inspectArguments(args, options) { + if (args.length === 0) + return "Arguments[]"; + options.truncate -= 13; + return `Arguments[ ${inspectList(args, options)} ]`; } -function computeThreshold(idealThreshold, targetSize) { - return Math.min(targetSize / 2, idealThreshold); +var init_arguments = __esm({ + "node_modules/loupe/lib/arguments.js"() { + "use strict"; + init_helpers(); + } +}); + +// node_modules/loupe/lib/error.js +function inspectObject2(error, options) { + const properties = Object.getOwnPropertyNames(error).filter((key) => errorKeys.indexOf(key) === -1); + const name = error.name; + options.truncate -= name.length; + let message = ""; + if (typeof error.message === "string") { + message = truncate(error.message, options.truncate); + } else { + properties.unshift("message"); + } + message = message ? `: ${message}` : ""; + options.truncate -= message.length + 5; + const propertyContents = inspectList( + properties.map((key) => [key, error[key]]), + options, + inspectProperty + ); + return `${name}${message}${propertyContents ? ` { ${propertyContents} }` : ""}`; } -function computeEdgeOffset(threshold, inertAreaSize, itemSize, targetSize) { - return Math.max(0, itemSize + threshold * 2 + targetSize * inertAreaSize - targetSize) / 2; +var errorKeys; +var init_error = __esm({ + "node_modules/loupe/lib/error.js"() { + "use strict"; + init_helpers(); + errorKeys = [ + "stack", + "line", + "column", + "name", + "message", + "fileName", + "lineNumber", + "columnNumber", + "number", + "description" + ]; + } +}); + +// node_modules/loupe/lib/html.js +function inspectAttribute([key, value], options) { + options.truncate -= 3; + if (!value) { + return `${options.stylize(key, "yellow")}`; + } + return `${options.stylize(key, "yellow")}=${options.stylize(`"${value}"`, "string")}`; +} +function inspectHTMLCollection(collection, options) { + return inspectList(collection, options, inspectHTML, "\n"); } -class AutoScrollItemData { - constructor() { - this.positionX = 0; - this.positionY = 0; - this.directionX = AUTO_SCROLL_DIRECTION.none; - this.directionY = AUTO_SCROLL_DIRECTION.none; - this.overlapCheckRequestTime = 0; +function inspectHTML(element, options) { + const properties = element.getAttributeNames(); + const name = element.tagName.toLowerCase(); + const head = options.stylize(`<${name}`, "special"); + const headClose = options.stylize(`>`, "special"); + const tail = options.stylize(``, "special"); + options.truncate -= name.length * 2 + 5; + let propertyContents = ""; + if (properties.length > 0) { + propertyContents += " "; + propertyContents += inspectList( + properties.map((key) => [key, element.getAttribute(key)]), + options, + inspectAttribute, + " " + ); + } + options.truncate -= propertyContents.length; + const truncate2 = options.truncate; + let children = inspectHTMLCollection(element.children, options); + if (children && children.length > truncate2) { + children = `${truncator}(${element.children.length})`; + } + return `${head}${propertyContents}${headClose}${children}${tail}`; +} +var init_html = __esm({ + "node_modules/loupe/lib/html.js"() { + "use strict"; + init_helpers(); + } +}); + +// node_modules/loupe/index.js +var loupe_exports = {}; +__export(loupe_exports, { + custom: () => custom, + default: () => loupe_default, + inspect: () => inspect, + registerConstructor: () => registerConstructor, + registerStringTag: () => registerStringTag +}); +function FakeMap() { + this.key = "chai/loupe__" + Math.random() + Date.now(); +} +function inspect(value, options) { + options = normaliseOptions(options); + options.inspect = inspect; + const { customInspect } = options; + let type = value === null ? "null" : typeof value; + if (type === "object") { + type = toString.call(value).slice(8, -1); + } + if (baseTypesMap[type]) { + return baseTypesMap[type](value, options); + } + if (customInspect && value) { + const output = inspectCustom(value, options, type); + if (output) { + if (typeof output === "string") + return output; + return inspect(output, options); + } + } + const proto = value ? Object.getPrototypeOf(value) : false; + if (proto === Object.prototype || proto === null) { + return inspectObject(value, options); + } + if (value && typeof HTMLElement === "function" && value instanceof HTMLElement) { + return inspectHTML(value, options); + } + if ("constructor" in value) { + if (value.constructor !== Object) { + return inspectClass(value, options); } + return inspectObject(value, options); + } + if (value === Object(value)) { + return inspectObject(value, options); + } + return options.stylize(String(value), type); } -class AutoScrollAction { - constructor() { - this.element = null; - this.requestX = null; - this.requestY = null; - this.scrollLeft = 0; - this.scrollTop = 0; - } - reset() { - if (this.requestX) - this.requestX.action = null; - if (this.requestY) - this.requestY.action = null; - this.element = null; - this.requestX = null; - this.requestY = null; - this.scrollLeft = 0; - this.scrollTop = 0; - } - addRequest(request) { - if (AUTO_SCROLL_AXIS.x & request.direction) { - this.requestX && this.removeRequest(this.requestX); - this.requestX = request; - } - else { - this.requestY && this.removeRequest(this.requestY); - this.requestY = request; - } - request.action = this; - } - removeRequest(request) { - if (this.requestX === request) { - this.requestX = null; - request.action = null; - } - else if (this.requestY === request) { - this.requestY = null; - request.action = null; - } - } - computeScrollValues() { - if (!this.element) - return; - this.scrollLeft = this.requestX ? this.requestX.value : getScrollLeft(this.element); - this.scrollTop = this.requestY ? this.requestY.value : getScrollTop(this.element); +function registerConstructor(constructor, inspector) { + if (constructorMap.has(constructor)) { + return false; + } + constructorMap.set(constructor, inspector); + return true; +} +function registerStringTag(stringTag, inspector) { + if (stringTag in stringTagMap) { + return false; + } + stringTagMap[stringTag] = inspector; + return true; +} +var symbolsSupported, chaiInspect, nodeInspect, constructorMap, stringTagMap, baseTypesMap, inspectCustom, toString, custom, loupe_default; +var init_loupe = __esm({ + "node_modules/loupe/index.js"() { + "use strict"; + init_array(); + init_typedarray(); + init_date(); + init_function(); + init_map(); + init_number(); + init_bigint(); + init_regexp(); + init_set(); + init_string(); + init_symbol(); + init_promise(); + init_class(); + init_object(); + init_arguments(); + init_error(); + init_html(); + init_helpers(); + symbolsSupported = typeof Symbol === "function" && typeof Symbol.for === "function"; + chaiInspect = symbolsSupported ? Symbol.for("chai/inspect") : "@@chai/inspect"; + nodeInspect = false; + try { + const nodeUtil = __require("util"); + nodeInspect = nodeUtil.inspect ? nodeUtil.inspect.custom : false; + } catch (noNodeInspect) { + nodeInspect = false; } - scroll() { - if (!this.element) - return; - if (this.element.scrollTo) { - this.element.scrollTo(this.scrollLeft, this.scrollTop); + FakeMap.prototype = { + // eslint-disable-next-line object-shorthand + get: function get(key) { + return key[this.key]; + }, + // eslint-disable-next-line object-shorthand + has: function has(key) { + return this.key in key; + }, + // eslint-disable-next-line object-shorthand + set: function set(key, value) { + if (Object.isExtensible(key)) { + Object.defineProperty(key, this.key, { + // eslint-disable-next-line object-shorthand + value, + configurable: true + }); + } + } + }; + constructorMap = new (typeof WeakMap === "function" ? WeakMap : FakeMap)(); + stringTagMap = {}; + baseTypesMap = { + undefined: (value, options) => options.stylize("undefined", "undefined"), + null: (value, options) => options.stylize(null, "null"), + boolean: (value, options) => options.stylize(value, "boolean"), + Boolean: (value, options) => options.stylize(value, "boolean"), + number: inspectNumber, + Number: inspectNumber, + bigint: inspectBigInt, + BigInt: inspectBigInt, + string: inspectString, + String: inspectString, + function: inspectFunction, + Function: inspectFunction, + symbol: inspectSymbol, + // A Symbol polyfill will return `Symbol` not `symbol` from typedetect + Symbol: inspectSymbol, + Array: inspectArray, + Date: inspectDate, + Map: inspectMap, + Set: inspectSet, + RegExp: inspectRegExp, + Promise: promise_default, + // WeakSet, WeakMap are totally opaque to us + WeakSet: (value, options) => options.stylize("WeakSet{\u2026}", "special"), + WeakMap: (value, options) => options.stylize("WeakMap{\u2026}", "special"), + Arguments: inspectArguments, + Int8Array: inspectTypedArray, + Uint8Array: inspectTypedArray, + Uint8ClampedArray: inspectTypedArray, + Int16Array: inspectTypedArray, + Uint16Array: inspectTypedArray, + Int32Array: inspectTypedArray, + Uint32Array: inspectTypedArray, + Float32Array: inspectTypedArray, + Float64Array: inspectTypedArray, + Generator: () => "", + DataView: () => "", + ArrayBuffer: () => "", + Error: inspectObject2, + HTMLCollection: inspectHTMLCollection, + NodeList: inspectHTMLCollection + }; + inspectCustom = (value, options, type) => { + if (chaiInspect in value && typeof value[chaiInspect] === "function") { + return value[chaiInspect](options); + } + if (nodeInspect && nodeInspect in value && typeof value[nodeInspect] === "function") { + return value[nodeInspect](options.depth, options); + } + if ("inspect" in value && typeof value.inspect === "function") { + return value.inspect(options.depth, options); + } + if ("constructor" in value && constructorMap.has(value.constructor)) { + return constructorMap.get(value.constructor)(value, options); + } + if (stringTagMap[type]) { + return stringTagMap[type](value, options); + } + return ""; + }; + toString = Object.prototype.toString; + custom = chaiInspect; + loupe_default = inspect; + } +}); + +// node_modules/chai/lib/chai/config.js +var require_config = __commonJS({ + "node_modules/chai/lib/chai/config.js"(exports, module) { + "use strict"; + module.exports = { + /** + * ### config.includeStack + * + * User configurable property, influences whether stack trace + * is included in Assertion error message. Default of false + * suppresses stack trace in the error message. + * + * chai.config.includeStack = true; // enable stack on error + * + * @param {Boolean} + * @api public + */ + includeStack: false, + /** + * ### config.showDiff + * + * User configurable property, influences whether or not + * the `showDiff` flag should be included in the thrown + * AssertionErrors. `false` will always be `false`; `true` + * will be true when the assertion has requested a diff + * be shown. + * + * @param {Boolean} + * @api public + */ + showDiff: true, + /** + * ### config.truncateThreshold + * + * User configurable property, sets length threshold for actual and + * expected values in assertion errors. If this threshold is exceeded, for + * example for large data structures, the value is replaced with something + * like `[ Array(3) ]` or `{ Object (prop1, prop2) }`. + * + * Set it to zero if you want to disable truncating altogether. + * + * This is especially userful when doing assertions on arrays: having this + * set to a reasonable large value makes the failure messages readily + * inspectable. + * + * chai.config.truncateThreshold = 0; // disable truncating + * + * @param {Number} + * @api public + */ + truncateThreshold: 40, + /** + * ### config.useProxy + * + * User configurable property, defines if chai will use a Proxy to throw + * an error when a non-existent property is read, which protects users + * from typos when using property-based assertions. + * + * Set it to false if you want to disable this feature. + * + * chai.config.useProxy = false; // disable use of Proxy + * + * This feature is automatically disabled regardless of this config value + * in environments that don't support proxies. + * + * @param {Boolean} + * @api public + */ + useProxy: true, + /** + * ### config.proxyExcludedKeys + * + * User configurable property, defines which properties should be ignored + * instead of throwing an error if they do not exist on the assertion. + * This is only applied if the environment Chai is running in supports proxies and + * if the `useProxy` configuration setting is enabled. + * By default, `then` and `inspect` will not throw an error if they do not exist on the + * assertion object because the `.inspect` property is read by `util.inspect` (for example, when + * using `console.log` on the assertion object) and `.then` is necessary for promise type-checking. + * + * // By default these keys will not throw an error if they do not exist on the assertion object + * chai.config.proxyExcludedKeys = ['then', 'inspect']; + * + * @param {Array} + * @api public + */ + proxyExcludedKeys: ["then", "catch", "inspect", "toJSON"] + }; + } +}); + +// node_modules/chai/lib/chai/utils/inspect.js +var require_inspect = __commonJS({ + "node_modules/chai/lib/chai/utils/inspect.js"(exports, module) { + "use strict"; + var getName = require_get_func_name(); + var loupe = (init_loupe(), __toCommonJS(loupe_exports)); + var config2 = require_config(); + module.exports = inspect2; + function inspect2(obj, showHidden, depth, colors) { + var options = { + colors, + depth: typeof depth === "undefined" ? 2 : depth, + showHidden, + truncate: config2.truncateThreshold ? config2.truncateThreshold : Infinity + }; + return loupe.inspect(obj, options); + } + } +}); + +// node_modules/chai/lib/chai/utils/objDisplay.js +var require_objDisplay = __commonJS({ + "node_modules/chai/lib/chai/utils/objDisplay.js"(exports, module) { + "use strict"; + var inspect2 = require_inspect(); + var config2 = require_config(); + module.exports = function objDisplay(obj) { + var str = inspect2(obj), type = Object.prototype.toString.call(obj); + if (config2.truncateThreshold && str.length >= config2.truncateThreshold) { + if (type === "[object Function]") { + return !obj.name || obj.name === "" ? "[Function]" : "[Function: " + obj.name + "]"; + } else if (type === "[object Array]") { + return "[ Array(" + obj.length + ") ]"; + } else if (type === "[object Object]") { + var keys = Object.keys(obj), kstr = keys.length > 2 ? keys.splice(0, 2).join(", ") + ", ..." : keys.join(", "); + return "{ Object (" + kstr + ") }"; + } else { + return str; } - else { - this.element.scrollLeft = this.scrollLeft; - this.element.scrollTop = this.scrollTop; + } else { + return str; + } + }; + } +}); + +// node_modules/chai/lib/chai/utils/getMessage.js +var require_getMessage = __commonJS({ + "node_modules/chai/lib/chai/utils/getMessage.js"(exports, module) { + "use strict"; + var flag = require_flag(); + var getActual = require_getActual(); + var objDisplay = require_objDisplay(); + module.exports = function getMessage(obj, args) { + var negate = flag(obj, "negate"), val = flag(obj, "object"), expected = args[3], actual = getActual(obj, args), msg = negate ? args[2] : args[1], flagMsg = flag(obj, "message"); + if (typeof msg === "function") + msg = msg(); + msg = msg || ""; + msg = msg.replace(/#\{this\}/g, function() { + return objDisplay(val); + }).replace(/#\{act\}/g, function() { + return objDisplay(actual); + }).replace(/#\{exp\}/g, function() { + return objDisplay(expected); + }); + return flagMsg ? flagMsg + ": " + msg : msg; + }; + } +}); + +// node_modules/chai/lib/chai/utils/transferFlags.js +var require_transferFlags = __commonJS({ + "node_modules/chai/lib/chai/utils/transferFlags.js"(exports, module) { + "use strict"; + module.exports = function transferFlags(assertion, object, includeAll) { + var flags = assertion.__flags || (assertion.__flags = /* @__PURE__ */ Object.create(null)); + if (!object.__flags) { + object.__flags = /* @__PURE__ */ Object.create(null); + } + includeAll = arguments.length === 3 ? includeAll : true; + for (var flag in flags) { + if (includeAll || flag !== "object" && flag !== "ssfi" && flag !== "lockSsfi" && flag != "message") { + object.__flags[flag] = flags[flag]; } + } + }; + } +}); + +// node_modules/deep-eql/index.js +var require_deep_eql = __commonJS({ + "node_modules/deep-eql/index.js"(exports, module) { + "use strict"; + var type = require_type_detect(); + function FakeMap2() { + this._key = "chai/deep-eql__" + Math.random() + Date.now(); } -} -class AutoScrollRequest { - constructor() { - this.item = null; - this.element = null; - this.isActive = false; - this.isEnding = false; - this.direction = 0; - this.value = NaN; - this.maxValue = 0; - this.threshold = 0; - this.distance = 0; - this.deltaTime = 0; - this.speed = 0; - this.duration = 0; - this.action = null; - } - reset() { - if (this.isActive) - this.onStop(); - this.item = null; - this.element = null; - this.isActive = false; - this.isEnding = false; - this.direction = 0; - this.value = NaN; - this.maxValue = 0; - this.threshold = 0; - this.distance = 0; - this.deltaTime = 0; - this.speed = 0; - this.duration = 0; - this.action = null; - } - hasReachedEnd() { - return AUTO_SCROLL_AXIS_DIRECTION.forward & this.direction - ? isScrolledToMax(this.value, this.maxValue) - : this.value <= 0; - } - computeCurrentScrollValue() { - if (!this.element) - return 0; - if (this.value !== this.value) { - return AUTO_SCROLL_AXIS.x & this.direction - ? getScrollLeft(this.element) - : getScrollTop(this.element); - } - return Math.max(0, Math.min(this.value, this.maxValue)); - } - computeNextScrollValue() { - const delta = this.speed * (this.deltaTime / 1000); - const nextValue = AUTO_SCROLL_AXIS_DIRECTION.forward & this.direction ? this.value + delta : this.value - delta; - return Math.max(0, Math.min(nextValue, this.maxValue)); - } - computeSpeed() { - if (!this.item || !this.element) - return 0; - const { speed } = this.item; - if (typeof speed === 'function') { - SPEED_DATA.direction = getDirectionAsString(this.direction); - SPEED_DATA.threshold = this.threshold; - SPEED_DATA.distance = this.distance; - SPEED_DATA.value = this.value; - SPEED_DATA.maxValue = this.maxValue; - SPEED_DATA.duration = this.duration; - SPEED_DATA.speed = this.speed; - SPEED_DATA.deltaTime = this.deltaTime; - SPEED_DATA.isEnding = this.isEnding; - return speed(this.element, SPEED_DATA); - } - else { - return speed; - } - } - tick(deltaTime) { - if (!this.isActive) { - this.isActive = true; - this.onStart(); - } - this.deltaTime = deltaTime; - this.value = this.computeCurrentScrollValue(); - this.speed = this.computeSpeed(); - this.value = this.computeNextScrollValue(); - this.duration += deltaTime; - return this.value; - } - onStart() { - if (!this.item || !this.element) - return; - const { onStart } = this.item; - if (typeof onStart === 'function') { - onStart(this.element, getDirectionAsString(this.direction)); + FakeMap2.prototype = { + get: function get2(key) { + return key[this._key]; + }, + set: function set2(key, value) { + if (Object.isExtensible(key)) { + Object.defineProperty(key, this._key, { + value, + configurable: true + }); + } + } + }; + var MemoizeMap = typeof WeakMap === "function" ? WeakMap : FakeMap2; + function memoizeCompare(leftHandOperand, rightHandOperand, memoizeMap) { + if (!memoizeMap || isPrimitive(leftHandOperand) || isPrimitive(rightHandOperand)) { + return null; + } + var leftHandMap = memoizeMap.get(leftHandOperand); + if (leftHandMap) { + var result = leftHandMap.get(rightHandOperand); + if (typeof result === "boolean") { + return result; } + } + return null; } - onStop() { - if (!this.item || !this.element) - return; - const { onStop } = this.item; - if (typeof onStop === 'function') { - onStop(this.element, getDirectionAsString(this.direction)); + function memoizeSet(leftHandOperand, rightHandOperand, memoizeMap, result) { + if (!memoizeMap || isPrimitive(leftHandOperand) || isPrimitive(rightHandOperand)) { + return; + } + var leftHandMap = memoizeMap.get(leftHandOperand); + if (leftHandMap) { + leftHandMap.set(rightHandOperand, result); + } else { + leftHandMap = new MemoizeMap(); + leftHandMap.set(rightHandOperand, result); + memoizeMap.set(leftHandOperand, leftHandMap); + } + } + module.exports = deepEqual; + module.exports.MemoizeMap = MemoizeMap; + function deepEqual(leftHandOperand, rightHandOperand, options) { + if (options && options.comparator) { + return extensiveDeepEqual(leftHandOperand, rightHandOperand, options); + } + var simpleResult = simpleEqual(leftHandOperand, rightHandOperand); + if (simpleResult !== null) { + return simpleResult; + } + return extensiveDeepEqual(leftHandOperand, rightHandOperand, options); + } + function simpleEqual(leftHandOperand, rightHandOperand) { + if (leftHandOperand === rightHandOperand) { + return leftHandOperand !== 0 || 1 / leftHandOperand === 1 / rightHandOperand; + } + if (leftHandOperand !== leftHandOperand && // eslint-disable-line no-self-compare + rightHandOperand !== rightHandOperand) { + return true; + } + if (isPrimitive(leftHandOperand) || isPrimitive(rightHandOperand)) { + return false; + } + return null; + } + function extensiveDeepEqual(leftHandOperand, rightHandOperand, options) { + options = options || {}; + options.memoize = options.memoize === false ? false : options.memoize || new MemoizeMap(); + var comparator = options && options.comparator; + var memoizeResultLeft = memoizeCompare(leftHandOperand, rightHandOperand, options.memoize); + if (memoizeResultLeft !== null) { + return memoizeResultLeft; + } + var memoizeResultRight = memoizeCompare(rightHandOperand, leftHandOperand, options.memoize); + if (memoizeResultRight !== null) { + return memoizeResultRight; + } + if (comparator) { + var comparatorResult = comparator(leftHandOperand, rightHandOperand); + if (comparatorResult === false || comparatorResult === true) { + memoizeSet(leftHandOperand, rightHandOperand, options.memoize, comparatorResult); + return comparatorResult; } + var simpleResult = simpleEqual(leftHandOperand, rightHandOperand); + if (simpleResult !== null) { + return simpleResult; + } + } + var leftHandType = type(leftHandOperand); + if (leftHandType !== type(rightHandOperand)) { + memoizeSet(leftHandOperand, rightHandOperand, options.memoize, false); + return false; + } + memoizeSet(leftHandOperand, rightHandOperand, options.memoize, true); + var result = extensiveDeepEqualByType(leftHandOperand, rightHandOperand, leftHandType, options); + memoizeSet(leftHandOperand, rightHandOperand, options.memoize, result); + return result; } -} -class AutoScroll { - constructor(options = {}) { - const { overlapCheckInterval = 150 } = options; - this.items = []; - this.settings = { - overlapCheckInterval, - }; - this._actions = []; - this._isDestroyed = false; - this._isTicking = false; - this._tickTime = 0; - this._tickDeltaTime = 0; - this._requests = { - [AUTO_SCROLL_AXIS.x]: new Map(), - [AUTO_SCROLL_AXIS.y]: new Map(), - }; - this._itemData = new Map(); - this._requestPool = new Pool(() => new AutoScrollRequest(), (request) => request.reset()); - this._actionPool = new Pool(() => new AutoScrollAction(), (action) => action.reset()); - this._emitter = new Emitter(); - this._frameRead = this._frameRead.bind(this); - this._frameWrite = this._frameWrite.bind(this); - } - _frameRead(time) { - if (this._isDestroyed) - return; - if (time && this._tickTime) { - this._tickDeltaTime = time - this._tickTime; - this._tickTime = time; - this._updateItems(); - this._updateRequests(); - this._updateActions(); + function extensiveDeepEqualByType(leftHandOperand, rightHandOperand, leftHandType, options) { + switch (leftHandType) { + case "String": + case "Number": + case "Boolean": + case "Date": + return deepEqual(leftHandOperand.valueOf(), rightHandOperand.valueOf()); + case "Promise": + case "Symbol": + case "function": + case "WeakMap": + case "WeakSet": + return leftHandOperand === rightHandOperand; + case "Error": + return keysEqual(leftHandOperand, rightHandOperand, ["name", "message", "code"], options); + case "Arguments": + case "Int8Array": + case "Uint8Array": + case "Uint8ClampedArray": + case "Int16Array": + case "Uint16Array": + case "Int32Array": + case "Uint32Array": + case "Float32Array": + case "Float64Array": + case "Array": + return iterableEqual(leftHandOperand, rightHandOperand, options); + case "RegExp": + return regexpEqual(leftHandOperand, rightHandOperand); + case "Generator": + return generatorEqual(leftHandOperand, rightHandOperand, options); + case "DataView": + return iterableEqual(new Uint8Array(leftHandOperand.buffer), new Uint8Array(rightHandOperand.buffer), options); + case "ArrayBuffer": + return iterableEqual(new Uint8Array(leftHandOperand), new Uint8Array(rightHandOperand), options); + case "Set": + return entriesEqual(leftHandOperand, rightHandOperand, options); + case "Map": + return entriesEqual(leftHandOperand, rightHandOperand, options); + case "Temporal.PlainDate": + case "Temporal.PlainTime": + case "Temporal.PlainDateTime": + case "Temporal.Instant": + case "Temporal.ZonedDateTime": + case "Temporal.PlainYearMonth": + case "Temporal.PlainMonthDay": + return leftHandOperand.equals(rightHandOperand); + case "Temporal.Duration": + return leftHandOperand.total("nanoseconds") === rightHandOperand.total("nanoseconds"); + case "Temporal.TimeZone": + case "Temporal.Calendar": + return leftHandOperand.toString() === rightHandOperand.toString(); + default: + return objectEqual(leftHandOperand, rightHandOperand, options); + } + } + function regexpEqual(leftHandOperand, rightHandOperand) { + return leftHandOperand.toString() === rightHandOperand.toString(); + } + function entriesEqual(leftHandOperand, rightHandOperand, options) { + if (leftHandOperand.size !== rightHandOperand.size) { + return false; + } + if (leftHandOperand.size === 0) { + return true; + } + var leftHandItems = []; + var rightHandItems = []; + leftHandOperand.forEach(function gatherEntries(key, value) { + leftHandItems.push([key, value]); + }); + rightHandOperand.forEach(function gatherEntries(key, value) { + rightHandItems.push([key, value]); + }); + return iterableEqual(leftHandItems.sort(), rightHandItems.sort(), options); + } + function iterableEqual(leftHandOperand, rightHandOperand, options) { + var length = leftHandOperand.length; + if (length !== rightHandOperand.length) { + return false; + } + if (length === 0) { + return true; + } + var index = -1; + while (++index < length) { + if (deepEqual(leftHandOperand[index], rightHandOperand[index], options) === false) { + return false; } - else { - this._tickTime = time; - this._tickDeltaTime = 0; + } + return true; + } + function generatorEqual(leftHandOperand, rightHandOperand, options) { + return iterableEqual(getGeneratorEntries(leftHandOperand), getGeneratorEntries(rightHandOperand), options); + } + function hasIteratorFunction(target) { + return typeof Symbol !== "undefined" && typeof target === "object" && typeof Symbol.iterator !== "undefined" && typeof target[Symbol.iterator] === "function"; + } + function getIteratorEntries(target) { + if (hasIteratorFunction(target)) { + try { + return getGeneratorEntries(target[Symbol.iterator]()); + } catch (iteratorError) { + return []; } + } + return []; } - _frameWrite() { - if (this._isDestroyed) - return; - this._applyActions(); + function getGeneratorEntries(generator) { + var generatorResult = generator.next(); + var accumulator = [generatorResult.value]; + while (generatorResult.done === false) { + generatorResult = generator.next(); + accumulator.push(generatorResult.value); + } + return accumulator; } - _startTicking() { - if (this._isTicking) - return; - this._isTicking = true; - ticker.on(tickerReadPhase, this._frameRead); - ticker.on(tickerWritePhase, this._frameWrite); + function getEnumerableKeys(target) { + var keys = []; + for (var key in target) { + keys.push(key); + } + return keys; } - _stopTicking() { - if (!this._isTicking) - return; - this._isTicking = false; - this._tickTime = 0; - this._tickDeltaTime = 0; - ticker.off(tickerReadPhase, this._frameRead); - ticker.off(tickerWritePhase, this._frameWrite); - } - _getItemClientRect(item, result = { width: 0, height: 0, left: 0, right: 0, top: 0, bottom: 0 }) { - const { clientRect } = item; - result.left = clientRect.left; - result.top = clientRect.top; - result.width = clientRect.width; - result.height = clientRect.height; - result.right = clientRect.left + clientRect.width; - result.bottom = clientRect.top + clientRect.height; - return result; - } - _requestItemScroll(item, axis, element, direction, threshold, distance, maxValue) { - const reqMap = this._requests[axis]; - let request = reqMap.get(item); - if (request) { - if (request.element !== element || request.direction !== direction) { - request.reset(); - } + function getEnumerableSymbols(target) { + var keys = []; + var allKeys = Object.getOwnPropertySymbols(target); + for (var i = 0; i < allKeys.length; i += 1) { + var key = allKeys[i]; + if (Object.getOwnPropertyDescriptor(target, key).enumerable) { + keys.push(key); } - else { - request = this._requestPool.pick(); - reqMap.set(item, request); - } - request.item = item; - request.element = element; - request.direction = direction; - request.threshold = threshold; - request.distance = distance; - request.maxValue = maxValue; - } - _cancelItemScroll(item, axis) { - const reqMap = this._requests[axis]; - const request = reqMap.get(item); - if (!request) - return; - if (request.action) - request.action.removeRequest(request); - this._requestPool.put(request); - reqMap.delete(item); - } - _checkItemOverlap(item, checkX, checkY) { - const { inertAreaSize, targets } = item; - if (!targets.length) { - checkX && this._cancelItemScroll(item, AUTO_SCROLL_AXIS.x); - checkY && this._cancelItemScroll(item, AUTO_SCROLL_AXIS.y); - return; + } + return keys; + } + function keysEqual(leftHandOperand, rightHandOperand, keys, options) { + var length = keys.length; + if (length === 0) { + return true; + } + for (var i = 0; i < length; i += 1) { + if (deepEqual(leftHandOperand[keys[i]], rightHandOperand[keys[i]], options) === false) { + return false; } - const itemData = this._itemData.get(item); - const moveDirectionX = itemData.directionX; - const moveDirectionY = itemData.directionY; - if (!moveDirectionX && !moveDirectionY) { - checkX && this._cancelItemScroll(item, AUTO_SCROLL_AXIS.x); - checkY && this._cancelItemScroll(item, AUTO_SCROLL_AXIS.y); - return; + } + return true; + } + function objectEqual(leftHandOperand, rightHandOperand, options) { + var leftHandKeys = getEnumerableKeys(leftHandOperand); + var rightHandKeys = getEnumerableKeys(rightHandOperand); + var leftHandSymbols = getEnumerableSymbols(leftHandOperand); + var rightHandSymbols = getEnumerableSymbols(rightHandOperand); + leftHandKeys = leftHandKeys.concat(leftHandSymbols); + rightHandKeys = rightHandKeys.concat(rightHandSymbols); + if (leftHandKeys.length && leftHandKeys.length === rightHandKeys.length) { + if (iterableEqual(mapSymbols(leftHandKeys).sort(), mapSymbols(rightHandKeys).sort()) === false) { + return false; } - const itemRect = this._getItemClientRect(item, R1); - let xElement = null; - let xPriority = -Infinity; - let xThreshold = 0; - let xScore = -Infinity; - let xDirection = AUTO_SCROLL_DIRECTION.none; - let xDistance = 0; - let xMaxScroll = 0; - let yElement = null; - let yPriority = -Infinity; - let yThreshold = 0; - let yScore = -Infinity; - let yDirection = AUTO_SCROLL_DIRECTION.none; - let yDistance = 0; - let yMaxScroll = 0; - let i = 0; - for (; i < targets.length; i++) { - const target = targets[i]; - const targetThreshold = typeof target.threshold === 'number' ? target.threshold : DEFAULT_THRESHOLD; - const testAxisX = !!(checkX && moveDirectionX && target.axis !== 'y'); - const testAxisY = !!(checkY && moveDirectionY && target.axis !== 'x'); - const testPriority = target.priority || 0; - if ((!testAxisX || testPriority < xPriority) && (!testAxisY || testPriority < yPriority)) { - continue; - } - const testElement = getScrollElement(target.element || target); - const testMaxScrollX = testAxisX ? getScrollLeftMax(testElement) : -1; - const testMaxScrollY = testAxisY ? getScrollTopMax(testElement) : -1; - if (testMaxScrollX <= 0 && testMaxScrollY <= 0) - continue; - const testRect = getContentRect(testElement, R2); - let testScore = getIntersectionScore(itemRect, testRect) || -Infinity; - if (testScore === -Infinity) { - if (target.padding && - isRectsOverlapping(itemRect, getPaddedRect(testRect, target.padding, R3))) { - testScore = -getDistanceBetweenRects(itemRect, testRect); - } - else { - continue; - } + return keysEqual(leftHandOperand, rightHandOperand, leftHandKeys, options); + } + var leftHandEntries = getIteratorEntries(leftHandOperand); + var rightHandEntries = getIteratorEntries(rightHandOperand); + if (leftHandEntries.length && leftHandEntries.length === rightHandEntries.length) { + leftHandEntries.sort(); + rightHandEntries.sort(); + return iterableEqual(leftHandEntries, rightHandEntries, options); + } + if (leftHandKeys.length === 0 && leftHandEntries.length === 0 && rightHandKeys.length === 0 && rightHandEntries.length === 0) { + return true; + } + return false; + } + function isPrimitive(value) { + return value === null || typeof value !== "object"; + } + function mapSymbols(arr) { + return arr.map(function mapSymbol(entry) { + if (typeof entry === "symbol") { + return entry.toString(); + } + return entry; + }); + } + } +}); + +// node_modules/chai/lib/chai/utils/isProxyEnabled.js +var require_isProxyEnabled = __commonJS({ + "node_modules/chai/lib/chai/utils/isProxyEnabled.js"(exports, module) { + "use strict"; + var config2 = require_config(); + module.exports = function isProxyEnabled() { + return config2.useProxy && typeof Proxy !== "undefined" && typeof Reflect !== "undefined"; + }; + } +}); + +// node_modules/chai/lib/chai/utils/addProperty.js +var require_addProperty = __commonJS({ + "node_modules/chai/lib/chai/utils/addProperty.js"(exports, module) { + "use strict"; + var chai2 = require_chai(); + var flag = require_flag(); + var isProxyEnabled = require_isProxyEnabled(); + var transferFlags = require_transferFlags(); + module.exports = function addProperty(ctx, name, getter) { + getter = getter === void 0 ? function() { + } : getter; + Object.defineProperty( + ctx, + name, + { + get: function propertyGetter() { + if (!isProxyEnabled() && !flag(this, "lockSsfi")) { + flag(this, "ssfi", propertyGetter); } - if (testAxisX && - testPriority >= xPriority && - testMaxScrollX > 0 && - (testPriority > xPriority || testScore > xScore)) { - let testDistance = 0; - let testDirection = AUTO_SCROLL_DIRECTION.none; - const testThreshold = computeThreshold(targetThreshold, testRect.width); - const testEdgeOffset = computeEdgeOffset(testThreshold, inertAreaSize, itemRect.width, testRect.width); - if (moveDirectionX === AUTO_SCROLL_DIRECTION.right) { - testDistance = testRect.right + testEdgeOffset - itemRect.right; - if (testDistance <= testThreshold && - !isScrolledToMax(getScrollLeft(testElement), testMaxScrollX)) { - testDirection = AUTO_SCROLL_DIRECTION.right; - } - } - else if (moveDirectionX === AUTO_SCROLL_DIRECTION.left) { - testDistance = itemRect.left - (testRect.left - testEdgeOffset); - if (testDistance <= testThreshold && getScrollLeft(testElement) > 0) { - testDirection = AUTO_SCROLL_DIRECTION.left; - } - } - if (testDirection) { - xElement = testElement; - xPriority = testPriority; - xThreshold = testThreshold; - xScore = testScore; - xDirection = testDirection; - xDistance = testDistance; - xMaxScroll = testMaxScrollX; - } + var result = getter.call(this); + if (result !== void 0) + return result; + var newAssertion = new chai2.Assertion(); + transferFlags(this, newAssertion); + return newAssertion; + }, + configurable: true + } + ); + }; + } +}); + +// node_modules/chai/lib/chai/utils/addLengthGuard.js +var require_addLengthGuard = __commonJS({ + "node_modules/chai/lib/chai/utils/addLengthGuard.js"(exports, module) { + "use strict"; + var fnLengthDesc = Object.getOwnPropertyDescriptor(function() { + }, "length"); + module.exports = function addLengthGuard(fn, assertionName, isChainable) { + if (!fnLengthDesc.configurable) + return fn; + Object.defineProperty(fn, "length", { + get: function() { + if (isChainable) { + throw Error("Invalid Chai property: " + assertionName + '.length. Due to a compatibility issue, "length" cannot directly follow "' + assertionName + '". Use "' + assertionName + '.lengthOf" instead.'); + } + throw Error("Invalid Chai property: " + assertionName + '.length. See docs for proper usage of "' + assertionName + '".'); + } + }); + return fn; + }; + } +}); + +// node_modules/chai/lib/chai/utils/getProperties.js +var require_getProperties = __commonJS({ + "node_modules/chai/lib/chai/utils/getProperties.js"(exports, module) { + "use strict"; + module.exports = function getProperties(object) { + var result = Object.getOwnPropertyNames(object); + function addProperty(property) { + if (result.indexOf(property) === -1) { + result.push(property); + } + } + var proto = Object.getPrototypeOf(object); + while (proto !== null) { + Object.getOwnPropertyNames(proto).forEach(addProperty); + proto = Object.getPrototypeOf(proto); + } + return result; + }; + } +}); + +// node_modules/chai/lib/chai/utils/proxify.js +var require_proxify = __commonJS({ + "node_modules/chai/lib/chai/utils/proxify.js"(exports, module) { + "use strict"; + var config2 = require_config(); + var flag = require_flag(); + var getProperties = require_getProperties(); + var isProxyEnabled = require_isProxyEnabled(); + var builtins = ["__flags", "__methods", "_obj", "assert"]; + module.exports = function proxify(obj, nonChainableMethodName) { + if (!isProxyEnabled()) + return obj; + return new Proxy(obj, { + get: function proxyGetter(target, property) { + if (typeof property === "string" && config2.proxyExcludedKeys.indexOf(property) === -1 && !Reflect.has(target, property)) { + if (nonChainableMethodName) { + throw Error("Invalid Chai property: " + nonChainableMethodName + "." + property + '. See docs for proper usage of "' + nonChainableMethodName + '".'); } - if (testAxisY && - testPriority >= yPriority && - testMaxScrollY > 0 && - (testPriority > yPriority || testScore > yScore)) { - let testDistance = 0; - let testDirection = AUTO_SCROLL_DIRECTION_Y.none; - const testThreshold = computeThreshold(targetThreshold, testRect.height); - const testEdgeOffset = computeEdgeOffset(testThreshold, inertAreaSize, itemRect.height, testRect.height); - if (moveDirectionY === AUTO_SCROLL_DIRECTION.down) { - testDistance = testRect.bottom + testEdgeOffset - itemRect.bottom; - if (testDistance <= testThreshold && - !isScrolledToMax(getScrollTop(testElement), testMaxScrollY)) { - testDirection = AUTO_SCROLL_DIRECTION.down; - } - } - else if (moveDirectionY === AUTO_SCROLL_DIRECTION.up) { - testDistance = itemRect.top - (testRect.top - testEdgeOffset); - if (testDistance <= testThreshold && getScrollTop(testElement) > 0) { - testDirection = AUTO_SCROLL_DIRECTION.up; - } - } - if (testDirection) { - yElement = testElement; - yPriority = testPriority; - yThreshold = testThreshold; - yScore = testScore; - yDirection = testDirection; - yDistance = testDistance; - yMaxScroll = testMaxScrollY; + var suggestion = null; + var suggestionDistance = 4; + getProperties(target).forEach(function(prop) { + if (!Object.prototype.hasOwnProperty(prop) && builtins.indexOf(prop) === -1) { + var dist = stringDistanceCapped( + property, + prop, + suggestionDistance + ); + if (dist < suggestionDistance) { + suggestion = prop; + suggestionDistance = dist; } + } + }); + if (suggestion !== null) { + throw Error("Invalid Chai property: " + property + '. Did you mean "' + suggestion + '"?'); + } else { + throw Error("Invalid Chai property: " + property); } + } + if (builtins.indexOf(property) === -1 && !flag(target, "lockSsfi")) { + flag(target, "ssfi", proxyGetter); + } + return Reflect.get(target, property); } - if (checkX) { - if (xElement && xDirection) { - this._requestItemScroll(item, AUTO_SCROLL_AXIS.x, xElement, xDirection, xThreshold, xDistance, xMaxScroll); + }); + }; + function stringDistanceCapped(strA, strB, cap) { + if (Math.abs(strA.length - strB.length) >= cap) { + return cap; + } + var memo = []; + for (var i = 0; i <= strA.length; i++) { + memo[i] = Array(strB.length + 1).fill(0); + memo[i][0] = i; + } + for (var j = 0; j < strB.length; j++) { + memo[0][j] = j; + } + for (var i = 1; i <= strA.length; i++) { + var ch = strA.charCodeAt(i - 1); + for (var j = 1; j <= strB.length; j++) { + if (Math.abs(i - j) >= cap) { + memo[i][j] = cap; + continue; + } + memo[i][j] = Math.min( + memo[i - 1][j] + 1, + memo[i][j - 1] + 1, + memo[i - 1][j - 1] + (ch === strB.charCodeAt(j - 1) ? 0 : 1) + ); + } + } + return memo[strA.length][strB.length]; + } + } +}); + +// node_modules/chai/lib/chai/utils/addMethod.js +var require_addMethod = __commonJS({ + "node_modules/chai/lib/chai/utils/addMethod.js"(exports, module) { + "use strict"; + var addLengthGuard = require_addLengthGuard(); + var chai2 = require_chai(); + var flag = require_flag(); + var proxify = require_proxify(); + var transferFlags = require_transferFlags(); + module.exports = function addMethod(ctx, name, method) { + var methodWrapper = function() { + if (!flag(this, "lockSsfi")) { + flag(this, "ssfi", methodWrapper); + } + var result = method.apply(this, arguments); + if (result !== void 0) + return result; + var newAssertion = new chai2.Assertion(); + transferFlags(this, newAssertion); + return newAssertion; + }; + addLengthGuard(methodWrapper, name, false); + ctx[name] = proxify(methodWrapper, name); + }; + } +}); + +// node_modules/chai/lib/chai/utils/overwriteProperty.js +var require_overwriteProperty = __commonJS({ + "node_modules/chai/lib/chai/utils/overwriteProperty.js"(exports, module) { + "use strict"; + var chai2 = require_chai(); + var flag = require_flag(); + var isProxyEnabled = require_isProxyEnabled(); + var transferFlags = require_transferFlags(); + module.exports = function overwriteProperty(ctx, name, getter) { + var _get = Object.getOwnPropertyDescriptor(ctx, name), _super = function() { + }; + if (_get && "function" === typeof _get.get) + _super = _get.get; + Object.defineProperty( + ctx, + name, + { + get: function overwritingPropertyGetter() { + if (!isProxyEnabled() && !flag(this, "lockSsfi")) { + flag(this, "ssfi", overwritingPropertyGetter); } - else { - this._cancelItemScroll(item, AUTO_SCROLL_AXIS.x); + var origLockSsfi = flag(this, "lockSsfi"); + flag(this, "lockSsfi", true); + var result = getter(_super).call(this); + flag(this, "lockSsfi", origLockSsfi); + if (result !== void 0) { + return result; } + var newAssertion = new chai2.Assertion(); + transferFlags(this, newAssertion); + return newAssertion; + }, + configurable: true } - if (checkY) { - if (yElement && yDirection) { - this._requestItemScroll(item, AUTO_SCROLL_AXIS.y, yElement, yDirection, yThreshold, yDistance, yMaxScroll); - } - else { - this._cancelItemScroll(item, AUTO_SCROLL_AXIS.y); + ); + }; + } +}); + +// node_modules/chai/lib/chai/utils/overwriteMethod.js +var require_overwriteMethod = __commonJS({ + "node_modules/chai/lib/chai/utils/overwriteMethod.js"(exports, module) { + "use strict"; + var addLengthGuard = require_addLengthGuard(); + var chai2 = require_chai(); + var flag = require_flag(); + var proxify = require_proxify(); + var transferFlags = require_transferFlags(); + module.exports = function overwriteMethod(ctx, name, method) { + var _method = ctx[name], _super = function() { + throw new Error(name + " is not a function"); + }; + if (_method && "function" === typeof _method) + _super = _method; + var overwritingMethodWrapper = function() { + if (!flag(this, "lockSsfi")) { + flag(this, "ssfi", overwritingMethodWrapper); + } + var origLockSsfi = flag(this, "lockSsfi"); + flag(this, "lockSsfi", true); + var result = method(_super).apply(this, arguments); + flag(this, "lockSsfi", origLockSsfi); + if (result !== void 0) { + return result; + } + var newAssertion = new chai2.Assertion(); + transferFlags(this, newAssertion); + return newAssertion; + }; + addLengthGuard(overwritingMethodWrapper, name, false); + ctx[name] = proxify(overwritingMethodWrapper, name); + }; + } +}); + +// node_modules/chai/lib/chai/utils/addChainableMethod.js +var require_addChainableMethod = __commonJS({ + "node_modules/chai/lib/chai/utils/addChainableMethod.js"(exports, module) { + "use strict"; + var addLengthGuard = require_addLengthGuard(); + var chai2 = require_chai(); + var flag = require_flag(); + var proxify = require_proxify(); + var transferFlags = require_transferFlags(); + var canSetPrototype = typeof Object.setPrototypeOf === "function"; + var testFn = function() { + }; + var excludeNames = Object.getOwnPropertyNames(testFn).filter(function(name) { + var propDesc = Object.getOwnPropertyDescriptor(testFn, name); + if (typeof propDesc !== "object") + return true; + return !propDesc.configurable; + }); + var call = Function.prototype.call; + var apply = Function.prototype.apply; + module.exports = function addChainableMethod(ctx, name, method, chainingBehavior) { + if (typeof chainingBehavior !== "function") { + chainingBehavior = function() { + }; + } + var chainableBehavior = { + method, + chainingBehavior + }; + if (!ctx.__methods) { + ctx.__methods = {}; + } + ctx.__methods[name] = chainableBehavior; + Object.defineProperty( + ctx, + name, + { + get: function chainableMethodGetter() { + chainableBehavior.chainingBehavior.call(this); + var chainableMethodWrapper = function() { + if (!flag(this, "lockSsfi")) { + flag(this, "ssfi", chainableMethodWrapper); + } + var result = chainableBehavior.method.apply(this, arguments); + if (result !== void 0) { + return result; + } + var newAssertion = new chai2.Assertion(); + transferFlags(this, newAssertion); + return newAssertion; + }; + addLengthGuard(chainableMethodWrapper, name, true); + if (canSetPrototype) { + var prototype = Object.create(this); + prototype.call = call; + prototype.apply = apply; + Object.setPrototypeOf(chainableMethodWrapper, prototype); + } else { + var asserterNames = Object.getOwnPropertyNames(ctx); + asserterNames.forEach(function(asserterName) { + if (excludeNames.indexOf(asserterName) !== -1) { + return; + } + var pd = Object.getOwnPropertyDescriptor(ctx, asserterName); + Object.defineProperty(chainableMethodWrapper, asserterName, pd); + }); } + transferFlags(this, chainableMethodWrapper); + return proxify(chainableMethodWrapper); + }, + configurable: true } + ); + }; + } +}); + +// node_modules/chai/lib/chai/utils/overwriteChainableMethod.js +var require_overwriteChainableMethod = __commonJS({ + "node_modules/chai/lib/chai/utils/overwriteChainableMethod.js"(exports, module) { + "use strict"; + var chai2 = require_chai(); + var transferFlags = require_transferFlags(); + module.exports = function overwriteChainableMethod(ctx, name, method, chainingBehavior) { + var chainableBehavior = ctx.__methods[name]; + var _chainingBehavior = chainableBehavior.chainingBehavior; + chainableBehavior.chainingBehavior = function overwritingChainableMethodGetter() { + var result = chainingBehavior(_chainingBehavior).call(this); + if (result !== void 0) { + return result; + } + var newAssertion = new chai2.Assertion(); + transferFlags(this, newAssertion); + return newAssertion; + }; + var _method = chainableBehavior.method; + chainableBehavior.method = function overwritingChainableMethodWrapper() { + var result = method(_method).apply(this, arguments); + if (result !== void 0) { + return result; + } + var newAssertion = new chai2.Assertion(); + transferFlags(this, newAssertion); + return newAssertion; + }; + }; + } +}); + +// node_modules/chai/lib/chai/utils/compareByInspect.js +var require_compareByInspect = __commonJS({ + "node_modules/chai/lib/chai/utils/compareByInspect.js"(exports, module) { + "use strict"; + var inspect2 = require_inspect(); + module.exports = function compareByInspect(a, b) { + return inspect2(a) < inspect2(b) ? -1 : 1; + }; + } +}); + +// node_modules/chai/lib/chai/utils/getOwnEnumerablePropertySymbols.js +var require_getOwnEnumerablePropertySymbols = __commonJS({ + "node_modules/chai/lib/chai/utils/getOwnEnumerablePropertySymbols.js"(exports, module) { + "use strict"; + module.exports = function getOwnEnumerablePropertySymbols(obj) { + if (typeof Object.getOwnPropertySymbols !== "function") + return []; + return Object.getOwnPropertySymbols(obj).filter(function(sym) { + return Object.getOwnPropertyDescriptor(obj, sym).enumerable; + }); + }; + } +}); + +// node_modules/chai/lib/chai/utils/getOwnEnumerableProperties.js +var require_getOwnEnumerableProperties = __commonJS({ + "node_modules/chai/lib/chai/utils/getOwnEnumerableProperties.js"(exports, module) { + "use strict"; + var getOwnEnumerablePropertySymbols = require_getOwnEnumerablePropertySymbols(); + module.exports = function getOwnEnumerableProperties(obj) { + return Object.keys(obj).concat(getOwnEnumerablePropertySymbols(obj)); + }; + } +}); + +// node_modules/check-error/index.js +var require_check_error = __commonJS({ + "node_modules/check-error/index.js"(exports, module) { + "use strict"; + var getFunctionName2 = require_get_func_name(); + function compatibleInstance(thrown, errorLike) { + return errorLike instanceof Error && thrown === errorLike; + } + function compatibleConstructor(thrown, errorLike) { + if (errorLike instanceof Error) { + return thrown.constructor === errorLike.constructor || thrown instanceof errorLike.constructor; + } else if (errorLike.prototype instanceof Error || errorLike === Error) { + return thrown.constructor === errorLike || thrown instanceof errorLike; + } + return false; + } + function compatibleMessage(thrown, errMatcher) { + var comparisonString = typeof thrown === "string" ? thrown : thrown.message; + if (errMatcher instanceof RegExp) { + return errMatcher.test(comparisonString); + } else if (typeof errMatcher === "string") { + return comparisonString.indexOf(errMatcher) !== -1; + } + return false; + } + function getConstructorName(errorLike) { + var constructorName = errorLike; + if (errorLike instanceof Error) { + constructorName = getFunctionName2(errorLike.constructor); + } else if (typeof errorLike === "function") { + constructorName = getFunctionName2(errorLike); + if (constructorName === "") { + var newConstructorName = getFunctionName2(new errorLike()); + constructorName = newConstructorName || constructorName; + } + } + return constructorName; + } + function getMessage(errorLike) { + var msg = ""; + if (errorLike && errorLike.message) { + msg = errorLike.message; + } else if (typeof errorLike === "string") { + msg = errorLike; + } + return msg; + } + module.exports = { + compatibleInstance, + compatibleConstructor, + compatibleMessage, + getMessage, + getConstructorName + }; + } +}); + +// node_modules/chai/lib/chai/utils/isNaN.js +var require_isNaN = __commonJS({ + "node_modules/chai/lib/chai/utils/isNaN.js"(exports, module) { + "use strict"; + function isNaN2(value) { + return value !== value; + } + module.exports = Number.isNaN || isNaN2; + } +}); + +// node_modules/chai/lib/chai/utils/getOperator.js +var require_getOperator = __commonJS({ + "node_modules/chai/lib/chai/utils/getOperator.js"(exports, module) { + "use strict"; + var type = require_type_detect(); + var flag = require_flag(); + function isObjectType(obj) { + var objectType = type(obj); + var objectTypes = ["Array", "Object", "function"]; + return objectTypes.indexOf(objectType) !== -1; } - _updateScrollRequest(scrollRequest) { - const item = scrollRequest.item; - const { inertAreaSize, smoothStop, targets } = item; - const itemRect = this._getItemClientRect(item, R1); - let hasReachedEnd = null; - let i = 0; - for (; i < targets.length; i++) { - const target = targets[i]; - const testElement = getScrollElement(target.element || target); - if (testElement !== scrollRequest.element) - continue; - const testIsAxisX = !!(AUTO_SCROLL_AXIS.x & scrollRequest.direction); - if (testIsAxisX) { - if (target.axis === 'y') - continue; + module.exports = function getOperator(obj, args) { + var operator = flag(obj, "operator"); + var negate = flag(obj, "negate"); + var expected = args[3]; + var msg = negate ? args[2] : args[1]; + if (operator) { + return operator; + } + if (typeof msg === "function") + msg = msg(); + msg = msg || ""; + if (!msg) { + return void 0; + } + if (/\shave\s/.test(msg)) { + return void 0; + } + var isObject = isObjectType(expected); + if (/\snot\s/.test(msg)) { + return isObject ? "notDeepStrictEqual" : "notStrictEqual"; + } + return isObject ? "deepStrictEqual" : "strictEqual"; + }; + } +}); + +// node_modules/chai/lib/chai/utils/index.js +var require_utils = __commonJS({ + "node_modules/chai/lib/chai/utils/index.js"(exports) { + "use strict"; + var pathval = require_pathval(); + exports.test = require_test(); + exports.type = require_type_detect(); + exports.expectTypes = require_expectTypes(); + exports.getMessage = require_getMessage(); + exports.getActual = require_getActual(); + exports.inspect = require_inspect(); + exports.objDisplay = require_objDisplay(); + exports.flag = require_flag(); + exports.transferFlags = require_transferFlags(); + exports.eql = require_deep_eql(); + exports.getPathInfo = pathval.getPathInfo; + exports.hasProperty = pathval.hasProperty; + exports.getName = require_get_func_name(); + exports.addProperty = require_addProperty(); + exports.addMethod = require_addMethod(); + exports.overwriteProperty = require_overwriteProperty(); + exports.overwriteMethod = require_overwriteMethod(); + exports.addChainableMethod = require_addChainableMethod(); + exports.overwriteChainableMethod = require_overwriteChainableMethod(); + exports.compareByInspect = require_compareByInspect(); + exports.getOwnEnumerablePropertySymbols = require_getOwnEnumerablePropertySymbols(); + exports.getOwnEnumerableProperties = require_getOwnEnumerableProperties(); + exports.checkError = require_check_error(); + exports.proxify = require_proxify(); + exports.addLengthGuard = require_addLengthGuard(); + exports.isProxyEnabled = require_isProxyEnabled(); + exports.isNaN = require_isNaN(); + exports.getOperator = require_getOperator(); + } +}); + +// node_modules/chai/lib/chai/assertion.js +var require_assertion = __commonJS({ + "node_modules/chai/lib/chai/assertion.js"(exports, module) { + "use strict"; + var config2 = require_config(); + module.exports = function(_chai, util2) { + var AssertionError2 = _chai.AssertionError, flag = util2.flag; + _chai.Assertion = Assertion2; + function Assertion2(obj, msg, ssfi, lockSsfi) { + flag(this, "ssfi", ssfi || Assertion2); + flag(this, "lockSsfi", lockSsfi); + flag(this, "object", obj); + flag(this, "message", msg); + return util2.proxify(this); + } + Object.defineProperty(Assertion2, "includeStack", { + get: function() { + console.warn("Assertion.includeStack is deprecated, use chai.config.includeStack instead."); + return config2.includeStack; + }, + set: function(value) { + console.warn("Assertion.includeStack is deprecated, use chai.config.includeStack instead."); + config2.includeStack = value; + } + }); + Object.defineProperty(Assertion2, "showDiff", { + get: function() { + console.warn("Assertion.showDiff is deprecated, use chai.config.showDiff instead."); + return config2.showDiff; + }, + set: function(value) { + console.warn("Assertion.showDiff is deprecated, use chai.config.showDiff instead."); + config2.showDiff = value; + } + }); + Assertion2.addProperty = function(name, fn) { + util2.addProperty(this.prototype, name, fn); + }; + Assertion2.addMethod = function(name, fn) { + util2.addMethod(this.prototype, name, fn); + }; + Assertion2.addChainableMethod = function(name, fn, chainingBehavior) { + util2.addChainableMethod(this.prototype, name, fn, chainingBehavior); + }; + Assertion2.overwriteProperty = function(name, fn) { + util2.overwriteProperty(this.prototype, name, fn); + }; + Assertion2.overwriteMethod = function(name, fn) { + util2.overwriteMethod(this.prototype, name, fn); + }; + Assertion2.overwriteChainableMethod = function(name, fn, chainingBehavior) { + util2.overwriteChainableMethod(this.prototype, name, fn, chainingBehavior); + }; + Assertion2.prototype.assert = function(expr, msg, negateMsg, expected, _actual, showDiff) { + var ok = util2.test(this, arguments); + if (false !== showDiff) + showDiff = true; + if (void 0 === expected && void 0 === _actual) + showDiff = false; + if (true !== config2.showDiff) + showDiff = false; + if (!ok) { + msg = util2.getMessage(this, arguments); + var actual = util2.getActual(this, arguments); + var assertionErrorObjectProperties = { + actual, + expected, + showDiff + }; + var operator = util2.getOperator(this, arguments); + if (operator) { + assertionErrorObjectProperties.operator = operator; + } + throw new AssertionError2( + msg, + assertionErrorObjectProperties, + config2.includeStack ? this.assert : flag(this, "ssfi") + ); + } + }; + Object.defineProperty( + Assertion2.prototype, + "_obj", + { + get: function() { + return flag(this, "object"); + }, + set: function(val) { + flag(this, "object", val); + } + } + ); + }; + } +}); + +// node_modules/chai/lib/chai/core/assertions.js +var require_assertions = __commonJS({ + "node_modules/chai/lib/chai/core/assertions.js"(exports, module) { + "use strict"; + module.exports = function(chai2, _) { + var Assertion2 = chai2.Assertion, AssertionError2 = chai2.AssertionError, flag = _.flag; + [ + "to", + "be", + "been", + "is", + "and", + "has", + "have", + "with", + "that", + "which", + "at", + "of", + "same", + "but", + "does", + "still", + "also" + ].forEach(function(chain) { + Assertion2.addProperty(chain); + }); + Assertion2.addProperty("not", function() { + flag(this, "negate", true); + }); + Assertion2.addProperty("deep", function() { + flag(this, "deep", true); + }); + Assertion2.addProperty("nested", function() { + flag(this, "nested", true); + }); + Assertion2.addProperty("own", function() { + flag(this, "own", true); + }); + Assertion2.addProperty("ordered", function() { + flag(this, "ordered", true); + }); + Assertion2.addProperty("any", function() { + flag(this, "any", true); + flag(this, "all", false); + }); + Assertion2.addProperty("all", function() { + flag(this, "all", true); + flag(this, "any", false); + }); + function an(type, msg) { + if (msg) + flag(this, "message", msg); + type = type.toLowerCase(); + var obj = flag(this, "object"), article = ~["a", "e", "i", "o", "u"].indexOf(type.charAt(0)) ? "an " : "a "; + this.assert( + type === _.type(obj).toLowerCase(), + "expected #{this} to be " + article + type, + "expected #{this} not to be " + article + type + ); + } + Assertion2.addChainableMethod("an", an); + Assertion2.addChainableMethod("a", an); + function SameValueZero(a, b) { + return _.isNaN(a) && _.isNaN(b) || a === b; + } + function includeChainingBehavior() { + flag(this, "contains", true); + } + function include(val, msg) { + if (msg) + flag(this, "message", msg); + var obj = flag(this, "object"), objType = _.type(obj).toLowerCase(), flagMsg = flag(this, "message"), negate = flag(this, "negate"), ssfi = flag(this, "ssfi"), isDeep = flag(this, "deep"), descriptor = isDeep ? "deep " : ""; + flagMsg = flagMsg ? flagMsg + ": " : ""; + var included = false; + switch (objType) { + case "string": + included = obj.indexOf(val) !== -1; + break; + case "weakset": + if (isDeep) { + throw new AssertionError2( + flagMsg + "unable to use .deep.include with WeakSet", + void 0, + ssfi + ); } - else { - if (target.axis === 'x') - continue; + included = obj.has(val); + break; + case "map": + var isEql = isDeep ? _.eql : SameValueZero; + obj.forEach(function(item) { + included = included || isEql(item, val); + }); + break; + case "set": + if (isDeep) { + obj.forEach(function(item) { + included = included || _.eql(item, val); + }); + } else { + included = obj.has(val); } - const testMaxScroll = testIsAxisX - ? getScrollLeftMax(testElement) - : getScrollTopMax(testElement); - if (testMaxScroll <= 0) { - break; + break; + case "array": + if (isDeep) { + included = obj.some(function(item) { + return _.eql(item, val); + }); + } else { + included = obj.indexOf(val) !== -1; } - const testRect = getContentRect(testElement, R2); - const testScore = getIntersectionScore(itemRect, testRect) || -Infinity; - if (testScore === -Infinity) { - const padding = target.scrollPadding || target.padding; - if (!(padding && isRectsOverlapping(itemRect, getPaddedRect(testRect, padding, R3)))) { - break; - } + break; + default: + if (val !== Object(val)) { + throw new AssertionError2( + flagMsg + "the given combination of arguments (" + objType + " and " + _.type(val).toLowerCase() + ") is invalid for this assertion. You can use an array, a map, an object, a set, a string, or a weakset instead of a " + _.type(val).toLowerCase(), + void 0, + ssfi + ); } - const targetThreshold = typeof target.threshold === 'number' ? target.threshold : DEFAULT_THRESHOLD; - const testThreshold = computeThreshold(targetThreshold, testIsAxisX ? testRect.width : testRect.height); - const testEdgeOffset = computeEdgeOffset(testThreshold, inertAreaSize, testIsAxisX ? itemRect.width : itemRect.height, testIsAxisX ? testRect.width : testRect.height); - let testDistance = 0; - if (scrollRequest.direction === AUTO_SCROLL_DIRECTION.left) { - testDistance = itemRect.left - (testRect.left - testEdgeOffset); + var props = Object.keys(val), firstErr = null, numErrs = 0; + props.forEach(function(prop) { + var propAssertion = new Assertion2(obj); + _.transferFlags(this, propAssertion, true); + flag(propAssertion, "lockSsfi", true); + if (!negate || props.length === 1) { + propAssertion.property(prop, val[prop]); + return; + } + try { + propAssertion.property(prop, val[prop]); + } catch (err) { + if (!_.checkError.compatibleConstructor(err, AssertionError2)) { + throw err; + } + if (firstErr === null) + firstErr = err; + numErrs++; + } + }, this); + if (negate && props.length > 1 && numErrs === props.length) { + throw firstErr; } - else if (scrollRequest.direction === AUTO_SCROLL_DIRECTION.right) { - testDistance = testRect.right + testEdgeOffset - itemRect.right; + return; + } + this.assert( + included, + "expected #{this} to " + descriptor + "include " + _.inspect(val), + "expected #{this} to not " + descriptor + "include " + _.inspect(val) + ); + } + Assertion2.addChainableMethod("include", include, includeChainingBehavior); + Assertion2.addChainableMethod("contain", include, includeChainingBehavior); + Assertion2.addChainableMethod("contains", include, includeChainingBehavior); + Assertion2.addChainableMethod("includes", include, includeChainingBehavior); + Assertion2.addProperty("ok", function() { + this.assert( + flag(this, "object"), + "expected #{this} to be truthy", + "expected #{this} to be falsy" + ); + }); + Assertion2.addProperty("true", function() { + this.assert( + true === flag(this, "object"), + "expected #{this} to be true", + "expected #{this} to be false", + flag(this, "negate") ? false : true + ); + }); + Assertion2.addProperty("false", function() { + this.assert( + false === flag(this, "object"), + "expected #{this} to be false", + "expected #{this} to be true", + flag(this, "negate") ? true : false + ); + }); + Assertion2.addProperty("null", function() { + this.assert( + null === flag(this, "object"), + "expected #{this} to be null", + "expected #{this} not to be null" + ); + }); + Assertion2.addProperty("undefined", function() { + this.assert( + void 0 === flag(this, "object"), + "expected #{this} to be undefined", + "expected #{this} not to be undefined" + ); + }); + Assertion2.addProperty("NaN", function() { + this.assert( + _.isNaN(flag(this, "object")), + "expected #{this} to be NaN", + "expected #{this} not to be NaN" + ); + }); + function assertExist() { + var val = flag(this, "object"); + this.assert( + val !== null && val !== void 0, + "expected #{this} to exist", + "expected #{this} to not exist" + ); + } + Assertion2.addProperty("exist", assertExist); + Assertion2.addProperty("exists", assertExist); + Assertion2.addProperty("empty", function() { + var val = flag(this, "object"), ssfi = flag(this, "ssfi"), flagMsg = flag(this, "message"), itemsCount; + flagMsg = flagMsg ? flagMsg + ": " : ""; + switch (_.type(val).toLowerCase()) { + case "array": + case "string": + itemsCount = val.length; + break; + case "map": + case "set": + itemsCount = val.size; + break; + case "weakmap": + case "weakset": + throw new AssertionError2( + flagMsg + ".empty was passed a weak collection", + void 0, + ssfi + ); + case "function": + var msg = flagMsg + ".empty was passed a function " + _.getName(val); + throw new AssertionError2(msg.trim(), void 0, ssfi); + default: + if (val !== Object(val)) { + throw new AssertionError2( + flagMsg + ".empty was passed non-string primitive " + _.inspect(val), + void 0, + ssfi + ); } - else if (scrollRequest.direction === AUTO_SCROLL_DIRECTION.up) { - testDistance = itemRect.top - (testRect.top - testEdgeOffset); + itemsCount = Object.keys(val).length; + } + this.assert( + 0 === itemsCount, + "expected #{this} to be empty", + "expected #{this} not to be empty" + ); + }); + function checkArguments() { + var obj = flag(this, "object"), type = _.type(obj); + this.assert( + "Arguments" === type, + "expected #{this} to be arguments but got " + type, + "expected #{this} to not be arguments" + ); + } + Assertion2.addProperty("arguments", checkArguments); + Assertion2.addProperty("Arguments", checkArguments); + function assertEqual(val, msg) { + if (msg) + flag(this, "message", msg); + var obj = flag(this, "object"); + if (flag(this, "deep")) { + var prevLockSsfi = flag(this, "lockSsfi"); + flag(this, "lockSsfi", true); + this.eql(val); + flag(this, "lockSsfi", prevLockSsfi); + } else { + this.assert( + val === obj, + "expected #{this} to equal #{exp}", + "expected #{this} to not equal #{exp}", + val, + this._obj, + true + ); + } + } + Assertion2.addMethod("equal", assertEqual); + Assertion2.addMethod("equals", assertEqual); + Assertion2.addMethod("eq", assertEqual); + function assertEql(obj, msg) { + if (msg) + flag(this, "message", msg); + this.assert( + _.eql(obj, flag(this, "object")), + "expected #{this} to deeply equal #{exp}", + "expected #{this} to not deeply equal #{exp}", + obj, + this._obj, + true + ); + } + Assertion2.addMethod("eql", assertEql); + Assertion2.addMethod("eqls", assertEql); + function assertAbove(n, msg) { + if (msg) + flag(this, "message", msg); + var obj = flag(this, "object"), doLength = flag(this, "doLength"), flagMsg = flag(this, "message"), msgPrefix = flagMsg ? flagMsg + ": " : "", ssfi = flag(this, "ssfi"), objType = _.type(obj).toLowerCase(), nType = _.type(n).toLowerCase(), errorMessage, shouldThrow = true; + if (doLength && objType !== "map" && objType !== "set") { + new Assertion2(obj, flagMsg, ssfi, true).to.have.property("length"); + } + if (!doLength && (objType === "date" && nType !== "date")) { + errorMessage = msgPrefix + "the argument to above must be a date"; + } else if (nType !== "number" && (doLength || objType === "number")) { + errorMessage = msgPrefix + "the argument to above must be a number"; + } else if (!doLength && (objType !== "date" && objType !== "number")) { + var printObj = objType === "string" ? "'" + obj + "'" : obj; + errorMessage = msgPrefix + "expected " + printObj + " to be a number or a date"; + } else { + shouldThrow = false; + } + if (shouldThrow) { + throw new AssertionError2(errorMessage, void 0, ssfi); + } + if (doLength) { + var descriptor = "length", itemsCount; + if (objType === "map" || objType === "set") { + descriptor = "size"; + itemsCount = obj.size; + } else { + itemsCount = obj.length; + } + this.assert( + itemsCount > n, + "expected #{this} to have a " + descriptor + " above #{exp} but got #{act}", + "expected #{this} to not have a " + descriptor + " above #{exp}", + n, + itemsCount + ); + } else { + this.assert( + obj > n, + "expected #{this} to be above #{exp}", + "expected #{this} to be at most #{exp}", + n + ); + } + } + Assertion2.addMethod("above", assertAbove); + Assertion2.addMethod("gt", assertAbove); + Assertion2.addMethod("greaterThan", assertAbove); + function assertLeast(n, msg) { + if (msg) + flag(this, "message", msg); + var obj = flag(this, "object"), doLength = flag(this, "doLength"), flagMsg = flag(this, "message"), msgPrefix = flagMsg ? flagMsg + ": " : "", ssfi = flag(this, "ssfi"), objType = _.type(obj).toLowerCase(), nType = _.type(n).toLowerCase(), errorMessage, shouldThrow = true; + if (doLength && objType !== "map" && objType !== "set") { + new Assertion2(obj, flagMsg, ssfi, true).to.have.property("length"); + } + if (!doLength && (objType === "date" && nType !== "date")) { + errorMessage = msgPrefix + "the argument to least must be a date"; + } else if (nType !== "number" && (doLength || objType === "number")) { + errorMessage = msgPrefix + "the argument to least must be a number"; + } else if (!doLength && (objType !== "date" && objType !== "number")) { + var printObj = objType === "string" ? "'" + obj + "'" : obj; + errorMessage = msgPrefix + "expected " + printObj + " to be a number or a date"; + } else { + shouldThrow = false; + } + if (shouldThrow) { + throw new AssertionError2(errorMessage, void 0, ssfi); + } + if (doLength) { + var descriptor = "length", itemsCount; + if (objType === "map" || objType === "set") { + descriptor = "size"; + itemsCount = obj.size; + } else { + itemsCount = obj.length; + } + this.assert( + itemsCount >= n, + "expected #{this} to have a " + descriptor + " at least #{exp} but got #{act}", + "expected #{this} to have a " + descriptor + " below #{exp}", + n, + itemsCount + ); + } else { + this.assert( + obj >= n, + "expected #{this} to be at least #{exp}", + "expected #{this} to be below #{exp}", + n + ); + } + } + Assertion2.addMethod("least", assertLeast); + Assertion2.addMethod("gte", assertLeast); + Assertion2.addMethod("greaterThanOrEqual", assertLeast); + function assertBelow(n, msg) { + if (msg) + flag(this, "message", msg); + var obj = flag(this, "object"), doLength = flag(this, "doLength"), flagMsg = flag(this, "message"), msgPrefix = flagMsg ? flagMsg + ": " : "", ssfi = flag(this, "ssfi"), objType = _.type(obj).toLowerCase(), nType = _.type(n).toLowerCase(), errorMessage, shouldThrow = true; + if (doLength && objType !== "map" && objType !== "set") { + new Assertion2(obj, flagMsg, ssfi, true).to.have.property("length"); + } + if (!doLength && (objType === "date" && nType !== "date")) { + errorMessage = msgPrefix + "the argument to below must be a date"; + } else if (nType !== "number" && (doLength || objType === "number")) { + errorMessage = msgPrefix + "the argument to below must be a number"; + } else if (!doLength && (objType !== "date" && objType !== "number")) { + var printObj = objType === "string" ? "'" + obj + "'" : obj; + errorMessage = msgPrefix + "expected " + printObj + " to be a number or a date"; + } else { + shouldThrow = false; + } + if (shouldThrow) { + throw new AssertionError2(errorMessage, void 0, ssfi); + } + if (doLength) { + var descriptor = "length", itemsCount; + if (objType === "map" || objType === "set") { + descriptor = "size"; + itemsCount = obj.size; + } else { + itemsCount = obj.length; + } + this.assert( + itemsCount < n, + "expected #{this} to have a " + descriptor + " below #{exp} but got #{act}", + "expected #{this} to not have a " + descriptor + " below #{exp}", + n, + itemsCount + ); + } else { + this.assert( + obj < n, + "expected #{this} to be below #{exp}", + "expected #{this} to be at least #{exp}", + n + ); + } + } + Assertion2.addMethod("below", assertBelow); + Assertion2.addMethod("lt", assertBelow); + Assertion2.addMethod("lessThan", assertBelow); + function assertMost(n, msg) { + if (msg) + flag(this, "message", msg); + var obj = flag(this, "object"), doLength = flag(this, "doLength"), flagMsg = flag(this, "message"), msgPrefix = flagMsg ? flagMsg + ": " : "", ssfi = flag(this, "ssfi"), objType = _.type(obj).toLowerCase(), nType = _.type(n).toLowerCase(), errorMessage, shouldThrow = true; + if (doLength && objType !== "map" && objType !== "set") { + new Assertion2(obj, flagMsg, ssfi, true).to.have.property("length"); + } + if (!doLength && (objType === "date" && nType !== "date")) { + errorMessage = msgPrefix + "the argument to most must be a date"; + } else if (nType !== "number" && (doLength || objType === "number")) { + errorMessage = msgPrefix + "the argument to most must be a number"; + } else if (!doLength && (objType !== "date" && objType !== "number")) { + var printObj = objType === "string" ? "'" + obj + "'" : obj; + errorMessage = msgPrefix + "expected " + printObj + " to be a number or a date"; + } else { + shouldThrow = false; + } + if (shouldThrow) { + throw new AssertionError2(errorMessage, void 0, ssfi); + } + if (doLength) { + var descriptor = "length", itemsCount; + if (objType === "map" || objType === "set") { + descriptor = "size"; + itemsCount = obj.size; + } else { + itemsCount = obj.length; + } + this.assert( + itemsCount <= n, + "expected #{this} to have a " + descriptor + " at most #{exp} but got #{act}", + "expected #{this} to have a " + descriptor + " above #{exp}", + n, + itemsCount + ); + } else { + this.assert( + obj <= n, + "expected #{this} to be at most #{exp}", + "expected #{this} to be above #{exp}", + n + ); + } + } + Assertion2.addMethod("most", assertMost); + Assertion2.addMethod("lte", assertMost); + Assertion2.addMethod("lessThanOrEqual", assertMost); + Assertion2.addMethod("within", function(start, finish, msg) { + if (msg) + flag(this, "message", msg); + var obj = flag(this, "object"), doLength = flag(this, "doLength"), flagMsg = flag(this, "message"), msgPrefix = flagMsg ? flagMsg + ": " : "", ssfi = flag(this, "ssfi"), objType = _.type(obj).toLowerCase(), startType = _.type(start).toLowerCase(), finishType = _.type(finish).toLowerCase(), errorMessage, shouldThrow = true, range = startType === "date" && finishType === "date" ? start.toISOString() + ".." + finish.toISOString() : start + ".." + finish; + if (doLength && objType !== "map" && objType !== "set") { + new Assertion2(obj, flagMsg, ssfi, true).to.have.property("length"); + } + if (!doLength && (objType === "date" && (startType !== "date" || finishType !== "date"))) { + errorMessage = msgPrefix + "the arguments to within must be dates"; + } else if ((startType !== "number" || finishType !== "number") && (doLength || objType === "number")) { + errorMessage = msgPrefix + "the arguments to within must be numbers"; + } else if (!doLength && (objType !== "date" && objType !== "number")) { + var printObj = objType === "string" ? "'" + obj + "'" : obj; + errorMessage = msgPrefix + "expected " + printObj + " to be a number or a date"; + } else { + shouldThrow = false; + } + if (shouldThrow) { + throw new AssertionError2(errorMessage, void 0, ssfi); + } + if (doLength) { + var descriptor = "length", itemsCount; + if (objType === "map" || objType === "set") { + descriptor = "size"; + itemsCount = obj.size; + } else { + itemsCount = obj.length; + } + this.assert( + itemsCount >= start && itemsCount <= finish, + "expected #{this} to have a " + descriptor + " within " + range, + "expected #{this} to not have a " + descriptor + " within " + range + ); + } else { + this.assert( + obj >= start && obj <= finish, + "expected #{this} to be within " + range, + "expected #{this} to not be within " + range + ); + } + }); + function assertInstanceOf(constructor, msg) { + if (msg) + flag(this, "message", msg); + var target = flag(this, "object"); + var ssfi = flag(this, "ssfi"); + var flagMsg = flag(this, "message"); + try { + var isInstanceOf = target instanceof constructor; + } catch (err) { + if (err instanceof TypeError) { + flagMsg = flagMsg ? flagMsg + ": " : ""; + throw new AssertionError2( + flagMsg + "The instanceof assertion needs a constructor but " + _.type(constructor) + " was given.", + void 0, + ssfi + ); + } + throw err; + } + var name = _.getName(constructor); + if (name === null) { + name = "an unnamed constructor"; + } + this.assert( + isInstanceOf, + "expected #{this} to be an instance of " + name, + "expected #{this} to not be an instance of " + name + ); + } + ; + Assertion2.addMethod("instanceof", assertInstanceOf); + Assertion2.addMethod("instanceOf", assertInstanceOf); + function assertProperty(name, val, msg) { + if (msg) + flag(this, "message", msg); + var isNested = flag(this, "nested"), isOwn = flag(this, "own"), flagMsg = flag(this, "message"), obj = flag(this, "object"), ssfi = flag(this, "ssfi"), nameType = typeof name; + flagMsg = flagMsg ? flagMsg + ": " : ""; + if (isNested) { + if (nameType !== "string") { + throw new AssertionError2( + flagMsg + "the argument to property must be a string when using nested syntax", + void 0, + ssfi + ); + } + } else { + if (nameType !== "string" && nameType !== "number" && nameType !== "symbol") { + throw new AssertionError2( + flagMsg + "the argument to property must be a string, number, or symbol", + void 0, + ssfi + ); + } + } + if (isNested && isOwn) { + throw new AssertionError2( + flagMsg + 'The "nested" and "own" flags cannot be combined.', + void 0, + ssfi + ); + } + if (obj === null || obj === void 0) { + throw new AssertionError2( + flagMsg + "Target cannot be null or undefined.", + void 0, + ssfi + ); + } + var isDeep = flag(this, "deep"), negate = flag(this, "negate"), pathInfo = isNested ? _.getPathInfo(obj, name) : null, value = isNested ? pathInfo.value : obj[name]; + var descriptor = ""; + if (isDeep) + descriptor += "deep "; + if (isOwn) + descriptor += "own "; + if (isNested) + descriptor += "nested "; + descriptor += "property "; + var hasProperty; + if (isOwn) + hasProperty = Object.prototype.hasOwnProperty.call(obj, name); + else if (isNested) + hasProperty = pathInfo.exists; + else + hasProperty = _.hasProperty(obj, name); + if (!negate || arguments.length === 1) { + this.assert( + hasProperty, + "expected #{this} to have " + descriptor + _.inspect(name), + "expected #{this} to not have " + descriptor + _.inspect(name) + ); + } + if (arguments.length > 1) { + this.assert( + hasProperty && (isDeep ? _.eql(val, value) : val === value), + "expected #{this} to have " + descriptor + _.inspect(name) + " of #{exp}, but got #{act}", + "expected #{this} to not have " + descriptor + _.inspect(name) + " of #{act}", + val, + value + ); + } + flag(this, "object", value); + } + Assertion2.addMethod("property", assertProperty); + function assertOwnProperty(name, value, msg) { + flag(this, "own", true); + assertProperty.apply(this, arguments); + } + Assertion2.addMethod("ownProperty", assertOwnProperty); + Assertion2.addMethod("haveOwnProperty", assertOwnProperty); + function assertOwnPropertyDescriptor(name, descriptor, msg) { + if (typeof descriptor === "string") { + msg = descriptor; + descriptor = null; + } + if (msg) + flag(this, "message", msg); + var obj = flag(this, "object"); + var actualDescriptor = Object.getOwnPropertyDescriptor(Object(obj), name); + if (actualDescriptor && descriptor) { + this.assert( + _.eql(descriptor, actualDescriptor), + "expected the own property descriptor for " + _.inspect(name) + " on #{this} to match " + _.inspect(descriptor) + ", got " + _.inspect(actualDescriptor), + "expected the own property descriptor for " + _.inspect(name) + " on #{this} to not match " + _.inspect(descriptor), + descriptor, + actualDescriptor, + true + ); + } else { + this.assert( + actualDescriptor, + "expected #{this} to have an own property descriptor for " + _.inspect(name), + "expected #{this} to not have an own property descriptor for " + _.inspect(name) + ); + } + flag(this, "object", actualDescriptor); + } + Assertion2.addMethod("ownPropertyDescriptor", assertOwnPropertyDescriptor); + Assertion2.addMethod("haveOwnPropertyDescriptor", assertOwnPropertyDescriptor); + function assertLengthChain() { + flag(this, "doLength", true); + } + function assertLength(n, msg) { + if (msg) + flag(this, "message", msg); + var obj = flag(this, "object"), objType = _.type(obj).toLowerCase(), flagMsg = flag(this, "message"), ssfi = flag(this, "ssfi"), descriptor = "length", itemsCount; + switch (objType) { + case "map": + case "set": + descriptor = "size"; + itemsCount = obj.size; + break; + default: + new Assertion2(obj, flagMsg, ssfi, true).to.have.property("length"); + itemsCount = obj.length; + } + this.assert( + itemsCount == n, + "expected #{this} to have a " + descriptor + " of #{exp} but got #{act}", + "expected #{this} to not have a " + descriptor + " of #{act}", + n, + itemsCount + ); + } + Assertion2.addChainableMethod("length", assertLength, assertLengthChain); + Assertion2.addChainableMethod("lengthOf", assertLength, assertLengthChain); + function assertMatch(re, msg) { + if (msg) + flag(this, "message", msg); + var obj = flag(this, "object"); + this.assert( + re.exec(obj), + "expected #{this} to match " + re, + "expected #{this} not to match " + re + ); + } + Assertion2.addMethod("match", assertMatch); + Assertion2.addMethod("matches", assertMatch); + Assertion2.addMethod("string", function(str, msg) { + if (msg) + flag(this, "message", msg); + var obj = flag(this, "object"), flagMsg = flag(this, "message"), ssfi = flag(this, "ssfi"); + new Assertion2(obj, flagMsg, ssfi, true).is.a("string"); + this.assert( + ~obj.indexOf(str), + "expected #{this} to contain " + _.inspect(str), + "expected #{this} to not contain " + _.inspect(str) + ); + }); + function assertKeys(keys) { + var obj = flag(this, "object"), objType = _.type(obj), keysType = _.type(keys), ssfi = flag(this, "ssfi"), isDeep = flag(this, "deep"), str, deepStr = "", actual, ok = true, flagMsg = flag(this, "message"); + flagMsg = flagMsg ? flagMsg + ": " : ""; + var mixedArgsMsg = flagMsg + "when testing keys against an object or an array you must give a single Array|Object|String argument or multiple String arguments"; + if (objType === "Map" || objType === "Set") { + deepStr = isDeep ? "deeply " : ""; + actual = []; + obj.forEach(function(val, key) { + actual.push(key); + }); + if (keysType !== "Array") { + keys = Array.prototype.slice.call(arguments); + } + } else { + actual = _.getOwnEnumerableProperties(obj); + switch (keysType) { + case "Array": + if (arguments.length > 1) { + throw new AssertionError2(mixedArgsMsg, void 0, ssfi); + } + break; + case "Object": + if (arguments.length > 1) { + throw new AssertionError2(mixedArgsMsg, void 0, ssfi); + } + keys = Object.keys(keys); + break; + default: + keys = Array.prototype.slice.call(arguments); + } + keys = keys.map(function(val) { + return typeof val === "symbol" ? val : String(val); + }); + } + if (!keys.length) { + throw new AssertionError2(flagMsg + "keys required", void 0, ssfi); + } + var len = keys.length, any = flag(this, "any"), all = flag(this, "all"), expected = keys; + if (!any && !all) { + all = true; + } + if (any) { + ok = expected.some(function(expectedKey) { + return actual.some(function(actualKey) { + if (isDeep) { + return _.eql(expectedKey, actualKey); + } else { + return expectedKey === actualKey; + } + }); + }); + } + if (all) { + ok = expected.every(function(expectedKey) { + return actual.some(function(actualKey) { + if (isDeep) { + return _.eql(expectedKey, actualKey); + } else { + return expectedKey === actualKey; + } + }); + }); + if (!flag(this, "contains")) { + ok = ok && keys.length == actual.length; + } + } + if (len > 1) { + keys = keys.map(function(key) { + return _.inspect(key); + }); + var last = keys.pop(); + if (all) { + str = keys.join(", ") + ", and " + last; + } + if (any) { + str = keys.join(", ") + ", or " + last; + } + } else { + str = _.inspect(keys[0]); + } + str = (len > 1 ? "keys " : "key ") + str; + str = (flag(this, "contains") ? "contain " : "have ") + str; + this.assert( + ok, + "expected #{this} to " + deepStr + str, + "expected #{this} to not " + deepStr + str, + expected.slice(0).sort(_.compareByInspect), + actual.sort(_.compareByInspect), + true + ); + } + Assertion2.addMethod("keys", assertKeys); + Assertion2.addMethod("key", assertKeys); + function assertThrows(errorLike, errMsgMatcher, msg) { + if (msg) + flag(this, "message", msg); + var obj = flag(this, "object"), ssfi = flag(this, "ssfi"), flagMsg = flag(this, "message"), negate = flag(this, "negate") || false; + new Assertion2(obj, flagMsg, ssfi, true).is.a("function"); + if (errorLike instanceof RegExp || typeof errorLike === "string") { + errMsgMatcher = errorLike; + errorLike = null; + } + var caughtErr; + try { + obj(); + } catch (err) { + caughtErr = err; + } + var everyArgIsUndefined = errorLike === void 0 && errMsgMatcher === void 0; + var everyArgIsDefined = Boolean(errorLike && errMsgMatcher); + var errorLikeFail = false; + var errMsgMatcherFail = false; + if (everyArgIsUndefined || !everyArgIsUndefined && !negate) { + var errorLikeString = "an error"; + if (errorLike instanceof Error) { + errorLikeString = "#{exp}"; + } else if (errorLike) { + errorLikeString = _.checkError.getConstructorName(errorLike); + } + this.assert( + caughtErr, + "expected #{this} to throw " + errorLikeString, + "expected #{this} to not throw an error but #{act} was thrown", + errorLike && errorLike.toString(), + caughtErr instanceof Error ? caughtErr.toString() : typeof caughtErr === "string" ? caughtErr : caughtErr && _.checkError.getConstructorName(caughtErr) + ); + } + if (errorLike && caughtErr) { + if (errorLike instanceof Error) { + var isCompatibleInstance = _.checkError.compatibleInstance(caughtErr, errorLike); + if (isCompatibleInstance === negate) { + if (everyArgIsDefined && negate) { + errorLikeFail = true; + } else { + this.assert( + negate, + "expected #{this} to throw #{exp} but #{act} was thrown", + "expected #{this} to not throw #{exp}" + (caughtErr && !negate ? " but #{act} was thrown" : ""), + errorLike.toString(), + caughtErr.toString() + ); + } } - else { - testDistance = testRect.bottom + testEdgeOffset - itemRect.bottom; + } + var isCompatibleConstructor = _.checkError.compatibleConstructor(caughtErr, errorLike); + if (isCompatibleConstructor === negate) { + if (everyArgIsDefined && negate) { + errorLikeFail = true; + } else { + this.assert( + negate, + "expected #{this} to throw #{exp} but #{act} was thrown", + "expected #{this} to not throw #{exp}" + (caughtErr ? " but #{act} was thrown" : ""), + errorLike instanceof Error ? errorLike.toString() : errorLike && _.checkError.getConstructorName(errorLike), + caughtErr instanceof Error ? caughtErr.toString() : caughtErr && _.checkError.getConstructorName(caughtErr) + ); } - if (testDistance > testThreshold) { - break; + } + } + if (caughtErr && errMsgMatcher !== void 0 && errMsgMatcher !== null) { + var placeholder = "including"; + if (errMsgMatcher instanceof RegExp) { + placeholder = "matching"; + } + var isCompatibleMessage = _.checkError.compatibleMessage(caughtErr, errMsgMatcher); + if (isCompatibleMessage === negate) { + if (everyArgIsDefined && negate) { + errMsgMatcherFail = true; + } else { + this.assert( + negate, + "expected #{this} to throw error " + placeholder + " #{exp} but got #{act}", + "expected #{this} to throw error not " + placeholder + " #{exp}", + errMsgMatcher, + _.checkError.getMessage(caughtErr) + ); } - const testScroll = testIsAxisX ? getScrollLeft(testElement) : getScrollTop(testElement); - hasReachedEnd = - AUTO_SCROLL_AXIS_DIRECTION.forward & scrollRequest.direction - ? isScrolledToMax(testScroll, testMaxScroll) - : testScroll <= 0; - if (hasReachedEnd) - break; - scrollRequest.maxValue = testMaxScroll; - scrollRequest.threshold = testThreshold; - scrollRequest.distance = testDistance; - scrollRequest.isEnding = false; + } + } + if (errorLikeFail && errMsgMatcherFail) { + this.assert( + negate, + "expected #{this} to throw #{exp} but #{act} was thrown", + "expected #{this} to not throw #{exp}" + (caughtErr ? " but #{act} was thrown" : ""), + errorLike instanceof Error ? errorLike.toString() : errorLike && _.checkError.getConstructorName(errorLike), + caughtErr instanceof Error ? caughtErr.toString() : caughtErr && _.checkError.getConstructorName(caughtErr) + ); + } + flag(this, "object", caughtErr); + } + ; + Assertion2.addMethod("throw", assertThrows); + Assertion2.addMethod("throws", assertThrows); + Assertion2.addMethod("Throw", assertThrows); + function respondTo(method, msg) { + if (msg) + flag(this, "message", msg); + var obj = flag(this, "object"), itself = flag(this, "itself"), context = "function" === typeof obj && !itself ? obj.prototype[method] : obj[method]; + this.assert( + "function" === typeof context, + "expected #{this} to respond to " + _.inspect(method), + "expected #{this} to not respond to " + _.inspect(method) + ); + } + Assertion2.addMethod("respondTo", respondTo); + Assertion2.addMethod("respondsTo", respondTo); + Assertion2.addProperty("itself", function() { + flag(this, "itself", true); + }); + function satisfy(matcher, msg) { + if (msg) + flag(this, "message", msg); + var obj = flag(this, "object"); + var result = matcher(obj); + this.assert( + result, + "expected #{this} to satisfy " + _.objDisplay(matcher), + "expected #{this} to not satisfy" + _.objDisplay(matcher), + flag(this, "negate") ? false : true, + result + ); + } + Assertion2.addMethod("satisfy", satisfy); + Assertion2.addMethod("satisfies", satisfy); + function closeTo(expected, delta, msg) { + if (msg) + flag(this, "message", msg); + var obj = flag(this, "object"), flagMsg = flag(this, "message"), ssfi = flag(this, "ssfi"); + new Assertion2(obj, flagMsg, ssfi, true).is.a("number"); + if (typeof expected !== "number" || typeof delta !== "number") { + flagMsg = flagMsg ? flagMsg + ": " : ""; + var deltaMessage = delta === void 0 ? ", and a delta is required" : ""; + throw new AssertionError2( + flagMsg + "the arguments to closeTo or approximately must be numbers" + deltaMessage, + void 0, + ssfi + ); + } + this.assert( + Math.abs(obj - expected) <= delta, + "expected #{this} to be close to " + expected + " +/- " + delta, + "expected #{this} not to be close to " + expected + " +/- " + delta + ); + } + Assertion2.addMethod("closeTo", closeTo); + Assertion2.addMethod("approximately", closeTo); + function isSubsetOf(subset, superset, cmp, contains, ordered) { + if (!contains) { + if (subset.length !== superset.length) + return false; + superset = superset.slice(); + } + return subset.every(function(elem, idx) { + if (ordered) + return cmp ? cmp(elem, superset[idx]) : elem === superset[idx]; + if (!cmp) { + var matchIdx = superset.indexOf(elem); + if (matchIdx === -1) + return false; + if (!contains) + superset.splice(matchIdx, 1); return true; + } + return superset.some(function(elem2, matchIdx2) { + if (!cmp(elem, elem2)) + return false; + if (!contains) + superset.splice(matchIdx2, 1); + return true; + }); + }); + } + Assertion2.addMethod("members", function(subset, msg) { + if (msg) + flag(this, "message", msg); + var obj = flag(this, "object"), flagMsg = flag(this, "message"), ssfi = flag(this, "ssfi"); + new Assertion2(obj, flagMsg, ssfi, true).to.be.an("array"); + new Assertion2(subset, flagMsg, ssfi, true).to.be.an("array"); + var contains = flag(this, "contains"); + var ordered = flag(this, "ordered"); + var subject, failMsg, failNegateMsg; + if (contains) { + subject = ordered ? "an ordered superset" : "a superset"; + failMsg = "expected #{this} to be " + subject + " of #{exp}"; + failNegateMsg = "expected #{this} to not be " + subject + " of #{exp}"; + } else { + subject = ordered ? "ordered members" : "members"; + failMsg = "expected #{this} to have the same " + subject + " as #{exp}"; + failNegateMsg = "expected #{this} to not have the same " + subject + " as #{exp}"; } - if (smoothStop === true && scrollRequest.speed > 0) { - if (hasReachedEnd === null) - hasReachedEnd = scrollRequest.hasReachedEnd(); - scrollRequest.isEnding = hasReachedEnd ? false : true; - } - else { - scrollRequest.isEnding = false; - } - return scrollRequest.isEnding; - } - _updateItems() { - for (let i = 0; i < this.items.length; i++) { - const item = this.items[i]; - const itemData = this._itemData.get(item); - const { x, y } = item.position; - const prevX = itemData.positionX; - const prevY = itemData.positionY; - if (x === prevX && y === prevY) { - continue; - } - itemData.directionX = - x > prevX - ? AUTO_SCROLL_DIRECTION.right - : x < prevX - ? AUTO_SCROLL_DIRECTION.left - : itemData.directionX; - itemData.directionY = - y > prevY - ? AUTO_SCROLL_DIRECTION.down - : y < prevY - ? AUTO_SCROLL_DIRECTION.up - : itemData.directionY; - itemData.positionX = x; - itemData.positionY = y; - if (itemData.overlapCheckRequestTime === 0) { - itemData.overlapCheckRequestTime = this._tickTime; - } + var cmp = flag(this, "deep") ? _.eql : void 0; + this.assert( + isSubsetOf(subset, obj, cmp, contains, ordered), + failMsg, + failNegateMsg, + subset, + obj, + true + ); + }); + function oneOf(list, msg) { + if (msg) + flag(this, "message", msg); + var expected = flag(this, "object"), flagMsg = flag(this, "message"), ssfi = flag(this, "ssfi"), contains = flag(this, "contains"), isDeep = flag(this, "deep"); + new Assertion2(list, flagMsg, ssfi, true).to.be.an("array"); + if (contains) { + this.assert( + list.some(function(possibility) { + return expected.indexOf(possibility) > -1; + }), + "expected #{this} to contain one of #{exp}", + "expected #{this} to not contain one of #{exp}", + list, + expected + ); + } else { + if (isDeep) { + this.assert( + list.some(function(possibility) { + return _.eql(expected, possibility); + }), + "expected #{this} to deeply equal one of #{exp}", + "expected #{this} to deeply equal one of #{exp}", + list, + expected + ); + } else { + this.assert( + list.indexOf(expected) > -1, + "expected #{this} to be one of #{exp}", + "expected #{this} to not be one of #{exp}", + list, + expected + ); + } } - } - _updateRequests() { - const items = this.items; - const requestsX = this._requests[AUTO_SCROLL_AXIS.x]; - const requestsY = this._requests[AUTO_SCROLL_AXIS.y]; - let i = 0; - for (; i < items.length; i++) { - const item = items[i]; - const itemData = this._itemData.get(item); - const checkTime = itemData.overlapCheckRequestTime; - let needsCheck = checkTime > 0 && this._tickTime - checkTime > this.settings.overlapCheckInterval; - let checkX = true; - const reqX = requestsX.get(item); - if (reqX && reqX.isActive) { - checkX = !this._updateScrollRequest(reqX); - if (checkX) { - needsCheck = true; - this._cancelItemScroll(item, AUTO_SCROLL_AXIS.x); - } - } - let checkY = true; - const reqY = requestsY.get(item); - if (reqY && reqY.isActive) { - checkY = !this._updateScrollRequest(reqY); - if (checkY) { - needsCheck = true; - this._cancelItemScroll(item, AUTO_SCROLL_AXIS.y); - } - } - if (needsCheck) { - itemData.overlapCheckRequestTime = 0; - this._checkItemOverlap(item, checkX, checkY); - } + } + Assertion2.addMethod("oneOf", oneOf); + function assertChanges(subject, prop, msg) { + if (msg) + flag(this, "message", msg); + var fn = flag(this, "object"), flagMsg = flag(this, "message"), ssfi = flag(this, "ssfi"); + new Assertion2(fn, flagMsg, ssfi, true).is.a("function"); + var initial; + if (!prop) { + new Assertion2(subject, flagMsg, ssfi, true).is.a("function"); + initial = subject(); + } else { + new Assertion2(subject, flagMsg, ssfi, true).to.have.property(prop); + initial = subject[prop]; } - } - _requestAction(request, axis) { - const isAxisX = axis === AUTO_SCROLL_AXIS.x; - let action = null; - let i = 0; - for (; i < this._actions.length; i++) { - action = this._actions[i]; - if (request.element !== action.element) { - action = null; - continue; - } - if (isAxisX ? action.requestX : action.requestY) { - this._cancelItemScroll(request.item, axis); - return; - } + fn(); + var final = prop === void 0 || prop === null ? subject() : subject[prop]; + var msgObj = prop === void 0 || prop === null ? initial : "." + prop; + flag(this, "deltaMsgObj", msgObj); + flag(this, "initialDeltaValue", initial); + flag(this, "finalDeltaValue", final); + flag(this, "deltaBehavior", "change"); + flag(this, "realDelta", final !== initial); + this.assert( + initial !== final, + "expected " + msgObj + " to change", + "expected " + msgObj + " to not change" + ); + } + Assertion2.addMethod("change", assertChanges); + Assertion2.addMethod("changes", assertChanges); + function assertIncreases(subject, prop, msg) { + if (msg) + flag(this, "message", msg); + var fn = flag(this, "object"), flagMsg = flag(this, "message"), ssfi = flag(this, "ssfi"); + new Assertion2(fn, flagMsg, ssfi, true).is.a("function"); + var initial; + if (!prop) { + new Assertion2(subject, flagMsg, ssfi, true).is.a("function"); + initial = subject(); + } else { + new Assertion2(subject, flagMsg, ssfi, true).to.have.property(prop); + initial = subject[prop]; + } + new Assertion2(initial, flagMsg, ssfi, true).is.a("number"); + fn(); + var final = prop === void 0 || prop === null ? subject() : subject[prop]; + var msgObj = prop === void 0 || prop === null ? initial : "." + prop; + flag(this, "deltaMsgObj", msgObj); + flag(this, "initialDeltaValue", initial); + flag(this, "finalDeltaValue", final); + flag(this, "deltaBehavior", "increase"); + flag(this, "realDelta", final - initial); + this.assert( + final - initial > 0, + "expected " + msgObj + " to increase", + "expected " + msgObj + " to not increase" + ); + } + Assertion2.addMethod("increase", assertIncreases); + Assertion2.addMethod("increases", assertIncreases); + function assertDecreases(subject, prop, msg) { + if (msg) + flag(this, "message", msg); + var fn = flag(this, "object"), flagMsg = flag(this, "message"), ssfi = flag(this, "ssfi"); + new Assertion2(fn, flagMsg, ssfi, true).is.a("function"); + var initial; + if (!prop) { + new Assertion2(subject, flagMsg, ssfi, true).is.a("function"); + initial = subject(); + } else { + new Assertion2(subject, flagMsg, ssfi, true).to.have.property(prop); + initial = subject[prop]; + } + new Assertion2(initial, flagMsg, ssfi, true).is.a("number"); + fn(); + var final = prop === void 0 || prop === null ? subject() : subject[prop]; + var msgObj = prop === void 0 || prop === null ? initial : "." + prop; + flag(this, "deltaMsgObj", msgObj); + flag(this, "initialDeltaValue", initial); + flag(this, "finalDeltaValue", final); + flag(this, "deltaBehavior", "decrease"); + flag(this, "realDelta", initial - final); + this.assert( + final - initial < 0, + "expected " + msgObj + " to decrease", + "expected " + msgObj + " to not decrease" + ); + } + Assertion2.addMethod("decrease", assertDecreases); + Assertion2.addMethod("decreases", assertDecreases); + function assertDelta(delta, msg) { + if (msg) + flag(this, "message", msg); + var msgObj = flag(this, "deltaMsgObj"); + var initial = flag(this, "initialDeltaValue"); + var final = flag(this, "finalDeltaValue"); + var behavior = flag(this, "deltaBehavior"); + var realDelta = flag(this, "realDelta"); + var expression; + if (behavior === "change") { + expression = Math.abs(final - initial) === Math.abs(delta); + } else { + expression = realDelta === Math.abs(delta); + } + this.assert( + expression, + "expected " + msgObj + " to " + behavior + " by " + delta, + "expected " + msgObj + " to not " + behavior + " by " + delta + ); + } + Assertion2.addMethod("by", assertDelta); + Assertion2.addProperty("extensible", function() { + var obj = flag(this, "object"); + var isExtensible = obj === Object(obj) && Object.isExtensible(obj); + this.assert( + isExtensible, + "expected #{this} to be extensible", + "expected #{this} to not be extensible" + ); + }); + Assertion2.addProperty("sealed", function() { + var obj = flag(this, "object"); + var isSealed = obj === Object(obj) ? Object.isSealed(obj) : true; + this.assert( + isSealed, + "expected #{this} to be sealed", + "expected #{this} to not be sealed" + ); + }); + Assertion2.addProperty("frozen", function() { + var obj = flag(this, "object"); + var isFrozen = obj === Object(obj) ? Object.isFrozen(obj) : true; + this.assert( + isFrozen, + "expected #{this} to be frozen", + "expected #{this} to not be frozen" + ); + }); + Assertion2.addProperty("finite", function(msg) { + var obj = flag(this, "object"); + this.assert( + typeof obj === "number" && isFinite(obj), + "expected #{this} to be a finite number", + "expected #{this} to not be a finite number" + ); + }); + }; + } +}); + +// node_modules/chai/lib/chai/interface/expect.js +var require_expect = __commonJS({ + "node_modules/chai/lib/chai/interface/expect.js"(exports, module) { + "use strict"; + module.exports = function(chai2, util2) { + chai2.expect = function(val, message) { + return new chai2.Assertion(val, message); + }; + chai2.expect.fail = function(actual, expected, message, operator) { + if (arguments.length < 2) { + message = actual; + actual = void 0; + } + message = message || "expect.fail()"; + throw new chai2.AssertionError(message, { + actual, + expected, + operator + }, chai2.expect.fail); + }; + }; + } +}); + +// node_modules/chai/lib/chai/interface/should.js +var require_should = __commonJS({ + "node_modules/chai/lib/chai/interface/should.js"(exports, module) { + "use strict"; + module.exports = function(chai2, util2) { + var Assertion2 = chai2.Assertion; + function loadShould() { + function shouldGetter() { + if (this instanceof String || this instanceof Number || this instanceof Boolean || typeof Symbol === "function" && this instanceof Symbol || typeof BigInt === "function" && this instanceof BigInt) { + return new Assertion2(this.valueOf(), null, shouldGetter); + } + return new Assertion2(this, null, shouldGetter); + } + function shouldSetter(value) { + Object.defineProperty(this, "should", { + value, + enumerable: true, + configurable: true, + writable: true + }); + } + Object.defineProperty(Object.prototype, "should", { + set: shouldSetter, + get: shouldGetter, + configurable: true + }); + var should2 = {}; + should2.fail = function(actual, expected, message, operator) { + if (arguments.length < 2) { + message = actual; + actual = void 0; + } + message = message || "should.fail()"; + throw new chai2.AssertionError(message, { + actual, + expected, + operator + }, should2.fail); + }; + should2.equal = function(val1, val2, msg) { + new Assertion2(val1, msg).to.equal(val2); + }; + should2.Throw = function(fn, errt, errs, msg) { + new Assertion2(fn, msg).to.Throw(errt, errs); + }; + should2.exist = function(val, msg) { + new Assertion2(val, msg).to.exist; + }; + should2.not = {}; + should2.not.equal = function(val1, val2, msg) { + new Assertion2(val1, msg).to.not.equal(val2); + }; + should2.not.Throw = function(fn, errt, errs, msg) { + new Assertion2(fn, msg).to.not.Throw(errt, errs); + }; + should2.not.exist = function(val, msg) { + new Assertion2(val, msg).to.not.exist; + }; + should2["throw"] = should2["Throw"]; + should2.not["throw"] = should2.not["Throw"]; + return should2; + } + ; + chai2.should = loadShould; + chai2.Should = loadShould; + }; + } +}); + +// node_modules/chai/lib/chai/interface/assert.js +var require_assert = __commonJS({ + "node_modules/chai/lib/chai/interface/assert.js"(exports, module) { + "use strict"; + module.exports = function(chai2, util2) { + var Assertion2 = chai2.Assertion, flag = util2.flag; + var assert2 = chai2.assert = function(express, errmsg) { + var test = new Assertion2(null, null, chai2.assert, true); + test.assert( + express, + errmsg, + "[ negation message unavailable ]" + ); + }; + assert2.fail = function(actual, expected, message, operator) { + if (arguments.length < 2) { + message = actual; + actual = void 0; + } + message = message || "assert.fail()"; + throw new chai2.AssertionError(message, { + actual, + expected, + operator + }, assert2.fail); + }; + assert2.isOk = function(val, msg) { + new Assertion2(val, msg, assert2.isOk, true).is.ok; + }; + assert2.isNotOk = function(val, msg) { + new Assertion2(val, msg, assert2.isNotOk, true).is.not.ok; + }; + assert2.equal = function(act, exp, msg) { + var test = new Assertion2(act, msg, assert2.equal, true); + test.assert( + exp == flag(test, "object"), + "expected #{this} to equal #{exp}", + "expected #{this} to not equal #{act}", + exp, + act, + true + ); + }; + assert2.notEqual = function(act, exp, msg) { + var test = new Assertion2(act, msg, assert2.notEqual, true); + test.assert( + exp != flag(test, "object"), + "expected #{this} to not equal #{exp}", + "expected #{this} to equal #{act}", + exp, + act, + true + ); + }; + assert2.strictEqual = function(act, exp, msg) { + new Assertion2(act, msg, assert2.strictEqual, true).to.equal(exp); + }; + assert2.notStrictEqual = function(act, exp, msg) { + new Assertion2(act, msg, assert2.notStrictEqual, true).to.not.equal(exp); + }; + assert2.deepEqual = assert2.deepStrictEqual = function(act, exp, msg) { + new Assertion2(act, msg, assert2.deepEqual, true).to.eql(exp); + }; + assert2.notDeepEqual = function(act, exp, msg) { + new Assertion2(act, msg, assert2.notDeepEqual, true).to.not.eql(exp); + }; + assert2.isAbove = function(val, abv, msg) { + new Assertion2(val, msg, assert2.isAbove, true).to.be.above(abv); + }; + assert2.isAtLeast = function(val, atlst, msg) { + new Assertion2(val, msg, assert2.isAtLeast, true).to.be.least(atlst); + }; + assert2.isBelow = function(val, blw, msg) { + new Assertion2(val, msg, assert2.isBelow, true).to.be.below(blw); + }; + assert2.isAtMost = function(val, atmst, msg) { + new Assertion2(val, msg, assert2.isAtMost, true).to.be.most(atmst); + }; + assert2.isTrue = function(val, msg) { + new Assertion2(val, msg, assert2.isTrue, true).is["true"]; + }; + assert2.isNotTrue = function(val, msg) { + new Assertion2(val, msg, assert2.isNotTrue, true).to.not.equal(true); + }; + assert2.isFalse = function(val, msg) { + new Assertion2(val, msg, assert2.isFalse, true).is["false"]; + }; + assert2.isNotFalse = function(val, msg) { + new Assertion2(val, msg, assert2.isNotFalse, true).to.not.equal(false); + }; + assert2.isNull = function(val, msg) { + new Assertion2(val, msg, assert2.isNull, true).to.equal(null); + }; + assert2.isNotNull = function(val, msg) { + new Assertion2(val, msg, assert2.isNotNull, true).to.not.equal(null); + }; + assert2.isNaN = function(val, msg) { + new Assertion2(val, msg, assert2.isNaN, true).to.be.NaN; + }; + assert2.isNotNaN = function(val, msg) { + new Assertion2(val, msg, assert2.isNotNaN, true).not.to.be.NaN; + }; + assert2.exists = function(val, msg) { + new Assertion2(val, msg, assert2.exists, true).to.exist; + }; + assert2.notExists = function(val, msg) { + new Assertion2(val, msg, assert2.notExists, true).to.not.exist; + }; + assert2.isUndefined = function(val, msg) { + new Assertion2(val, msg, assert2.isUndefined, true).to.equal(void 0); + }; + assert2.isDefined = function(val, msg) { + new Assertion2(val, msg, assert2.isDefined, true).to.not.equal(void 0); + }; + assert2.isFunction = function(val, msg) { + new Assertion2(val, msg, assert2.isFunction, true).to.be.a("function"); + }; + assert2.isNotFunction = function(val, msg) { + new Assertion2(val, msg, assert2.isNotFunction, true).to.not.be.a("function"); + }; + assert2.isObject = function(val, msg) { + new Assertion2(val, msg, assert2.isObject, true).to.be.a("object"); + }; + assert2.isNotObject = function(val, msg) { + new Assertion2(val, msg, assert2.isNotObject, true).to.not.be.a("object"); + }; + assert2.isArray = function(val, msg) { + new Assertion2(val, msg, assert2.isArray, true).to.be.an("array"); + }; + assert2.isNotArray = function(val, msg) { + new Assertion2(val, msg, assert2.isNotArray, true).to.not.be.an("array"); + }; + assert2.isString = function(val, msg) { + new Assertion2(val, msg, assert2.isString, true).to.be.a("string"); + }; + assert2.isNotString = function(val, msg) { + new Assertion2(val, msg, assert2.isNotString, true).to.not.be.a("string"); + }; + assert2.isNumber = function(val, msg) { + new Assertion2(val, msg, assert2.isNumber, true).to.be.a("number"); + }; + assert2.isNotNumber = function(val, msg) { + new Assertion2(val, msg, assert2.isNotNumber, true).to.not.be.a("number"); + }; + assert2.isFinite = function(val, msg) { + new Assertion2(val, msg, assert2.isFinite, true).to.be.finite; + }; + assert2.isBoolean = function(val, msg) { + new Assertion2(val, msg, assert2.isBoolean, true).to.be.a("boolean"); + }; + assert2.isNotBoolean = function(val, msg) { + new Assertion2(val, msg, assert2.isNotBoolean, true).to.not.be.a("boolean"); + }; + assert2.typeOf = function(val, type, msg) { + new Assertion2(val, msg, assert2.typeOf, true).to.be.a(type); + }; + assert2.notTypeOf = function(val, type, msg) { + new Assertion2(val, msg, assert2.notTypeOf, true).to.not.be.a(type); + }; + assert2.instanceOf = function(val, type, msg) { + new Assertion2(val, msg, assert2.instanceOf, true).to.be.instanceOf(type); + }; + assert2.notInstanceOf = function(val, type, msg) { + new Assertion2(val, msg, assert2.notInstanceOf, true).to.not.be.instanceOf(type); + }; + assert2.include = function(exp, inc, msg) { + new Assertion2(exp, msg, assert2.include, true).include(inc); + }; + assert2.notInclude = function(exp, inc, msg) { + new Assertion2(exp, msg, assert2.notInclude, true).not.include(inc); + }; + assert2.deepInclude = function(exp, inc, msg) { + new Assertion2(exp, msg, assert2.deepInclude, true).deep.include(inc); + }; + assert2.notDeepInclude = function(exp, inc, msg) { + new Assertion2(exp, msg, assert2.notDeepInclude, true).not.deep.include(inc); + }; + assert2.nestedInclude = function(exp, inc, msg) { + new Assertion2(exp, msg, assert2.nestedInclude, true).nested.include(inc); + }; + assert2.notNestedInclude = function(exp, inc, msg) { + new Assertion2(exp, msg, assert2.notNestedInclude, true).not.nested.include(inc); + }; + assert2.deepNestedInclude = function(exp, inc, msg) { + new Assertion2(exp, msg, assert2.deepNestedInclude, true).deep.nested.include(inc); + }; + assert2.notDeepNestedInclude = function(exp, inc, msg) { + new Assertion2(exp, msg, assert2.notDeepNestedInclude, true).not.deep.nested.include(inc); + }; + assert2.ownInclude = function(exp, inc, msg) { + new Assertion2(exp, msg, assert2.ownInclude, true).own.include(inc); + }; + assert2.notOwnInclude = function(exp, inc, msg) { + new Assertion2(exp, msg, assert2.notOwnInclude, true).not.own.include(inc); + }; + assert2.deepOwnInclude = function(exp, inc, msg) { + new Assertion2(exp, msg, assert2.deepOwnInclude, true).deep.own.include(inc); + }; + assert2.notDeepOwnInclude = function(exp, inc, msg) { + new Assertion2(exp, msg, assert2.notDeepOwnInclude, true).not.deep.own.include(inc); + }; + assert2.match = function(exp, re, msg) { + new Assertion2(exp, msg, assert2.match, true).to.match(re); + }; + assert2.notMatch = function(exp, re, msg) { + new Assertion2(exp, msg, assert2.notMatch, true).to.not.match(re); + }; + assert2.property = function(obj, prop, msg) { + new Assertion2(obj, msg, assert2.property, true).to.have.property(prop); + }; + assert2.notProperty = function(obj, prop, msg) { + new Assertion2(obj, msg, assert2.notProperty, true).to.not.have.property(prop); + }; + assert2.propertyVal = function(obj, prop, val, msg) { + new Assertion2(obj, msg, assert2.propertyVal, true).to.have.property(prop, val); + }; + assert2.notPropertyVal = function(obj, prop, val, msg) { + new Assertion2(obj, msg, assert2.notPropertyVal, true).to.not.have.property(prop, val); + }; + assert2.deepPropertyVal = function(obj, prop, val, msg) { + new Assertion2(obj, msg, assert2.deepPropertyVal, true).to.have.deep.property(prop, val); + }; + assert2.notDeepPropertyVal = function(obj, prop, val, msg) { + new Assertion2(obj, msg, assert2.notDeepPropertyVal, true).to.not.have.deep.property(prop, val); + }; + assert2.ownProperty = function(obj, prop, msg) { + new Assertion2(obj, msg, assert2.ownProperty, true).to.have.own.property(prop); + }; + assert2.notOwnProperty = function(obj, prop, msg) { + new Assertion2(obj, msg, assert2.notOwnProperty, true).to.not.have.own.property(prop); + }; + assert2.ownPropertyVal = function(obj, prop, value, msg) { + new Assertion2(obj, msg, assert2.ownPropertyVal, true).to.have.own.property(prop, value); + }; + assert2.notOwnPropertyVal = function(obj, prop, value, msg) { + new Assertion2(obj, msg, assert2.notOwnPropertyVal, true).to.not.have.own.property(prop, value); + }; + assert2.deepOwnPropertyVal = function(obj, prop, value, msg) { + new Assertion2(obj, msg, assert2.deepOwnPropertyVal, true).to.have.deep.own.property(prop, value); + }; + assert2.notDeepOwnPropertyVal = function(obj, prop, value, msg) { + new Assertion2(obj, msg, assert2.notDeepOwnPropertyVal, true).to.not.have.deep.own.property(prop, value); + }; + assert2.nestedProperty = function(obj, prop, msg) { + new Assertion2(obj, msg, assert2.nestedProperty, true).to.have.nested.property(prop); + }; + assert2.notNestedProperty = function(obj, prop, msg) { + new Assertion2(obj, msg, assert2.notNestedProperty, true).to.not.have.nested.property(prop); + }; + assert2.nestedPropertyVal = function(obj, prop, val, msg) { + new Assertion2(obj, msg, assert2.nestedPropertyVal, true).to.have.nested.property(prop, val); + }; + assert2.notNestedPropertyVal = function(obj, prop, val, msg) { + new Assertion2(obj, msg, assert2.notNestedPropertyVal, true).to.not.have.nested.property(prop, val); + }; + assert2.deepNestedPropertyVal = function(obj, prop, val, msg) { + new Assertion2(obj, msg, assert2.deepNestedPropertyVal, true).to.have.deep.nested.property(prop, val); + }; + assert2.notDeepNestedPropertyVal = function(obj, prop, val, msg) { + new Assertion2(obj, msg, assert2.notDeepNestedPropertyVal, true).to.not.have.deep.nested.property(prop, val); + }; + assert2.lengthOf = function(exp, len, msg) { + new Assertion2(exp, msg, assert2.lengthOf, true).to.have.lengthOf(len); + }; + assert2.hasAnyKeys = function(obj, keys, msg) { + new Assertion2(obj, msg, assert2.hasAnyKeys, true).to.have.any.keys(keys); + }; + assert2.hasAllKeys = function(obj, keys, msg) { + new Assertion2(obj, msg, assert2.hasAllKeys, true).to.have.all.keys(keys); + }; + assert2.containsAllKeys = function(obj, keys, msg) { + new Assertion2(obj, msg, assert2.containsAllKeys, true).to.contain.all.keys(keys); + }; + assert2.doesNotHaveAnyKeys = function(obj, keys, msg) { + new Assertion2(obj, msg, assert2.doesNotHaveAnyKeys, true).to.not.have.any.keys(keys); + }; + assert2.doesNotHaveAllKeys = function(obj, keys, msg) { + new Assertion2(obj, msg, assert2.doesNotHaveAllKeys, true).to.not.have.all.keys(keys); + }; + assert2.hasAnyDeepKeys = function(obj, keys, msg) { + new Assertion2(obj, msg, assert2.hasAnyDeepKeys, true).to.have.any.deep.keys(keys); + }; + assert2.hasAllDeepKeys = function(obj, keys, msg) { + new Assertion2(obj, msg, assert2.hasAllDeepKeys, true).to.have.all.deep.keys(keys); + }; + assert2.containsAllDeepKeys = function(obj, keys, msg) { + new Assertion2(obj, msg, assert2.containsAllDeepKeys, true).to.contain.all.deep.keys(keys); + }; + assert2.doesNotHaveAnyDeepKeys = function(obj, keys, msg) { + new Assertion2(obj, msg, assert2.doesNotHaveAnyDeepKeys, true).to.not.have.any.deep.keys(keys); + }; + assert2.doesNotHaveAllDeepKeys = function(obj, keys, msg) { + new Assertion2(obj, msg, assert2.doesNotHaveAllDeepKeys, true).to.not.have.all.deep.keys(keys); + }; + assert2.throws = function(fn, errorLike, errMsgMatcher, msg) { + if ("string" === typeof errorLike || errorLike instanceof RegExp) { + errMsgMatcher = errorLike; + errorLike = null; + } + var assertErr = new Assertion2(fn, msg, assert2.throws, true).to.throw(errorLike, errMsgMatcher); + return flag(assertErr, "object"); + }; + assert2.doesNotThrow = function(fn, errorLike, errMsgMatcher, msg) { + if ("string" === typeof errorLike || errorLike instanceof RegExp) { + errMsgMatcher = errorLike; + errorLike = null; + } + new Assertion2(fn, msg, assert2.doesNotThrow, true).to.not.throw(errorLike, errMsgMatcher); + }; + assert2.operator = function(val, operator, val2, msg) { + var ok; + switch (operator) { + case "==": + ok = val == val2; + break; + case "===": + ok = val === val2; break; + case ">": + ok = val > val2; + break; + case ">=": + ok = val >= val2; + break; + case "<": + ok = val < val2; + break; + case "<=": + ok = val <= val2; + break; + case "!=": + ok = val != val2; + break; + case "!==": + ok = val !== val2; + break; + default: + msg = msg ? msg + ": " : msg; + throw new chai2.AssertionError( + msg + 'Invalid operator "' + operator + '"', + void 0, + assert2.operator + ); } - if (!action) - action = this._actionPool.pick(); - action.element = request.element; - action.addRequest(request); - request.tick(this._tickDeltaTime); - this._actions.push(action); - } - _updateActions() { - let i = 0; - for (i = 0; i < this.items.length; i++) { - const item = this.items[i]; - const reqX = this._requests[AUTO_SCROLL_AXIS.x].get(item); - const reqY = this._requests[AUTO_SCROLL_AXIS.y].get(item); - if (reqX) - this._requestAction(reqX, AUTO_SCROLL_AXIS.x); - if (reqY) - this._requestAction(reqY, AUTO_SCROLL_AXIS.y); - } - for (i = 0; i < this._actions.length; i++) { - this._actions[i].computeScrollValues(); - } - } - _applyActions() { - if (!this._actions.length) - return; - this._emitter.emit('beforescroll'); - let i = 0; - for (i = 0; i < this._actions.length; i++) { - this._actions[i].scroll(); - this._actionPool.put(this._actions[i]); - } - this._actions.length = 0; - let item; - for (i = 0; i < this.items.length; i++) { - item = this.items[i]; - if (item.onPrepareScrollEffect) { - item.onPrepareScrollEffect(); - } + var test = new Assertion2(ok, msg, assert2.operator, true); + test.assert( + true === flag(test, "object"), + "expected " + util2.inspect(val) + " to be " + operator + " " + util2.inspect(val2), + "expected " + util2.inspect(val) + " to not be " + operator + " " + util2.inspect(val2) + ); + }; + assert2.closeTo = function(act, exp, delta, msg) { + new Assertion2(act, msg, assert2.closeTo, true).to.be.closeTo(exp, delta); + }; + assert2.approximately = function(act, exp, delta, msg) { + new Assertion2(act, msg, assert2.approximately, true).to.be.approximately(exp, delta); + }; + assert2.sameMembers = function(set1, set2, msg) { + new Assertion2(set1, msg, assert2.sameMembers, true).to.have.same.members(set2); + }; + assert2.notSameMembers = function(set1, set2, msg) { + new Assertion2(set1, msg, assert2.notSameMembers, true).to.not.have.same.members(set2); + }; + assert2.sameDeepMembers = function(set1, set2, msg) { + new Assertion2(set1, msg, assert2.sameDeepMembers, true).to.have.same.deep.members(set2); + }; + assert2.notSameDeepMembers = function(set1, set2, msg) { + new Assertion2(set1, msg, assert2.notSameDeepMembers, true).to.not.have.same.deep.members(set2); + }; + assert2.sameOrderedMembers = function(set1, set2, msg) { + new Assertion2(set1, msg, assert2.sameOrderedMembers, true).to.have.same.ordered.members(set2); + }; + assert2.notSameOrderedMembers = function(set1, set2, msg) { + new Assertion2(set1, msg, assert2.notSameOrderedMembers, true).to.not.have.same.ordered.members(set2); + }; + assert2.sameDeepOrderedMembers = function(set1, set2, msg) { + new Assertion2(set1, msg, assert2.sameDeepOrderedMembers, true).to.have.same.deep.ordered.members(set2); + }; + assert2.notSameDeepOrderedMembers = function(set1, set2, msg) { + new Assertion2(set1, msg, assert2.notSameDeepOrderedMembers, true).to.not.have.same.deep.ordered.members(set2); + }; + assert2.includeMembers = function(superset, subset, msg) { + new Assertion2(superset, msg, assert2.includeMembers, true).to.include.members(subset); + }; + assert2.notIncludeMembers = function(superset, subset, msg) { + new Assertion2(superset, msg, assert2.notIncludeMembers, true).to.not.include.members(subset); + }; + assert2.includeDeepMembers = function(superset, subset, msg) { + new Assertion2(superset, msg, assert2.includeDeepMembers, true).to.include.deep.members(subset); + }; + assert2.notIncludeDeepMembers = function(superset, subset, msg) { + new Assertion2(superset, msg, assert2.notIncludeDeepMembers, true).to.not.include.deep.members(subset); + }; + assert2.includeOrderedMembers = function(superset, subset, msg) { + new Assertion2(superset, msg, assert2.includeOrderedMembers, true).to.include.ordered.members(subset); + }; + assert2.notIncludeOrderedMembers = function(superset, subset, msg) { + new Assertion2(superset, msg, assert2.notIncludeOrderedMembers, true).to.not.include.ordered.members(subset); + }; + assert2.includeDeepOrderedMembers = function(superset, subset, msg) { + new Assertion2(superset, msg, assert2.includeDeepOrderedMembers, true).to.include.deep.ordered.members(subset); + }; + assert2.notIncludeDeepOrderedMembers = function(superset, subset, msg) { + new Assertion2(superset, msg, assert2.notIncludeDeepOrderedMembers, true).to.not.include.deep.ordered.members(subset); + }; + assert2.oneOf = function(inList, list, msg) { + new Assertion2(inList, msg, assert2.oneOf, true).to.be.oneOf(list); + }; + assert2.changes = function(fn, obj, prop, msg) { + if (arguments.length === 3 && typeof obj === "function") { + msg = prop; + prop = null; } - for (i = 0; i < this.items.length; i++) { - item = this.items[i]; - if (item.onApplyScrollEffect) { - item.onApplyScrollEffect(); - } + new Assertion2(fn, msg, assert2.changes, true).to.change(obj, prop); + }; + assert2.changesBy = function(fn, obj, prop, delta, msg) { + if (arguments.length === 4 && typeof obj === "function") { + var tmpMsg = delta; + delta = prop; + msg = tmpMsg; + } else if (arguments.length === 3) { + delta = prop; + prop = null; + } + new Assertion2(fn, msg, assert2.changesBy, true).to.change(obj, prop).by(delta); + }; + assert2.doesNotChange = function(fn, obj, prop, msg) { + if (arguments.length === 3 && typeof obj === "function") { + msg = prop; + prop = null; + } + return new Assertion2(fn, msg, assert2.doesNotChange, true).to.not.change(obj, prop); + }; + assert2.changesButNotBy = function(fn, obj, prop, delta, msg) { + if (arguments.length === 4 && typeof obj === "function") { + var tmpMsg = delta; + delta = prop; + msg = tmpMsg; + } else if (arguments.length === 3) { + delta = prop; + prop = null; + } + new Assertion2(fn, msg, assert2.changesButNotBy, true).to.change(obj, prop).but.not.by(delta); + }; + assert2.increases = function(fn, obj, prop, msg) { + if (arguments.length === 3 && typeof obj === "function") { + msg = prop; + prop = null; } - this._emitter.emit('afterscroll'); + return new Assertion2(fn, msg, assert2.increases, true).to.increase(obj, prop); + }; + assert2.increasesBy = function(fn, obj, prop, delta, msg) { + if (arguments.length === 4 && typeof obj === "function") { + var tmpMsg = delta; + delta = prop; + msg = tmpMsg; + } else if (arguments.length === 3) { + delta = prop; + prop = null; + } + new Assertion2(fn, msg, assert2.increasesBy, true).to.increase(obj, prop).by(delta); + }; + assert2.doesNotIncrease = function(fn, obj, prop, msg) { + if (arguments.length === 3 && typeof obj === "function") { + msg = prop; + prop = null; + } + return new Assertion2(fn, msg, assert2.doesNotIncrease, true).to.not.increase(obj, prop); + }; + assert2.increasesButNotBy = function(fn, obj, prop, delta, msg) { + if (arguments.length === 4 && typeof obj === "function") { + var tmpMsg = delta; + delta = prop; + msg = tmpMsg; + } else if (arguments.length === 3) { + delta = prop; + prop = null; + } + new Assertion2(fn, msg, assert2.increasesButNotBy, true).to.increase(obj, prop).but.not.by(delta); + }; + assert2.decreases = function(fn, obj, prop, msg) { + if (arguments.length === 3 && typeof obj === "function") { + msg = prop; + prop = null; + } + return new Assertion2(fn, msg, assert2.decreases, true).to.decrease(obj, prop); + }; + assert2.decreasesBy = function(fn, obj, prop, delta, msg) { + if (arguments.length === 4 && typeof obj === "function") { + var tmpMsg = delta; + delta = prop; + msg = tmpMsg; + } else if (arguments.length === 3) { + delta = prop; + prop = null; + } + new Assertion2(fn, msg, assert2.decreasesBy, true).to.decrease(obj, prop).by(delta); + }; + assert2.doesNotDecrease = function(fn, obj, prop, msg) { + if (arguments.length === 3 && typeof obj === "function") { + msg = prop; + prop = null; + } + return new Assertion2(fn, msg, assert2.doesNotDecrease, true).to.not.decrease(obj, prop); + }; + assert2.doesNotDecreaseBy = function(fn, obj, prop, delta, msg) { + if (arguments.length === 4 && typeof obj === "function") { + var tmpMsg = delta; + delta = prop; + msg = tmpMsg; + } else if (arguments.length === 3) { + delta = prop; + prop = null; + } + return new Assertion2(fn, msg, assert2.doesNotDecreaseBy, true).to.not.decrease(obj, prop).by(delta); + }; + assert2.decreasesButNotBy = function(fn, obj, prop, delta, msg) { + if (arguments.length === 4 && typeof obj === "function") { + var tmpMsg = delta; + delta = prop; + msg = tmpMsg; + } else if (arguments.length === 3) { + delta = prop; + prop = null; + } + new Assertion2(fn, msg, assert2.decreasesButNotBy, true).to.decrease(obj, prop).but.not.by(delta); + }; + assert2.ifError = function(val) { + if (val) { + throw val; + } + }; + assert2.isExtensible = function(obj, msg) { + new Assertion2(obj, msg, assert2.isExtensible, true).to.be.extensible; + }; + assert2.isNotExtensible = function(obj, msg) { + new Assertion2(obj, msg, assert2.isNotExtensible, true).to.not.be.extensible; + }; + assert2.isSealed = function(obj, msg) { + new Assertion2(obj, msg, assert2.isSealed, true).to.be.sealed; + }; + assert2.isNotSealed = function(obj, msg) { + new Assertion2(obj, msg, assert2.isNotSealed, true).to.not.be.sealed; + }; + assert2.isFrozen = function(obj, msg) { + new Assertion2(obj, msg, assert2.isFrozen, true).to.be.frozen; + }; + assert2.isNotFrozen = function(obj, msg) { + new Assertion2(obj, msg, assert2.isNotFrozen, true).to.not.be.frozen; + }; + assert2.isEmpty = function(val, msg) { + new Assertion2(val, msg, assert2.isEmpty, true).to.be.empty; + }; + assert2.isNotEmpty = function(val, msg) { + new Assertion2(val, msg, assert2.isNotEmpty, true).to.not.be.empty; + }; + (function alias(name, as) { + assert2[as] = assert2[name]; + return alias; + })("isOk", "ok")("isNotOk", "notOk")("throws", "throw")("throws", "Throw")("isExtensible", "extensible")("isNotExtensible", "notExtensible")("isSealed", "sealed")("isNotSealed", "notSealed")("isFrozen", "frozen")("isNotFrozen", "notFrozen")("isEmpty", "empty")("isNotEmpty", "notEmpty"); + }; + } +}); + +// node_modules/chai/lib/chai.js +var require_chai = __commonJS({ + "node_modules/chai/lib/chai.js"(exports) { + "use strict"; + var used = []; + exports.version = "4.3.8"; + exports.AssertionError = require_assertion_error(); + var util2 = require_utils(); + exports.use = function(fn) { + if (!~used.indexOf(fn)) { + fn(exports, util2); + used.push(fn); + } + return exports; + }; + exports.util = util2; + var config2 = require_config(); + exports.config = config2; + var assertion = require_assertion(); + exports.use(assertion); + var core2 = require_assertions(); + exports.use(core2); + var expect2 = require_expect(); + exports.use(expect2); + var should2 = require_should(); + exports.use(should2); + var assert2 = require_assert(); + exports.use(assert2); + } +}); + +// node_modules/chai/index.js +var require_chai2 = __commonJS({ + "node_modules/chai/index.js"(exports, module) { + "use strict"; + module.exports = require_chai(); + } +}); + +// node_modules/chai/index.mjs +var import_index = __toESM(require_chai2(), 1); +var expect = import_index.default.expect; +var version = import_index.default.version; +var Assertion = import_index.default.Assertion; +var AssertionError = import_index.default.AssertionError; +var util = import_index.default.util; +var config = import_index.default.config; +var use = import_index.default.use; +var should = import_index.default.should; +var assert = import_index.default.assert; +var core = import_index.default.core; + +// src/sensors/sensor.ts +var SensorEventType = { + start: "start", + move: "move", + cancel: "cancel", + end: "end", + destroy: "destroy" +}; + +// src/sensors/base-sensor.ts +import { Emitter } from "eventti"; +var BaseSensor = class { + constructor() { + this.drag = null; + this.isDestroyed = false; + this._emitter = new Emitter(); + } + _createDragData(data) { + return { + x: data.x, + y: data.y + }; + } + _updateDragData(data) { + if (!this.drag) + return; + this.drag.x = data.x; + this.drag.y = data.y; + } + _resetDragData() { + this.drag = null; + } + _start(data) { + if (this.isDestroyed || this.drag) + return; + this.drag = this._createDragData(data); + this._emitter.emit(SensorEventType.start, data); + } + _move(data) { + if (!this.drag) + return; + this._updateDragData(data); + this._emitter.emit(SensorEventType.move, data); + } + _end(data) { + if (!this.drag) + return; + this._updateDragData(data); + this._emitter.emit(SensorEventType.end, data); + this._resetDragData(); + } + _cancel(data) { + if (!this.drag) + return; + this._updateDragData(data); + this._emitter.emit(SensorEventType.cancel, data); + this._resetDragData(); + } + on(eventName, listener, listenerId) { + return this._emitter.on(eventName, listener, listenerId); + } + off(eventName, listener) { + this._emitter.off(eventName, listener); + } + cancel() { + if (!this.drag) + return; + this._emitter.emit(SensorEventType.cancel, { + type: SensorEventType.cancel, + x: this.drag.x, + y: this.drag.y + }); + this._resetDragData(); + } + destroy() { + if (this.isDestroyed) + return; + this.isDestroyed = true; + this.cancel(); + this._emitter.emit(SensorEventType.destroy, { + type: SensorEventType.destroy + }); + this._emitter.off(); + } +}; + +// src/singletons/ticker.ts +import { Ticker } from "tikki"; +var tickerReadPhase = Symbol(); +var tickerWritePhase = Symbol(); +var ticker = new Ticker({ phases: [tickerReadPhase, tickerWritePhase] }); + +// src/sensors/pointer-sensor.ts +import { Emitter as Emitter2 } from "eventti"; + +// src/utils/get-pointer-event-data.ts +function getPointerEventData(e, id) { + if ("pointerId" in e) { + return e.pointerId === id ? e : null; + } + if ("changedTouches" in e) { + let i = 0; + for (; i < e.changedTouches.length; i++) { + if (e.changedTouches[i].identifier === id) { + return e.changedTouches[i]; + } } - on(eventName, listener) { - return this._emitter.on(eventName, listener); + return null; + } + return e; +} + +// src/utils/get-pointer-type.ts +function getPointerType(e) { + return "pointerType" in e ? e.pointerType : "touches" in e ? "touch" : "mouse"; +} + +// src/utils/get-pointer-id.ts +function getPointerId(e) { + if ("pointerId" in e) + return e.pointerId; + if ("changedTouches" in e) + return e.changedTouches[0] ? e.changedTouches[0].identifier : null; + return -1; +} + +// src/constants.ts +var IS_BROWSER = typeof window !== "undefined" && typeof window.document !== "undefined"; +var HAS_PASSIVE_EVENTS = (() => { + let isPassiveEventsSupported = false; + try { + const passiveOpts = Object.defineProperty({}, "passive", { + get: function() { + isPassiveEventsSupported = true; + } + }); + window.addEventListener("testPassive", null, passiveOpts); + window.removeEventListener("testPassive", null, passiveOpts); + } catch (e) { + } + return isPassiveEventsSupported; +})(); +var HAS_TOUCH_EVENTS = IS_BROWSER && "ontouchstart" in window; +var HAS_POINTER_EVENTS = IS_BROWSER && !!window.PointerEvent; +var IS_SAFARI = !!(IS_BROWSER && navigator.vendor && navigator.vendor.indexOf("Apple") > -1 && navigator.userAgent && navigator.userAgent.indexOf("CriOS") == -1 && navigator.userAgent.indexOf("FxiOS") == -1); + +// src/utils/parse-listener-options.ts +function parseListenerOptions(options = {}) { + const { capture = true, passive = true } = options; + if (HAS_PASSIVE_EVENTS) { + return { capture, passive }; + } else { + return { capture }; + } +} + +// src/utils/parse-source-events.ts +function parseSourceEvents(sourceEvents) { + return sourceEvents === "auto" || sourceEvents === void 0 ? HAS_POINTER_EVENTS ? "pointer" : HAS_TOUCH_EVENTS ? "touch" : "mouse" : sourceEvents; +} + +// src/sensors/pointer-sensor.ts +var POINTER_EVENTS = { + start: "pointerdown", + move: "pointermove", + cancel: "pointercancel", + end: "pointerup" +}; +var TOUCH_EVENTS = { + start: "touchstart", + move: "touchmove", + cancel: "touchcancel", + end: "touchend" +}; +var MOUSE_EVENTS = { + start: "mousedown", + move: "mousemove", + cancel: "", + end: "mouseup" +}; +var SOURCE_EVENTS = { + pointer: POINTER_EVENTS, + touch: TOUCH_EVENTS, + mouse: MOUSE_EVENTS +}; +var PointerSensor = class { + constructor(element, options = {}) { + const { + listenerOptions = {}, + sourceEvents = "auto", + startPredicate = (e) => "button" in e && e.button > 0 ? false : true + } = options; + this.element = element; + this.drag = null; + this.isDestroyed = false; + this._areWindowListenersBound = false; + this._startPredicate = startPredicate; + this._listenerOptions = parseListenerOptions(listenerOptions); + this._sourceEvents = parseSourceEvents(sourceEvents); + this._emitter = new Emitter2(); + this._onStart = this._onStart.bind(this); + this._onMove = this._onMove.bind(this); + this._onCancel = this._onCancel.bind(this); + this._onEnd = this._onEnd.bind(this); + element.addEventListener( + SOURCE_EVENTS[this._sourceEvents].start, + this._onStart, + this._listenerOptions + ); + } + /** + * Check if the provided event contains the tracked pointer id or in the case + * of touch event if the first changed touch is the tracked touch object and + * return the event or touch object. Otherwise return null. + */ + _getTrackedPointerEventData(e) { + return this.drag ? getPointerEventData(e, this.drag.pointerId) : null; + } + /** + * Listener for start event. + */ + _onStart(e) { + if (this.isDestroyed || this.drag) + return; + if (!this._startPredicate(e)) + return; + const pointerId = getPointerId(e); + if (pointerId === null) + return; + const pointerEventData = getPointerEventData(e, pointerId); + if (pointerEventData === null) + return; + const dragData = { + pointerId, + pointerType: getPointerType(e), + x: pointerEventData.clientX, + y: pointerEventData.clientY + }; + this.drag = dragData; + const eventData = { + ...dragData, + type: SensorEventType.start, + srcEvent: e, + target: pointerEventData.target + }; + this._emitter.emit(eventData.type, eventData); + if (this.drag) { + this._bindWindowListeners(); } - off(eventName, listener) { - this._emitter.off(eventName, listener); + } + /** + * Listener for move event. + */ + _onMove(e) { + if (!this.drag) + return; + const pointerEventData = this._getTrackedPointerEventData(e); + if (!pointerEventData) + return; + this.drag.x = pointerEventData.clientX; + this.drag.y = pointerEventData.clientY; + const eventData = { + type: SensorEventType.move, + srcEvent: e, + target: pointerEventData.target, + ...this.drag + }; + this._emitter.emit(eventData.type, eventData); + } + /** + * Listener for cancel event. + */ + _onCancel(e) { + if (!this.drag) + return; + const pointerEventData = this._getTrackedPointerEventData(e); + if (!pointerEventData) + return; + this.drag.x = pointerEventData.clientX; + this.drag.y = pointerEventData.clientY; + const eventData = { + type: SensorEventType.cancel, + srcEvent: e, + target: pointerEventData.target, + ...this.drag + }; + this._emitter.emit(eventData.type, eventData); + this._resetDrag(); + } + /** + * Listener for end event. + */ + _onEnd(e) { + if (!this.drag) + return; + const pointerEventData = this._getTrackedPointerEventData(e); + if (!pointerEventData) + return; + this.drag.x = pointerEventData.clientX; + this.drag.y = pointerEventData.clientY; + const eventData = { + type: SensorEventType.end, + srcEvent: e, + target: pointerEventData.target, + ...this.drag + }; + this._emitter.emit(eventData.type, eventData); + this._resetDrag(); + } + /** + * Bind window event listeners for move/end/cancel. + */ + _bindWindowListeners() { + if (this._areWindowListenersBound) + return; + const { move, end, cancel } = SOURCE_EVENTS[this._sourceEvents]; + window.addEventListener(move, this._onMove, this._listenerOptions); + window.addEventListener(end, this._onEnd, this._listenerOptions); + if (cancel) { + window.addEventListener(cancel, this._onCancel, this._listenerOptions); } - addItem(item) { - if (this._isDestroyed || this._itemData.has(item)) - return; - const { x, y } = item.position; - const itemData = new AutoScrollItemData(); - itemData.positionX = x; - itemData.positionY = y; - itemData.directionX = AUTO_SCROLL_DIRECTION.none; - itemData.directionY = AUTO_SCROLL_DIRECTION.none; - itemData.overlapCheckRequestTime = this._tickTime; - this._itemData.set(item, itemData); - this.items.push(item); - if (!this._isTicking) - this._startTicking(); + this._areWindowListenersBound = true; + } + /** + * Unbind window event listeners for move/end/cancel. + */ + _unbindWindowListeners() { + if (this._areWindowListenersBound) { + const { move, end, cancel } = SOURCE_EVENTS[this._sourceEvents]; + window.removeEventListener(move, this._onMove, this._listenerOptions); + window.removeEventListener(end, this._onEnd, this._listenerOptions); + if (cancel) { + window.removeEventListener(cancel, this._onCancel, this._listenerOptions); + } + this._areWindowListenersBound = false; } - removeItem(item) { - if (this._isDestroyed) - return; - const index = this.items.indexOf(item); - if (index === -1) - return; - if (this._requests[AUTO_SCROLL_AXIS.x].get(item)) { - this._cancelItemScroll(item, AUTO_SCROLL_AXIS.x); - this._requests[AUTO_SCROLL_AXIS.x].delete(item); + } + /** + * Reset drag data. + */ + _resetDrag() { + this.drag = null; + this._unbindWindowListeners(); + } + /** + * Forcefully cancel the drag process. + */ + cancel() { + if (!this.drag) + return; + const eventData = { + type: SensorEventType.cancel, + srcEvent: null, + target: null, + ...this.drag + }; + this._emitter.emit(eventData.type, eventData); + this._resetDrag(); + } + /** + * Update the instance's settings. + */ + updateSettings(options) { + if (this.isDestroyed) + return; + const { listenerOptions, sourceEvents, startPredicate } = options; + const nextSourceEvents = parseSourceEvents(sourceEvents); + const nextListenerOptions = parseListenerOptions(listenerOptions); + if (startPredicate && this._startPredicate !== startPredicate) { + this._startPredicate = startPredicate; + } + if (listenerOptions && (this._listenerOptions.capture !== nextListenerOptions.capture || this._listenerOptions.passive === nextListenerOptions.passive) || sourceEvents && this._sourceEvents !== nextSourceEvents) { + this.element.removeEventListener( + SOURCE_EVENTS[this._sourceEvents].start, + this._onStart, + this._listenerOptions + ); + this._unbindWindowListeners(); + this.cancel(); + if (sourceEvents) { + this._sourceEvents = nextSourceEvents; + } + if (listenerOptions && nextListenerOptions) { + this._listenerOptions = nextListenerOptions; + } + this.element.addEventListener( + SOURCE_EVENTS[this._sourceEvents].start, + this._onStart, + this._listenerOptions + ); + } + } + /** + * Bind a drag event listener. + */ + on(eventName, listener, listenerId) { + return this._emitter.on(eventName, listener, listenerId); + } + /** + * Unbind a drag event listener. + */ + off(eventName, listener) { + this._emitter.off(eventName, listener); + } + /** + * Destroy the instance and unbind all drag event listeners. + */ + destroy() { + if (this.isDestroyed) + return; + this.isDestroyed = true; + this.cancel(); + this._emitter.emit(SensorEventType.destroy, { + type: SensorEventType.destroy + }); + this._emitter.off(); + this.element.removeEventListener( + SOURCE_EVENTS[this._sourceEvents].start, + this._onStart, + this._listenerOptions + ); + } +}; + +// src/sensors/keyboard-sensor.ts +var KeyboardSensor = class extends BaseSensor { + constructor(options = {}) { + super(); + const { + moveDistance = 25, + startPredicate = (e) => { + if (e.key === "Enter" || e.key === " ") { + if (document.activeElement && document.activeElement !== document.body) { + const { left, top } = document.activeElement.getBoundingClientRect(); + return { x: left, y: top }; + } } - if (this._requests[AUTO_SCROLL_AXIS.y].get(item)) { - this._cancelItemScroll(item, AUTO_SCROLL_AXIS.y); - this._requests[AUTO_SCROLL_AXIS.y].delete(item); + return null; + }, + movePredicate = (e, sensor, moveDistance2) => { + if (!sensor.drag) + return null; + switch (e.key) { + case "ArrowLeft": { + return { + x: sensor.drag.x - moveDistance2.x, + y: sensor.drag.y + }; + } + case "ArrowRight": { + return { + x: sensor.drag.x + moveDistance2.x, + y: sensor.drag.y + }; + } + case "ArrowUp": { + return { + x: sensor.drag.x, + y: sensor.drag.y - moveDistance2.y + }; + } + case "ArrowDown": { + return { + x: sensor.drag.x, + y: sensor.drag.y + moveDistance2.y + }; + } + default: { + return null; + } + } + }, + cancelPredicate = (e, sensor) => { + if (sensor.drag && e.key === "Escape") { + return { x: sensor.drag.x, y: sensor.drag.y }; } - this._itemData.delete(item); - this.items.splice(index, 1); - if (this._isTicking && !this.items.length) { - this._stopTicking(); + return null; + }, + endPredicate = (e, sensor) => { + if (sensor.drag && (e.key === "Enter" || e.key === " ")) { + return { x: sensor.drag.x, y: sensor.drag.y }; } + return null; + } + } = options; + this._moveDistance = typeof moveDistance === "number" ? { x: moveDistance, y: moveDistance } : { ...moveDistance }; + this._startPredicate = startPredicate; + this._movePredicate = movePredicate; + this._cancelPredicate = cancelPredicate; + this._endPredicate = endPredicate; + this.cancel = this.cancel.bind(this); + this._onKeyDown = this._onKeyDown.bind(this); + document.addEventListener("keydown", this._onKeyDown); + window.addEventListener("blur", this.cancel); + window.addEventListener("visibilitychange", this.cancel); + } + _onKeyDown(e) { + if (!this.drag) { + const startPosition = this._startPredicate(e, this, this._moveDistance); + if (startPosition) { + e.preventDefault(); + this._start({ + type: "start", + x: startPosition.x, + y: startPosition.y, + srcEvent: e + }); + } + return; } - isDestroyed() { - return this._isDestroyed; + const cancelPosition = this._cancelPredicate(e, this, this._moveDistance); + if (cancelPosition) { + e.preventDefault(); + this._cancel({ + type: "cancel", + x: cancelPosition.x, + y: cancelPosition.y, + srcEvent: e + }); + return; } - isItemScrollingX(item) { - var _a; - return !!((_a = this._requests[AUTO_SCROLL_AXIS.x].get(item)) === null || _a === void 0 ? void 0 : _a.isActive); + const endPosition = this._endPredicate(e, this, this._moveDistance); + if (endPosition) { + e.preventDefault(); + this._end({ + type: "end", + x: endPosition.x, + y: endPosition.y, + srcEvent: e + }); + return; } - isItemScrollingY(item) { - var _a; - return !!((_a = this._requests[AUTO_SCROLL_AXIS.y].get(item)) === null || _a === void 0 ? void 0 : _a.isActive); + const movePosition = this._movePredicate(e, this, this._moveDistance); + if (movePosition) { + e.preventDefault(); + this._move({ + type: "move", + x: movePosition.x, + y: movePosition.y, + srcEvent: e + }); + return; } - isItemScrolling(item) { - return this.isItemScrollingX(item) || this.isItemScrollingY(item); + } + updateSettings(options = {}) { + if (options.moveDistance !== void 0) { + if (typeof options.moveDistance === "number") { + this._moveDistance.x = options.moveDistance; + this._moveDistance.y = options.moveDistance; + } else { + this._moveDistance.x = options.moveDistance.x; + this._moveDistance.y = options.moveDistance.y; + } } - updateSettings(options = {}) { - const { overlapCheckInterval = this.settings.overlapCheckInterval } = options; - this.settings.overlapCheckInterval = overlapCheckInterval; + if (options.startPredicate !== void 0) { + this._startPredicate = options.startPredicate; } - destroy() { - if (this._isDestroyed) - return; - const items = this.items.slice(0); - let i = 0; - for (; i < items.length; i++) { - this.removeItem(items[i]); - } - this._actions.length = 0; - this._requestPool.reset(); - this._actionPool.reset(); - this._emitter.off(); - this._isDestroyed = true; + if (options.movePredicate !== void 0) { + this._movePredicate = options.movePredicate; + } + if (options.cancelPredicate !== void 0) { + this._cancelPredicate = options.cancelPredicate; + } + if (options.endPredicate !== void 0) { + this._endPredicate = options.endPredicate; + } + } + destroy() { + if (this.isDestroyed) + return; + super.destroy(); + document.removeEventListener("keydown", this._onKeyDown); + window.removeEventListener("blur", this.cancel); + window.removeEventListener("visibilitychange", this.cancel); + } +}; + +// src/draggable/draggable.ts +import { Emitter as Emitter3 } from "eventti"; +import { getOffsetContainer } from "mezr"; + +// src/utils/get-offset-diff.ts +import { getOffset } from "mezr"; + +// src/auto-scroll/auto-scroll.ts +import { Emitter as Emitter4 } from "eventti"; +import { getDistance, getRect } from "mezr"; + +// src/pool.ts +var Pool = class { + constructor(createObject, onPut) { + this._data = []; + this._createObject = createObject; + this._onPut = onPut; + } + pick() { + return this._data.length ? this._data.pop() : this._createObject(); + } + put(object) { + if (this._data.indexOf(object) === -1) { + this._onPut && this._onPut(object); + this._data.push(object); } + } + reset() { + this._data.length = 0; + } +}; + +// src/utils/get-intersection-area.ts +import { getIntersection } from "mezr"; +function getIntersectionArea(a, b) { + const intersection = getIntersection(a, b); + return intersection ? intersection.width * intersection.height : 0; } -new AutoScroll(); +// src/utils/get-intersection-score.ts +function getIntersectionScore(a, b) { + const area = getIntersectionArea(a, b); + if (!area) + return 0; + const maxArea = Math.min(a.width, b.width) * Math.min(a.height, b.height); + return area / maxArea * 100; +} -describe('BaseSensor', () => { - describe('drag property', () => { - it(`should be null on init`, function () { - const s = new BaseSensor(); - assert.equal(s.drag, null); - s.destroy(); - }); +// src/utils/is-window.ts +function isWindow(value) { + return value instanceof Window; +} + +// src/utils/get-scroll-element.ts +function getScrollElement(element) { + if (isWindow(element) || element === document.documentElement || element === document.body) { + return window; + } else { + return element; + } +} + +// src/utils/get-scroll-left.ts +function getScrollLeft(element) { + return isWindow(element) ? element.pageXOffset : element.scrollLeft; +} + +// src/utils/get-scroll-left-max.ts +function getScrollLeftMax(element) { + if (isWindow(element)) + element = document.documentElement; + return element.scrollWidth - element.clientWidth; +} + +// src/utils/get-scroll-top.ts +function getScrollTop(element) { + return isWindow(element) ? element.pageYOffset : element.scrollTop; +} + +// src/utils/get-scroll-top-max.ts +function getScrollTopMax(element) { + if (isWindow(element)) + element = document.documentElement; + return element.scrollHeight - element.clientHeight; +} + +// src/utils/is-intersecting.ts +function isIntersecting(a, b) { + return !(a.right <= b.left || b.right <= a.left || a.bottom <= b.top || b.bottom <= a.top); +} + +// src/auto-scroll/auto-scroll.ts +var R1 = { + width: 0, + height: 0, + left: 0, + right: 0, + top: 0, + bottom: 0 +}; +var R2 = { ...R1 }; +var DEFAULT_THRESHOLD = 50; +var SPEED_DATA = { + direction: "none", + threshold: 0, + distance: 0, + value: 0, + maxValue: 0, + duration: 0, + speed: 0, + deltaTime: 0, + isEnding: false +}; +var AUTO_SCROLL_AXIS = { + x: 1, + y: 2 +}; +var AUTO_SCROLL_AXIS_DIRECTION = { + forward: 4, + reverse: 8 +}; +var AUTO_SCROLL_DIRECTION_X = { + none: 0, + left: AUTO_SCROLL_AXIS.x | AUTO_SCROLL_AXIS_DIRECTION.reverse, + right: AUTO_SCROLL_AXIS.x | AUTO_SCROLL_AXIS_DIRECTION.forward +}; +var AUTO_SCROLL_DIRECTION_Y = { + none: 0, + up: AUTO_SCROLL_AXIS.y | AUTO_SCROLL_AXIS_DIRECTION.reverse, + down: AUTO_SCROLL_AXIS.y | AUTO_SCROLL_AXIS_DIRECTION.forward +}; +var AUTO_SCROLL_DIRECTION = { + ...AUTO_SCROLL_DIRECTION_X, + ...AUTO_SCROLL_DIRECTION_Y +}; +function getDirectionAsString(direction) { + switch (direction) { + case AUTO_SCROLL_DIRECTION_X.none: + case AUTO_SCROLL_DIRECTION_Y.none: + return "none"; + case AUTO_SCROLL_DIRECTION_X.left: + return "left"; + case AUTO_SCROLL_DIRECTION_X.right: + return "right"; + case AUTO_SCROLL_DIRECTION_Y.up: + return "up"; + case AUTO_SCROLL_DIRECTION_Y.down: + return "down"; + default: + throw new Error(`Unknown direction value: ${direction}`); + } +} +function getPaddedRect(rect, padding, result) { + let { left = 0, right = 0, top = 0, bottom = 0 } = padding; + left = Math.max(0, left); + right = Math.max(0, right); + top = Math.max(0, top); + bottom = Math.max(0, bottom); + result.width = rect.width + left + right; + result.height = rect.height + top + bottom; + result.left = rect.left - left; + result.top = rect.top - top; + result.right = rect.right + right; + result.bottom = rect.bottom + bottom; + return result; +} +function isScrolledToMax(scrollValue, maxScrollValue) { + return Math.ceil(scrollValue) >= Math.floor(maxScrollValue); +} +function computeThreshold(idealThreshold, targetSize) { + return Math.min(targetSize / 2, idealThreshold); +} +function computeEdgeOffset(threshold, inertAreaSize, itemSize, targetSize) { + return Math.max(0, itemSize + threshold * 2 + targetSize * inertAreaSize - targetSize) / 2; +} +var AutoScrollItemData = class { + constructor() { + this.positionX = 0; + this.positionY = 0; + this.directionX = AUTO_SCROLL_DIRECTION.none; + this.directionY = AUTO_SCROLL_DIRECTION.none; + this.overlapCheckRequestTime = 0; + } +}; +var AutoScrollAction = class { + constructor() { + this.element = null; + this.requestX = null; + this.requestY = null; + this.scrollLeft = 0; + this.scrollTop = 0; + } + reset() { + if (this.requestX) + this.requestX.action = null; + if (this.requestY) + this.requestY.action = null; + this.element = null; + this.requestX = null; + this.requestY = null; + this.scrollLeft = 0; + this.scrollTop = 0; + } + addRequest(request) { + if (AUTO_SCROLL_AXIS.x & request.direction) { + this.requestX && this.removeRequest(this.requestX); + this.requestX = request; + } else { + this.requestY && this.removeRequest(this.requestY); + this.requestY = request; + } + request.action = this; + } + removeRequest(request) { + if (this.requestX === request) { + this.requestX = null; + request.action = null; + } else if (this.requestY === request) { + this.requestY = null; + request.action = null; + } + } + computeScrollValues() { + if (!this.element) + return; + this.scrollLeft = this.requestX ? this.requestX.value : getScrollLeft(this.element); + this.scrollTop = this.requestY ? this.requestY.value : getScrollTop(this.element); + } + scroll() { + if (!this.element) + return; + if (this.element.scrollTo) { + this.element.scrollTo(this.scrollLeft, this.scrollTop); + } else { + this.element.scrollLeft = this.scrollLeft; + this.element.scrollTop = this.scrollTop; + } + } +}; +var AutoScrollRequest = class { + constructor() { + this.item = null; + this.element = null; + this.isActive = false; + this.isEnding = false; + this.direction = 0; + this.value = NaN; + this.maxValue = 0; + this.threshold = 0; + this.distance = 0; + this.deltaTime = 0; + this.speed = 0; + this.duration = 0; + this.action = null; + } + reset() { + if (this.isActive) + this.onStop(); + this.item = null; + this.element = null; + this.isActive = false; + this.isEnding = false; + this.direction = 0; + this.value = NaN; + this.maxValue = 0; + this.threshold = 0; + this.distance = 0; + this.deltaTime = 0; + this.speed = 0; + this.duration = 0; + this.action = null; + } + hasReachedEnd() { + return AUTO_SCROLL_AXIS_DIRECTION.forward & this.direction ? isScrolledToMax(this.value, this.maxValue) : this.value <= 0; + } + computeCurrentScrollValue() { + if (!this.element) + return 0; + if (this.value !== this.value) { + return AUTO_SCROLL_AXIS.x & this.direction ? getScrollLeft(this.element) : getScrollTop(this.element); + } + return Math.max(0, Math.min(this.value, this.maxValue)); + } + computeNextScrollValue() { + const delta = this.speed * (this.deltaTime / 1e3); + const nextValue = AUTO_SCROLL_AXIS_DIRECTION.forward & this.direction ? this.value + delta : this.value - delta; + return Math.max(0, Math.min(nextValue, this.maxValue)); + } + computeSpeed() { + if (!this.item || !this.element) + return 0; + const { speed } = this.item; + if (typeof speed === "function") { + SPEED_DATA.direction = getDirectionAsString(this.direction); + SPEED_DATA.threshold = this.threshold; + SPEED_DATA.distance = this.distance; + SPEED_DATA.value = this.value; + SPEED_DATA.maxValue = this.maxValue; + SPEED_DATA.duration = this.duration; + SPEED_DATA.speed = this.speed; + SPEED_DATA.deltaTime = this.deltaTime; + SPEED_DATA.isEnding = this.isEnding; + return speed(this.element, SPEED_DATA); + } else { + return speed; + } + } + tick(deltaTime) { + if (!this.isActive) { + this.isActive = true; + this.onStart(); + } + this.deltaTime = deltaTime; + this.value = this.computeCurrentScrollValue(); + this.speed = this.computeSpeed(); + this.value = this.computeNextScrollValue(); + this.duration += deltaTime; + return this.value; + } + onStart() { + if (!this.item || !this.element) + return; + const { onStart } = this.item; + if (typeof onStart === "function") { + onStart(this.element, getDirectionAsString(this.direction)); + } + } + onStop() { + if (!this.item || !this.element) + return; + const { onStop } = this.item; + if (typeof onStop === "function") { + onStop(this.element, getDirectionAsString(this.direction)); + } + } +}; +var AutoScroll = class { + constructor(options = {}) { + const { overlapCheckInterval = 150 } = options; + this.items = []; + this.settings = { + overlapCheckInterval + }; + this._actions = []; + this._isDestroyed = false; + this._isTicking = false; + this._tickTime = 0; + this._tickDeltaTime = 0; + this._requests = { + [AUTO_SCROLL_AXIS.x]: /* @__PURE__ */ new Map(), + [AUTO_SCROLL_AXIS.y]: /* @__PURE__ */ new Map() + }; + this._itemData = /* @__PURE__ */ new Map(); + this._requestPool = new Pool( + () => new AutoScrollRequest(), + (request) => request.reset() + ); + this._actionPool = new Pool( + () => new AutoScrollAction(), + (action) => action.reset() + ); + this._emitter = new Emitter4(); + this._frameRead = this._frameRead.bind(this); + this._frameWrite = this._frameWrite.bind(this); + } + _frameRead(time) { + if (this._isDestroyed) + return; + if (time && this._tickTime) { + this._tickDeltaTime = time - this._tickTime; + this._tickTime = time; + this._updateItems(); + this._updateRequests(); + this._updateActions(); + } else { + this._tickTime = time; + this._tickDeltaTime = 0; + } + } + _frameWrite() { + if (this._isDestroyed) + return; + this._applyActions(); + } + _startTicking() { + if (this._isTicking) + return; + this._isTicking = true; + ticker.on(tickerReadPhase, this._frameRead); + ticker.on(tickerWritePhase, this._frameWrite); + } + _stopTicking() { + if (!this._isTicking) + return; + this._isTicking = false; + this._tickTime = 0; + this._tickDeltaTime = 0; + ticker.off(tickerReadPhase, this._frameRead); + ticker.off(tickerWritePhase, this._frameWrite); + } + _getItemClientRect(item, result = { width: 0, height: 0, left: 0, right: 0, top: 0, bottom: 0 }) { + const { clientRect } = item; + result.left = clientRect.left; + result.top = clientRect.top; + result.width = clientRect.width; + result.height = clientRect.height; + result.right = clientRect.left + clientRect.width; + result.bottom = clientRect.top + clientRect.height; + return result; + } + _requestItemScroll(item, axis, element, direction, threshold, distance, maxValue) { + const reqMap = this._requests[axis]; + let request = reqMap.get(item); + if (request) { + if (request.element !== element || request.direction !== direction) { + request.reset(); + } + } else { + request = this._requestPool.pick(); + reqMap.set(item, request); + } + request.item = item; + request.element = element; + request.direction = direction; + request.threshold = threshold; + request.distance = distance; + request.maxValue = maxValue; + } + _cancelItemScroll(item, axis) { + const reqMap = this._requests[axis]; + const request = reqMap.get(item); + if (!request) + return; + if (request.action) + request.action.removeRequest(request); + this._requestPool.put(request); + reqMap.delete(item); + } + _checkItemOverlap(item, checkX, checkY) { + const { inertAreaSize, targets } = item; + if (!targets.length) { + checkX && this._cancelItemScroll(item, AUTO_SCROLL_AXIS.x); + checkY && this._cancelItemScroll(item, AUTO_SCROLL_AXIS.y); + return; + } + const itemData = this._itemData.get(item); + const moveDirectionX = itemData?.directionX; + const moveDirectionY = itemData?.directionY; + if (!moveDirectionX && !moveDirectionY) { + checkX && this._cancelItemScroll(item, AUTO_SCROLL_AXIS.x); + checkY && this._cancelItemScroll(item, AUTO_SCROLL_AXIS.y); + return; + } + const itemRect = this._getItemClientRect(item, R1); + let xElement = null; + let xPriority = -Infinity; + let xThreshold = 0; + let xScore = -Infinity; + let xDirection = AUTO_SCROLL_DIRECTION.none; + let xDistance = 0; + let xMaxScroll = 0; + let yElement = null; + let yPriority = -Infinity; + let yThreshold = 0; + let yScore = -Infinity; + let yDirection = AUTO_SCROLL_DIRECTION.none; + let yDistance = 0; + let yMaxScroll = 0; + let i = 0; + for (; i < targets.length; i++) { + const target = targets[i]; + const targetThreshold = typeof target.threshold === "number" ? target.threshold : DEFAULT_THRESHOLD; + const testAxisX = !!(checkX && moveDirectionX && target.axis !== "y"); + const testAxisY = !!(checkY && moveDirectionY && target.axis !== "x"); + const testPriority = target.priority || 0; + if ((!testAxisX || testPriority < xPriority) && (!testAxisY || testPriority < yPriority)) { + continue; + } + const testElement = getScrollElement(target.element || target); + const testMaxScrollX = testAxisX ? getScrollLeftMax(testElement) : -1; + const testMaxScrollY = testAxisY ? getScrollTopMax(testElement) : -1; + if (testMaxScrollX <= 0 && testMaxScrollY <= 0) + continue; + const testRect = getRect([testElement, "padding"], window); + let testScore = getIntersectionScore(itemRect, testRect) || -Infinity; + if (testScore === -Infinity) { + if (target.padding && isIntersecting(itemRect, getPaddedRect(testRect, target.padding, R2))) { + testScore = -(getDistance(itemRect, testRect) || 0); + } else { + continue; + } + } + if (testAxisX && testPriority >= xPriority && testMaxScrollX > 0 && (testPriority > xPriority || testScore > xScore)) { + let testDistance = 0; + let testDirection = AUTO_SCROLL_DIRECTION.none; + const testThreshold = computeThreshold(targetThreshold, testRect.width); + const testEdgeOffset = computeEdgeOffset( + testThreshold, + inertAreaSize, + itemRect.width, + testRect.width + ); + if (moveDirectionX === AUTO_SCROLL_DIRECTION.right) { + testDistance = testRect.right + testEdgeOffset - itemRect.right; + if (testDistance <= testThreshold && !isScrolledToMax(getScrollLeft(testElement), testMaxScrollX)) { + testDirection = AUTO_SCROLL_DIRECTION.right; + } + } else if (moveDirectionX === AUTO_SCROLL_DIRECTION.left) { + testDistance = itemRect.left - (testRect.left - testEdgeOffset); + if (testDistance <= testThreshold && getScrollLeft(testElement) > 0) { + testDirection = AUTO_SCROLL_DIRECTION.left; + } + } + if (testDirection) { + xElement = testElement; + xPriority = testPriority; + xThreshold = testThreshold; + xScore = testScore; + xDirection = testDirection; + xDistance = testDistance; + xMaxScroll = testMaxScrollX; + } + } + if (testAxisY && testPriority >= yPriority && testMaxScrollY > 0 && (testPriority > yPriority || testScore > yScore)) { + let testDistance = 0; + let testDirection = AUTO_SCROLL_DIRECTION_Y.none; + const testThreshold = computeThreshold(targetThreshold, testRect.height); + const testEdgeOffset = computeEdgeOffset( + testThreshold, + inertAreaSize, + itemRect.height, + testRect.height + ); + if (moveDirectionY === AUTO_SCROLL_DIRECTION.down) { + testDistance = testRect.bottom + testEdgeOffset - itemRect.bottom; + if (testDistance <= testThreshold && !isScrolledToMax(getScrollTop(testElement), testMaxScrollY)) { + testDirection = AUTO_SCROLL_DIRECTION.down; + } + } else if (moveDirectionY === AUTO_SCROLL_DIRECTION.up) { + testDistance = itemRect.top - (testRect.top - testEdgeOffset); + if (testDistance <= testThreshold && getScrollTop(testElement) > 0) { + testDirection = AUTO_SCROLL_DIRECTION.up; + } + } + if (testDirection) { + yElement = testElement; + yPriority = testPriority; + yThreshold = testThreshold; + yScore = testScore; + yDirection = testDirection; + yDistance = testDistance; + yMaxScroll = testMaxScrollY; + } + } + } + if (checkX) { + if (xElement && xDirection) { + this._requestItemScroll( + item, + AUTO_SCROLL_AXIS.x, + xElement, + xDirection, + xThreshold, + xDistance, + xMaxScroll + ); + } else { + this._cancelItemScroll(item, AUTO_SCROLL_AXIS.x); + } + } + if (checkY) { + if (yElement && yDirection) { + this._requestItemScroll( + item, + AUTO_SCROLL_AXIS.y, + yElement, + yDirection, + yThreshold, + yDistance, + yMaxScroll + ); + } else { + this._cancelItemScroll(item, AUTO_SCROLL_AXIS.y); + } + } + } + _updateScrollRequest(scrollRequest) { + const item = scrollRequest.item; + const { inertAreaSize, smoothStop, targets } = item; + const itemRect = this._getItemClientRect(item, R1); + let hasReachedEnd = null; + let i = 0; + for (; i < targets.length; i++) { + const target = targets[i]; + const testElement = getScrollElement(target.element || target); + if (testElement !== scrollRequest.element) + continue; + const testIsAxisX = !!(AUTO_SCROLL_AXIS.x & scrollRequest.direction); + if (testIsAxisX) { + if (target.axis === "y") + continue; + } else { + if (target.axis === "x") + continue; + } + const testMaxScroll = testIsAxisX ? getScrollLeftMax(testElement) : getScrollTopMax(testElement); + if (testMaxScroll <= 0) { + break; + } + const testRect = getRect([testElement, "padding"], window); + const testScore = getIntersectionScore(itemRect, testRect) || -Infinity; + if (testScore === -Infinity) { + const padding = target.scrollPadding || target.padding; + if (!(padding && isIntersecting(itemRect, getPaddedRect(testRect, padding, R2)))) { + break; + } + } + const targetThreshold = typeof target.threshold === "number" ? target.threshold : DEFAULT_THRESHOLD; + const testThreshold = computeThreshold( + targetThreshold, + testIsAxisX ? testRect.width : testRect.height + ); + const testEdgeOffset = computeEdgeOffset( + testThreshold, + inertAreaSize, + testIsAxisX ? itemRect.width : itemRect.height, + testIsAxisX ? testRect.width : testRect.height + ); + let testDistance = 0; + if (scrollRequest.direction === AUTO_SCROLL_DIRECTION.left) { + testDistance = itemRect.left - (testRect.left - testEdgeOffset); + } else if (scrollRequest.direction === AUTO_SCROLL_DIRECTION.right) { + testDistance = testRect.right + testEdgeOffset - itemRect.right; + } else if (scrollRequest.direction === AUTO_SCROLL_DIRECTION.up) { + testDistance = itemRect.top - (testRect.top - testEdgeOffset); + } else { + testDistance = testRect.bottom + testEdgeOffset - itemRect.bottom; + } + if (testDistance > testThreshold) { + break; + } + const testScroll = testIsAxisX ? getScrollLeft(testElement) : getScrollTop(testElement); + hasReachedEnd = AUTO_SCROLL_AXIS_DIRECTION.forward & scrollRequest.direction ? isScrolledToMax(testScroll, testMaxScroll) : testScroll <= 0; + if (hasReachedEnd) + break; + scrollRequest.maxValue = testMaxScroll; + scrollRequest.threshold = testThreshold; + scrollRequest.distance = testDistance; + scrollRequest.isEnding = false; + return true; + } + if (smoothStop === true && scrollRequest.speed > 0) { + if (hasReachedEnd === null) + hasReachedEnd = scrollRequest.hasReachedEnd(); + scrollRequest.isEnding = hasReachedEnd ? false : true; + } else { + scrollRequest.isEnding = false; + } + return scrollRequest.isEnding; + } + _updateItems() { + for (let i = 0; i < this.items.length; i++) { + const item = this.items[i]; + const itemData = this._itemData.get(item); + const { x, y } = item.position; + const prevX = itemData.positionX; + const prevY = itemData.positionY; + if (x === prevX && y === prevY) { + continue; + } + itemData.directionX = x > prevX ? AUTO_SCROLL_DIRECTION.right : x < prevX ? AUTO_SCROLL_DIRECTION.left : itemData.directionX; + itemData.directionY = y > prevY ? AUTO_SCROLL_DIRECTION.down : y < prevY ? AUTO_SCROLL_DIRECTION.up : itemData.directionY; + itemData.positionX = x; + itemData.positionY = y; + if (itemData.overlapCheckRequestTime === 0) { + itemData.overlapCheckRequestTime = this._tickTime; + } + } + } + _updateRequests() { + const items = this.items; + const requestsX = this._requests[AUTO_SCROLL_AXIS.x]; + const requestsY = this._requests[AUTO_SCROLL_AXIS.y]; + let i = 0; + for (; i < items.length; i++) { + const item = items[i]; + const itemData = this._itemData.get(item); + const checkTime = itemData.overlapCheckRequestTime; + let needsCheck = checkTime > 0 && this._tickTime - checkTime > this.settings.overlapCheckInterval; + let checkX = true; + const reqX = requestsX.get(item); + if (reqX && reqX.isActive) { + checkX = !this._updateScrollRequest(reqX); + if (checkX) { + needsCheck = true; + this._cancelItemScroll(item, AUTO_SCROLL_AXIS.x); + } + } + let checkY = true; + const reqY = requestsY.get(item); + if (reqY && reqY.isActive) { + checkY = !this._updateScrollRequest(reqY); + if (checkY) { + needsCheck = true; + this._cancelItemScroll(item, AUTO_SCROLL_AXIS.y); + } + } + if (needsCheck) { + itemData.overlapCheckRequestTime = 0; + this._checkItemOverlap(item, checkX, checkY); + } + } + } + _requestAction(request, axis) { + const isAxisX = axis === AUTO_SCROLL_AXIS.x; + let action = null; + let i = 0; + for (; i < this._actions.length; i++) { + action = this._actions[i]; + if (request.element !== action.element) { + action = null; + continue; + } + if (isAxisX ? action.requestX : action.requestY) { + this._cancelItemScroll(request.item, axis); + return; + } + break; + } + if (!action) + action = this._actionPool.pick(); + action.element = request.element; + action.addRequest(request); + request.tick(this._tickDeltaTime); + this._actions.push(action); + } + _updateActions() { + let i = 0; + for (i = 0; i < this.items.length; i++) { + const item = this.items[i]; + const reqX = this._requests[AUTO_SCROLL_AXIS.x].get(item); + const reqY = this._requests[AUTO_SCROLL_AXIS.y].get(item); + if (reqX) + this._requestAction(reqX, AUTO_SCROLL_AXIS.x); + if (reqY) + this._requestAction(reqY, AUTO_SCROLL_AXIS.y); + } + for (i = 0; i < this._actions.length; i++) { + this._actions[i].computeScrollValues(); + } + } + _applyActions() { + if (!this._actions.length) + return; + this._emitter.emit("beforescroll"); + let i = 0; + for (i = 0; i < this._actions.length; i++) { + this._actions[i].scroll(); + this._actionPool.put(this._actions[i]); + } + this._actions.length = 0; + let item; + for (i = 0; i < this.items.length; i++) { + item = this.items[i]; + if (item.onPrepareScrollEffect) { + item.onPrepareScrollEffect(); + } + } + for (i = 0; i < this.items.length; i++) { + item = this.items[i]; + if (item.onApplyScrollEffect) { + item.onApplyScrollEffect(); + } + } + this._emitter.emit("afterscroll"); + } + /** + * Bind a listener. + */ + on(eventName, listener) { + return this._emitter.on(eventName, listener); + } + /** + * Unbind a listener. + */ + off(eventName, listener) { + this._emitter.off(eventName, listener); + } + addItem(item) { + if (this._isDestroyed || this._itemData.has(item)) + return; + const { x, y } = item.position; + const itemData = new AutoScrollItemData(); + itemData.positionX = x; + itemData.positionY = y; + itemData.directionX = AUTO_SCROLL_DIRECTION.none; + itemData.directionY = AUTO_SCROLL_DIRECTION.none; + itemData.overlapCheckRequestTime = this._tickTime; + this._itemData.set(item, itemData); + this.items.push(item); + if (!this._isTicking) + this._startTicking(); + } + removeItem(item) { + if (this._isDestroyed) + return; + const index = this.items.indexOf(item); + if (index === -1) + return; + if (this._requests[AUTO_SCROLL_AXIS.x].get(item)) { + this._cancelItemScroll(item, AUTO_SCROLL_AXIS.x); + this._requests[AUTO_SCROLL_AXIS.x].delete(item); + } + if (this._requests[AUTO_SCROLL_AXIS.y].get(item)) { + this._cancelItemScroll(item, AUTO_SCROLL_AXIS.y); + this._requests[AUTO_SCROLL_AXIS.y].delete(item); + } + this._itemData.delete(item); + this.items.splice(index, 1); + if (this._isTicking && !this.items.length) { + this._stopTicking(); + } + } + isDestroyed() { + return this._isDestroyed; + } + isItemScrollingX(item) { + return !!this._requests[AUTO_SCROLL_AXIS.x].get(item)?.isActive; + } + isItemScrollingY(item) { + return !!this._requests[AUTO_SCROLL_AXIS.y].get(item)?.isActive; + } + isItemScrolling(item) { + return this.isItemScrollingX(item) || this.isItemScrollingY(item); + } + updateSettings(options = {}) { + const { overlapCheckInterval = this.settings.overlapCheckInterval } = options; + this.settings.overlapCheckInterval = overlapCheckInterval; + } + destroy() { + if (this._isDestroyed) + return; + const items = this.items.slice(0); + let i = 0; + for (; i < items.length; i++) { + this.removeItem(items[i]); + } + this._actions.length = 0; + this._requestPool.reset(); + this._actionPool.reset(); + this._emitter.off(); + this._isDestroyed = true; + } +}; + +// src/singletons/auto-scroll.ts +var autoScroll = new AutoScroll(); + +// tests/src/BaseSensor.ts +describe("BaseSensor", () => { + describe("drag property", () => { + it(`should be null on init`, function() { + const s = new BaseSensor(); + assert.equal(s.drag, null); + s.destroy(); + }); + }); + describe("isDestroyed property", () => { + it(`should be false on init`, function() { + const s = new BaseSensor(); + assert.equal(s.isDestroyed, false); + s.destroy(); + }); + }); + describe("_emitter", () => { + it("should allow duplicate listeners by default", () => { + const s = new BaseSensor(); + assert.equal(s["_emitter"].allowDuplicateListeners, true); + }); + it("should replace event listeners with duplicate ids by default", () => { + const s = new BaseSensor(); + assert.equal(s["_emitter"].idDedupeMode, "replace"); }); - describe('isDestroyed property', () => { - it(`should be false on init`, function () { - const s = new BaseSensor(); - assert.equal(s.isDestroyed, false); - s.destroy(); - }); + }); + describe("_start method", () => { + it(`should create drag data`, function() { + const s = new BaseSensor(); + s["_start"]({ type: "start", x: 1, y: 2 }); + assert.deepEqual(s.drag, { x: 1, y: 2 }); + s.destroy(); }); - describe('_emitter', () => { - it('should allow duplicate listeners by default', () => { - const s = new BaseSensor(); - assert.equal(s['_emitter'].allowDuplicateListeners, true); - }); - it('should replace event listeners with duplicate ids by default', () => { - const s = new BaseSensor(); - assert.equal(s['_emitter'].idDedupeMode, 'replace'); - }); + it(`should not modify isDestroyed property`, function() { + const s = new BaseSensor(); + assert.equal(s.isDestroyed, false); + s["_start"]({ type: "start", x: 1, y: 2 }); + assert.equal(s.isDestroyed, false); + s.destroy(); }); - describe('_start method', () => { - it(`should create drag data`, function () { - const s = new BaseSensor(); - s['_start']({ type: 'start', x: 1, y: 2 }); - assert.deepEqual(s.drag, { x: 1, y: 2 }); - s.destroy(); - }); - it(`should not modify isDestroyed property`, function () { - const s = new BaseSensor(); - assert.equal(s.isDestroyed, false); - s['_start']({ type: 'start', x: 1, y: 2 }); - assert.equal(s.isDestroyed, false); - s.destroy(); - }); - it(`should emit "start" event with correct arguments after updating instance properties`, function () { - const s = new BaseSensor(); - const startArgs = { type: 'start', x: 1, y: 2 }; - let emitCount = 0; - s.on('start', (data) => { - assert.deepEqual(s.drag, { x: data.x, y: data.y }); - assert.equal(s.isDestroyed, false); - assert.deepEqual(data, startArgs); - ++emitCount; - }); - s['_start'](startArgs); - assert.equal(emitCount, 1); - s.destroy(); - }); - it(`should not do anything if drag is already active`, function () { - const s = new BaseSensor(); - let emitCount = 0; - s.on('start', () => void ++emitCount); - s['_start']({ type: 'start', x: 1, y: 2 }); - const isDestroyed = s.isDestroyed; - const { drag } = s; - s['_start']({ type: 'start', x: 3, y: 4 }); - assert.deepEqual(s.drag, drag); - assert.equal(s.isDestroyed, isDestroyed); - assert.equal(emitCount, 1); - s.destroy(); - }); - it(`should not do anything if instance is destroyed (isDestroyed is true)`, function () { - const s = new BaseSensor(); - let emitCount = 0; - s.on('start', () => void ++emitCount); - s.destroy(); - const { drag, isDestroyed } = s; - s['_start']({ type: 'start', x: 3, y: 4 }); - assert.deepEqual(s.drag, drag); - assert.equal(s.isDestroyed, isDestroyed); - assert.equal(emitCount, 0); - s.destroy(); - }); + it(`should emit "start" event with correct arguments after updating instance properties`, function() { + const s = new BaseSensor(); + const startArgs = { type: "start", x: 1, y: 2 }; + let emitCount = 0; + s.on("start", (data) => { + assert.deepEqual(s.drag, { x: data.x, y: data.y }); + assert.equal(s.isDestroyed, false); + assert.deepEqual(data, startArgs); + ++emitCount; + }); + s["_start"](startArgs); + assert.equal(emitCount, 1); + s.destroy(); }); - describe('_move method', () => { - it(`should update drag data to reflect the provided coordinates`, function () { - const s = new BaseSensor(); - s['_start']({ type: 'start', x: 1, y: 2 }); - s['_move']({ type: 'move', x: 3, y: 4 }); - assert.deepEqual(s.drag, { x: 3, y: 4 }); - s.destroy(); - }); - it(`should not modify isDestroyed property`, function () { - const s = new BaseSensor(); - s['_start']({ type: 'start', x: 1, y: 2 }); - assert.equal(s.isDestroyed, false); - s['_move']({ type: 'move', x: 3, y: 4 }); - assert.equal(s.isDestroyed, false); - s.destroy(); - }); - it(`should emit "move" event with correct arguments after updating instance properties`, function () { - const s = new BaseSensor(); - const moveArgs = { type: 'move', x: 3, y: 4 }; - let emitCount = 0; - s.on('move', (data) => { - assert.deepEqual(s.drag, { x: data.x, y: data.y }); - assert.equal(s.isDestroyed, false); - assert.deepEqual(data, moveArgs); - ++emitCount; - }); - s['_start']({ type: 'start', x: 1, y: 2 }); - s['_move'](moveArgs); - assert.equal(emitCount, 1); - s.destroy(); - }); - it(`should not do anything if drag is not active`, function () { - const s = new BaseSensor(); - const { drag, isDestroyed } = s; - let emitCount = 0; - s.on('move', () => void ++emitCount); - s['_move']({ type: 'move', x: 3, y: 4 }); - assert.deepEqual(s.drag, drag); - assert.equal(s.isDestroyed, isDestroyed); - assert.equal(emitCount, 0); - s.destroy(); - }); + it(`should not do anything if drag is already active`, function() { + const s = new BaseSensor(); + let emitCount = 0; + s.on("start", () => void ++emitCount); + s["_start"]({ type: "start", x: 1, y: 2 }); + const isDestroyed = s.isDestroyed; + const { drag } = s; + s["_start"]({ type: "start", x: 3, y: 4 }); + assert.deepEqual(s.drag, drag); + assert.equal(s.isDestroyed, isDestroyed); + assert.equal(emitCount, 1); + s.destroy(); }); - describe('_cancel method', () => { - it(`should reset drag data`, function () { - const s = new BaseSensor(); - s['_start']({ type: 'start', x: 1, y: 2 }); - s['_cancel']({ type: 'cancel', x: 5, y: 6 }); - assert.equal(s.drag, null); - s.destroy(); - }); - it(`should not modify isDestroyed property`, function () { - const s = new BaseSensor(); - s['_start']({ type: 'start', x: 1, y: 2 }); - assert.equal(s.isDestroyed, false); - s['_cancel']({ type: 'cancel', x: 5, y: 6 }); - assert.equal(s.isDestroyed, false); - s.destroy(); - }); - it(`should emit "cancel" event with correct arguments after updating instance properties`, function () { - const s = new BaseSensor(); - const cancelArgs = { type: 'cancel', x: 5, y: 6 }; - let emitCount = 0; - s.on('cancel', (data) => { - assert.deepEqual(s.drag, { x: data.x, y: data.y }); - assert.equal(s.isDestroyed, false); - assert.deepEqual(data, cancelArgs); - ++emitCount; - }); - s['_start']({ type: 'start', x: 1, y: 2 }); - s['_cancel'](cancelArgs); - assert.equal(emitCount, 1); - s.destroy(); - }); - it(`should not do anything if drag is not active`, function () { - const s = new BaseSensor(); - const { drag, isDestroyed } = s; - let emitCount = 0; - s.on('cancel', () => void ++emitCount); - s['_cancel']({ type: 'cancel', x: 3, y: 4 }); - assert.deepEqual(s.drag, drag); - assert.equal(s.isDestroyed, isDestroyed); - assert.equal(emitCount, 0); - s.destroy(); - }); + it(`should not do anything if instance is destroyed (isDestroyed is true)`, function() { + const s = new BaseSensor(); + let emitCount = 0; + s.on("start", () => void ++emitCount); + s.destroy(); + const { drag, isDestroyed } = s; + s["_start"]({ type: "start", x: 3, y: 4 }); + assert.deepEqual(s.drag, drag); + assert.equal(s.isDestroyed, isDestroyed); + assert.equal(emitCount, 0); + s.destroy(); }); - describe('_end method', () => { - it(`should reset drag data`, function () { - const s = new BaseSensor(); - s['_start']({ type: 'start', x: 1, y: 2 }); - s['_end']({ type: 'end', x: 5, y: 6 }); - assert.equal(s.drag, null); - s.destroy(); - }); - it(`should not modify isDestroyed property`, function () { - const s = new BaseSensor(); - s['_start']({ type: 'start', x: 1, y: 2 }); - assert.equal(s.isDestroyed, false); - s['_end']({ type: 'end', x: 5, y: 6 }); - assert.equal(s.isDestroyed, false); - s.destroy(); - }); - it(`should emit "end" event with correct arguments after updating instance properties`, function () { - const s = new BaseSensor(); - const endArgs = { type: 'end', x: 5, y: 6 }; - let emitCount = 0; - s.on('end', (data) => { - assert.deepEqual(s.drag, { x: data.x, y: data.y }); - assert.equal(s.isDestroyed, false); - assert.deepEqual(data, endArgs); - ++emitCount; - }); - s['_start']({ type: 'start', x: 1, y: 2 }); - s['_end'](endArgs); - assert.equal(emitCount, 1); - s.destroy(); - }); - it(`should not do anything if drag is not active`, function () { - const s = new BaseSensor(); - const { drag, isDestroyed } = s; - let emitCount = 0; - s.on('end', () => void ++emitCount); - s['_end']({ type: 'end', x: 3, y: 4 }); - assert.deepEqual(s.drag, drag); - assert.equal(s.isDestroyed, isDestroyed); - assert.equal(emitCount, 0); - s.destroy(); - }); + }); + describe("_move method", () => { + it(`should update drag data to reflect the provided coordinates`, function() { + const s = new BaseSensor(); + s["_start"]({ type: "start", x: 1, y: 2 }); + s["_move"]({ type: "move", x: 3, y: 4 }); + assert.deepEqual(s.drag, { x: 3, y: 4 }); + s.destroy(); }); - describe('cancel method', () => { - it(`should reset drag data`, function () { - const s = new BaseSensor(); - s['_start']({ type: 'start', x: 1, y: 2 }); - s.cancel(); - assert.equal(s.drag, null); - s.destroy(); - }); - it(`should not modify isDestroyed property`, function () { - const s = new BaseSensor(); - s['_start']({ type: 'start', x: 1, y: 2 }); - assert.equal(s.isDestroyed, false); - s.cancel(); - assert.equal(s.isDestroyed, false); - s.destroy(); - }); - it(`should emit "cancel" event with correct arguments after updating instance properties`, function () { - const s = new BaseSensor(); - let emitCount = 0; - s.on('cancel', (data) => { - assert.deepEqual(s.drag, { x: data.x, y: data.y }); - assert.equal(s.isDestroyed, false); - assert.deepEqual(data, { - type: 'cancel', - x: 1, - y: 2, - }); - ++emitCount; - }); - s['_start']({ type: 'start', x: 1, y: 2 }); - s.cancel(); - assert.equal(emitCount, 1); - s.destroy(); - }); - it(`should not do anything if drag is not active`, function () { - const s = new BaseSensor(); - const { drag, isDestroyed } = s; - let emitCount = 0; - s.on('cancel', () => void ++emitCount); - s.cancel(); - assert.deepEqual(s.drag, drag); - assert.equal(s.isDestroyed, isDestroyed); - assert.equal(emitCount, 0); - s.destroy(); - }); + it(`should not modify isDestroyed property`, function() { + const s = new BaseSensor(); + s["_start"]({ type: "start", x: 1, y: 2 }); + assert.equal(s.isDestroyed, false); + s["_move"]({ type: "move", x: 3, y: 4 }); + assert.equal(s.isDestroyed, false); + s.destroy(); }); - describe('on method', () => { - it('should return a symbol (by default) which acts as an id for removing the event listener', () => { - const s = new BaseSensor(); - const idA = s.on('start', () => { }); - assert.equal(typeof idA, 'symbol'); - }); - it('should allow defining a custom id (string/symbol/number) for the event listener via third argument', () => { - const s = new BaseSensor(); - const idA = Symbol(); - assert.equal(s.on('start', () => { }, idA), idA); - const idB = 1; - assert.equal(s.on('start', () => { }, idB), idB); - const idC = 'foo'; - assert.equal(s.on('start', () => { }, idC), idC); - }); + it(`should emit "move" event with correct arguments after updating instance properties`, function() { + const s = new BaseSensor(); + const moveArgs = { type: "move", x: 3, y: 4 }; + let emitCount = 0; + s.on("move", (data) => { + assert.deepEqual(s.drag, { x: data.x, y: data.y }); + assert.equal(s.isDestroyed, false); + assert.deepEqual(data, moveArgs); + ++emitCount; + }); + s["_start"]({ type: "start", x: 1, y: 2 }); + s["_move"](moveArgs); + assert.equal(emitCount, 1); + s.destroy(); }); - describe('off method', () => { - it('should remove an event listener based on id', () => { - const s = new BaseSensor(); - let msg = ''; - const idA = s.on('start', () => void (msg += 'a')); - s.on('start', () => void (msg += 'b')); - s.off('start', idA); - s['_start']({ type: 'start', x: 1, y: 2 }); - assert.equal(msg, 'b'); - }); - it('should remove event listeners based on the listener callback', () => { - const s = new BaseSensor(); - let msg = ''; - const listenerA = () => void (msg += 'a'); - const listenerB = () => void (msg += 'b'); - s.on('start', listenerA); - s.on('start', listenerB); - s.on('start', listenerB); - s.on('start', listenerA); - s.off('start', listenerA); - s['_start']({ type: 'start', x: 1, y: 2 }); - assert.equal(msg, 'bb'); + it(`should not do anything if drag is not active`, function() { + const s = new BaseSensor(); + const { drag, isDestroyed } = s; + let emitCount = 0; + s.on("move", () => void ++emitCount); + s["_move"]({ type: "move", x: 3, y: 4 }); + assert.deepEqual(s.drag, drag); + assert.equal(s.isDestroyed, isDestroyed); + assert.equal(emitCount, 0); + s.destroy(); + }); + }); + describe("_cancel method", () => { + it(`should reset drag data`, function() { + const s = new BaseSensor(); + s["_start"]({ type: "start", x: 1, y: 2 }); + s["_cancel"]({ type: "cancel", x: 5, y: 6 }); + assert.equal(s.drag, null); + s.destroy(); + }); + it(`should not modify isDestroyed property`, function() { + const s = new BaseSensor(); + s["_start"]({ type: "start", x: 1, y: 2 }); + assert.equal(s.isDestroyed, false); + s["_cancel"]({ type: "cancel", x: 5, y: 6 }); + assert.equal(s.isDestroyed, false); + s.destroy(); + }); + it(`should emit "cancel" event with correct arguments after updating instance properties`, function() { + const s = new BaseSensor(); + const cancelArgs = { type: "cancel", x: 5, y: 6 }; + let emitCount = 0; + s.on("cancel", (data) => { + assert.deepEqual(s.drag, { x: data.x, y: data.y }); + assert.equal(s.isDestroyed, false); + assert.deepEqual(data, cancelArgs); + ++emitCount; + }); + s["_start"]({ type: "start", x: 1, y: 2 }); + s["_cancel"](cancelArgs); + assert.equal(emitCount, 1); + s.destroy(); + }); + it(`should not do anything if drag is not active`, function() { + const s = new BaseSensor(); + const { drag, isDestroyed } = s; + let emitCount = 0; + s.on("cancel", () => void ++emitCount); + s["_cancel"]({ type: "cancel", x: 3, y: 4 }); + assert.deepEqual(s.drag, drag); + assert.equal(s.isDestroyed, isDestroyed); + assert.equal(emitCount, 0); + s.destroy(); + }); + }); + describe("_end method", () => { + it(`should reset drag data`, function() { + const s = new BaseSensor(); + s["_start"]({ type: "start", x: 1, y: 2 }); + s["_end"]({ type: "end", x: 5, y: 6 }); + assert.equal(s.drag, null); + s.destroy(); + }); + it(`should not modify isDestroyed property`, function() { + const s = new BaseSensor(); + s["_start"]({ type: "start", x: 1, y: 2 }); + assert.equal(s.isDestroyed, false); + s["_end"]({ type: "end", x: 5, y: 6 }); + assert.equal(s.isDestroyed, false); + s.destroy(); + }); + it(`should emit "end" event with correct arguments after updating instance properties`, function() { + const s = new BaseSensor(); + const endArgs = { type: "end", x: 5, y: 6 }; + let emitCount = 0; + s.on("end", (data) => { + assert.deepEqual(s.drag, { x: data.x, y: data.y }); + assert.equal(s.isDestroyed, false); + assert.deepEqual(data, endArgs); + ++emitCount; + }); + s["_start"]({ type: "start", x: 1, y: 2 }); + s["_end"](endArgs); + assert.equal(emitCount, 1); + s.destroy(); + }); + it(`should not do anything if drag is not active`, function() { + const s = new BaseSensor(); + const { drag, isDestroyed } = s; + let emitCount = 0; + s.on("end", () => void ++emitCount); + s["_end"]({ type: "end", x: 3, y: 4 }); + assert.deepEqual(s.drag, drag); + assert.equal(s.isDestroyed, isDestroyed); + assert.equal(emitCount, 0); + s.destroy(); + }); + }); + describe("cancel method", () => { + it(`should reset drag data`, function() { + const s = new BaseSensor(); + s["_start"]({ type: "start", x: 1, y: 2 }); + s.cancel(); + assert.equal(s.drag, null); + s.destroy(); + }); + it(`should not modify isDestroyed property`, function() { + const s = new BaseSensor(); + s["_start"]({ type: "start", x: 1, y: 2 }); + assert.equal(s.isDestroyed, false); + s.cancel(); + assert.equal(s.isDestroyed, false); + s.destroy(); + }); + it(`should emit "cancel" event with correct arguments after updating instance properties`, function() { + const s = new BaseSensor(); + let emitCount = 0; + s.on("cancel", (data) => { + assert.deepEqual(s.drag, { x: data.x, y: data.y }); + assert.equal(s.isDestroyed, false); + assert.deepEqual(data, { + type: "cancel", + x: 1, + y: 2 }); + ++emitCount; + }); + s["_start"]({ type: "start", x: 1, y: 2 }); + s.cancel(); + assert.equal(emitCount, 1); + s.destroy(); + }); + it(`should not do anything if drag is not active`, function() { + const s = new BaseSensor(); + const { drag, isDestroyed } = s; + let emitCount = 0; + s.on("cancel", () => void ++emitCount); + s.cancel(); + assert.deepEqual(s.drag, drag); + assert.equal(s.isDestroyed, isDestroyed); + assert.equal(emitCount, 0); + s.destroy(); + }); + }); + describe("on method", () => { + it("should return a symbol (by default) which acts as an id for removing the event listener", () => { + const s = new BaseSensor(); + const idA = s.on("start", () => { + }); + assert.equal(typeof idA, "symbol"); + }); + it("should allow defining a custom id (string/symbol/number) for the event listener via third argument", () => { + const s = new BaseSensor(); + const idA = Symbol(); + assert.equal( + s.on("start", () => { + }, idA), + idA + ); + const idB = 1; + assert.equal( + s.on("start", () => { + }, idB), + idB + ); + const idC = "foo"; + assert.equal( + s.on("start", () => { + }, idC), + idC + ); + }); + }); + describe("off method", () => { + it("should remove an event listener based on id", () => { + const s = new BaseSensor(); + let msg = ""; + const idA = s.on("start", () => void (msg += "a")); + s.on("start", () => void (msg += "b")); + s.off("start", idA); + s["_start"]({ type: "start", x: 1, y: 2 }); + assert.equal(msg, "b"); + }); + it("should remove event listeners based on the listener callback", () => { + const s = new BaseSensor(); + let msg = ""; + const listenerA = () => void (msg += "a"); + const listenerB = () => void (msg += "b"); + s.on("start", listenerA); + s.on("start", listenerB); + s.on("start", listenerB); + s.on("start", listenerA); + s.off("start", listenerA); + s["_start"]({ type: "start", x: 1, y: 2 }); + assert.equal(msg, "bb"); }); - describe('destroy method', () => { - it(`should (if drag is active): + }); + describe("destroy method", () => { + it(`should (if drag is active): 1. set isDestroyed property to true - 2. emit "cancel" event with the current x/Y coordinates + 2. emit "cancel" event with the current x/y coordinates 3. reset drag data 4. emit "destroy" event 5. remove all listeners from the internal emitter - `, function () { - const s = new BaseSensor(); - const startArgs = { type: 'start', x: 1, y: 2 }; - let events = []; - s['_start'](startArgs); - s.on('start', (data) => void events.push(data.type)); - s.on('move', (data) => void events.push(data.type)); - s.on('end', (data) => void events.push(data.type)); - s.on('cancel', (data) => { - assert.deepEqual(s.drag, { x: startArgs.x, y: startArgs.y }); - assert.equal(s.isDestroyed, true); - assert.deepEqual(data, { - type: 'cancel', - x: startArgs.x, - y: startArgs.y, - }); - events.push(data.type); - }); - s.on('destroy', (data) => { - assert.equal(s.drag, null); - assert.equal(s.isDestroyed, true); - assert.deepEqual(data, { - type: 'destroy', - }); - events.push(data.type); - }); - assert.equal(s['_emitter'].listenerCount(), 5); - s.destroy(); - assert.equal(s.drag, null); - assert.equal(s.isDestroyed, true); - assert.deepEqual(events, ['cancel', 'destroy']); - assert.equal(s['_emitter'].listenerCount(), 0); + `, function() { + const s = new BaseSensor(); + const startArgs = { type: "start", x: 1, y: 2 }; + let events = []; + s["_start"](startArgs); + s.on("start", (data) => void events.push(data.type)); + s.on("move", (data) => void events.push(data.type)); + s.on("end", (data) => void events.push(data.type)); + s.on("cancel", (data) => { + assert.deepEqual(s.drag, { x: startArgs.x, y: startArgs.y }); + assert.equal(s.isDestroyed, true); + assert.deepEqual(data, { + type: "cancel", + x: startArgs.x, + y: startArgs.y }); - it(`should (if drag is not active): + events.push(data.type); + }); + s.on("destroy", (data) => { + assert.equal(s.drag, null); + assert.equal(s.isDestroyed, true); + assert.deepEqual(data, { + type: "destroy" + }); + events.push(data.type); + }); + assert.equal(s["_emitter"].listenerCount(), 5); + s.destroy(); + assert.equal(s.drag, null); + assert.equal(s.isDestroyed, true); + assert.deepEqual(events, ["cancel", "destroy"]); + assert.equal(s["_emitter"].listenerCount(), 0); + }); + it(`should (if drag is not active): 1. set isDestroyed property to true 2. emit "destroy" event 3. remove all listeners from the internal emitter - `, function () { - const s = new BaseSensor(); - let events = []; - s.on('start', (data) => void events.push(data.type)); - s.on('move', (data) => void events.push(data.type)); - s.on('end', (data) => void events.push(data.type)); - s.on('cancel', (data) => void events.push(data.type)); - s.on('destroy', (data) => { - assert.equal(s.drag, null); - assert.equal(s.isDestroyed, true); - assert.deepEqual(data, { - type: 'destroy', - }); - events.push(data.type); - }); - assert.equal(s['_emitter'].listenerCount(), 5); - s.destroy(); - assert.equal(s.drag, null); - assert.equal(s.isDestroyed, true); - assert.deepEqual(events, ['destroy']); - assert.equal(s['_emitter'].listenerCount(), 0); - }); - it('should not do anything if the sensor is already destroyed', () => { - const s = new BaseSensor(); - s.destroy(); - let events = []; - s.on('start', (data) => void events.push(data.type)); - s.on('move', (data) => void events.push(data.type)); - s.on('end', (data) => void events.push(data.type)); - s.on('cancel', (data) => void events.push(data.type)); - s.on('destroy', (data) => void events.push(data.type)); - s.destroy(); - assert.equal(s.drag, null); - assert.equal(s.isDestroyed, true); - assert.deepEqual(events, []); + `, function() { + const s = new BaseSensor(); + let events = []; + s.on("start", (data) => void events.push(data.type)); + s.on("move", (data) => void events.push(data.type)); + s.on("end", (data) => void events.push(data.type)); + s.on("cancel", (data) => void events.push(data.type)); + s.on("destroy", (data) => { + assert.equal(s.drag, null); + assert.equal(s.isDestroyed, true); + assert.deepEqual(data, { + type: "destroy" }); + events.push(data.type); + }); + assert.equal(s["_emitter"].listenerCount(), 5); + s.destroy(); + assert.equal(s.drag, null); + assert.equal(s.isDestroyed, true); + assert.deepEqual(events, ["destroy"]); + assert.equal(s["_emitter"].listenerCount(), 0); }); + it("should not do anything if the sensor is already destroyed", () => { + const s = new BaseSensor(); + s.destroy(); + let events = []; + s.on("start", (data) => void events.push(data.type)); + s.on("move", (data) => void events.push(data.type)); + s.on("end", (data) => void events.push(data.type)); + s.on("cancel", (data) => void events.push(data.type)); + s.on("destroy", (data) => void events.push(data.type)); + s.destroy(); + assert.equal(s.drag, null); + assert.equal(s.isDestroyed, true); + assert.deepEqual(events, []); + }); + }); }); -const defaultStyles = { - display: 'block', - position: 'absolute', - left: '0px', - top: '0px', - width: '100px', - height: '100px', - padding: '0px', - margin: '0px', - boxSizing: 'border-box', - backgroundColor: 'red', +// tests/src/utils/createTestElement.ts +var defaultStyles = { + display: "block", + position: "absolute", + left: "0px", + top: "0px", + width: "100px", + height: "100px", + padding: "0px", + margin: "0px", + boxSizing: "border-box", + backgroundColor: "red" }; -function createTestElement(styles = {}) { - const el = document.createElement('div'); - el.tabIndex = 0; - Object.assign(el.style, Object.assign(Object.assign({}, defaultStyles), styles)); - document.body.appendChild(el); - return el; -} - -/*! ***************************************************************************** -Copyright (c) Microsoft Corporation. - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH -REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY -AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, -INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM -LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR -OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR -PERFORMANCE OF THIS SOFTWARE. -***************************************************************************** */ -/* global Reflect, Promise */ - - -function __rest(s, e) { - var t = {}; - for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) - t[p] = s[p]; - if (s != null && typeof Object.getOwnPropertySymbols === "function") - for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { - if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) - t[p[i]] = s[p[i]]; - } - return t; -} - -function __awaiter(thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); +function createTestElement(styles2 = {}) { + const el = document.createElement("div"); + el.tabIndex = 0; + Object.assign(el.style, { ...defaultStyles, ...styles2 }); + document.body.appendChild(el); + return el; } -class FakeTouch { - constructor(options = {}) { - const { identifier = 0, target = null, clientX = 0, clientY = 0, screenX = 0, screenY = 0, radiusX = 0, radiusY = 0, rotationAngle = 0, force = 0, } = options; - const mouseEvent = new MouseEvent('mousedown', { clientX, clientY, screenX, screenY }); - this.identifier = identifier; - this.target = - target || - document.elementFromPoint(mouseEvent.clientX, mouseEvent.clientY) || - document.documentElement; - this.clientX = mouseEvent.clientX; - this.clientY = mouseEvent.clientY; - this.screenX = mouseEvent.screenX; - this.screenY = mouseEvent.screenY; - this.pageX = mouseEvent.pageX; - this.pageY = mouseEvent.pageY; - this.radiusX = radiusX; - this.radiusY = radiusY; - this.rotationAngle = rotationAngle; - this.force = force; - } -} -class FakeTouchEvent extends UIEvent { - constructor(type, options = {}) { - const { altKey = false, ctrlKey = false, metaKey = false, shiftKey = false, touches = [], targetTouches = [], changedTouches = [] } = options, parentOptions = __rest(options, ["altKey", "ctrlKey", "metaKey", "shiftKey", "touches", "targetTouches", "changedTouches"]); - super(type, parentOptions); - this.altKey = altKey; - this.ctrlKey = ctrlKey; - this.metaKey = metaKey; - this.shiftKey = shiftKey; - this.touches = touches; - this.targetTouches = targetTouches; - this.changedTouches = changedTouches; - } -} +// tests/src/utils/FakeTouch.ts +var FakeTouch = class { + constructor(options = {}) { + const { + identifier = 0, + target = null, + clientX = 0, + clientY = 0, + screenX = 0, + screenY = 0, + radiusX = 0, + radiusY = 0, + rotationAngle = 0, + force = 0 + } = options; + const mouseEvent = new MouseEvent("mousedown", { clientX, clientY, screenX, screenY }); + this.identifier = identifier; + this.target = target || document.elementFromPoint(mouseEvent.clientX, mouseEvent.clientY) || document.documentElement; + this.clientX = mouseEvent.clientX; + this.clientY = mouseEvent.clientY; + this.screenX = mouseEvent.screenX; + this.screenY = mouseEvent.screenY; + this.pageX = mouseEvent.pageX; + this.pageY = mouseEvent.pageY; + this.radiusX = radiusX; + this.radiusY = radiusY; + this.rotationAngle = rotationAngle; + this.force = force; + } +}; +var FakeTouchEvent = class extends UIEvent { + constructor(type, options = {}) { + const { + altKey = false, + ctrlKey = false, + metaKey = false, + shiftKey = false, + touches = [], + targetTouches = [], + changedTouches = [], + ...parentOptions + } = options; + super(type, parentOptions); + this.altKey = altKey; + this.ctrlKey = ctrlKey; + this.metaKey = metaKey; + this.shiftKey = shiftKey; + this.touches = touches; + this.targetTouches = targetTouches; + this.changedTouches = changedTouches; + } +}; +// tests/src/utils/createFakeTouchEvent.ts function createFakeTouchEvent(type, options = {}) { - const { identifier, target, clientX, clientY, screenX, screenY, radiusX, radiusY, rotationAngle, force } = options, eventOptions = __rest(options, ["identifier", "target", "clientX", "clientY", "screenX", "screenY", "radiusX", "radiusY", "rotationAngle", "force"]); - const touch = new FakeTouch({ - identifier, - target, - clientX, - clientY, - screenX, - screenY, - radiusX, - radiusY, - rotationAngle, - force, - }); - const touchEvent = new FakeTouchEvent(type, Object.assign(Object.assign({}, eventOptions), { touches: [touch], changedTouches: [touch], targetTouches: [touch] })); - return touchEvent; + const { + identifier, + target, + clientX, + clientY, + screenX, + screenY, + radiusX, + radiusY, + rotationAngle, + force, + ...eventOptions + } = options; + const touch = new FakeTouch({ + identifier, + target, + clientX, + clientY, + screenX, + screenY, + radiusX, + radiusY, + rotationAngle, + force + }); + const touchEvent = new FakeTouchEvent(type, { + ...eventOptions, + touches: [touch], + changedTouches: [touch], + targetTouches: [touch] + }); + return touchEvent; } -let idCounter = 100; -function createFakeDrag(steps, options) { - return __awaiter(this, void 0, void 0, function* () { - const { eventType = 'mouse', stepDuration = 16, extraSteps = 0, cancelAtEnd = false, pointerId = ++idCounter, pointerType = 'touch', onAfterStep, } = options; - const finalSteps = [...steps]; - if (extraSteps > 0) { - const stepTo = finalSteps.pop(); - const stepFrom = finalSteps.pop(); - finalSteps.push(stepFrom); - for (let i = 0; i < extraSteps; i++) { - const alpha = (i + 1) / (extraSteps + 1); - const x = stepFrom.x + (stepTo.x - stepFrom.x) * alpha; - const y = stepFrom.y + (stepTo.y - stepFrom.y) * alpha; - finalSteps.push({ - x: Math.round(x), - y: Math.round(y), - }); - } - finalSteps.push(stepTo); - } - for (let i = 0; i < finalSteps.length; i++) { - const isStart = i === 0; - const isEnd = i === finalSteps.length - 1; - const { x, y } = finalSteps[i]; - if (!isStart && !isEnd) { - const prevStep = finalSteps[i - 1]; - if (prevStep.x === x && prevStep.y === y) { - continue; - } - } - if (!isStart && stepDuration > 0) { - yield new Promise((resolve) => setTimeout(resolve, stepDuration)); - } - const target = document.elementFromPoint(x, y); - if (!target) - throw new Error('No event target found!'); - switch (eventType) { - case 'mouse': { - const eventName = isStart ? 'mousedown' : isEnd ? 'mouseup' : 'mousemove'; - const event = new MouseEvent(eventName, { - clientX: x, - clientY: y, - bubbles: true, - cancelable: true, - view: window, - }); - target.dispatchEvent(event); - if (onAfterStep) - onAfterStep(event); - break; - } - case 'touch': { - const eventName = isStart - ? 'touchstart' - : isEnd - ? cancelAtEnd - ? 'touchcancel' - : 'touchend' - : 'touchmove'; - const event = createFakeTouchEvent(eventName, { - clientX: x, - clientY: y, - bubbles: true, - cancelable: true, - view: window, - target, - identifier: pointerId, - }); - target.dispatchEvent(event); - if (onAfterStep) - onAfterStep(event); - break; - } - case 'pointer': { - const eventName = isStart - ? 'pointerdown' - : isEnd - ? cancelAtEnd - ? 'pointercancel' - : 'pointerup' - : 'pointermove'; - const event = new PointerEvent(eventName, { - clientX: x, - clientY: y, - bubbles: true, - cancelable: true, - view: window, - pointerId, - pointerType, - isPrimary: true, - width: 100, - height: 100, - }); - target.dispatchEvent(event); - if (onAfterStep) - onAfterStep(event); - break; - } - } - } - }); +// tests/src/utils/createFakeDrag.ts +var idCounter = 100; +async function createFakeDrag(steps, options) { + const { + eventType = "mouse", + stepDuration = 16, + extraSteps = 0, + cancelAtEnd = false, + pointerId = ++idCounter, + pointerType = "touch", + onAfterStep + } = options; + const finalSteps = [...steps]; + if (extraSteps > 0) { + const stepTo = finalSteps.pop(); + const stepFrom = finalSteps.pop(); + finalSteps.push(stepFrom); + for (let i = 0; i < extraSteps; i++) { + const alpha = (i + 1) / (extraSteps + 1); + const x = stepFrom.x + (stepTo.x - stepFrom.x) * alpha; + const y = stepFrom.y + (stepTo.y - stepFrom.y) * alpha; + finalSteps.push({ + x: Math.round(x), + y: Math.round(y) + }); + } + finalSteps.push(stepTo); + } + for (let i = 0; i < finalSteps.length; i++) { + const isStart = i === 0; + const isEnd = i === finalSteps.length - 1; + const { x, y } = finalSteps[i]; + if (!isStart && !isEnd) { + const prevStep = finalSteps[i - 1]; + if (prevStep.x === x && prevStep.y === y) { + continue; + } + } + if (!isStart && stepDuration > 0) { + await new Promise((resolve) => setTimeout(resolve, stepDuration)); + } + const target = document.elementFromPoint(x, y); + if (!target) + throw new Error("No event target found!"); + switch (eventType) { + case "mouse": { + const eventName = isStart ? "mousedown" : isEnd ? "mouseup" : "mousemove"; + const event = new MouseEvent(eventName, { + clientX: x, + clientY: y, + bubbles: true, + cancelable: true, + view: window + }); + target.dispatchEvent(event); + if (onAfterStep) + onAfterStep(event); + break; + } + case "touch": { + const eventName = isStart ? "touchstart" : isEnd ? cancelAtEnd ? "touchcancel" : "touchend" : "touchmove"; + const event = createFakeTouchEvent(eventName, { + clientX: x, + clientY: y, + bubbles: true, + cancelable: true, + view: window, + target, + identifier: pointerId + }); + target.dispatchEvent(event); + if (onAfterStep) + onAfterStep(event); + break; + } + case "pointer": { + const eventName = isStart ? "pointerdown" : isEnd ? cancelAtEnd ? "pointercancel" : "pointerup" : "pointermove"; + const event = new PointerEvent(eventName, { + clientX: x, + clientY: y, + bubbles: true, + cancelable: true, + view: window, + pointerId, + pointerType, + isPrimary: true, + width: 100, + height: 100 + }); + target.dispatchEvent(event); + if (onAfterStep) + onAfterStep(event); + break; + } + } + } } +// tests/src/utils/defaultPageStyles.ts function addDefaultPageStyles(doc) { - if (doc.getElementById('default-page-styles')) - return; - const styleSheet = doc.createElement('style'); - styleSheet.id = 'default-page-styles'; - styleSheet.type = 'text/css'; - styleSheet.innerHTML = ` + if (doc.getElementById("default-page-styles")) + return; + const styleSheet = doc.createElement("style"); + styleSheet.id = "default-page-styles"; + styleSheet.type = "text/css"; + styleSheet.innerHTML = ` * { box-sizing: border-box; } @@ -2012,687 +6265,1279 @@ function addDefaultPageStyles(doc) { margin: 0; } `; - doc.head.appendChild(styleSheet); + doc.head.appendChild(styleSheet); } function removeDefaultPageStyles(doc) { - var _a; - (_a = doc.getElementById('default-page-styles')) === null || _a === void 0 ? void 0 : _a.remove(); + doc.getElementById("default-page-styles")?.remove(); } -describe('PointerSensor', () => { - beforeEach(() => { - if (IS_BROWSER) { - addDefaultPageStyles(document); - return new Promise((resolve) => requestAnimationFrame(() => requestAnimationFrame(resolve))); - } - return; +// tests/src/PointerSensor.ts +describe("PointerSensor", () => { + beforeEach(() => { + if (IS_BROWSER) { + addDefaultPageStyles(document); + return new Promise((resolve) => requestAnimationFrame(() => requestAnimationFrame(resolve))); + } + return; + }); + afterEach(() => { + if (IS_BROWSER) { + removeDefaultPageStyles(document); + return new Promise((resolve) => requestAnimationFrame(() => requestAnimationFrame(resolve))); + } + return; + }); + describe("drag property", () => { + it(`should be null on init`, function() { + const s = new PointerSensor(document.body); + assert.equal(s.drag, null); + s.destroy(); + }); + }); + describe("isDestroyed property", () => { + it(`should be false on init`, function() { + const s = new PointerSensor(document.body); + assert.equal(s.isDestroyed, false); + s.destroy(); + }); + }); + describe("target element parameter", () => { + it("should accept document.documentElement", function() { + if (!IS_BROWSER) + this.skip(); + const s = new PointerSensor(document.documentElement, { sourceEvents: "mouse" }); + document.documentElement.dispatchEvent(new MouseEvent("mousedown")); + assert.notEqual(s.drag, null); + s.destroy(); }); - afterEach(() => { - if (IS_BROWSER) { - removeDefaultPageStyles(document); - return new Promise((resolve) => requestAnimationFrame(() => requestAnimationFrame(resolve))); + it("should accept document.body", function() { + if (!IS_BROWSER) + this.skip(); + const s = new PointerSensor(document.body, { sourceEvents: "mouse" }); + document.body.dispatchEvent(new MouseEvent("mousedown")); + assert.notEqual(s.drag, null); + s.destroy(); + }); + it("should accept a descendant of document.body", function() { + if (!IS_BROWSER) + this.skip(); + const el = createTestElement(); + const s = new PointerSensor(el, { sourceEvents: "mouse" }); + el.dispatchEvent(new MouseEvent("mousedown")); + assert.notEqual(s.drag, null); + el.remove(); + s.destroy(); + }); + }); + describe("sourceEvents option", () => { + it('should listen to mouse/pointer/touch events when set to "mouse"/"pointer"/"touch"', function() { + if (!IS_BROWSER) + this.skip(); + const mouseSensor = new PointerSensor(document.body, { sourceEvents: "mouse" }); + const pointerSensor = new PointerSensor(document.body, { sourceEvents: "pointer" }); + const touchSensor = new PointerSensor(document.body, { sourceEvents: "touch" }); + const mouseList = []; + const pointerList = []; + const touchList = []; + mouseSensor.on("start", (e) => mouseList.push(e.type)); + mouseSensor.on("move", (e) => mouseList.push(e.type)); + mouseSensor.on("end", (e) => mouseList.push(e.type)); + pointerSensor.on("start", (e) => pointerList.push(e.type)); + pointerSensor.on("move", (e) => pointerList.push(e.type)); + pointerSensor.on("end", (e) => pointerList.push(e.type)); + touchSensor.on("start", (e) => touchList.push(e.type)); + touchSensor.on("move", (e) => touchList.push(e.type)); + touchSensor.on("end", (e) => touchList.push(e.type)); + createFakeDrag( + [ + { x: 1, y: 1 }, + { x: 2, y: 2 }, + { x: 3, y: 3 } + ], + { + eventType: "mouse", + stepDuration: 0 } - return; + ); + assert.deepEqual(mouseList, ["start", "move", "end"]); + assert.deepEqual(pointerList, []); + assert.deepEqual(touchList, []); + mouseList.length = 0; + createFakeDrag( + [ + { x: 1, y: 1 }, + { x: 2, y: 2 }, + { x: 3, y: 3 } + ], + { + eventType: "pointer", + stepDuration: 0 + } + ); + assert.deepEqual(mouseList, []); + assert.deepEqual(pointerList, ["start", "move", "end"]); + assert.deepEqual(touchList, []); + pointerList.length = 0; + createFakeDrag( + [ + { x: 1, y: 1 }, + { x: 2, y: 2 }, + { x: 3, y: 3 } + ], + { + eventType: "touch", + stepDuration: 0 + } + ); + assert.deepEqual(mouseList, []); + assert.deepEqual(pointerList, []); + assert.deepEqual(touchList, ["start", "move", "end"]); + mouseSensor.destroy(); + pointerSensor.destroy(); + touchSensor.destroy(); }); - describe('drag property', () => { - it(`should be null on init`, function () { - const s = new PointerSensor(document.body); - assert.equal(s.drag, null); - s.destroy(); - }); + }); + describe("startPredicate option", () => { + it("should allow start only when e.button is 0 by default", function() { + const s = new PointerSensor(document.body, { sourceEvents: "mouse" }); + document.body.dispatchEvent(new MouseEvent("mousedown", { button: 1 })); + assert.equal(s.drag, null); + document.body.dispatchEvent(new MouseEvent("mousedown", { button: 0 })); + assert.notEqual(s.drag, null); + s.destroy(); }); - describe('isDestroyed property', () => { - it(`should be false on init`, function () { - const s = new PointerSensor(document.body); - assert.equal(s.isDestroyed, false); - s.destroy(); - }); + it("should allow start when true is returned and prevent start when false is returned", function() { + const s1 = new PointerSensor(document.body, { + sourceEvents: "mouse", + startPredicate: () => true + }); + const s2 = new PointerSensor(document.body, { + sourceEvents: "mouse", + startPredicate: () => false + }); + document.body.dispatchEvent(new MouseEvent("mousedown")); + assert.notEqual(s1.drag, null); + assert.equal(s2.drag, null); + s1.destroy(); + s2.destroy(); }); - describe('target element parameter', () => { - it('should accept document.documentElement', function () { - if (!IS_BROWSER) - this.skip(); - const s = new PointerSensor(document.documentElement, { sourceEvents: 'mouse' }); - document.documentElement.dispatchEvent(new MouseEvent('mousedown')); - assert.notEqual(s.drag, null); - s.destroy(); - }); - it('should accept document.body', function () { - if (!IS_BROWSER) - this.skip(); - const s = new PointerSensor(document.body, { sourceEvents: 'mouse' }); - document.body.dispatchEvent(new MouseEvent('mousedown')); - assert.notEqual(s.drag, null); - s.destroy(); - }); - it('should accept a descendant of document.body', function () { - if (!IS_BROWSER) - this.skip(); - const el = createTestElement(); - const s = new PointerSensor(el, { sourceEvents: 'mouse' }); - el.dispatchEvent(new MouseEvent('mousedown')); - assert.notEqual(s.drag, null); - el.remove(); - s.destroy(); - }); + }); + describe("updateSettings method", () => { + it(`should update startPredicate setting`, function() { + const s = new PointerSensor(document.body, { + sourceEvents: "mouse", + startPredicate: () => false + }); + document.body.dispatchEvent(new MouseEvent("mousedown")); + assert.equal(s.drag, null); + s.updateSettings({ startPredicate: () => true }); + document.body.dispatchEvent(new MouseEvent("mousedown")); + assert.notEqual(s.drag, null); }); - describe('sourceEvents option', () => { - it('should listen to mouse/pointer/touch events when set to "mouse"/"pointer"/"touch"', function () { - if (!IS_BROWSER) - this.skip(); - const mouseSensor = new PointerSensor(document.body, { sourceEvents: 'mouse' }); - const pointerSensor = new PointerSensor(document.body, { sourceEvents: 'pointer' }); - const touchSensor = new PointerSensor(document.body, { sourceEvents: 'touch' }); - const mouseList = []; - const pointerList = []; - const touchList = []; - mouseSensor.on('start', (e) => mouseList.push(e.type)); - mouseSensor.on('move', (e) => mouseList.push(e.type)); - mouseSensor.on('end', (e) => mouseList.push(e.type)); - pointerSensor.on('start', (e) => pointerList.push(e.type)); - pointerSensor.on('move', (e) => pointerList.push(e.type)); - pointerSensor.on('end', (e) => pointerList.push(e.type)); - touchSensor.on('start', (e) => touchList.push(e.type)); - touchSensor.on('move', (e) => touchList.push(e.type)); - touchSensor.on('end', (e) => touchList.push(e.type)); - createFakeDrag([ - { x: 1, y: 1 }, - { x: 2, y: 2 }, - { x: 3, y: 3 }, - ], { - eventType: 'mouse', - stepDuration: 0, - }); - assert.deepEqual(mouseList, ['start', 'move', 'end']); - assert.deepEqual(pointerList, []); - assert.deepEqual(touchList, []); - mouseList.length = 0; - createFakeDrag([ - { x: 1, y: 1 }, - { x: 2, y: 2 }, - { x: 3, y: 3 }, - ], { - eventType: 'pointer', - stepDuration: 0, - }); - assert.deepEqual(mouseList, []); - assert.deepEqual(pointerList, ['start', 'move', 'end']); - assert.deepEqual(touchList, []); - pointerList.length = 0; - createFakeDrag([ - { x: 1, y: 1 }, - { x: 2, y: 2 }, - { x: 3, y: 3 }, - ], { - eventType: 'touch', - stepDuration: 0, - }); - assert.deepEqual(mouseList, []); - assert.deepEqual(pointerList, []); - assert.deepEqual(touchList, ['start', 'move', 'end']); - mouseSensor.destroy(); - pointerSensor.destroy(); - touchSensor.destroy(); - }); + it(`should update sourceEvents setting`, function() { + const s = new PointerSensor(document.body, { + sourceEvents: "pointer", + startPredicate: () => true + }); + document.body.dispatchEvent(new MouseEvent("mousedown")); + assert.equal(s.drag, null); + s.updateSettings({ sourceEvents: "mouse" }); + document.body.dispatchEvent(new MouseEvent("mousedown")); + assert.notEqual(s.drag, null); }); - describe('startPredicate option', () => { - it('should allow start only when e.button is 0 by default', function () { - const s = new PointerSensor(document.body, { sourceEvents: 'mouse' }); - document.body.dispatchEvent(new MouseEvent('mousedown', { button: 1 })); - assert.equal(s.drag, null); - document.body.dispatchEvent(new MouseEvent('mousedown', { button: 0 })); - assert.notEqual(s.drag, null); - s.destroy(); - }); - it('should allow start when true is returned and prevent start when false is returned', function () { - const s1 = new PointerSensor(document.body, { - sourceEvents: 'mouse', - startPredicate: () => true, - }); - const s2 = new PointerSensor(document.body, { - sourceEvents: 'mouse', - startPredicate: () => false, - }); - document.body.dispatchEvent(new MouseEvent('mousedown')); - assert.notEqual(s1.drag, null); - assert.equal(s2.drag, null); - s1.destroy(); - s2.destroy(); - }); + }); + describe("start event", () => { + it(`should be triggered correctly on mousedown`, function() { + if (!IS_BROWSER) + this.skip(); + const el = createTestElement(); + const s = new PointerSensor(el, { sourceEvents: "mouse" }); + let startEvent = null; + let sourceEvent; + s.on("start", (e) => { + if (startEvent === null) { + startEvent = e; + } else { + assert.fail("start event listener called twice"); + } + }); + createFakeDrag( + [ + { x: 1, y: 1 }, + { x: 2, y: 2 }, + { x: 3, y: 3 } + ], + { + eventType: "mouse", + stepDuration: 0, + onAfterStep: (e) => { + if (e.type === "mousedown") { + sourceEvent = e; + } + } + } + ); + assert.deepEqual(startEvent, { + type: "start", + srcEvent: sourceEvent, + target: el, + pointerId: -1, + pointerType: "mouse", + x: 1, + y: 1 + }); + s.destroy(); + el.remove(); }); - describe('updateSettings method', () => { - it(`should update startPredicate setting`, function () { - const s = new PointerSensor(document.body, { - sourceEvents: 'mouse', - startPredicate: () => false, - }); - document.body.dispatchEvent(new MouseEvent('mousedown')); - assert.equal(s.drag, null); - s.updateSettings({ startPredicate: () => true }); - document.body.dispatchEvent(new MouseEvent('mousedown')); - assert.notEqual(s.drag, null); - }); - it(`should update sourceEvents setting`, function () { - const s = new PointerSensor(document.body, { - sourceEvents: 'pointer', - startPredicate: () => true, - }); - document.body.dispatchEvent(new MouseEvent('mousedown')); - assert.equal(s.drag, null); - s.updateSettings({ sourceEvents: 'mouse' }); - document.body.dispatchEvent(new MouseEvent('mousedown')); - assert.notEqual(s.drag, null); - }); + it(`should be triggered correctly on pointerdown`, function() { + if (!IS_BROWSER) + this.skip(); + const el = createTestElement(); + const s = new PointerSensor(el, { sourceEvents: "pointer" }); + let startEvent = null; + let sourceEvent; + s.on("start", (e) => { + if (startEvent === null) { + startEvent = e; + } else { + assert.fail("start event listener called twice"); + } + }); + createFakeDrag( + [ + { x: 1, y: 1 }, + { x: 2, y: 2 }, + { x: 3, y: 3 } + ], + { + eventType: "pointer", + stepDuration: 0, + onAfterStep: (e) => { + if (e.type === "pointerdown") { + sourceEvent = e; + } + } + } + ); + assert.deepEqual(startEvent, { + type: "start", + srcEvent: sourceEvent, + target: el, + pointerId: sourceEvent.pointerId, + pointerType: sourceEvent.pointerType, + x: 1, + y: 1 + }); + s.destroy(); + el.remove(); }); - describe('start event', () => { - it(`should be triggered correctly on mousedown`, function () { - if (!IS_BROWSER) - this.skip(); - const el = createTestElement(); - const s = new PointerSensor(el, { sourceEvents: 'mouse' }); - let startEvent = null; - let sourceEvent; - s.on('start', (e) => { - if (startEvent === null) { - startEvent = e; - } - else { - assert.fail('start event listener called twice'); - } - }); - createFakeDrag([ - { x: 1, y: 1 }, - { x: 2, y: 2 }, - { x: 3, y: 3 }, - ], { - eventType: 'mouse', - stepDuration: 0, - onAfterStep: (e) => { - if (e.type === 'mousedown') { - sourceEvent = e; - } - }, - }); - assert.deepEqual(startEvent, { - type: 'start', - srcEvent: sourceEvent, - target: el, - pointerId: -1, - pointerType: 'mouse', - x: 1, - y: 1, - }); - s.destroy(); - el.remove(); - }); - it(`should be triggered correctly on pointerdown`, function () { - if (!IS_BROWSER) - this.skip(); - const el = createTestElement(); - const s = new PointerSensor(el, { sourceEvents: 'pointer' }); - let startEvent = null; - let sourceEvent; - s.on('start', (e) => { - if (startEvent === null) { - startEvent = e; - } - else { - assert.fail('start event listener called twice'); - } - }); - createFakeDrag([ - { x: 1, y: 1 }, - { x: 2, y: 2 }, - { x: 3, y: 3 }, - ], { - eventType: 'pointer', - stepDuration: 0, - onAfterStep: (e) => { - if (e.type === 'pointerdown') { - sourceEvent = e; - } - }, - }); - assert.deepEqual(startEvent, { - type: 'start', - srcEvent: sourceEvent, - target: el, - pointerId: sourceEvent.pointerId, - pointerType: sourceEvent.pointerType, - x: 1, - y: 1, - }); - s.destroy(); - el.remove(); - }); - it(`should be triggered correctly on touchstart`, function () { - if (!IS_BROWSER) - this.skip(); - const el = createTestElement(); - const s = new PointerSensor(el, { sourceEvents: 'touch' }); - let startEvent = null; - let sourceEvent; - s.on('start', (e) => { - if (startEvent === null) { - startEvent = e; - } - else { - assert.fail('start event listener called twice'); - } - }); - createFakeDrag([ - { x: 1, y: 1 }, - { x: 2, y: 2 }, - { x: 3, y: 3 }, - ], { - eventType: 'touch', - stepDuration: 0, - onAfterStep: (e) => { - if (e.type === 'touchstart') { - sourceEvent = e; - } - }, - }); - assert.deepEqual(startEvent, { - type: 'start', - srcEvent: sourceEvent, - target: el, - pointerId: sourceEvent.changedTouches[0].identifier, - pointerType: 'touch', - x: 1, - y: 1, - }); - s.destroy(); - el.remove(); - }); + it(`should be triggered correctly on touchstart`, function() { + if (!IS_BROWSER) + this.skip(); + const el = createTestElement(); + const s = new PointerSensor(el, { sourceEvents: "touch" }); + let startEvent = null; + let sourceEvent; + s.on("start", (e) => { + if (startEvent === null) { + startEvent = e; + } else { + assert.fail("start event listener called twice"); + } + }); + createFakeDrag( + [ + { x: 1, y: 1 }, + { x: 2, y: 2 }, + { x: 3, y: 3 } + ], + { + eventType: "touch", + stepDuration: 0, + onAfterStep: (e) => { + if (e.type === "touchstart") { + sourceEvent = e; + } + } + } + ); + assert.deepEqual(startEvent, { + type: "start", + srcEvent: sourceEvent, + target: el, + pointerId: sourceEvent.changedTouches[0].identifier, + pointerType: "touch", + x: 1, + y: 1 + }); + s.destroy(); + el.remove(); }); - describe('move event', () => { - it(`should be triggered correctly on mousemove`, function () { - if (!IS_BROWSER) - this.skip(); - const el = createTestElement(); - const s = new PointerSensor(el, { sourceEvents: 'mouse' }); - let moveEvent = null; - let sourceEvent; - s.on('move', (e) => { - if (moveEvent === null) { - moveEvent = e; - } - else { - assert.fail('move event listener called twice'); - } - }); - createFakeDrag([ - { x: 1, y: 1 }, - { x: 2, y: 2 }, - { x: 3, y: 3 }, - ], { - eventType: 'mouse', - stepDuration: 0, - onAfterStep: (e) => { - if (e.type === 'mousemove') { - sourceEvent = e; - } - }, - }); - assert.deepEqual(moveEvent, { - type: 'move', - srcEvent: sourceEvent, - target: el, - pointerId: -1, - pointerType: 'mouse', - x: 2, - y: 2, - }); - s.destroy(); - el.remove(); - }); - it(`should be triggered correctly on pointermove`, function () { - if (!IS_BROWSER) - this.skip(); - const el = createTestElement(); - const s = new PointerSensor(el, { sourceEvents: 'pointer' }); - let moveEvent = null; - let sourceEvent; - s.on('move', (e) => { - if (moveEvent === null) { - moveEvent = e; - } - else { - assert.fail('move event listener called twice'); - } - }); - createFakeDrag([ - { x: 1, y: 1 }, - { x: 2, y: 2 }, - { x: 3, y: 3 }, - ], { - eventType: 'pointer', - stepDuration: 0, - onAfterStep: (e) => { - if (e.type === 'pointermove') { - sourceEvent = e; - } - }, - }); - assert.deepEqual(moveEvent, { - type: 'move', - srcEvent: sourceEvent, - target: el, - pointerId: sourceEvent.pointerId, - pointerType: sourceEvent.pointerType, - x: 2, - y: 2, - }); - s.destroy(); - el.remove(); - }); - it(`should be triggered correctly on touchmove`, function () { - if (!IS_BROWSER) - this.skip(); - const el = createTestElement(); - const s = new PointerSensor(el, { sourceEvents: 'touch' }); - let moveEvent = null; - let sourceEvent; - s.on('move', (e) => { - if (moveEvent === null) { - moveEvent = e; - } - else { - assert.fail('start event listener called twice'); - } - }); - createFakeDrag([ - { x: 1, y: 1 }, - { x: 2, y: 2 }, - { x: 3, y: 3 }, - ], { - eventType: 'touch', - stepDuration: 0, - onAfterStep: (e) => { - if (e.type === 'touchmove') { - sourceEvent = e; - } - }, - }); - assert.deepEqual(moveEvent, { - type: 'move', - srcEvent: sourceEvent, - target: el, - pointerId: sourceEvent.changedTouches[0].identifier, - pointerType: 'touch', - x: 2, - y: 2, - }); - s.destroy(); - el.remove(); - }); + }); + describe("move event", () => { + it(`should be triggered correctly on mousemove`, function() { + if (!IS_BROWSER) + this.skip(); + const el = createTestElement(); + const s = new PointerSensor(el, { sourceEvents: "mouse" }); + let moveEvent = null; + let sourceEvent; + s.on("move", (e) => { + if (moveEvent === null) { + moveEvent = e; + } else { + assert.fail("move event listener called twice"); + } + }); + createFakeDrag( + [ + { x: 1, y: 1 }, + { x: 2, y: 2 }, + { x: 3, y: 3 } + ], + { + eventType: "mouse", + stepDuration: 0, + onAfterStep: (e) => { + if (e.type === "mousemove") { + sourceEvent = e; + } + } + } + ); + assert.deepEqual(moveEvent, { + type: "move", + srcEvent: sourceEvent, + target: el, + pointerId: -1, + pointerType: "mouse", + x: 2, + y: 2 + }); + s.destroy(); + el.remove(); }); - describe('end event', () => { - it(`should be triggered correctly on mouseup`, function () { - if (!IS_BROWSER) - this.skip(); - const el = createTestElement(); - const s = new PointerSensor(el, { sourceEvents: 'mouse' }); - let endEvent = null; - let sourceEvent; - s.on('end', (e) => { - if (endEvent === null) { - endEvent = e; - } - else { - assert.fail('end event listener called twice'); - } - }); - createFakeDrag([ - { x: 1, y: 1 }, - { x: 2, y: 2 }, - { x: 3, y: 3 }, - ], { - eventType: 'mouse', - stepDuration: 0, - onAfterStep: (e) => { - if (e.type === 'mouseup') { - sourceEvent = e; - } - }, - }); - assert.deepEqual(endEvent, { - type: 'end', - srcEvent: sourceEvent, - target: el, - pointerId: -1, - pointerType: 'mouse', - x: 3, - y: 3, - }); - s.destroy(); - el.remove(); - }); - it(`should be triggered correctly on pointerup`, function () { - if (!IS_BROWSER) - this.skip(); - const el = createTestElement(); - const s = new PointerSensor(el, { sourceEvents: 'pointer' }); - let endEvent = null; - let sourceEvent; - s.on('end', (e) => { - if (endEvent === null) { - endEvent = e; - } - else { - assert.fail('end event listener called twice'); - } - }); - createFakeDrag([ - { x: 1, y: 1 }, - { x: 2, y: 2 }, - { x: 3, y: 3 }, - ], { - eventType: 'pointer', - stepDuration: 0, - onAfterStep: (e) => { - if (e.type === 'pointerup') { - sourceEvent = e; - } - }, - }); - assert.deepEqual(endEvent, { - type: 'end', - srcEvent: sourceEvent, - target: el, - pointerId: sourceEvent.pointerId, - pointerType: sourceEvent.pointerType, - x: 3, - y: 3, - }); - s.destroy(); - el.remove(); - }); - it(`should be triggered correctly on touchend`, function () { - if (!IS_BROWSER) - this.skip(); - const el = createTestElement(); - const s = new PointerSensor(el, { sourceEvents: 'touch' }); - let endEvent = null; - let sourceEvent; - s.on('end', (e) => { - if (endEvent === null) { - endEvent = e; - } - else { - assert.fail('end event listener called twice'); - } - }); - createFakeDrag([ - { x: 1, y: 1 }, - { x: 2, y: 2 }, - { x: 3, y: 3 }, - ], { - eventType: 'touch', - stepDuration: 0, - onAfterStep: (e) => { - if (e.type === 'touchend') { - sourceEvent = e; - } - }, - }); - assert.deepEqual(endEvent, { - type: 'end', - srcEvent: sourceEvent, - target: el, - pointerId: sourceEvent.changedTouches[0].identifier, - pointerType: 'touch', - x: 3, - y: 3, - }); - s.destroy(); - el.remove(); - }); + it(`should be triggered correctly on pointermove`, function() { + if (!IS_BROWSER) + this.skip(); + const el = createTestElement(); + const s = new PointerSensor(el, { sourceEvents: "pointer" }); + let moveEvent = null; + let sourceEvent; + s.on("move", (e) => { + if (moveEvent === null) { + moveEvent = e; + } else { + assert.fail("move event listener called twice"); + } + }); + createFakeDrag( + [ + { x: 1, y: 1 }, + { x: 2, y: 2 }, + { x: 3, y: 3 } + ], + { + eventType: "pointer", + stepDuration: 0, + onAfterStep: (e) => { + if (e.type === "pointermove") { + sourceEvent = e; + } + } + } + ); + assert.deepEqual(moveEvent, { + type: "move", + srcEvent: sourceEvent, + target: el, + pointerId: sourceEvent.pointerId, + pointerType: sourceEvent.pointerType, + x: 2, + y: 2 + }); + s.destroy(); + el.remove(); }); - describe('cancel event', () => { - it(`should be triggered correctly on pointercancel`, function () { - if (!IS_BROWSER) - this.skip(); - const el = createTestElement(); - const s = new PointerSensor(el, { sourceEvents: 'pointer' }); - let cancelEvent = null; - let sourceEvent; - s.on('cancel', (e) => { - if (cancelEvent === null) { - cancelEvent = e; - } - else { - assert.fail('cancel event listener called twice'); - } - }); - createFakeDrag([ - { x: 1, y: 1 }, - { x: 2, y: 2 }, - { x: 3, y: 3 }, - ], { - eventType: 'pointer', - stepDuration: 0, - cancelAtEnd: true, - onAfterStep: (e) => { - if (e.type === 'pointercancel') { - sourceEvent = e; - } - }, - }); - assert.deepEqual(cancelEvent, { - type: 'cancel', - srcEvent: sourceEvent, - target: el, - pointerId: sourceEvent.pointerId, - pointerType: sourceEvent.pointerType, - x: 3, - y: 3, - }); - s.destroy(); - el.remove(); - }); - it(`should be triggered correctly on touchcancel`, function () { - if (!IS_BROWSER) - this.skip(); - const el = createTestElement(); - const s = new PointerSensor(el, { sourceEvents: 'touch' }); - let cancelEvent = null; - let sourceEvent; - s.on('cancel', (e) => { - if (cancelEvent === null) { - cancelEvent = e; - } - else { - assert.fail('cancel event listener called twice'); - } - }); - createFakeDrag([ - { x: 1, y: 1 }, - { x: 2, y: 2 }, - { x: 3, y: 3 }, - ], { - eventType: 'touch', - stepDuration: 0, - cancelAtEnd: true, - onAfterStep: (e) => { - if (e.type === 'touchcancel') { - sourceEvent = e; - } - }, - }); - assert.deepEqual(cancelEvent, { - type: 'cancel', - srcEvent: sourceEvent, - target: el, - pointerId: sourceEvent.changedTouches[0].identifier, - pointerType: 'touch', - x: 3, - y: 3, - }); - s.destroy(); - el.remove(); - }); + it(`should be triggered correctly on touchmove`, function() { + if (!IS_BROWSER) + this.skip(); + const el = createTestElement(); + const s = new PointerSensor(el, { sourceEvents: "touch" }); + let moveEvent = null; + let sourceEvent; + s.on("move", (e) => { + if (moveEvent === null) { + moveEvent = e; + } else { + assert.fail("start event listener called twice"); + } + }); + createFakeDrag( + [ + { x: 1, y: 1 }, + { x: 2, y: 2 }, + { x: 3, y: 3 } + ], + { + eventType: "touch", + stepDuration: 0, + onAfterStep: (e) => { + if (e.type === "touchmove") { + sourceEvent = e; + } + } + } + ); + assert.deepEqual(moveEvent, { + type: "move", + srcEvent: sourceEvent, + target: el, + pointerId: sourceEvent.changedTouches[0].identifier, + pointerType: "touch", + x: 2, + y: 2 + }); + s.destroy(); + el.remove(); }); -}); - -describe('KeyboardSensor', () => { - beforeEach(() => { - if (IS_BROWSER) { - addDefaultPageStyles(document); - return new Promise((resolve) => requestAnimationFrame(() => requestAnimationFrame(resolve))); + }); + describe("end event", () => { + it(`should be triggered correctly on mouseup`, function() { + if (!IS_BROWSER) + this.skip(); + const el = createTestElement(); + const s = new PointerSensor(el, { sourceEvents: "mouse" }); + let endEvent = null; + let sourceEvent; + s.on("end", (e) => { + if (endEvent === null) { + endEvent = e; + } else { + assert.fail("end event listener called twice"); } - return; + }); + createFakeDrag( + [ + { x: 1, y: 1 }, + { x: 2, y: 2 }, + { x: 3, y: 3 } + ], + { + eventType: "mouse", + stepDuration: 0, + onAfterStep: (e) => { + if (e.type === "mouseup") { + sourceEvent = e; + } + } + } + ); + assert.deepEqual(endEvent, { + type: "end", + srcEvent: sourceEvent, + target: el, + pointerId: -1, + pointerType: "mouse", + x: 3, + y: 3 + }); + s.destroy(); + el.remove(); }); - afterEach(() => { - if (IS_BROWSER) { - removeDefaultPageStyles(document); - return new Promise((resolve) => requestAnimationFrame(() => requestAnimationFrame(resolve))); + it(`should be triggered correctly on pointerup`, function() { + if (!IS_BROWSER) + this.skip(); + const el = createTestElement(); + const s = new PointerSensor(el, { sourceEvents: "pointer" }); + let endEvent = null; + let sourceEvent; + s.on("end", (e) => { + if (endEvent === null) { + endEvent = e; + } else { + assert.fail("end event listener called twice"); } - return; + }); + createFakeDrag( + [ + { x: 1, y: 1 }, + { x: 2, y: 2 }, + { x: 3, y: 3 } + ], + { + eventType: "pointer", + stepDuration: 0, + onAfterStep: (e) => { + if (e.type === "pointerup") { + sourceEvent = e; + } + } + } + ); + assert.deepEqual(endEvent, { + type: "end", + srcEvent: sourceEvent, + target: el, + pointerId: sourceEvent.pointerId, + pointerType: sourceEvent.pointerType, + x: 3, + y: 3 + }); + s.destroy(); + el.remove(); }); - describe('drag property', () => { - it(`should be null on init`, function () { - const s = new KeyboardSensor(); - assert.equal(s.drag, null); - s.destroy(); - }); + it(`should be triggered correctly on touchend`, function() { + if (!IS_BROWSER) + this.skip(); + const el = createTestElement(); + const s = new PointerSensor(el, { sourceEvents: "touch" }); + let endEvent = null; + let sourceEvent; + s.on("end", (e) => { + if (endEvent === null) { + endEvent = e; + } else { + assert.fail("end event listener called twice"); + } + }); + createFakeDrag( + [ + { x: 1, y: 1 }, + { x: 2, y: 2 }, + { x: 3, y: 3 } + ], + { + eventType: "touch", + stepDuration: 0, + onAfterStep: (e) => { + if (e.type === "touchend") { + sourceEvent = e; + } + } + } + ); + assert.deepEqual(endEvent, { + type: "end", + srcEvent: sourceEvent, + target: el, + pointerId: sourceEvent.changedTouches[0].identifier, + pointerType: "touch", + x: 3, + y: 3 + }); + s.destroy(); + el.remove(); }); - describe('isDestroyed property', () => { - it(`should be false on init`, function () { - const s = new KeyboardSensor(); - assert.equal(s.isDestroyed, false); - s.destroy(); - }); + }); + describe("cancel event", () => { + it(`should be triggered correctly on pointercancel`, function() { + if (!IS_BROWSER) + this.skip(); + const el = createTestElement(); + const s = new PointerSensor(el, { sourceEvents: "pointer" }); + let cancelEvent = null; + let sourceEvent; + s.on("cancel", (e) => { + if (cancelEvent === null) { + cancelEvent = e; + } else { + assert.fail("cancel event listener called twice"); + } + }); + createFakeDrag( + [ + { x: 1, y: 1 }, + { x: 2, y: 2 }, + { x: 3, y: 3 } + ], + { + eventType: "pointer", + stepDuration: 0, + cancelAtEnd: true, + onAfterStep: (e) => { + if (e.type === "pointercancel") { + sourceEvent = e; + } + } + } + ); + assert.deepEqual(cancelEvent, { + type: "cancel", + srcEvent: sourceEvent, + target: el, + pointerId: sourceEvent.pointerId, + pointerType: sourceEvent.pointerType, + x: 3, + y: 3 + }); + s.destroy(); + el.remove(); }); - describe('start event', () => { - it(`should be triggered correctly on Enter`, function () { - if (!IS_BROWSER) - this.skip(); - const el = createTestElement({ left: '10px', top: '20px' }); - const s = new KeyboardSensor(); - let startEvent = null; - s.on('start', (e) => { - if (startEvent === null) { - startEvent = e; - } - else { - assert.fail('start event listener called twice'); - } - }); - const srcEvent = new KeyboardEvent('keydown', { key: 'Enter' }); - document.dispatchEvent(srcEvent); - assert.equal(s.drag, null); - el.focus(); - document.dispatchEvent(srcEvent); - assert.deepEqual(startEvent, { - type: 'start', - srcEvent: srcEvent, - x: 10, - y: 20, - }); - s.destroy(); - el.remove(); - }); + it(`should be triggered correctly on touchcancel`, function() { + if (!IS_BROWSER) + this.skip(); + const el = createTestElement(); + const s = new PointerSensor(el, { sourceEvents: "touch" }); + let cancelEvent = null; + let sourceEvent; + s.on("cancel", (e) => { + if (cancelEvent === null) { + cancelEvent = e; + } else { + assert.fail("cancel event listener called twice"); + } + }); + createFakeDrag( + [ + { x: 1, y: 1 }, + { x: 2, y: 2 }, + { x: 3, y: 3 } + ], + { + eventType: "touch", + stepDuration: 0, + cancelAtEnd: true, + onAfterStep: (e) => { + if (e.type === "touchcancel") { + sourceEvent = e; + } + } + } + ); + assert.deepEqual(cancelEvent, { + type: "cancel", + srcEvent: sourceEvent, + target: el, + pointerId: sourceEvent.changedTouches[0].identifier, + pointerType: "touch", + x: 3, + y: 3 + }); + s.destroy(); + el.remove(); + }); + }); +}); + +// tests/src/KeyboardSensor.ts +describe("KeyboardSensor", () => { + beforeEach(() => { + if (IS_BROWSER) { + addDefaultPageStyles(document); + return new Promise((resolve) => requestAnimationFrame(() => requestAnimationFrame(resolve))); + } + return; + }); + afterEach(() => { + if (IS_BROWSER) { + removeDefaultPageStyles(document); + return new Promise((resolve) => requestAnimationFrame(() => requestAnimationFrame(resolve))); + } + return; + }); + describe("drag property", () => { + it(`should be null on init`, function() { + const s = new KeyboardSensor(); + assert.equal(s.drag, null); + s.destroy(); + }); + }); + describe("isDestroyed property", () => { + it(`should be false on init`, function() { + const s = new KeyboardSensor(); + assert.equal(s.isDestroyed, false); + s.destroy(); }); + }); + describe("start event", () => { + it(`should be triggered correctly on Enter`, function() { + if (!IS_BROWSER) + this.skip(); + const el = createTestElement({ left: "10px", top: "20px" }); + const s = new KeyboardSensor(); + let startEvent = null; + s.on("start", (e) => { + if (startEvent === null) { + startEvent = e; + } else { + assert.fail("start event listener called twice"); + } + }); + const srcEvent = new KeyboardEvent("keydown", { key: "Enter" }); + document.dispatchEvent(srcEvent); + assert.equal(s.drag, null); + el.focus(); + document.dispatchEvent(srcEvent); + assert.deepEqual(startEvent, { + type: "start", + srcEvent, + x: 10, + y: 20 + }); + s.destroy(); + el.remove(); + }); + }); }); +/*! Bundled license information: + +assertion-error/index.js: + (*! + * assertion-error + * Copyright(c) 2013 Jake Luer + * MIT Licensed + *) + (*! + * Return a function that will copy properties from + * one object to another excluding any originally + * listed. Returned function will create a new `{}`. + * + * @param {String} excluded properties ... + * @return {Function} + *) + (*! + * Primary Exports + *) + (*! + * Inherit from Error.prototype + *) + (*! + * Statically set name + *) + (*! + * Ensure correct constructor + *) + +chai/lib/chai/utils/flag.js: + (*! + * Chai - flag utility + * Copyright(c) 2012-2014 Jake Luer + * MIT Licensed + *) + +chai/lib/chai/utils/test.js: + (*! + * Chai - test utility + * Copyright(c) 2012-2014 Jake Luer + * MIT Licensed + *) + (*! + * Module dependencies + *) + +chai/lib/chai/utils/expectTypes.js: + (*! + * Chai - expectTypes utility + * Copyright(c) 2012-2014 Jake Luer + * MIT Licensed + *) + +chai/lib/chai/utils/getActual.js: + (*! + * Chai - getActual utility + * Copyright(c) 2012-2014 Jake Luer + * MIT Licensed + *) + +chai/lib/chai/utils/objDisplay.js: + (*! + * Chai - flag utility + * Copyright(c) 2012-2014 Jake Luer + * MIT Licensed + *) + (*! + * Module dependencies + *) + +chai/lib/chai/utils/getMessage.js: + (*! + * Chai - message composition utility + * Copyright(c) 2012-2014 Jake Luer + * MIT Licensed + *) + (*! + * Module dependencies + *) + +chai/lib/chai/utils/transferFlags.js: + (*! + * Chai - transferFlags utility + * Copyright(c) 2012-2014 Jake Luer + * MIT Licensed + *) + +deep-eql/index.js: + (*! + * deep-eql + * Copyright(c) 2013 Jake Luer + * MIT Licensed + *) + (*! + * Check to see if the MemoizeMap has recorded a result of the two operands + * + * @param {Mixed} leftHandOperand + * @param {Mixed} rightHandOperand + * @param {MemoizeMap} memoizeMap + * @returns {Boolean|null} result + *) + (*! + * Set the result of the equality into the MemoizeMap + * + * @param {Mixed} leftHandOperand + * @param {Mixed} rightHandOperand + * @param {MemoizeMap} memoizeMap + * @param {Boolean} result + *) + (*! + * Primary Export + *) + (*! + * The main logic of the `deepEqual` function. + * + * @param {Mixed} leftHandOperand + * @param {Mixed} rightHandOperand + * @param {Object} [options] (optional) Additional options + * @param {Array} [options.comparator] (optional) Override default algorithm, determining custom equality. + * @param {Array} [options.memoize] (optional) Provide a custom memoization object which will cache the results of + complex objects for a speed boost. By passing `false` you can disable memoization, but this will cause circular + references to blow the stack. + * @return {Boolean} equal match + *) + (*! + * Compare two Regular Expressions for equality. + * + * @param {RegExp} leftHandOperand + * @param {RegExp} rightHandOperand + * @return {Boolean} result + *) + (*! + * Compare two Sets/Maps for equality. Faster than other equality functions. + * + * @param {Set} leftHandOperand + * @param {Set} rightHandOperand + * @param {Object} [options] (Optional) + * @return {Boolean} result + *) + (*! + * Simple equality for flat iterable objects such as Arrays, TypedArrays or Node.js buffers. + * + * @param {Iterable} leftHandOperand + * @param {Iterable} rightHandOperand + * @param {Object} [options] (Optional) + * @return {Boolean} result + *) + (*! + * Simple equality for generator objects such as those returned by generator functions. + * + * @param {Iterable} leftHandOperand + * @param {Iterable} rightHandOperand + * @param {Object} [options] (Optional) + * @return {Boolean} result + *) + (*! + * Determine if the given object has an @@iterator function. + * + * @param {Object} target + * @return {Boolean} `true` if the object has an @@iterator function. + *) + (*! + * Gets all iterator entries from the given Object. If the Object has no @@iterator function, returns an empty array. + * This will consume the iterator - which could have side effects depending on the @@iterator implementation. + * + * @param {Object} target + * @returns {Array} an array of entries from the @@iterator function + *) + (*! + * Gets all entries from a Generator. This will consume the generator - which could have side effects. + * + * @param {Generator} target + * @returns {Array} an array of entries from the Generator. + *) + (*! + * Gets all own and inherited enumerable keys from a target. + * + * @param {Object} target + * @returns {Array} an array of own and inherited enumerable keys from the target. + *) + (*! + * Determines if two objects have matching values, given a set of keys. Defers to deepEqual for the equality check of + * each key. If any value of the given key is not equal, the function will return false (early). + * + * @param {Mixed} leftHandOperand + * @param {Mixed} rightHandOperand + * @param {Array} keys An array of keys to compare the values of leftHandOperand and rightHandOperand against + * @param {Object} [options] (Optional) + * @return {Boolean} result + *) + (*! + * Recursively check the equality of two Objects. Once basic sameness has been established it will defer to `deepEqual` + * for each enumerable key in the object. + * + * @param {Mixed} leftHandOperand + * @param {Mixed} rightHandOperand + * @param {Object} [options] (Optional) + * @return {Boolean} result + *) + (*! + * Returns true if the argument is a primitive. + * + * This intentionally returns true for all objects that can be compared by reference, + * including functions and symbols. + * + * @param {Mixed} value + * @return {Boolean} result + *) + +chai/lib/chai/utils/isProxyEnabled.js: + (*! + * Chai - isProxyEnabled helper + * Copyright(c) 2012-2014 Jake Luer + * MIT Licensed + *) + +chai/lib/chai/utils/addProperty.js: + (*! + * Chai - addProperty utility + * Copyright(c) 2012-2014 Jake Luer + * MIT Licensed + *) + +chai/lib/chai/utils/addLengthGuard.js: + (*! + * Chai - addLengthGuard utility + * Copyright(c) 2012-2014 Jake Luer + * MIT Licensed + *) + +chai/lib/chai/utils/getProperties.js: + (*! + * Chai - getProperties utility + * Copyright(c) 2012-2014 Jake Luer + * MIT Licensed + *) + +chai/lib/chai/utils/proxify.js: + (*! + * Chai - proxify utility + * Copyright(c) 2012-2014 Jake Luer + * MIT Licensed + *) + +chai/lib/chai/utils/addMethod.js: + (*! + * Chai - addMethod utility + * Copyright(c) 2012-2014 Jake Luer + * MIT Licensed + *) + +chai/lib/chai/utils/overwriteProperty.js: + (*! + * Chai - overwriteProperty utility + * Copyright(c) 2012-2014 Jake Luer + * MIT Licensed + *) + +chai/lib/chai/utils/overwriteMethod.js: + (*! + * Chai - overwriteMethod utility + * Copyright(c) 2012-2014 Jake Luer + * MIT Licensed + *) + +chai/lib/chai/utils/addChainableMethod.js: + (*! + * Chai - addChainingMethod utility + * Copyright(c) 2012-2014 Jake Luer + * MIT Licensed + *) + (*! + * Module dependencies + *) + (*! + * Module variables + *) + +chai/lib/chai/utils/overwriteChainableMethod.js: + (*! + * Chai - overwriteChainableMethod utility + * Copyright(c) 2012-2014 Jake Luer + * MIT Licensed + *) + +chai/lib/chai/utils/compareByInspect.js: + (*! + * Chai - compareByInspect utility + * Copyright(c) 2011-2016 Jake Luer + * MIT Licensed + *) + (*! + * Module dependencies + *) + +chai/lib/chai/utils/getOwnEnumerablePropertySymbols.js: + (*! + * Chai - getOwnEnumerablePropertySymbols utility + * Copyright(c) 2011-2016 Jake Luer + * MIT Licensed + *) + +chai/lib/chai/utils/getOwnEnumerableProperties.js: + (*! + * Chai - getOwnEnumerableProperties utility + * Copyright(c) 2011-2016 Jake Luer + * MIT Licensed + *) + (*! + * Module dependencies + *) + +chai/lib/chai/utils/isNaN.js: + (*! + * Chai - isNaN utility + * Copyright(c) 2012-2015 Sakthipriyan Vairamani + * MIT Licensed + *) + +chai/lib/chai/utils/index.js: + (*! + * chai + * Copyright(c) 2011 Jake Luer + * MIT Licensed + *) + (*! + * Dependencies that are used for multiple exports are required here only once + *) + (*! + * test utility + *) + (*! + * type utility + *) + (*! + * expectTypes utility + *) + (*! + * message utility + *) + (*! + * actual utility + *) + (*! + * Inspect util + *) + (*! + * Object Display util + *) + (*! + * Flag utility + *) + (*! + * Flag transferring utility + *) + (*! + * Deep equal utility + *) + (*! + * Deep path info + *) + (*! + * Check if a property exists + *) + (*! + * Function name + *) + (*! + * add Property + *) + (*! + * add Method + *) + (*! + * overwrite Property + *) + (*! + * overwrite Method + *) + (*! + * Add a chainable method + *) + (*! + * Overwrite chainable method + *) + (*! + * Compare by inspect method + *) + (*! + * Get own enumerable property symbols method + *) + (*! + * Get own enumerable properties method + *) + (*! + * Checks error against a given set of criteria + *) + (*! + * Proxify util + *) + (*! + * addLengthGuard util + *) + (*! + * isProxyEnabled helper + *) + (*! + * isNaN method + *) + (*! + * getOperator method + *) + +chai/lib/chai/assertion.js: + (*! + * chai + * http://chaijs.com + * Copyright(c) 2011-2014 Jake Luer + * MIT Licensed + *) + (*! + * Module dependencies. + *) + (*! + * Module export. + *) + (*! + * Assertion Constructor + * + * Creates object for chaining. + * + * `Assertion` objects contain metadata in the form of flags. Three flags can + * be assigned during instantiation by passing arguments to this constructor: + * + * - `object`: This flag contains the target of the assertion. For example, in + * the assertion `expect(numKittens).to.equal(7);`, the `object` flag will + * contain `numKittens` so that the `equal` assertion can reference it when + * needed. + * + * - `message`: This flag contains an optional custom error message to be + * prepended to the error message that's generated by the assertion when it + * fails. + * + * - `ssfi`: This flag stands for "start stack function indicator". It + * contains a function reference that serves as the starting point for + * removing frames from the stack trace of the error that's created by the + * assertion when it fails. The goal is to provide a cleaner stack trace to + * end users by removing Chai's internal functions. Note that it only works + * in environments that support `Error.captureStackTrace`, and only when + * `Chai.config.includeStack` hasn't been set to `false`. + * + * - `lockSsfi`: This flag controls whether or not the given `ssfi` flag + * should retain its current value, even as assertions are chained off of + * this object. This is usually set to `true` when creating a new assertion + * from within another assertion. It's also temporarily set to `true` before + * an overwritten assertion gets called by the overwriting assertion. + * + * @param {Mixed} obj target of the assertion + * @param {String} msg (optional) custom error message + * @param {Function} ssfi (optional) starting point for removing stack frames + * @param {Boolean} lockSsfi (optional) whether or not the ssfi flag is locked + * @api private + *) + (*! + * ### ._obj + * + * Quick reference to stored `actual` value for plugin developers. + * + * @api private + *) + +chai/lib/chai/core/assertions.js: + (*! + * chai + * http://chaijs.com + * Copyright(c) 2011-2014 Jake Luer + * MIT Licensed + *) + +chai/lib/chai/interface/expect.js: + (*! + * chai + * Copyright(c) 2011-2014 Jake Luer + * MIT Licensed + *) + +chai/lib/chai/interface/should.js: + (*! + * chai + * Copyright(c) 2011-2014 Jake Luer + * MIT Licensed + *) + +chai/lib/chai/interface/assert.js: + (*! + * chai + * Copyright(c) 2011-2014 Jake Luer + * MIT Licensed + *) + (*! + * Chai dependencies. + *) + (*! + * Module export. + *) + (*! + * ### .ifError(object) + * + * Asserts if value is not a false value, and throws if it is a true value. + * This is added to allow for chai to be a drop-in replacement for Node's + * assert class. + * + * var err = new Error('I am a custom error'); + * assert.ifError(err); // Rethrows err! + * + * @name ifError + * @param {Object} object + * @namespace Assert + * @api public + *) + (*! + * Aliases. + *) + +chai/lib/chai.js: + (*! + * chai + * Copyright(c) 2011-2014 Jake Luer + * MIT Licensed + *) + (*! + * Chai version + *) + (*! + * Assertion Error + *) + (*! + * Utils for plugins (not exported) + *) + (*! + * Utility Functions + *) + (*! + * Configuration + *) + (*! + * Primary `Assertion` prototype + *) + (*! + * Core Assertions + *) + (*! + * Expect interface + *) + (*! + * Should interface + *) + (*! + * Assert interface + *) +*/ diff --git a/tests/dist/tests.umd.js b/tests/dist/tests.umd.js deleted file mode 100644 index bc036a5..0000000 --- a/tests/dist/tests.umd.js +++ /dev/null @@ -1,2702 +0,0 @@ -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('chai'), require('eventti'), require('tikki')) : - typeof define === 'function' && define.amd ? define(['chai', 'eventti', 'tikki'], factory) : - (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.chai, global.eventti, global.tikki)); -})(this, (function (chai, eventti, tikki) { 'use strict'; - - const SensorEventType = { - start: 'start', - move: 'move', - cancel: 'cancel', - end: 'end', - destroy: 'destroy', - }; - - class BaseSensor { - constructor() { - this.drag = null; - this.isDestroyed = false; - this._emitter = new eventti.Emitter(); - } - _createDragData(data) { - return { - x: data.x, - y: data.y, - }; - } - _updateDragData(data) { - if (!this.drag) - return; - this.drag.x = data.x; - this.drag.y = data.y; - } - _resetDragData() { - this.drag = null; - } - _start(data) { - if (this.isDestroyed || this.drag) - return; - this.drag = this._createDragData(data); - this._emitter.emit(SensorEventType.start, data); - } - _move(data) { - if (!this.drag) - return; - this._updateDragData(data); - this._emitter.emit(SensorEventType.move, data); - } - _end(data) { - if (!this.drag) - return; - this._updateDragData(data); - this._emitter.emit(SensorEventType.end, data); - this._resetDragData(); - } - _cancel(data) { - if (!this.drag) - return; - this._updateDragData(data); - this._emitter.emit(SensorEventType.cancel, data); - this._resetDragData(); - } - on(eventName, listener, listenerId) { - return this._emitter.on(eventName, listener, listenerId); - } - off(eventName, listener) { - this._emitter.off(eventName, listener); - } - cancel() { - if (!this.drag) - return; - this._emitter.emit(SensorEventType.cancel, { - type: SensorEventType.cancel, - x: this.drag.x, - y: this.drag.y, - }); - this._resetDragData(); - } - destroy() { - if (this.isDestroyed) - return; - this.isDestroyed = true; - this.cancel(); - this._emitter.emit(SensorEventType.destroy, { - type: SensorEventType.destroy, - }); - this._emitter.off(); - } - } - - let tickerReadPhase = Symbol(); - let tickerWritePhase = Symbol(); - let ticker = new tikki.Ticker({ phases: [tickerReadPhase, tickerWritePhase] }); - - function getPointerEventData(e, id) { - if ('pointerId' in e) { - return e.pointerId === id ? e : null; - } - if ('changedTouches' in e) { - let i = 0; - for (; i < e.changedTouches.length; i++) { - if (e.changedTouches[i].identifier === id) { - return e.changedTouches[i]; - } - } - return null; - } - return e; - } - - function getPointerType(e) { - return 'pointerType' in e ? e.pointerType : 'touches' in e ? 'touch' : 'mouse'; - } - - function getPointerId(e) { - if ('pointerId' in e) - return e.pointerId; - if ('changedTouches' in e) - return e.changedTouches[0] ? e.changedTouches[0].identifier : null; - return -1; - } - - const IS_BROWSER = typeof window !== 'undefined' && typeof window.document !== 'undefined'; - const HAS_PASSIVE_EVENTS = (() => { - let isPassiveEventsSupported = false; - try { - const passiveOpts = Object.defineProperty({}, 'passive', { - get: function () { - isPassiveEventsSupported = true; - }, - }); - window.addEventListener('testPassive', null, passiveOpts); - window.removeEventListener('testPassive', null, passiveOpts); - } - catch (e) { } - return isPassiveEventsSupported; - })(); - const HAS_TOUCH_EVENTS = IS_BROWSER && 'ontouchstart' in window; - const HAS_POINTER_EVENTS = IS_BROWSER && !!window.PointerEvent; - !!(IS_BROWSER && - navigator.vendor && - navigator.vendor.indexOf('Apple') > -1 && - navigator.userAgent && - navigator.userAgent.indexOf('CriOS') == -1 && - navigator.userAgent.indexOf('FxiOS') == -1); - - function parseListenerOptions(options = {}) { - const { capture = true, passive = true } = options; - if (HAS_PASSIVE_EVENTS) { - return { capture, passive }; - } - else { - return { capture }; - } - } - - function parseSourceEvents(sourceEvents) { - return sourceEvents === 'auto' || sourceEvents === undefined - ? HAS_POINTER_EVENTS - ? 'pointer' - : HAS_TOUCH_EVENTS - ? 'touch' - : 'mouse' - : sourceEvents; - } - - const POINTER_EVENTS = { - start: 'pointerdown', - move: 'pointermove', - cancel: 'pointercancel', - end: 'pointerup', - }; - const TOUCH_EVENTS = { - start: 'touchstart', - move: 'touchmove', - cancel: 'touchcancel', - end: 'touchend', - }; - const MOUSE_EVENTS = { - start: 'mousedown', - move: 'mousemove', - cancel: '', - end: 'mouseup', - }; - const SOURCE_EVENTS = { - pointer: POINTER_EVENTS, - touch: TOUCH_EVENTS, - mouse: MOUSE_EVENTS, - }; - class PointerSensor { - constructor(element, options = {}) { - const { listenerOptions = {}, sourceEvents = 'auto', startPredicate = (e) => ('button' in e && e.button > 0 ? false : true), } = options; - this.element = element; - this.drag = null; - this.isDestroyed = false; - this._areWindowListenersBound = false; - this._startPredicate = startPredicate; - this._listenerOptions = parseListenerOptions(listenerOptions); - this._sourceEvents = parseSourceEvents(sourceEvents); - this._emitter = new eventti.Emitter(); - this._onStart = this._onStart.bind(this); - this._onMove = this._onMove.bind(this); - this._onCancel = this._onCancel.bind(this); - this._onEnd = this._onEnd.bind(this); - element.addEventListener(SOURCE_EVENTS[this._sourceEvents].start, this._onStart, this._listenerOptions); - } - _getTrackedPointerEventData(e) { - return this.drag ? getPointerEventData(e, this.drag.pointerId) : null; - } - _onStart(e) { - if (this.isDestroyed || this.drag) - return; - if (!this._startPredicate(e)) - return; - const pointerId = getPointerId(e); - if (pointerId === null) - return; - const pointerEventData = getPointerEventData(e, pointerId); - if (pointerEventData === null) - return; - const dragData = { - pointerId, - pointerType: getPointerType(e), - x: pointerEventData.clientX, - y: pointerEventData.clientY, - }; - this.drag = dragData; - const eventData = Object.assign(Object.assign({}, dragData), { type: SensorEventType.start, srcEvent: e, target: pointerEventData.target }); - this._emitter.emit(eventData.type, eventData); - if (this.drag) { - this._bindWindowListeners(); - } - } - _onMove(e) { - if (!this.drag) - return; - const pointerEventData = this._getTrackedPointerEventData(e); - if (!pointerEventData) - return; - this.drag.x = pointerEventData.clientX; - this.drag.y = pointerEventData.clientY; - const eventData = Object.assign({ type: SensorEventType.move, srcEvent: e, target: pointerEventData.target }, this.drag); - this._emitter.emit(eventData.type, eventData); - } - _onCancel(e) { - if (!this.drag) - return; - const pointerEventData = this._getTrackedPointerEventData(e); - if (!pointerEventData) - return; - this.drag.x = pointerEventData.clientX; - this.drag.y = pointerEventData.clientY; - const eventData = Object.assign({ type: SensorEventType.cancel, srcEvent: e, target: pointerEventData.target }, this.drag); - this._emitter.emit(eventData.type, eventData); - this._resetDrag(); - } - _onEnd(e) { - if (!this.drag) - return; - const pointerEventData = this._getTrackedPointerEventData(e); - if (!pointerEventData) - return; - this.drag.x = pointerEventData.clientX; - this.drag.y = pointerEventData.clientY; - const eventData = Object.assign({ type: SensorEventType.end, srcEvent: e, target: pointerEventData.target }, this.drag); - this._emitter.emit(eventData.type, eventData); - this._resetDrag(); - } - _bindWindowListeners() { - if (this._areWindowListenersBound) - return; - const { move, end, cancel } = SOURCE_EVENTS[this._sourceEvents]; - window.addEventListener(move, this._onMove, this._listenerOptions); - window.addEventListener(end, this._onEnd, this._listenerOptions); - if (cancel) { - window.addEventListener(cancel, this._onCancel, this._listenerOptions); - } - this._areWindowListenersBound = true; - } - _unbindWindowListeners() { - if (this._areWindowListenersBound) { - const { move, end, cancel } = SOURCE_EVENTS[this._sourceEvents]; - window.removeEventListener(move, this._onMove, this._listenerOptions); - window.removeEventListener(end, this._onEnd, this._listenerOptions); - if (cancel) { - window.removeEventListener(cancel, this._onCancel, this._listenerOptions); - } - this._areWindowListenersBound = false; - } - } - _resetDrag() { - this.drag = null; - this._unbindWindowListeners(); - } - cancel() { - if (!this.drag) - return; - const eventData = Object.assign({ type: SensorEventType.cancel, srcEvent: null, target: null }, this.drag); - this._emitter.emit(eventData.type, eventData); - this._resetDrag(); - } - updateSettings(options) { - if (this.isDestroyed) - return; - const { listenerOptions, sourceEvents, startPredicate } = options; - const nextSourceEvents = parseSourceEvents(sourceEvents); - const nextListenerOptions = parseListenerOptions(listenerOptions); - if (startPredicate && this._startPredicate !== startPredicate) { - this._startPredicate = startPredicate; - } - if ((listenerOptions && - (this._listenerOptions.capture !== nextListenerOptions.capture || - this._listenerOptions.passive === nextListenerOptions.passive)) || - (sourceEvents && this._sourceEvents !== nextSourceEvents)) { - this.element.removeEventListener(SOURCE_EVENTS[this._sourceEvents].start, this._onStart, this._listenerOptions); - this._unbindWindowListeners(); - this.cancel(); - if (sourceEvents) { - this._sourceEvents = nextSourceEvents; - } - if (listenerOptions && nextListenerOptions) { - this._listenerOptions = nextListenerOptions; - } - this.element.addEventListener(SOURCE_EVENTS[this._sourceEvents].start, this._onStart, this._listenerOptions); - } - } - on(eventName, listener, listenerId) { - return this._emitter.on(eventName, listener, listenerId); - } - off(eventName, listener) { - this._emitter.off(eventName, listener); - } - destroy() { - if (this.isDestroyed) - return; - this.isDestroyed = true; - this.cancel(); - this._emitter.emit(SensorEventType.destroy, { - type: SensorEventType.destroy, - }); - this._emitter.off(); - this.element.removeEventListener(SOURCE_EVENTS[this._sourceEvents].start, this._onStart, this._listenerOptions); - } - } - - class KeyboardSensor extends BaseSensor { - constructor(options = {}) { - super(); - const { moveDistance = 25, startPredicate = (e) => { - if (e.key === 'Enter' || e.key === 'Space' || e.key === ' ') { - if (document.activeElement && document.activeElement !== document.body) { - const { left, top } = document.activeElement.getBoundingClientRect(); - return { x: left, y: top }; - } - } - return null; - }, movePredicate = (e, sensor, moveDistance) => { - if (!sensor.drag) - return null; - switch (e.key) { - case 'ArrowLeft': { - return { - x: sensor.drag.x - moveDistance, - y: sensor.drag.y, - }; - } - case 'ArrowRight': { - return { - x: sensor.drag.x + moveDistance, - y: sensor.drag.y, - }; - } - case 'ArrowUp': { - return { - x: sensor.drag.x, - y: sensor.drag.y - moveDistance, - }; - } - case 'ArrowDown': { - return { - x: sensor.drag.x, - y: sensor.drag.y + moveDistance, - }; - } - default: { - return null; - } - } - }, cancelPredicate = (e, sensor) => { - if (sensor.drag && e.key === 'Escape') { - return { x: sensor.drag.x, y: sensor.drag.y }; - } - return null; - }, endPredicate = (e, sensor) => { - if (sensor.drag && (e.key === 'Enter' || e.key === 'Space' || e.key === ' ')) { - return { x: sensor.drag.x, y: sensor.drag.y }; - } - return null; - }, } = options; - this._moveDistance = moveDistance; - this._startPredicate = startPredicate; - this._movePredicate = movePredicate; - this._cancelPredicate = cancelPredicate; - this._endPredicate = endPredicate; - this.cancel = this.cancel.bind(this); - this._onKeyDown = this._onKeyDown.bind(this); - document.addEventListener('keydown', this._onKeyDown); - window.addEventListener('blur', this.cancel); - window.addEventListener('visibilitychange', this.cancel); - } - _onKeyDown(e) { - if (!this.drag) { - const startPosition = this._startPredicate(e, this, this._moveDistance); - if (startPosition) { - e.preventDefault(); - this._start({ - type: 'start', - x: startPosition.x, - y: startPosition.y, - srcEvent: e, - }); - } - return; - } - const cancelPosition = this._cancelPredicate(e, this, this._moveDistance); - if (cancelPosition) { - e.preventDefault(); - this._cancel({ - type: 'cancel', - x: cancelPosition.x, - y: cancelPosition.y, - srcEvent: e, - }); - return; - } - const endPosition = this._endPredicate(e, this, this._moveDistance); - if (endPosition) { - e.preventDefault(); - this._end({ - type: 'end', - x: endPosition.x, - y: endPosition.y, - srcEvent: e, - }); - return; - } - const movePosition = this._movePredicate(e, this, this._moveDistance); - if (movePosition) { - e.preventDefault(); - this._move({ - type: 'move', - x: movePosition.x, - y: movePosition.y, - srcEvent: e, - }); - return; - } - } - updateSettings(options = {}) { - if (options.moveDistance !== undefined) { - this._moveDistance = options.moveDistance; - } - if (options.startPredicate !== undefined) { - this._startPredicate = options.startPredicate; - } - if (options.movePredicate !== undefined) { - this._movePredicate = options.movePredicate; - } - if (options.cancelPredicate !== undefined) { - this._cancelPredicate = options.cancelPredicate; - } - if (options.endPredicate !== undefined) { - this._endPredicate = options.endPredicate; - } - } - destroy() { - if (this.isDestroyed) - return; - super.destroy(); - document.removeEventListener('keydown', this._onKeyDown); - window.removeEventListener('blur', this.cancel); - window.removeEventListener('visibilitychange', this.cancel); - } - } - - const STYLES_CACHE = new WeakMap(); - function getStyle(element, prop) { - if (!prop) - return ''; - let styleDeclaration = STYLES_CACHE.get(element); - if (!styleDeclaration) { - styleDeclaration = window.getComputedStyle(element, null); - STYLES_CACHE.set(element, styleDeclaration); - } - return styleDeclaration.getPropertyValue(prop); - } - - function getStyleAsFloat(el, styleProp) { - return parseFloat(getStyle(el, styleProp)) || 0; - } - - var DraggableStartPredicateState; - (function (DraggableStartPredicateState) { - DraggableStartPredicateState[DraggableStartPredicateState["PENDING"] = 0] = "PENDING"; - DraggableStartPredicateState[DraggableStartPredicateState["RESOLVED"] = 1] = "RESOLVED"; - DraggableStartPredicateState[DraggableStartPredicateState["REJECTED"] = 2] = "REJECTED"; - })(DraggableStartPredicateState || (DraggableStartPredicateState = {})); - - class Pool { - constructor(createObject, onPut) { - this._data = []; - this._createObject = createObject; - this._onPut = onPut; - } - pick() { - return this._data.length ? this._data.pop() : this._createObject(); - } - put(object) { - if (this._data.indexOf(object) === -1) { - this._onPut && this._onPut(object); - this._data.push(object); - } - } - reset() { - this._data.length = 0; - } - } - - function isRectsOverlapping(a, b) { - return !(a.right <= b.left || b.right <= a.left || a.bottom <= b.top || b.bottom <= a.top); - } - - function getIntersectionArea(a, b) { - if (!isRectsOverlapping(a, b)) - return 0; - const width = Math.min(a.right, b.right) - Math.max(a.left, b.left); - const height = Math.min(a.bottom, b.bottom) - Math.max(a.top, b.top); - return width * height; - } - - function getIntersectionScore(a, b) { - const area = getIntersectionArea(a, b); - if (!area) - return 0; - const maxArea = Math.min(a.width, b.width) * Math.min(a.height, b.height); - return (area / maxArea) * 100; - } - - function isWindow(value) { - return value === window; - } - - function getContentRect(element, result = { width: 0, height: 0, left: 0, right: 0, top: 0, bottom: 0 }) { - if (isWindow(element)) { - result.width = document.documentElement.clientWidth; - result.height = document.documentElement.clientHeight; - result.left = 0; - result.right = result.width; - result.top = 0; - result.bottom = result.height; - } - else { - const { left, top } = element.getBoundingClientRect(); - const borderLeft = element.clientLeft || getStyleAsFloat(element, 'border-left-width'); - const borderTop = element.clientTop || getStyleAsFloat(element, 'border-top-width'); - result.width = element.clientWidth; - result.height = element.clientHeight; - result.left = left + borderLeft; - result.right = result.left + result.width; - result.top = top + borderTop; - result.bottom = result.top + result.height; - } - return result; - } - - function distanceBetweenPoints(x1, y1, x2, y2) { - return Math.sqrt(Math.pow(x2 - x1, 2) + Math.pow(y2 - y1, 2)); - } - function getDistanceBetweenRects(a, b) { - if (isRectsOverlapping(a, b)) - return 0; - if (a.right < b.left) { - if (a.bottom < b.top) { - return distanceBetweenPoints(a.right, a.bottom, b.left, b.top); - } - else if (a.top > b.bottom) { - return distanceBetweenPoints(a.right, a.top, b.left, b.bottom); - } - else { - return b.left - a.right; - } - } - else if (a.left > b.right) { - if (a.bottom < b.top) { - return distanceBetweenPoints(a.left, a.bottom, b.right, b.top); - } - else if (a.top > b.bottom) { - return distanceBetweenPoints(a.left, a.top, b.right, b.bottom); - } - else { - return a.left - b.right; - } - } - else { - if (a.bottom < b.top) { - return b.top - a.bottom; - } - else { - return a.top - b.bottom; - } - } - } - - function getScrollElement(element) { - if (isWindow(element) || element === document.documentElement || element === document.body) { - return window; - } - else { - return element; - } - } - - function getScrollLeft(element) { - return isWindow(element) ? element.pageXOffset : element.scrollLeft; - } - - function getScrollLeftMax(element) { - if (isWindow(element)) - element = document.documentElement; - return element.scrollWidth - element.clientWidth; - } - - function getScrollTop(element) { - return isWindow(element) ? element.pageYOffset : element.scrollTop; - } - - function getScrollTopMax(element) { - if (isWindow(element)) - element = document.documentElement; - return element.scrollHeight - element.clientHeight; - } - - const R1 = { - width: 0, - height: 0, - left: 0, - right: 0, - top: 0, - bottom: 0, - }; - const R2 = Object.assign({}, R1); - const R3 = Object.assign({}, R1); - const DEFAULT_THRESHOLD = 50; - const SPEED_DATA = { - direction: 'none', - threshold: 0, - distance: 0, - value: 0, - maxValue: 0, - duration: 0, - speed: 0, - deltaTime: 0, - isEnding: false, - }; - const AUTO_SCROLL_AXIS = { - x: 1, - y: 2, - }; - const AUTO_SCROLL_AXIS_DIRECTION = { - forward: 4, - reverse: 8, - }; - const AUTO_SCROLL_DIRECTION_X = { - none: 0, - left: (AUTO_SCROLL_AXIS.x | AUTO_SCROLL_AXIS_DIRECTION.reverse), - right: (AUTO_SCROLL_AXIS.x | AUTO_SCROLL_AXIS_DIRECTION.forward), - }; - const AUTO_SCROLL_DIRECTION_Y = { - none: 0, - up: (AUTO_SCROLL_AXIS.y | AUTO_SCROLL_AXIS_DIRECTION.reverse), - down: (AUTO_SCROLL_AXIS.y | AUTO_SCROLL_AXIS_DIRECTION.forward), - }; - const AUTO_SCROLL_DIRECTION = Object.assign(Object.assign({}, AUTO_SCROLL_DIRECTION_X), AUTO_SCROLL_DIRECTION_Y); - function getDirectionAsString(direction) { - switch (direction) { - case AUTO_SCROLL_DIRECTION_X.none: - case AUTO_SCROLL_DIRECTION_Y.none: - return 'none'; - case AUTO_SCROLL_DIRECTION_X.left: - return 'left'; - case AUTO_SCROLL_DIRECTION_X.right: - return 'right'; - case AUTO_SCROLL_DIRECTION_Y.up: - return 'up'; - case AUTO_SCROLL_DIRECTION_Y.down: - return 'down'; - default: - throw new Error(`Unknown direction value: ${direction}`); - } - } - function getPaddedRect(rect, padding, result) { - let { left = 0, right = 0, top = 0, bottom = 0 } = padding; - left = Math.max(0, left); - right = Math.max(0, right); - top = Math.max(0, top); - bottom = Math.max(0, bottom); - result.width = rect.width + left + right; - result.height = rect.height + top + bottom; - result.left = rect.left - left; - result.top = rect.top - top; - result.right = rect.right + right; - result.bottom = rect.bottom + bottom; - return result; - } - function isScrolledToMax(scrollValue, maxScrollValue) { - return Math.ceil(scrollValue) >= Math.floor(maxScrollValue); - } - function computeThreshold(idealThreshold, targetSize) { - return Math.min(targetSize / 2, idealThreshold); - } - function computeEdgeOffset(threshold, inertAreaSize, itemSize, targetSize) { - return Math.max(0, itemSize + threshold * 2 + targetSize * inertAreaSize - targetSize) / 2; - } - class AutoScrollItemData { - constructor() { - this.positionX = 0; - this.positionY = 0; - this.directionX = AUTO_SCROLL_DIRECTION.none; - this.directionY = AUTO_SCROLL_DIRECTION.none; - this.overlapCheckRequestTime = 0; - } - } - class AutoScrollAction { - constructor() { - this.element = null; - this.requestX = null; - this.requestY = null; - this.scrollLeft = 0; - this.scrollTop = 0; - } - reset() { - if (this.requestX) - this.requestX.action = null; - if (this.requestY) - this.requestY.action = null; - this.element = null; - this.requestX = null; - this.requestY = null; - this.scrollLeft = 0; - this.scrollTop = 0; - } - addRequest(request) { - if (AUTO_SCROLL_AXIS.x & request.direction) { - this.requestX && this.removeRequest(this.requestX); - this.requestX = request; - } - else { - this.requestY && this.removeRequest(this.requestY); - this.requestY = request; - } - request.action = this; - } - removeRequest(request) { - if (this.requestX === request) { - this.requestX = null; - request.action = null; - } - else if (this.requestY === request) { - this.requestY = null; - request.action = null; - } - } - computeScrollValues() { - if (!this.element) - return; - this.scrollLeft = this.requestX ? this.requestX.value : getScrollLeft(this.element); - this.scrollTop = this.requestY ? this.requestY.value : getScrollTop(this.element); - } - scroll() { - if (!this.element) - return; - if (this.element.scrollTo) { - this.element.scrollTo(this.scrollLeft, this.scrollTop); - } - else { - this.element.scrollLeft = this.scrollLeft; - this.element.scrollTop = this.scrollTop; - } - } - } - class AutoScrollRequest { - constructor() { - this.item = null; - this.element = null; - this.isActive = false; - this.isEnding = false; - this.direction = 0; - this.value = NaN; - this.maxValue = 0; - this.threshold = 0; - this.distance = 0; - this.deltaTime = 0; - this.speed = 0; - this.duration = 0; - this.action = null; - } - reset() { - if (this.isActive) - this.onStop(); - this.item = null; - this.element = null; - this.isActive = false; - this.isEnding = false; - this.direction = 0; - this.value = NaN; - this.maxValue = 0; - this.threshold = 0; - this.distance = 0; - this.deltaTime = 0; - this.speed = 0; - this.duration = 0; - this.action = null; - } - hasReachedEnd() { - return AUTO_SCROLL_AXIS_DIRECTION.forward & this.direction - ? isScrolledToMax(this.value, this.maxValue) - : this.value <= 0; - } - computeCurrentScrollValue() { - if (!this.element) - return 0; - if (this.value !== this.value) { - return AUTO_SCROLL_AXIS.x & this.direction - ? getScrollLeft(this.element) - : getScrollTop(this.element); - } - return Math.max(0, Math.min(this.value, this.maxValue)); - } - computeNextScrollValue() { - const delta = this.speed * (this.deltaTime / 1000); - const nextValue = AUTO_SCROLL_AXIS_DIRECTION.forward & this.direction ? this.value + delta : this.value - delta; - return Math.max(0, Math.min(nextValue, this.maxValue)); - } - computeSpeed() { - if (!this.item || !this.element) - return 0; - const { speed } = this.item; - if (typeof speed === 'function') { - SPEED_DATA.direction = getDirectionAsString(this.direction); - SPEED_DATA.threshold = this.threshold; - SPEED_DATA.distance = this.distance; - SPEED_DATA.value = this.value; - SPEED_DATA.maxValue = this.maxValue; - SPEED_DATA.duration = this.duration; - SPEED_DATA.speed = this.speed; - SPEED_DATA.deltaTime = this.deltaTime; - SPEED_DATA.isEnding = this.isEnding; - return speed(this.element, SPEED_DATA); - } - else { - return speed; - } - } - tick(deltaTime) { - if (!this.isActive) { - this.isActive = true; - this.onStart(); - } - this.deltaTime = deltaTime; - this.value = this.computeCurrentScrollValue(); - this.speed = this.computeSpeed(); - this.value = this.computeNextScrollValue(); - this.duration += deltaTime; - return this.value; - } - onStart() { - if (!this.item || !this.element) - return; - const { onStart } = this.item; - if (typeof onStart === 'function') { - onStart(this.element, getDirectionAsString(this.direction)); - } - } - onStop() { - if (!this.item || !this.element) - return; - const { onStop } = this.item; - if (typeof onStop === 'function') { - onStop(this.element, getDirectionAsString(this.direction)); - } - } - } - class AutoScroll { - constructor(options = {}) { - const { overlapCheckInterval = 150 } = options; - this.items = []; - this.settings = { - overlapCheckInterval, - }; - this._actions = []; - this._isDestroyed = false; - this._isTicking = false; - this._tickTime = 0; - this._tickDeltaTime = 0; - this._requests = { - [AUTO_SCROLL_AXIS.x]: new Map(), - [AUTO_SCROLL_AXIS.y]: new Map(), - }; - this._itemData = new Map(); - this._requestPool = new Pool(() => new AutoScrollRequest(), (request) => request.reset()); - this._actionPool = new Pool(() => new AutoScrollAction(), (action) => action.reset()); - this._emitter = new eventti.Emitter(); - this._frameRead = this._frameRead.bind(this); - this._frameWrite = this._frameWrite.bind(this); - } - _frameRead(time) { - if (this._isDestroyed) - return; - if (time && this._tickTime) { - this._tickDeltaTime = time - this._tickTime; - this._tickTime = time; - this._updateItems(); - this._updateRequests(); - this._updateActions(); - } - else { - this._tickTime = time; - this._tickDeltaTime = 0; - } - } - _frameWrite() { - if (this._isDestroyed) - return; - this._applyActions(); - } - _startTicking() { - if (this._isTicking) - return; - this._isTicking = true; - ticker.on(tickerReadPhase, this._frameRead); - ticker.on(tickerWritePhase, this._frameWrite); - } - _stopTicking() { - if (!this._isTicking) - return; - this._isTicking = false; - this._tickTime = 0; - this._tickDeltaTime = 0; - ticker.off(tickerReadPhase, this._frameRead); - ticker.off(tickerWritePhase, this._frameWrite); - } - _getItemClientRect(item, result = { width: 0, height: 0, left: 0, right: 0, top: 0, bottom: 0 }) { - const { clientRect } = item; - result.left = clientRect.left; - result.top = clientRect.top; - result.width = clientRect.width; - result.height = clientRect.height; - result.right = clientRect.left + clientRect.width; - result.bottom = clientRect.top + clientRect.height; - return result; - } - _requestItemScroll(item, axis, element, direction, threshold, distance, maxValue) { - const reqMap = this._requests[axis]; - let request = reqMap.get(item); - if (request) { - if (request.element !== element || request.direction !== direction) { - request.reset(); - } - } - else { - request = this._requestPool.pick(); - reqMap.set(item, request); - } - request.item = item; - request.element = element; - request.direction = direction; - request.threshold = threshold; - request.distance = distance; - request.maxValue = maxValue; - } - _cancelItemScroll(item, axis) { - const reqMap = this._requests[axis]; - const request = reqMap.get(item); - if (!request) - return; - if (request.action) - request.action.removeRequest(request); - this._requestPool.put(request); - reqMap.delete(item); - } - _checkItemOverlap(item, checkX, checkY) { - const { inertAreaSize, targets } = item; - if (!targets.length) { - checkX && this._cancelItemScroll(item, AUTO_SCROLL_AXIS.x); - checkY && this._cancelItemScroll(item, AUTO_SCROLL_AXIS.y); - return; - } - const itemData = this._itemData.get(item); - const moveDirectionX = itemData.directionX; - const moveDirectionY = itemData.directionY; - if (!moveDirectionX && !moveDirectionY) { - checkX && this._cancelItemScroll(item, AUTO_SCROLL_AXIS.x); - checkY && this._cancelItemScroll(item, AUTO_SCROLL_AXIS.y); - return; - } - const itemRect = this._getItemClientRect(item, R1); - let xElement = null; - let xPriority = -Infinity; - let xThreshold = 0; - let xScore = -Infinity; - let xDirection = AUTO_SCROLL_DIRECTION.none; - let xDistance = 0; - let xMaxScroll = 0; - let yElement = null; - let yPriority = -Infinity; - let yThreshold = 0; - let yScore = -Infinity; - let yDirection = AUTO_SCROLL_DIRECTION.none; - let yDistance = 0; - let yMaxScroll = 0; - let i = 0; - for (; i < targets.length; i++) { - const target = targets[i]; - const targetThreshold = typeof target.threshold === 'number' ? target.threshold : DEFAULT_THRESHOLD; - const testAxisX = !!(checkX && moveDirectionX && target.axis !== 'y'); - const testAxisY = !!(checkY && moveDirectionY && target.axis !== 'x'); - const testPriority = target.priority || 0; - if ((!testAxisX || testPriority < xPriority) && (!testAxisY || testPriority < yPriority)) { - continue; - } - const testElement = getScrollElement(target.element || target); - const testMaxScrollX = testAxisX ? getScrollLeftMax(testElement) : -1; - const testMaxScrollY = testAxisY ? getScrollTopMax(testElement) : -1; - if (testMaxScrollX <= 0 && testMaxScrollY <= 0) - continue; - const testRect = getContentRect(testElement, R2); - let testScore = getIntersectionScore(itemRect, testRect) || -Infinity; - if (testScore === -Infinity) { - if (target.padding && - isRectsOverlapping(itemRect, getPaddedRect(testRect, target.padding, R3))) { - testScore = -getDistanceBetweenRects(itemRect, testRect); - } - else { - continue; - } - } - if (testAxisX && - testPriority >= xPriority && - testMaxScrollX > 0 && - (testPriority > xPriority || testScore > xScore)) { - let testDistance = 0; - let testDirection = AUTO_SCROLL_DIRECTION.none; - const testThreshold = computeThreshold(targetThreshold, testRect.width); - const testEdgeOffset = computeEdgeOffset(testThreshold, inertAreaSize, itemRect.width, testRect.width); - if (moveDirectionX === AUTO_SCROLL_DIRECTION.right) { - testDistance = testRect.right + testEdgeOffset - itemRect.right; - if (testDistance <= testThreshold && - !isScrolledToMax(getScrollLeft(testElement), testMaxScrollX)) { - testDirection = AUTO_SCROLL_DIRECTION.right; - } - } - else if (moveDirectionX === AUTO_SCROLL_DIRECTION.left) { - testDistance = itemRect.left - (testRect.left - testEdgeOffset); - if (testDistance <= testThreshold && getScrollLeft(testElement) > 0) { - testDirection = AUTO_SCROLL_DIRECTION.left; - } - } - if (testDirection) { - xElement = testElement; - xPriority = testPriority; - xThreshold = testThreshold; - xScore = testScore; - xDirection = testDirection; - xDistance = testDistance; - xMaxScroll = testMaxScrollX; - } - } - if (testAxisY && - testPriority >= yPriority && - testMaxScrollY > 0 && - (testPriority > yPriority || testScore > yScore)) { - let testDistance = 0; - let testDirection = AUTO_SCROLL_DIRECTION_Y.none; - const testThreshold = computeThreshold(targetThreshold, testRect.height); - const testEdgeOffset = computeEdgeOffset(testThreshold, inertAreaSize, itemRect.height, testRect.height); - if (moveDirectionY === AUTO_SCROLL_DIRECTION.down) { - testDistance = testRect.bottom + testEdgeOffset - itemRect.bottom; - if (testDistance <= testThreshold && - !isScrolledToMax(getScrollTop(testElement), testMaxScrollY)) { - testDirection = AUTO_SCROLL_DIRECTION.down; - } - } - else if (moveDirectionY === AUTO_SCROLL_DIRECTION.up) { - testDistance = itemRect.top - (testRect.top - testEdgeOffset); - if (testDistance <= testThreshold && getScrollTop(testElement) > 0) { - testDirection = AUTO_SCROLL_DIRECTION.up; - } - } - if (testDirection) { - yElement = testElement; - yPriority = testPriority; - yThreshold = testThreshold; - yScore = testScore; - yDirection = testDirection; - yDistance = testDistance; - yMaxScroll = testMaxScrollY; - } - } - } - if (checkX) { - if (xElement && xDirection) { - this._requestItemScroll(item, AUTO_SCROLL_AXIS.x, xElement, xDirection, xThreshold, xDistance, xMaxScroll); - } - else { - this._cancelItemScroll(item, AUTO_SCROLL_AXIS.x); - } - } - if (checkY) { - if (yElement && yDirection) { - this._requestItemScroll(item, AUTO_SCROLL_AXIS.y, yElement, yDirection, yThreshold, yDistance, yMaxScroll); - } - else { - this._cancelItemScroll(item, AUTO_SCROLL_AXIS.y); - } - } - } - _updateScrollRequest(scrollRequest) { - const item = scrollRequest.item; - const { inertAreaSize, smoothStop, targets } = item; - const itemRect = this._getItemClientRect(item, R1); - let hasReachedEnd = null; - let i = 0; - for (; i < targets.length; i++) { - const target = targets[i]; - const testElement = getScrollElement(target.element || target); - if (testElement !== scrollRequest.element) - continue; - const testIsAxisX = !!(AUTO_SCROLL_AXIS.x & scrollRequest.direction); - if (testIsAxisX) { - if (target.axis === 'y') - continue; - } - else { - if (target.axis === 'x') - continue; - } - const testMaxScroll = testIsAxisX - ? getScrollLeftMax(testElement) - : getScrollTopMax(testElement); - if (testMaxScroll <= 0) { - break; - } - const testRect = getContentRect(testElement, R2); - const testScore = getIntersectionScore(itemRect, testRect) || -Infinity; - if (testScore === -Infinity) { - const padding = target.scrollPadding || target.padding; - if (!(padding && isRectsOverlapping(itemRect, getPaddedRect(testRect, padding, R3)))) { - break; - } - } - const targetThreshold = typeof target.threshold === 'number' ? target.threshold : DEFAULT_THRESHOLD; - const testThreshold = computeThreshold(targetThreshold, testIsAxisX ? testRect.width : testRect.height); - const testEdgeOffset = computeEdgeOffset(testThreshold, inertAreaSize, testIsAxisX ? itemRect.width : itemRect.height, testIsAxisX ? testRect.width : testRect.height); - let testDistance = 0; - if (scrollRequest.direction === AUTO_SCROLL_DIRECTION.left) { - testDistance = itemRect.left - (testRect.left - testEdgeOffset); - } - else if (scrollRequest.direction === AUTO_SCROLL_DIRECTION.right) { - testDistance = testRect.right + testEdgeOffset - itemRect.right; - } - else if (scrollRequest.direction === AUTO_SCROLL_DIRECTION.up) { - testDistance = itemRect.top - (testRect.top - testEdgeOffset); - } - else { - testDistance = testRect.bottom + testEdgeOffset - itemRect.bottom; - } - if (testDistance > testThreshold) { - break; - } - const testScroll = testIsAxisX ? getScrollLeft(testElement) : getScrollTop(testElement); - hasReachedEnd = - AUTO_SCROLL_AXIS_DIRECTION.forward & scrollRequest.direction - ? isScrolledToMax(testScroll, testMaxScroll) - : testScroll <= 0; - if (hasReachedEnd) - break; - scrollRequest.maxValue = testMaxScroll; - scrollRequest.threshold = testThreshold; - scrollRequest.distance = testDistance; - scrollRequest.isEnding = false; - return true; - } - if (smoothStop === true && scrollRequest.speed > 0) { - if (hasReachedEnd === null) - hasReachedEnd = scrollRequest.hasReachedEnd(); - scrollRequest.isEnding = hasReachedEnd ? false : true; - } - else { - scrollRequest.isEnding = false; - } - return scrollRequest.isEnding; - } - _updateItems() { - for (let i = 0; i < this.items.length; i++) { - const item = this.items[i]; - const itemData = this._itemData.get(item); - const { x, y } = item.position; - const prevX = itemData.positionX; - const prevY = itemData.positionY; - if (x === prevX && y === prevY) { - continue; - } - itemData.directionX = - x > prevX - ? AUTO_SCROLL_DIRECTION.right - : x < prevX - ? AUTO_SCROLL_DIRECTION.left - : itemData.directionX; - itemData.directionY = - y > prevY - ? AUTO_SCROLL_DIRECTION.down - : y < prevY - ? AUTO_SCROLL_DIRECTION.up - : itemData.directionY; - itemData.positionX = x; - itemData.positionY = y; - if (itemData.overlapCheckRequestTime === 0) { - itemData.overlapCheckRequestTime = this._tickTime; - } - } - } - _updateRequests() { - const items = this.items; - const requestsX = this._requests[AUTO_SCROLL_AXIS.x]; - const requestsY = this._requests[AUTO_SCROLL_AXIS.y]; - let i = 0; - for (; i < items.length; i++) { - const item = items[i]; - const itemData = this._itemData.get(item); - const checkTime = itemData.overlapCheckRequestTime; - let needsCheck = checkTime > 0 && this._tickTime - checkTime > this.settings.overlapCheckInterval; - let checkX = true; - const reqX = requestsX.get(item); - if (reqX && reqX.isActive) { - checkX = !this._updateScrollRequest(reqX); - if (checkX) { - needsCheck = true; - this._cancelItemScroll(item, AUTO_SCROLL_AXIS.x); - } - } - let checkY = true; - const reqY = requestsY.get(item); - if (reqY && reqY.isActive) { - checkY = !this._updateScrollRequest(reqY); - if (checkY) { - needsCheck = true; - this._cancelItemScroll(item, AUTO_SCROLL_AXIS.y); - } - } - if (needsCheck) { - itemData.overlapCheckRequestTime = 0; - this._checkItemOverlap(item, checkX, checkY); - } - } - } - _requestAction(request, axis) { - const isAxisX = axis === AUTO_SCROLL_AXIS.x; - let action = null; - let i = 0; - for (; i < this._actions.length; i++) { - action = this._actions[i]; - if (request.element !== action.element) { - action = null; - continue; - } - if (isAxisX ? action.requestX : action.requestY) { - this._cancelItemScroll(request.item, axis); - return; - } - break; - } - if (!action) - action = this._actionPool.pick(); - action.element = request.element; - action.addRequest(request); - request.tick(this._tickDeltaTime); - this._actions.push(action); - } - _updateActions() { - let i = 0; - for (i = 0; i < this.items.length; i++) { - const item = this.items[i]; - const reqX = this._requests[AUTO_SCROLL_AXIS.x].get(item); - const reqY = this._requests[AUTO_SCROLL_AXIS.y].get(item); - if (reqX) - this._requestAction(reqX, AUTO_SCROLL_AXIS.x); - if (reqY) - this._requestAction(reqY, AUTO_SCROLL_AXIS.y); - } - for (i = 0; i < this._actions.length; i++) { - this._actions[i].computeScrollValues(); - } - } - _applyActions() { - if (!this._actions.length) - return; - this._emitter.emit('beforescroll'); - let i = 0; - for (i = 0; i < this._actions.length; i++) { - this._actions[i].scroll(); - this._actionPool.put(this._actions[i]); - } - this._actions.length = 0; - let item; - for (i = 0; i < this.items.length; i++) { - item = this.items[i]; - if (item.onPrepareScrollEffect) { - item.onPrepareScrollEffect(); - } - } - for (i = 0; i < this.items.length; i++) { - item = this.items[i]; - if (item.onApplyScrollEffect) { - item.onApplyScrollEffect(); - } - } - this._emitter.emit('afterscroll'); - } - on(eventName, listener) { - return this._emitter.on(eventName, listener); - } - off(eventName, listener) { - this._emitter.off(eventName, listener); - } - addItem(item) { - if (this._isDestroyed || this._itemData.has(item)) - return; - const { x, y } = item.position; - const itemData = new AutoScrollItemData(); - itemData.positionX = x; - itemData.positionY = y; - itemData.directionX = AUTO_SCROLL_DIRECTION.none; - itemData.directionY = AUTO_SCROLL_DIRECTION.none; - itemData.overlapCheckRequestTime = this._tickTime; - this._itemData.set(item, itemData); - this.items.push(item); - if (!this._isTicking) - this._startTicking(); - } - removeItem(item) { - if (this._isDestroyed) - return; - const index = this.items.indexOf(item); - if (index === -1) - return; - if (this._requests[AUTO_SCROLL_AXIS.x].get(item)) { - this._cancelItemScroll(item, AUTO_SCROLL_AXIS.x); - this._requests[AUTO_SCROLL_AXIS.x].delete(item); - } - if (this._requests[AUTO_SCROLL_AXIS.y].get(item)) { - this._cancelItemScroll(item, AUTO_SCROLL_AXIS.y); - this._requests[AUTO_SCROLL_AXIS.y].delete(item); - } - this._itemData.delete(item); - this.items.splice(index, 1); - if (this._isTicking && !this.items.length) { - this._stopTicking(); - } - } - isDestroyed() { - return this._isDestroyed; - } - isItemScrollingX(item) { - var _a; - return !!((_a = this._requests[AUTO_SCROLL_AXIS.x].get(item)) === null || _a === void 0 ? void 0 : _a.isActive); - } - isItemScrollingY(item) { - var _a; - return !!((_a = this._requests[AUTO_SCROLL_AXIS.y].get(item)) === null || _a === void 0 ? void 0 : _a.isActive); - } - isItemScrolling(item) { - return this.isItemScrollingX(item) || this.isItemScrollingY(item); - } - updateSettings(options = {}) { - const { overlapCheckInterval = this.settings.overlapCheckInterval } = options; - this.settings.overlapCheckInterval = overlapCheckInterval; - } - destroy() { - if (this._isDestroyed) - return; - const items = this.items.slice(0); - let i = 0; - for (; i < items.length; i++) { - this.removeItem(items[i]); - } - this._actions.length = 0; - this._requestPool.reset(); - this._actionPool.reset(); - this._emitter.off(); - this._isDestroyed = true; - } - } - - new AutoScroll(); - - describe('BaseSensor', () => { - describe('drag property', () => { - it(`should be null on init`, function () { - const s = new BaseSensor(); - chai.assert.equal(s.drag, null); - s.destroy(); - }); - }); - describe('isDestroyed property', () => { - it(`should be false on init`, function () { - const s = new BaseSensor(); - chai.assert.equal(s.isDestroyed, false); - s.destroy(); - }); - }); - describe('_emitter', () => { - it('should allow duplicate listeners by default', () => { - const s = new BaseSensor(); - chai.assert.equal(s['_emitter'].allowDuplicateListeners, true); - }); - it('should replace event listeners with duplicate ids by default', () => { - const s = new BaseSensor(); - chai.assert.equal(s['_emitter'].idDedupeMode, 'replace'); - }); - }); - describe('_start method', () => { - it(`should create drag data`, function () { - const s = new BaseSensor(); - s['_start']({ type: 'start', x: 1, y: 2 }); - chai.assert.deepEqual(s.drag, { x: 1, y: 2 }); - s.destroy(); - }); - it(`should not modify isDestroyed property`, function () { - const s = new BaseSensor(); - chai.assert.equal(s.isDestroyed, false); - s['_start']({ type: 'start', x: 1, y: 2 }); - chai.assert.equal(s.isDestroyed, false); - s.destroy(); - }); - it(`should emit "start" event with correct arguments after updating instance properties`, function () { - const s = new BaseSensor(); - const startArgs = { type: 'start', x: 1, y: 2 }; - let emitCount = 0; - s.on('start', (data) => { - chai.assert.deepEqual(s.drag, { x: data.x, y: data.y }); - chai.assert.equal(s.isDestroyed, false); - chai.assert.deepEqual(data, startArgs); - ++emitCount; - }); - s['_start'](startArgs); - chai.assert.equal(emitCount, 1); - s.destroy(); - }); - it(`should not do anything if drag is already active`, function () { - const s = new BaseSensor(); - let emitCount = 0; - s.on('start', () => void ++emitCount); - s['_start']({ type: 'start', x: 1, y: 2 }); - const isDestroyed = s.isDestroyed; - const { drag } = s; - s['_start']({ type: 'start', x: 3, y: 4 }); - chai.assert.deepEqual(s.drag, drag); - chai.assert.equal(s.isDestroyed, isDestroyed); - chai.assert.equal(emitCount, 1); - s.destroy(); - }); - it(`should not do anything if instance is destroyed (isDestroyed is true)`, function () { - const s = new BaseSensor(); - let emitCount = 0; - s.on('start', () => void ++emitCount); - s.destroy(); - const { drag, isDestroyed } = s; - s['_start']({ type: 'start', x: 3, y: 4 }); - chai.assert.deepEqual(s.drag, drag); - chai.assert.equal(s.isDestroyed, isDestroyed); - chai.assert.equal(emitCount, 0); - s.destroy(); - }); - }); - describe('_move method', () => { - it(`should update drag data to reflect the provided coordinates`, function () { - const s = new BaseSensor(); - s['_start']({ type: 'start', x: 1, y: 2 }); - s['_move']({ type: 'move', x: 3, y: 4 }); - chai.assert.deepEqual(s.drag, { x: 3, y: 4 }); - s.destroy(); - }); - it(`should not modify isDestroyed property`, function () { - const s = new BaseSensor(); - s['_start']({ type: 'start', x: 1, y: 2 }); - chai.assert.equal(s.isDestroyed, false); - s['_move']({ type: 'move', x: 3, y: 4 }); - chai.assert.equal(s.isDestroyed, false); - s.destroy(); - }); - it(`should emit "move" event with correct arguments after updating instance properties`, function () { - const s = new BaseSensor(); - const moveArgs = { type: 'move', x: 3, y: 4 }; - let emitCount = 0; - s.on('move', (data) => { - chai.assert.deepEqual(s.drag, { x: data.x, y: data.y }); - chai.assert.equal(s.isDestroyed, false); - chai.assert.deepEqual(data, moveArgs); - ++emitCount; - }); - s['_start']({ type: 'start', x: 1, y: 2 }); - s['_move'](moveArgs); - chai.assert.equal(emitCount, 1); - s.destroy(); - }); - it(`should not do anything if drag is not active`, function () { - const s = new BaseSensor(); - const { drag, isDestroyed } = s; - let emitCount = 0; - s.on('move', () => void ++emitCount); - s['_move']({ type: 'move', x: 3, y: 4 }); - chai.assert.deepEqual(s.drag, drag); - chai.assert.equal(s.isDestroyed, isDestroyed); - chai.assert.equal(emitCount, 0); - s.destroy(); - }); - }); - describe('_cancel method', () => { - it(`should reset drag data`, function () { - const s = new BaseSensor(); - s['_start']({ type: 'start', x: 1, y: 2 }); - s['_cancel']({ type: 'cancel', x: 5, y: 6 }); - chai.assert.equal(s.drag, null); - s.destroy(); - }); - it(`should not modify isDestroyed property`, function () { - const s = new BaseSensor(); - s['_start']({ type: 'start', x: 1, y: 2 }); - chai.assert.equal(s.isDestroyed, false); - s['_cancel']({ type: 'cancel', x: 5, y: 6 }); - chai.assert.equal(s.isDestroyed, false); - s.destroy(); - }); - it(`should emit "cancel" event with correct arguments after updating instance properties`, function () { - const s = new BaseSensor(); - const cancelArgs = { type: 'cancel', x: 5, y: 6 }; - let emitCount = 0; - s.on('cancel', (data) => { - chai.assert.deepEqual(s.drag, { x: data.x, y: data.y }); - chai.assert.equal(s.isDestroyed, false); - chai.assert.deepEqual(data, cancelArgs); - ++emitCount; - }); - s['_start']({ type: 'start', x: 1, y: 2 }); - s['_cancel'](cancelArgs); - chai.assert.equal(emitCount, 1); - s.destroy(); - }); - it(`should not do anything if drag is not active`, function () { - const s = new BaseSensor(); - const { drag, isDestroyed } = s; - let emitCount = 0; - s.on('cancel', () => void ++emitCount); - s['_cancel']({ type: 'cancel', x: 3, y: 4 }); - chai.assert.deepEqual(s.drag, drag); - chai.assert.equal(s.isDestroyed, isDestroyed); - chai.assert.equal(emitCount, 0); - s.destroy(); - }); - }); - describe('_end method', () => { - it(`should reset drag data`, function () { - const s = new BaseSensor(); - s['_start']({ type: 'start', x: 1, y: 2 }); - s['_end']({ type: 'end', x: 5, y: 6 }); - chai.assert.equal(s.drag, null); - s.destroy(); - }); - it(`should not modify isDestroyed property`, function () { - const s = new BaseSensor(); - s['_start']({ type: 'start', x: 1, y: 2 }); - chai.assert.equal(s.isDestroyed, false); - s['_end']({ type: 'end', x: 5, y: 6 }); - chai.assert.equal(s.isDestroyed, false); - s.destroy(); - }); - it(`should emit "end" event with correct arguments after updating instance properties`, function () { - const s = new BaseSensor(); - const endArgs = { type: 'end', x: 5, y: 6 }; - let emitCount = 0; - s.on('end', (data) => { - chai.assert.deepEqual(s.drag, { x: data.x, y: data.y }); - chai.assert.equal(s.isDestroyed, false); - chai.assert.deepEqual(data, endArgs); - ++emitCount; - }); - s['_start']({ type: 'start', x: 1, y: 2 }); - s['_end'](endArgs); - chai.assert.equal(emitCount, 1); - s.destroy(); - }); - it(`should not do anything if drag is not active`, function () { - const s = new BaseSensor(); - const { drag, isDestroyed } = s; - let emitCount = 0; - s.on('end', () => void ++emitCount); - s['_end']({ type: 'end', x: 3, y: 4 }); - chai.assert.deepEqual(s.drag, drag); - chai.assert.equal(s.isDestroyed, isDestroyed); - chai.assert.equal(emitCount, 0); - s.destroy(); - }); - }); - describe('cancel method', () => { - it(`should reset drag data`, function () { - const s = new BaseSensor(); - s['_start']({ type: 'start', x: 1, y: 2 }); - s.cancel(); - chai.assert.equal(s.drag, null); - s.destroy(); - }); - it(`should not modify isDestroyed property`, function () { - const s = new BaseSensor(); - s['_start']({ type: 'start', x: 1, y: 2 }); - chai.assert.equal(s.isDestroyed, false); - s.cancel(); - chai.assert.equal(s.isDestroyed, false); - s.destroy(); - }); - it(`should emit "cancel" event with correct arguments after updating instance properties`, function () { - const s = new BaseSensor(); - let emitCount = 0; - s.on('cancel', (data) => { - chai.assert.deepEqual(s.drag, { x: data.x, y: data.y }); - chai.assert.equal(s.isDestroyed, false); - chai.assert.deepEqual(data, { - type: 'cancel', - x: 1, - y: 2, - }); - ++emitCount; - }); - s['_start']({ type: 'start', x: 1, y: 2 }); - s.cancel(); - chai.assert.equal(emitCount, 1); - s.destroy(); - }); - it(`should not do anything if drag is not active`, function () { - const s = new BaseSensor(); - const { drag, isDestroyed } = s; - let emitCount = 0; - s.on('cancel', () => void ++emitCount); - s.cancel(); - chai.assert.deepEqual(s.drag, drag); - chai.assert.equal(s.isDestroyed, isDestroyed); - chai.assert.equal(emitCount, 0); - s.destroy(); - }); - }); - describe('on method', () => { - it('should return a symbol (by default) which acts as an id for removing the event listener', () => { - const s = new BaseSensor(); - const idA = s.on('start', () => { }); - chai.assert.equal(typeof idA, 'symbol'); - }); - it('should allow defining a custom id (string/symbol/number) for the event listener via third argument', () => { - const s = new BaseSensor(); - const idA = Symbol(); - chai.assert.equal(s.on('start', () => { }, idA), idA); - const idB = 1; - chai.assert.equal(s.on('start', () => { }, idB), idB); - const idC = 'foo'; - chai.assert.equal(s.on('start', () => { }, idC), idC); - }); - }); - describe('off method', () => { - it('should remove an event listener based on id', () => { - const s = new BaseSensor(); - let msg = ''; - const idA = s.on('start', () => void (msg += 'a')); - s.on('start', () => void (msg += 'b')); - s.off('start', idA); - s['_start']({ type: 'start', x: 1, y: 2 }); - chai.assert.equal(msg, 'b'); - }); - it('should remove event listeners based on the listener callback', () => { - const s = new BaseSensor(); - let msg = ''; - const listenerA = () => void (msg += 'a'); - const listenerB = () => void (msg += 'b'); - s.on('start', listenerA); - s.on('start', listenerB); - s.on('start', listenerB); - s.on('start', listenerA); - s.off('start', listenerA); - s['_start']({ type: 'start', x: 1, y: 2 }); - chai.assert.equal(msg, 'bb'); - }); - }); - describe('destroy method', () => { - it(`should (if drag is active): - 1. set isDestroyed property to true - 2. emit "cancel" event with the current x/Y coordinates - 3. reset drag data - 4. emit "destroy" event - 5. remove all listeners from the internal emitter - `, function () { - const s = new BaseSensor(); - const startArgs = { type: 'start', x: 1, y: 2 }; - let events = []; - s['_start'](startArgs); - s.on('start', (data) => void events.push(data.type)); - s.on('move', (data) => void events.push(data.type)); - s.on('end', (data) => void events.push(data.type)); - s.on('cancel', (data) => { - chai.assert.deepEqual(s.drag, { x: startArgs.x, y: startArgs.y }); - chai.assert.equal(s.isDestroyed, true); - chai.assert.deepEqual(data, { - type: 'cancel', - x: startArgs.x, - y: startArgs.y, - }); - events.push(data.type); - }); - s.on('destroy', (data) => { - chai.assert.equal(s.drag, null); - chai.assert.equal(s.isDestroyed, true); - chai.assert.deepEqual(data, { - type: 'destroy', - }); - events.push(data.type); - }); - chai.assert.equal(s['_emitter'].listenerCount(), 5); - s.destroy(); - chai.assert.equal(s.drag, null); - chai.assert.equal(s.isDestroyed, true); - chai.assert.deepEqual(events, ['cancel', 'destroy']); - chai.assert.equal(s['_emitter'].listenerCount(), 0); - }); - it(`should (if drag is not active): - 1. set isDestroyed property to true - 2. emit "destroy" event - 3. remove all listeners from the internal emitter - `, function () { - const s = new BaseSensor(); - let events = []; - s.on('start', (data) => void events.push(data.type)); - s.on('move', (data) => void events.push(data.type)); - s.on('end', (data) => void events.push(data.type)); - s.on('cancel', (data) => void events.push(data.type)); - s.on('destroy', (data) => { - chai.assert.equal(s.drag, null); - chai.assert.equal(s.isDestroyed, true); - chai.assert.deepEqual(data, { - type: 'destroy', - }); - events.push(data.type); - }); - chai.assert.equal(s['_emitter'].listenerCount(), 5); - s.destroy(); - chai.assert.equal(s.drag, null); - chai.assert.equal(s.isDestroyed, true); - chai.assert.deepEqual(events, ['destroy']); - chai.assert.equal(s['_emitter'].listenerCount(), 0); - }); - it('should not do anything if the sensor is already destroyed', () => { - const s = new BaseSensor(); - s.destroy(); - let events = []; - s.on('start', (data) => void events.push(data.type)); - s.on('move', (data) => void events.push(data.type)); - s.on('end', (data) => void events.push(data.type)); - s.on('cancel', (data) => void events.push(data.type)); - s.on('destroy', (data) => void events.push(data.type)); - s.destroy(); - chai.assert.equal(s.drag, null); - chai.assert.equal(s.isDestroyed, true); - chai.assert.deepEqual(events, []); - }); - }); - }); - - const defaultStyles = { - display: 'block', - position: 'absolute', - left: '0px', - top: '0px', - width: '100px', - height: '100px', - padding: '0px', - margin: '0px', - boxSizing: 'border-box', - backgroundColor: 'red', - }; - function createTestElement(styles = {}) { - const el = document.createElement('div'); - el.tabIndex = 0; - Object.assign(el.style, Object.assign(Object.assign({}, defaultStyles), styles)); - document.body.appendChild(el); - return el; - } - - /*! ***************************************************************************** - Copyright (c) Microsoft Corporation. - - Permission to use, copy, modify, and/or distribute this software for any - purpose with or without fee is hereby granted. - - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH - REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY - AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, - INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM - LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR - OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR - PERFORMANCE OF THIS SOFTWARE. - ***************************************************************************** */ - /* global Reflect, Promise */ - - - function __rest(s, e) { - var t = {}; - for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) - t[p] = s[p]; - if (s != null && typeof Object.getOwnPropertySymbols === "function") - for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { - if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) - t[p[i]] = s[p[i]]; - } - return t; - } - - function __awaiter(thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); - } - - class FakeTouch { - constructor(options = {}) { - const { identifier = 0, target = null, clientX = 0, clientY = 0, screenX = 0, screenY = 0, radiusX = 0, radiusY = 0, rotationAngle = 0, force = 0, } = options; - const mouseEvent = new MouseEvent('mousedown', { clientX, clientY, screenX, screenY }); - this.identifier = identifier; - this.target = - target || - document.elementFromPoint(mouseEvent.clientX, mouseEvent.clientY) || - document.documentElement; - this.clientX = mouseEvent.clientX; - this.clientY = mouseEvent.clientY; - this.screenX = mouseEvent.screenX; - this.screenY = mouseEvent.screenY; - this.pageX = mouseEvent.pageX; - this.pageY = mouseEvent.pageY; - this.radiusX = radiusX; - this.radiusY = radiusY; - this.rotationAngle = rotationAngle; - this.force = force; - } - } - class FakeTouchEvent extends UIEvent { - constructor(type, options = {}) { - const { altKey = false, ctrlKey = false, metaKey = false, shiftKey = false, touches = [], targetTouches = [], changedTouches = [] } = options, parentOptions = __rest(options, ["altKey", "ctrlKey", "metaKey", "shiftKey", "touches", "targetTouches", "changedTouches"]); - super(type, parentOptions); - this.altKey = altKey; - this.ctrlKey = ctrlKey; - this.metaKey = metaKey; - this.shiftKey = shiftKey; - this.touches = touches; - this.targetTouches = targetTouches; - this.changedTouches = changedTouches; - } - } - - function createFakeTouchEvent(type, options = {}) { - const { identifier, target, clientX, clientY, screenX, screenY, radiusX, radiusY, rotationAngle, force } = options, eventOptions = __rest(options, ["identifier", "target", "clientX", "clientY", "screenX", "screenY", "radiusX", "radiusY", "rotationAngle", "force"]); - const touch = new FakeTouch({ - identifier, - target, - clientX, - clientY, - screenX, - screenY, - radiusX, - radiusY, - rotationAngle, - force, - }); - const touchEvent = new FakeTouchEvent(type, Object.assign(Object.assign({}, eventOptions), { touches: [touch], changedTouches: [touch], targetTouches: [touch] })); - return touchEvent; - } - - let idCounter = 100; - function createFakeDrag(steps, options) { - return __awaiter(this, void 0, void 0, function* () { - const { eventType = 'mouse', stepDuration = 16, extraSteps = 0, cancelAtEnd = false, pointerId = ++idCounter, pointerType = 'touch', onAfterStep, } = options; - const finalSteps = [...steps]; - if (extraSteps > 0) { - const stepTo = finalSteps.pop(); - const stepFrom = finalSteps.pop(); - finalSteps.push(stepFrom); - for (let i = 0; i < extraSteps; i++) { - const alpha = (i + 1) / (extraSteps + 1); - const x = stepFrom.x + (stepTo.x - stepFrom.x) * alpha; - const y = stepFrom.y + (stepTo.y - stepFrom.y) * alpha; - finalSteps.push({ - x: Math.round(x), - y: Math.round(y), - }); - } - finalSteps.push(stepTo); - } - for (let i = 0; i < finalSteps.length; i++) { - const isStart = i === 0; - const isEnd = i === finalSteps.length - 1; - const { x, y } = finalSteps[i]; - if (!isStart && !isEnd) { - const prevStep = finalSteps[i - 1]; - if (prevStep.x === x && prevStep.y === y) { - continue; - } - } - if (!isStart && stepDuration > 0) { - yield new Promise((resolve) => setTimeout(resolve, stepDuration)); - } - const target = document.elementFromPoint(x, y); - if (!target) - throw new Error('No event target found!'); - switch (eventType) { - case 'mouse': { - const eventName = isStart ? 'mousedown' : isEnd ? 'mouseup' : 'mousemove'; - const event = new MouseEvent(eventName, { - clientX: x, - clientY: y, - bubbles: true, - cancelable: true, - view: window, - }); - target.dispatchEvent(event); - if (onAfterStep) - onAfterStep(event); - break; - } - case 'touch': { - const eventName = isStart - ? 'touchstart' - : isEnd - ? cancelAtEnd - ? 'touchcancel' - : 'touchend' - : 'touchmove'; - const event = createFakeTouchEvent(eventName, { - clientX: x, - clientY: y, - bubbles: true, - cancelable: true, - view: window, - target, - identifier: pointerId, - }); - target.dispatchEvent(event); - if (onAfterStep) - onAfterStep(event); - break; - } - case 'pointer': { - const eventName = isStart - ? 'pointerdown' - : isEnd - ? cancelAtEnd - ? 'pointercancel' - : 'pointerup' - : 'pointermove'; - const event = new PointerEvent(eventName, { - clientX: x, - clientY: y, - bubbles: true, - cancelable: true, - view: window, - pointerId, - pointerType, - isPrimary: true, - width: 100, - height: 100, - }); - target.dispatchEvent(event); - if (onAfterStep) - onAfterStep(event); - break; - } - } - } - }); - } - - function addDefaultPageStyles(doc) { - if (doc.getElementById('default-page-styles')) - return; - const styleSheet = doc.createElement('style'); - styleSheet.id = 'default-page-styles'; - styleSheet.type = 'text/css'; - styleSheet.innerHTML = ` - * { - box-sizing: border-box; - } - html { - width: 100%; - height: 100%; - } - body { - width: 100%; - min-height: 100%; - margin: 0; - } - `; - doc.head.appendChild(styleSheet); - } - function removeDefaultPageStyles(doc) { - var _a; - (_a = doc.getElementById('default-page-styles')) === null || _a === void 0 ? void 0 : _a.remove(); - } - - describe('PointerSensor', () => { - beforeEach(() => { - if (IS_BROWSER) { - addDefaultPageStyles(document); - return new Promise((resolve) => requestAnimationFrame(() => requestAnimationFrame(resolve))); - } - return; - }); - afterEach(() => { - if (IS_BROWSER) { - removeDefaultPageStyles(document); - return new Promise((resolve) => requestAnimationFrame(() => requestAnimationFrame(resolve))); - } - return; - }); - describe('drag property', () => { - it(`should be null on init`, function () { - const s = new PointerSensor(document.body); - chai.assert.equal(s.drag, null); - s.destroy(); - }); - }); - describe('isDestroyed property', () => { - it(`should be false on init`, function () { - const s = new PointerSensor(document.body); - chai.assert.equal(s.isDestroyed, false); - s.destroy(); - }); - }); - describe('target element parameter', () => { - it('should accept document.documentElement', function () { - if (!IS_BROWSER) - this.skip(); - const s = new PointerSensor(document.documentElement, { sourceEvents: 'mouse' }); - document.documentElement.dispatchEvent(new MouseEvent('mousedown')); - chai.assert.notEqual(s.drag, null); - s.destroy(); - }); - it('should accept document.body', function () { - if (!IS_BROWSER) - this.skip(); - const s = new PointerSensor(document.body, { sourceEvents: 'mouse' }); - document.body.dispatchEvent(new MouseEvent('mousedown')); - chai.assert.notEqual(s.drag, null); - s.destroy(); - }); - it('should accept a descendant of document.body', function () { - if (!IS_BROWSER) - this.skip(); - const el = createTestElement(); - const s = new PointerSensor(el, { sourceEvents: 'mouse' }); - el.dispatchEvent(new MouseEvent('mousedown')); - chai.assert.notEqual(s.drag, null); - el.remove(); - s.destroy(); - }); - }); - describe('sourceEvents option', () => { - it('should listen to mouse/pointer/touch events when set to "mouse"/"pointer"/"touch"', function () { - if (!IS_BROWSER) - this.skip(); - const mouseSensor = new PointerSensor(document.body, { sourceEvents: 'mouse' }); - const pointerSensor = new PointerSensor(document.body, { sourceEvents: 'pointer' }); - const touchSensor = new PointerSensor(document.body, { sourceEvents: 'touch' }); - const mouseList = []; - const pointerList = []; - const touchList = []; - mouseSensor.on('start', (e) => mouseList.push(e.type)); - mouseSensor.on('move', (e) => mouseList.push(e.type)); - mouseSensor.on('end', (e) => mouseList.push(e.type)); - pointerSensor.on('start', (e) => pointerList.push(e.type)); - pointerSensor.on('move', (e) => pointerList.push(e.type)); - pointerSensor.on('end', (e) => pointerList.push(e.type)); - touchSensor.on('start', (e) => touchList.push(e.type)); - touchSensor.on('move', (e) => touchList.push(e.type)); - touchSensor.on('end', (e) => touchList.push(e.type)); - createFakeDrag([ - { x: 1, y: 1 }, - { x: 2, y: 2 }, - { x: 3, y: 3 }, - ], { - eventType: 'mouse', - stepDuration: 0, - }); - chai.assert.deepEqual(mouseList, ['start', 'move', 'end']); - chai.assert.deepEqual(pointerList, []); - chai.assert.deepEqual(touchList, []); - mouseList.length = 0; - createFakeDrag([ - { x: 1, y: 1 }, - { x: 2, y: 2 }, - { x: 3, y: 3 }, - ], { - eventType: 'pointer', - stepDuration: 0, - }); - chai.assert.deepEqual(mouseList, []); - chai.assert.deepEqual(pointerList, ['start', 'move', 'end']); - chai.assert.deepEqual(touchList, []); - pointerList.length = 0; - createFakeDrag([ - { x: 1, y: 1 }, - { x: 2, y: 2 }, - { x: 3, y: 3 }, - ], { - eventType: 'touch', - stepDuration: 0, - }); - chai.assert.deepEqual(mouseList, []); - chai.assert.deepEqual(pointerList, []); - chai.assert.deepEqual(touchList, ['start', 'move', 'end']); - mouseSensor.destroy(); - pointerSensor.destroy(); - touchSensor.destroy(); - }); - }); - describe('startPredicate option', () => { - it('should allow start only when e.button is 0 by default', function () { - const s = new PointerSensor(document.body, { sourceEvents: 'mouse' }); - document.body.dispatchEvent(new MouseEvent('mousedown', { button: 1 })); - chai.assert.equal(s.drag, null); - document.body.dispatchEvent(new MouseEvent('mousedown', { button: 0 })); - chai.assert.notEqual(s.drag, null); - s.destroy(); - }); - it('should allow start when true is returned and prevent start when false is returned', function () { - const s1 = new PointerSensor(document.body, { - sourceEvents: 'mouse', - startPredicate: () => true, - }); - const s2 = new PointerSensor(document.body, { - sourceEvents: 'mouse', - startPredicate: () => false, - }); - document.body.dispatchEvent(new MouseEvent('mousedown')); - chai.assert.notEqual(s1.drag, null); - chai.assert.equal(s2.drag, null); - s1.destroy(); - s2.destroy(); - }); - }); - describe('updateSettings method', () => { - it(`should update startPredicate setting`, function () { - const s = new PointerSensor(document.body, { - sourceEvents: 'mouse', - startPredicate: () => false, - }); - document.body.dispatchEvent(new MouseEvent('mousedown')); - chai.assert.equal(s.drag, null); - s.updateSettings({ startPredicate: () => true }); - document.body.dispatchEvent(new MouseEvent('mousedown')); - chai.assert.notEqual(s.drag, null); - }); - it(`should update sourceEvents setting`, function () { - const s = new PointerSensor(document.body, { - sourceEvents: 'pointer', - startPredicate: () => true, - }); - document.body.dispatchEvent(new MouseEvent('mousedown')); - chai.assert.equal(s.drag, null); - s.updateSettings({ sourceEvents: 'mouse' }); - document.body.dispatchEvent(new MouseEvent('mousedown')); - chai.assert.notEqual(s.drag, null); - }); - }); - describe('start event', () => { - it(`should be triggered correctly on mousedown`, function () { - if (!IS_BROWSER) - this.skip(); - const el = createTestElement(); - const s = new PointerSensor(el, { sourceEvents: 'mouse' }); - let startEvent = null; - let sourceEvent; - s.on('start', (e) => { - if (startEvent === null) { - startEvent = e; - } - else { - chai.assert.fail('start event listener called twice'); - } - }); - createFakeDrag([ - { x: 1, y: 1 }, - { x: 2, y: 2 }, - { x: 3, y: 3 }, - ], { - eventType: 'mouse', - stepDuration: 0, - onAfterStep: (e) => { - if (e.type === 'mousedown') { - sourceEvent = e; - } - }, - }); - chai.assert.deepEqual(startEvent, { - type: 'start', - srcEvent: sourceEvent, - target: el, - pointerId: -1, - pointerType: 'mouse', - x: 1, - y: 1, - }); - s.destroy(); - el.remove(); - }); - it(`should be triggered correctly on pointerdown`, function () { - if (!IS_BROWSER) - this.skip(); - const el = createTestElement(); - const s = new PointerSensor(el, { sourceEvents: 'pointer' }); - let startEvent = null; - let sourceEvent; - s.on('start', (e) => { - if (startEvent === null) { - startEvent = e; - } - else { - chai.assert.fail('start event listener called twice'); - } - }); - createFakeDrag([ - { x: 1, y: 1 }, - { x: 2, y: 2 }, - { x: 3, y: 3 }, - ], { - eventType: 'pointer', - stepDuration: 0, - onAfterStep: (e) => { - if (e.type === 'pointerdown') { - sourceEvent = e; - } - }, - }); - chai.assert.deepEqual(startEvent, { - type: 'start', - srcEvent: sourceEvent, - target: el, - pointerId: sourceEvent.pointerId, - pointerType: sourceEvent.pointerType, - x: 1, - y: 1, - }); - s.destroy(); - el.remove(); - }); - it(`should be triggered correctly on touchstart`, function () { - if (!IS_BROWSER) - this.skip(); - const el = createTestElement(); - const s = new PointerSensor(el, { sourceEvents: 'touch' }); - let startEvent = null; - let sourceEvent; - s.on('start', (e) => { - if (startEvent === null) { - startEvent = e; - } - else { - chai.assert.fail('start event listener called twice'); - } - }); - createFakeDrag([ - { x: 1, y: 1 }, - { x: 2, y: 2 }, - { x: 3, y: 3 }, - ], { - eventType: 'touch', - stepDuration: 0, - onAfterStep: (e) => { - if (e.type === 'touchstart') { - sourceEvent = e; - } - }, - }); - chai.assert.deepEqual(startEvent, { - type: 'start', - srcEvent: sourceEvent, - target: el, - pointerId: sourceEvent.changedTouches[0].identifier, - pointerType: 'touch', - x: 1, - y: 1, - }); - s.destroy(); - el.remove(); - }); - }); - describe('move event', () => { - it(`should be triggered correctly on mousemove`, function () { - if (!IS_BROWSER) - this.skip(); - const el = createTestElement(); - const s = new PointerSensor(el, { sourceEvents: 'mouse' }); - let moveEvent = null; - let sourceEvent; - s.on('move', (e) => { - if (moveEvent === null) { - moveEvent = e; - } - else { - chai.assert.fail('move event listener called twice'); - } - }); - createFakeDrag([ - { x: 1, y: 1 }, - { x: 2, y: 2 }, - { x: 3, y: 3 }, - ], { - eventType: 'mouse', - stepDuration: 0, - onAfterStep: (e) => { - if (e.type === 'mousemove') { - sourceEvent = e; - } - }, - }); - chai.assert.deepEqual(moveEvent, { - type: 'move', - srcEvent: sourceEvent, - target: el, - pointerId: -1, - pointerType: 'mouse', - x: 2, - y: 2, - }); - s.destroy(); - el.remove(); - }); - it(`should be triggered correctly on pointermove`, function () { - if (!IS_BROWSER) - this.skip(); - const el = createTestElement(); - const s = new PointerSensor(el, { sourceEvents: 'pointer' }); - let moveEvent = null; - let sourceEvent; - s.on('move', (e) => { - if (moveEvent === null) { - moveEvent = e; - } - else { - chai.assert.fail('move event listener called twice'); - } - }); - createFakeDrag([ - { x: 1, y: 1 }, - { x: 2, y: 2 }, - { x: 3, y: 3 }, - ], { - eventType: 'pointer', - stepDuration: 0, - onAfterStep: (e) => { - if (e.type === 'pointermove') { - sourceEvent = e; - } - }, - }); - chai.assert.deepEqual(moveEvent, { - type: 'move', - srcEvent: sourceEvent, - target: el, - pointerId: sourceEvent.pointerId, - pointerType: sourceEvent.pointerType, - x: 2, - y: 2, - }); - s.destroy(); - el.remove(); - }); - it(`should be triggered correctly on touchmove`, function () { - if (!IS_BROWSER) - this.skip(); - const el = createTestElement(); - const s = new PointerSensor(el, { sourceEvents: 'touch' }); - let moveEvent = null; - let sourceEvent; - s.on('move', (e) => { - if (moveEvent === null) { - moveEvent = e; - } - else { - chai.assert.fail('start event listener called twice'); - } - }); - createFakeDrag([ - { x: 1, y: 1 }, - { x: 2, y: 2 }, - { x: 3, y: 3 }, - ], { - eventType: 'touch', - stepDuration: 0, - onAfterStep: (e) => { - if (e.type === 'touchmove') { - sourceEvent = e; - } - }, - }); - chai.assert.deepEqual(moveEvent, { - type: 'move', - srcEvent: sourceEvent, - target: el, - pointerId: sourceEvent.changedTouches[0].identifier, - pointerType: 'touch', - x: 2, - y: 2, - }); - s.destroy(); - el.remove(); - }); - }); - describe('end event', () => { - it(`should be triggered correctly on mouseup`, function () { - if (!IS_BROWSER) - this.skip(); - const el = createTestElement(); - const s = new PointerSensor(el, { sourceEvents: 'mouse' }); - let endEvent = null; - let sourceEvent; - s.on('end', (e) => { - if (endEvent === null) { - endEvent = e; - } - else { - chai.assert.fail('end event listener called twice'); - } - }); - createFakeDrag([ - { x: 1, y: 1 }, - { x: 2, y: 2 }, - { x: 3, y: 3 }, - ], { - eventType: 'mouse', - stepDuration: 0, - onAfterStep: (e) => { - if (e.type === 'mouseup') { - sourceEvent = e; - } - }, - }); - chai.assert.deepEqual(endEvent, { - type: 'end', - srcEvent: sourceEvent, - target: el, - pointerId: -1, - pointerType: 'mouse', - x: 3, - y: 3, - }); - s.destroy(); - el.remove(); - }); - it(`should be triggered correctly on pointerup`, function () { - if (!IS_BROWSER) - this.skip(); - const el = createTestElement(); - const s = new PointerSensor(el, { sourceEvents: 'pointer' }); - let endEvent = null; - let sourceEvent; - s.on('end', (e) => { - if (endEvent === null) { - endEvent = e; - } - else { - chai.assert.fail('end event listener called twice'); - } - }); - createFakeDrag([ - { x: 1, y: 1 }, - { x: 2, y: 2 }, - { x: 3, y: 3 }, - ], { - eventType: 'pointer', - stepDuration: 0, - onAfterStep: (e) => { - if (e.type === 'pointerup') { - sourceEvent = e; - } - }, - }); - chai.assert.deepEqual(endEvent, { - type: 'end', - srcEvent: sourceEvent, - target: el, - pointerId: sourceEvent.pointerId, - pointerType: sourceEvent.pointerType, - x: 3, - y: 3, - }); - s.destroy(); - el.remove(); - }); - it(`should be triggered correctly on touchend`, function () { - if (!IS_BROWSER) - this.skip(); - const el = createTestElement(); - const s = new PointerSensor(el, { sourceEvents: 'touch' }); - let endEvent = null; - let sourceEvent; - s.on('end', (e) => { - if (endEvent === null) { - endEvent = e; - } - else { - chai.assert.fail('end event listener called twice'); - } - }); - createFakeDrag([ - { x: 1, y: 1 }, - { x: 2, y: 2 }, - { x: 3, y: 3 }, - ], { - eventType: 'touch', - stepDuration: 0, - onAfterStep: (e) => { - if (e.type === 'touchend') { - sourceEvent = e; - } - }, - }); - chai.assert.deepEqual(endEvent, { - type: 'end', - srcEvent: sourceEvent, - target: el, - pointerId: sourceEvent.changedTouches[0].identifier, - pointerType: 'touch', - x: 3, - y: 3, - }); - s.destroy(); - el.remove(); - }); - }); - describe('cancel event', () => { - it(`should be triggered correctly on pointercancel`, function () { - if (!IS_BROWSER) - this.skip(); - const el = createTestElement(); - const s = new PointerSensor(el, { sourceEvents: 'pointer' }); - let cancelEvent = null; - let sourceEvent; - s.on('cancel', (e) => { - if (cancelEvent === null) { - cancelEvent = e; - } - else { - chai.assert.fail('cancel event listener called twice'); - } - }); - createFakeDrag([ - { x: 1, y: 1 }, - { x: 2, y: 2 }, - { x: 3, y: 3 }, - ], { - eventType: 'pointer', - stepDuration: 0, - cancelAtEnd: true, - onAfterStep: (e) => { - if (e.type === 'pointercancel') { - sourceEvent = e; - } - }, - }); - chai.assert.deepEqual(cancelEvent, { - type: 'cancel', - srcEvent: sourceEvent, - target: el, - pointerId: sourceEvent.pointerId, - pointerType: sourceEvent.pointerType, - x: 3, - y: 3, - }); - s.destroy(); - el.remove(); - }); - it(`should be triggered correctly on touchcancel`, function () { - if (!IS_BROWSER) - this.skip(); - const el = createTestElement(); - const s = new PointerSensor(el, { sourceEvents: 'touch' }); - let cancelEvent = null; - let sourceEvent; - s.on('cancel', (e) => { - if (cancelEvent === null) { - cancelEvent = e; - } - else { - chai.assert.fail('cancel event listener called twice'); - } - }); - createFakeDrag([ - { x: 1, y: 1 }, - { x: 2, y: 2 }, - { x: 3, y: 3 }, - ], { - eventType: 'touch', - stepDuration: 0, - cancelAtEnd: true, - onAfterStep: (e) => { - if (e.type === 'touchcancel') { - sourceEvent = e; - } - }, - }); - chai.assert.deepEqual(cancelEvent, { - type: 'cancel', - srcEvent: sourceEvent, - target: el, - pointerId: sourceEvent.changedTouches[0].identifier, - pointerType: 'touch', - x: 3, - y: 3, - }); - s.destroy(); - el.remove(); - }); - }); - }); - - describe('KeyboardSensor', () => { - beforeEach(() => { - if (IS_BROWSER) { - addDefaultPageStyles(document); - return new Promise((resolve) => requestAnimationFrame(() => requestAnimationFrame(resolve))); - } - return; - }); - afterEach(() => { - if (IS_BROWSER) { - removeDefaultPageStyles(document); - return new Promise((resolve) => requestAnimationFrame(() => requestAnimationFrame(resolve))); - } - return; - }); - describe('drag property', () => { - it(`should be null on init`, function () { - const s = new KeyboardSensor(); - chai.assert.equal(s.drag, null); - s.destroy(); - }); - }); - describe('isDestroyed property', () => { - it(`should be false on init`, function () { - const s = new KeyboardSensor(); - chai.assert.equal(s.isDestroyed, false); - s.destroy(); - }); - }); - describe('start event', () => { - it(`should be triggered correctly on Enter`, function () { - if (!IS_BROWSER) - this.skip(); - const el = createTestElement({ left: '10px', top: '20px' }); - const s = new KeyboardSensor(); - let startEvent = null; - s.on('start', (e) => { - if (startEvent === null) { - startEvent = e; - } - else { - chai.assert.fail('start event listener called twice'); - } - }); - const srcEvent = new KeyboardEvent('keydown', { key: 'Enter' }); - document.dispatchEvent(srcEvent); - chai.assert.equal(s.drag, null); - el.focus(); - document.dispatchEvent(srcEvent); - chai.assert.deepEqual(startEvent, { - type: 'start', - srcEvent: srcEvent, - x: 10, - y: 20, - }); - s.destroy(); - el.remove(); - }); - }); - }); - -})); diff --git a/tests/src/BaseSensor.ts b/tests/src/BaseSensor.ts index 5ea2b71..abb9628 100644 --- a/tests/src/BaseSensor.ts +++ b/tests/src/BaseSensor.ts @@ -1,5 +1,5 @@ import { assert } from 'chai'; -import { BaseSensor } from '../../src/index'; +import { BaseSensor } from '../../src/index.js'; describe('BaseSensor', () => { describe('drag property', () => { @@ -339,7 +339,7 @@ describe('BaseSensor', () => { describe('destroy method', () => { it(`should (if drag is active): 1. set isDestroyed property to true - 2. emit "cancel" event with the current x/Y coordinates + 2. emit "cancel" event with the current x/y coordinates 3. reset drag data 4. emit "destroy" event 5. remove all listeners from the internal emitter diff --git a/tests/src/KeyboardSensor.ts b/tests/src/KeyboardSensor.ts index c285e02..873caac 100644 --- a/tests/src/KeyboardSensor.ts +++ b/tests/src/KeyboardSensor.ts @@ -1,8 +1,8 @@ import { assert } from 'chai'; -import { IS_BROWSER } from '../../src/constants'; -import { createTestElement } from './utils/createTestElement'; -import { addDefaultPageStyles, removeDefaultPageStyles } from './utils/defaultPageStyles'; -import { KeyboardSensor, KeyboardSensorStartEvent } from '../../src/index'; +import { IS_BROWSER } from '../../src/constants.js'; +import { createTestElement } from './utils/createTestElement.js'; +import { addDefaultPageStyles, removeDefaultPageStyles } from './utils/defaultPageStyles.js'; +import { KeyboardSensor, KeyboardSensorStartEvent } from '../../src/index.js'; // PointerSensor diff --git a/tests/src/PointerSensor.ts b/tests/src/PointerSensor.ts index f3aa50c..2ed3195 100644 --- a/tests/src/PointerSensor.ts +++ b/tests/src/PointerSensor.ts @@ -1,15 +1,15 @@ import { assert } from 'chai'; -import { IS_BROWSER } from '../../src/constants'; -import { createTestElement } from './utils/createTestElement'; -import { createFakeDrag } from './utils/createFakeDrag'; -import { addDefaultPageStyles, removeDefaultPageStyles } from './utils/defaultPageStyles'; +import { IS_BROWSER } from '../../src/constants.js'; +import { createTestElement } from './utils/createTestElement.js'; +import { createFakeDrag } from './utils/createFakeDrag.js'; +import { addDefaultPageStyles, removeDefaultPageStyles } from './utils/defaultPageStyles.js'; import { PointerSensor, PointerSensorCancelEvent, PointerSensorEndEvent, PointerSensorMoveEvent, PointerSensorStartEvent, -} from '../../src/index'; +} from '../../src/index.js'; describe('PointerSensor', () => { beforeEach(() => { diff --git a/tests/src/utils/createFakeDrag.ts b/tests/src/utils/createFakeDrag.ts index 4a1635d..d6341c8 100644 --- a/tests/src/utils/createFakeDrag.ts +++ b/tests/src/utils/createFakeDrag.ts @@ -1,5 +1,5 @@ -import { createFakeTouchEvent } from './createFakeTouchEvent'; -import { FakeTouchEvent } from './FakeTouch'; +import { createFakeTouchEvent } from './createFakeTouchEvent.js'; +import { FakeTouchEvent } from './FakeTouch.js'; type FakeDragStep = { x: number; y: number }; type FakeDragStepList = [FakeDragStep, FakeDragStep, ...FakeDragStep[]]; @@ -92,10 +92,10 @@ export async function createFakeDrag(steps: FakeDragStepList, options: FakeDragO const eventName = isStart ? 'touchstart' : isEnd - ? cancelAtEnd - ? 'touchcancel' - : 'touchend' - : 'touchmove'; + ? cancelAtEnd + ? 'touchcancel' + : 'touchend' + : 'touchmove'; const event = createFakeTouchEvent(eventName, { clientX: x, clientY: y, @@ -113,10 +113,10 @@ export async function createFakeDrag(steps: FakeDragStepList, options: FakeDragO const eventName = isStart ? 'pointerdown' : isEnd - ? cancelAtEnd - ? 'pointercancel' - : 'pointerup' - : 'pointermove'; + ? cancelAtEnd + ? 'pointercancel' + : 'pointerup' + : 'pointermove'; const event = new PointerEvent(eventName, { clientX: x, clientY: y, diff --git a/tests/src/utils/createFakeTouchEvent.ts b/tests/src/utils/createFakeTouchEvent.ts index 9186610..faec3f3 100644 --- a/tests/src/utils/createFakeTouchEvent.ts +++ b/tests/src/utils/createFakeTouchEvent.ts @@ -4,7 +4,7 @@ import { FakeTouchEvent, FakeTouchEventType, FakeTouchEventOptions, -} from './FakeTouch'; +} from './FakeTouch.js'; export function createFakeTouchEvent( type: FakeTouchEventType, diff --git a/tests/src/utils/createTestElement.ts b/tests/src/utils/createTestElement.ts index 6004314..bd65301 100644 --- a/tests/src/utils/createTestElement.ts +++ b/tests/src/utils/createTestElement.ts @@ -1,6 +1,17 @@ -import { Properties } from 'csstype'; +type CSSProperties = Partial< + Omit< + CSSStyleDeclaration, + | 'getPropertyPriority' + | 'getPropertyValue' + | 'item' + | 'removeProperty' + | 'setProperty' + | 'length' + | 'parentRule' + > +>; -const defaultStyles: Properties = { +const defaultStyles: CSSProperties = { display: 'block', position: 'absolute', left: '0px', @@ -13,7 +24,7 @@ const defaultStyles: Properties = { backgroundColor: 'red', }; -export function createTestElement(styles: Properties = {}) { +export function createTestElement(styles: CSSProperties = {}) { const el = document.createElement('div'); el.tabIndex = 0; Object.assign(el.style, { ...defaultStyles, ...styles }); diff --git a/tsconfig.json b/tsconfig.json index 3c50d35..d47d1b7 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,12 +1,9 @@ { "compilerOptions": { "lib": ["DOM", "ESNext"], - "target": "ES6", - "module": "ESNext", - "moduleResolution": "node", - "jsx": "react", + "module": "NodeNext", + "target": "ES2020", "baseUrl": "./src", - "declaration": false, "removeComments": true, "strict": true, "skipLibCheck": true, diff --git a/tsup.config.lib.ts b/tsup.config.lib.ts new file mode 100644 index 0000000..9c4ae40 --- /dev/null +++ b/tsup.config.lib.ts @@ -0,0 +1,11 @@ +import { defineConfig } from 'tsup'; + +export default defineConfig({ + entry: { + dragdoll: 'src/index.ts', + }, + outDir: './dist', + format: ['esm', 'cjs'], + minify: true, + dts: true, +}); diff --git a/tsup.config.tests.ts b/tsup.config.tests.ts new file mode 100644 index 0000000..0aba79c --- /dev/null +++ b/tsup.config.tests.ts @@ -0,0 +1,9 @@ +import { defineConfig } from 'tsup'; + +export default defineConfig({ + entry: { + tests: 'tests/src/tests.ts', + }, + outDir: './tests/dist', + format: ['esm', 'iife'], +});