three-stdlib
Version:
stand-alone library of threejs examples
1 lines • 3.46 kB
Source Map (JSON)
{"version":3,"file":"SelectionHelper.cjs","sources":["../../src/interactive/SelectionHelper.js"],"sourcesContent":["import { Vector2 } from 'three'\n\nclass SelectionHelper {\n constructor(selectionBox, renderer, cssClassName) {\n this.element = document.createElement('div')\n this.element.classList.add(cssClassName)\n this.element.style.pointerEvents = 'none'\n\n this.renderer = renderer\n\n this.startPoint = new Vector2()\n this.pointTopLeft = new Vector2()\n this.pointBottomRight = new Vector2()\n\n this.isDown = false\n\n this.renderer.domElement.addEventListener('pointerdown', (event) => {\n this.isDown = true\n this.onSelectStart(event)\n })\n\n this.renderer.domElement.addEventListener('pointermove', (event) => {\n if (this.isDown) {\n this.onSelectMove(event)\n }\n })\n\n this.renderer.domElement.addEventListener('pointerup', (event) => {\n this.isDown = false\n this.onSelectOver(event)\n })\n }\n\n onSelectStart(event) {\n this.renderer.domElement.parentElement.appendChild(this.element)\n\n this.element.style.left = `${event.clientX}px`\n this.element.style.top = `${event.clientY}px`\n this.element.style.width = '0px'\n this.element.style.height = '0px'\n\n this.startPoint.x = event.clientX\n this.startPoint.y = event.clientY\n }\n\n onSelectMove(event) {\n this.pointBottomRight.x = Math.max(this.startPoint.x, event.clientX)\n this.pointBottomRight.y = Math.max(this.startPoint.y, event.clientY)\n this.pointTopLeft.x = Math.min(this.startPoint.x, event.clientX)\n this.pointTopLeft.y = Math.min(this.startPoint.y, event.clientY)\n\n this.element.style.left = `${this.pointTopLeft.x}px`\n this.element.style.top = `${this.pointTopLeft.y}px`\n this.element.style.width = `${this.pointBottomRight.x - this.pointTopLeft.x}px`\n this.element.style.height = `${this.pointBottomRight.y - this.pointTopLeft.y}px`\n }\n\n onSelectOver() {\n this.element.parentElement.removeChild(this.element)\n }\n}\n\nexport { SelectionHelper }\n"],"names":["Vector2"],"mappings":";;;AAEA,MAAM,gBAAgB;AAAA,EACpB,YAAY,cAAc,UAAU,cAAc;AAChD,SAAK,UAAU,SAAS,cAAc,KAAK;AAC3C,SAAK,QAAQ,UAAU,IAAI,YAAY;AACvC,SAAK,QAAQ,MAAM,gBAAgB;AAEnC,SAAK,WAAW;AAEhB,SAAK,aAAa,IAAIA,cAAS;AAC/B,SAAK,eAAe,IAAIA,cAAS;AACjC,SAAK,mBAAmB,IAAIA,cAAS;AAErC,SAAK,SAAS;AAEd,SAAK,SAAS,WAAW,iBAAiB,eAAe,CAAC,UAAU;AAClE,WAAK,SAAS;AACd,WAAK,cAAc,KAAK;AAAA,IAC9B,CAAK;AAED,SAAK,SAAS,WAAW,iBAAiB,eAAe,CAAC,UAAU;AAClE,UAAI,KAAK,QAAQ;AACf,aAAK,aAAa,KAAK;AAAA,MACxB;AAAA,IACP,CAAK;AAED,SAAK,SAAS,WAAW,iBAAiB,aAAa,CAAC,UAAU;AAChE,WAAK,SAAS;AACd,WAAK,aAAa,KAAK;AAAA,IAC7B,CAAK;AAAA,EACF;AAAA,EAED,cAAc,OAAO;AACnB,SAAK,SAAS,WAAW,cAAc,YAAY,KAAK,OAAO;AAE/D,SAAK,QAAQ,MAAM,OAAO,GAAG,MAAM;AACnC,SAAK,QAAQ,MAAM,MAAM,GAAG,MAAM;AAClC,SAAK,QAAQ,MAAM,QAAQ;AAC3B,SAAK,QAAQ,MAAM,SAAS;AAE5B,SAAK,WAAW,IAAI,MAAM;AAC1B,SAAK,WAAW,IAAI,MAAM;AAAA,EAC3B;AAAA,EAED,aAAa,OAAO;AAClB,SAAK,iBAAiB,IAAI,KAAK,IAAI,KAAK,WAAW,GAAG,MAAM,OAAO;AACnE,SAAK,iBAAiB,IAAI,KAAK,IAAI,KAAK,WAAW,GAAG,MAAM,OAAO;AACnE,SAAK,aAAa,IAAI,KAAK,IAAI,KAAK,WAAW,GAAG,MAAM,OAAO;AAC/D,SAAK,aAAa,IAAI,KAAK,IAAI,KAAK,WAAW,GAAG,MAAM,OAAO;AAE/D,SAAK,QAAQ,MAAM,OAAO,GAAG,KAAK,aAAa;AAC/C,SAAK,QAAQ,MAAM,MAAM,GAAG,KAAK,aAAa;AAC9C,SAAK,QAAQ,MAAM,QAAQ,GAAG,KAAK,iBAAiB,IAAI,KAAK,aAAa;AAC1E,SAAK,QAAQ,MAAM,SAAS,GAAG,KAAK,iBAAiB,IAAI,KAAK,aAAa;AAAA,EAC5E;AAAA,EAED,eAAe;AACb,SAAK,QAAQ,cAAc,YAAY,KAAK,OAAO;AAAA,EACpD;AACH;;"}