@buoy-gg/floating-tools-core 7.0.43 → 7.0.45

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (29) hide show
  1. package/lib/commonjs/FloatingToolsStore.js +1 -1
  2. package/lib/commonjs/icons/generated/icon-data.g.js +1 -1
  3. package/lib/commonjs/icons/lifecycle-tool-icon.js +1 -0
  4. package/lib/commonjs/icons/location-tool-icon.js +1 -0
  5. package/lib/commonjs/icons/permissions-icon.js +1 -0
  6. package/lib/commonjs/index.js +1 -1
  7. package/lib/module/FloatingToolsStore.js +1 -1
  8. package/lib/module/icons/generated/icon-data.g.js +1 -1
  9. package/lib/module/icons/lifecycle-tool-icon.js +1 -0
  10. package/lib/module/icons/location-tool-icon.js +1 -0
  11. package/lib/module/icons/permissions-icon.js +1 -0
  12. package/lib/module/index.js +1 -1
  13. package/lib/typescript/commonjs/icons/generated/icon-data.g.d.ts +6 -0
  14. package/lib/typescript/commonjs/icons/lifecycle-tool-icon.d.ts +3 -0
  15. package/lib/typescript/commonjs/icons/location-tool-icon.d.ts +3 -0
  16. package/lib/typescript/commonjs/icons/permissions-icon.d.ts +3 -0
  17. package/lib/typescript/commonjs/index.d.ts +3 -0
  18. package/lib/typescript/module/icons/generated/icon-data.g.d.ts +6 -0
  19. package/lib/typescript/module/icons/lifecycle-tool-icon.d.ts +3 -0
  20. package/lib/typescript/module/icons/location-tool-icon.d.ts +3 -0
  21. package/lib/typescript/module/icons/permissions-icon.d.ts +3 -0
  22. package/lib/typescript/module/index.d.ts +3 -0
  23. package/lib/web/chunks/chunk-2K2AYORW.mjs +1 -0
  24. package/lib/web/chunks/chunk-C6BJ4WIF.mjs +1 -0
  25. package/lib/web/chunks/chunk-G4F6TBFE.mjs +1 -0
  26. package/lib/web/chunks/chunk-PUCCT3HF.mjs +1 -1
  27. package/lib/web/floating.mjs +1 -1
  28. package/lib/web/index.mjs +3 -3
  29. package/package.json +1 -1
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.FloatingToolsStore=void 0;var _constants=require("./constants.js");class FloatingToolsStore{isDragging=false;isHidden=false;dragStartPos={x:0,y:0};dragStartMouse={x:0,y:0};hasMoved=false;savedPosition=null;saveTimeout=null;isInitialized=false;listeners=new Set;constructor(i){this.screenWidth=i.screenWidth;this.screenHeight=i.screenHeight;this.bubbleSize=i.initialBubbleSize??{width:100,height:32};this.minPosition=i.minPosition??{x:_constants.EDGE_PADDING,y:_constants.EDGE_PADDING};this.visibleHandleWidth=i.visibleHandleWidth??_constants.VISIBLE_HANDLE_WIDTH;this.dragThreshold=i.dragThreshold??_constants.DRAG_THRESHOLD;this.edgePadding=i.edgePadding??_constants.EDGE_PADDING;this.enablePositionPersistence=i.enablePositionPersistence??true;this.storage=i.storage;this.onPositionChange=i.onPositionChange;this.onHiddenChange=i.onHiddenChange;this.onDraggingChange=i.onDraggingChange;this.position=i.initialPosition??{x:this.screenWidth-this.bubbleSize.width-20,y:Math.max(this.minPosition.y,Math.min(100,this.screenHeight-this.bubbleSize.height-this.edgePadding))};this.stateSnapshot=this.createSnapshot()}subscribe=i=>{this.listeners.add(i);return()=>this.listeners.delete(i)};getSnapshot=()=>{return this.stateSnapshot};createSnapshot(){return{position:{...this.position},isDragging:this.isDragging,isHidden:this.isHidden,bubbleSize:{...this.bubbleSize}}}notify(){this.stateSnapshot=this.createSnapshot();this.listeners.forEach(i=>i())}async initialize(){if(this.isInitialized||!this.enablePositionPersistence||!this.storage){this.isInitialized=true;return}try{const[i,t]=await Promise.all([this.storage.getItem(_constants.STORAGE_KEYS.POSITION_X),this.storage.getItem(_constants.STORAGE_KEYS.POSITION_Y)]);if(i!==null&&t!==null){const s=parseFloat(i);const a=parseFloat(t);if(!Number.isNaN(s)&&!Number.isNaN(a)){const n={x:s,y:a};const e=this.validatePosition(n);if(Math.abs(n.x-e.x)>5||Math.abs(n.y-e.y)>5){this.savePosition(e.x,e.y)}this.position=e;if(e.x>=this.screenWidth-this.visibleHandleWidth-5){this.isHidden=true}this.notify()}}}catch{}this.isInitialized=true}getBounds(){return{minX:this.minPosition.x,maxX:this.screenWidth-this.visibleHandleWidth,minY:this.minPosition.y,maxY:this.screenHeight-this.bubbleSize.height-this.edgePadding}}validatePosition(i){const t=this.getBounds();return{x:Math.max(t.minX,Math.min(i.x,t.maxX)),y:Math.max(t.minY,Math.min(i.y,t.maxY))}}setPosition(i){this.position=i;this.onPositionChange?.(i);this.notify()}setBubbleSize(i){if(this.bubbleSize.width===i.width&&this.bubbleSize.height===i.height){return}this.bubbleSize=i;if(!this.isDragging)this.reconcileBounds();this.notify()}setScreenSize(i,t){this.screenWidth=i;this.screenHeight=t;this.reconcileBounds();this.notify()}reconcileBounds(){const i=s=>({x:Math.max(this.minPosition.x,Math.min(s.x,this.screenWidth-this.bubbleSize.width-this.edgePadding)),y:Math.max(this.minPosition.y,Math.min(s.y,this.screenHeight-this.bubbleSize.height-this.edgePadding))});const t=i(this.position);this.position=this.isHidden?{...t,x:this.screenWidth-this.visibleHandleWidth}:t;if(this.savedPosition)this.savedPosition=i(this.savedPosition)}setMinPosition(i){this.minPosition=i}async savePosition(i,t){if(!this.enablePositionPersistence||!this.storage)return;try{await Promise.all([this.storage.setItem(_constants.STORAGE_KEYS.POSITION_X,i.toString()),this.storage.setItem(_constants.STORAGE_KEYS.POSITION_Y,t.toString())])}catch{}}debouncedSavePosition(i,t){if(this.saveTimeout)clearTimeout(this.saveTimeout);this.saveTimeout=setTimeout(()=>this.savePosition(i,t),_constants.SAVE_DEBOUNCE_MS)}toggleHideShow(){const i=this.position.x>this.screenWidth-this.bubbleSize.width/2;if(this.isHidden||i){let t;let s;if(this.savedPosition&&this.savedPosition.x<this.screenWidth-this.bubbleSize.width/2){t=this.savedPosition.x;s=this.savedPosition.y}else{t=this.screenWidth-this.bubbleSize.width-20;s=this.position.y}this.isHidden=false;this.onHiddenChange?.(false);this.notify();return{targetPosition:{x:t,y:s},isHiding:false}}else{this.savedPosition={...this.position};const t=this.screenWidth-this.visibleHandleWidth;this.isHidden=true;this.onHiddenChange?.(true);this.notify();return{targetPosition:{x:t,y:this.position.y},isHiding:true}}}forceHide(){if(this.isHidden){return{targetPosition:this.position}}this.savedPosition={...this.position};const i=this.screenWidth-this.visibleHandleWidth;this.isHidden=true;this.onHiddenChange?.(true);this.notify();return{targetPosition:{x:i,y:this.position.y}}}forceShow(){if(!this.isHidden){return{targetPosition:this.position}}let i;let t;if(this.savedPosition){i=this.savedPosition.x;t=this.savedPosition.y}else{i=this.screenWidth-this.bubbleSize.width-20;t=this.position.y}this.isHidden=false;this.onHiddenChange?.(false);this.notify();return{targetPosition:{x:i,y:t}}}handleDragStart(i){this.hasMoved=false;this.dragStartPos={...this.position};this.dragStartMouse={x:i.clientX,y:i.clientY}}handleDragMove(i){const t=i.clientX-this.dragStartMouse.x;const s=i.clientY-this.dragStartMouse.y;const a=Math.abs(t)+Math.abs(s);if(!this.hasMoved&&a>this.dragThreshold){this.hasMoved=true;this.isDragging=true;this.onDraggingChange?.(true);this.notify()}if(this.hasMoved){const n=this.dragStartPos.x+t;const e=this.dragStartPos.y+s;const r=this.getBounds();const l=Math.max(r.minX,Math.min(n,this.screenWidth-this.visibleHandleWidth+this.bubbleSize.width));const h=Math.max(r.minY,Math.min(e,r.maxY));this.position={x:l,y:h};this.onPositionChange?.(this.position);this.notify();return{position:this.position,isDragging:true}}return{position:this.position,isDragging:false}}handleDragEnd(i){const t=!this.hasMoved;if(t){this.isDragging=false;this.onDraggingChange?.(false);this.notify();return{position:this.position,shouldHide:false,wasTap:true}}const s=i.clientX-this.dragStartMouse.x;const a=i.clientY-this.dragStartMouse.y;const n=this.dragStartPos.x+s;const e=this.dragStartPos.y+a;const r=n+this.bubbleSize.width/2;const l=r>this.screenWidth;const h=this.getBounds();if(l){const o=this.screenWidth-this.visibleHandleWidth;const d=Math.max(h.minY,Math.min(e,h.maxY));this.isHidden=true;this.onHiddenChange?.(true);this.isDragging=false;this.onDraggingChange?.(false);this.notify();return{position:{x:o,y:d},shouldHide:true,wasTap:false}}else{if(this.isHidden&&n<this.screenWidth-this.visibleHandleWidth-10){this.isHidden=false;this.onHiddenChange?.(false)}const o=Math.max(h.minX,Math.min(n,this.screenWidth-this.bubbleSize.width-this.edgePadding));const d=Math.max(h.minY,Math.min(e,h.maxY));if(o<this.screenWidth-this.bubbleSize.width/2){this.savedPosition={x:o,y:d}}this.position={x:o,y:d};this.isDragging=false;this.onDraggingChange?.(false);this.debouncedSavePosition(o,d);this.notify();return{position:{x:o,y:d},shouldHide:false,wasTap:false}}}commitPosition(i){this.position=i;this.savePosition(i.x,i.y);this.notify()}destroy(){if(this.saveTimeout){clearTimeout(this.saveTimeout);this.saveTimeout=null}this.listeners.clear()}}exports.FloatingToolsStore=FloatingToolsStore;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.FloatingToolsStore=void 0;var _constants=require("./constants.js");const RIGHT_EDGE_SLOP=12;class FloatingToolsStore{isDragging=false;isHidden=false;dragStartPos={x:0,y:0};dragStartMouse={x:0,y:0};hasMoved=false;savedPosition=null;saveTimeout=null;isInitialized=false;listeners=new Set;constructor(i){this.screenWidth=i.screenWidth;this.screenHeight=i.screenHeight;this.bubbleSize=i.initialBubbleSize??{width:100,height:32};this.minPosition=i.minPosition??{x:_constants.EDGE_PADDING,y:_constants.EDGE_PADDING};this.visibleHandleWidth=i.visibleHandleWidth??_constants.VISIBLE_HANDLE_WIDTH;this.dragThreshold=i.dragThreshold??_constants.DRAG_THRESHOLD;this.edgePadding=i.edgePadding??_constants.EDGE_PADDING;this.enablePositionPersistence=i.enablePositionPersistence??true;this.storage=i.storage;this.onPositionChange=i.onPositionChange;this.onHiddenChange=i.onHiddenChange;this.onDraggingChange=i.onDraggingChange;this.position=i.initialPosition??{x:this.screenWidth-this.bubbleSize.width-20,y:Math.max(this.minPosition.y,Math.min(100,this.screenHeight-this.bubbleSize.height-this.edgePadding))};this.stateSnapshot=this.createSnapshot()}subscribe=i=>{this.listeners.add(i);return()=>this.listeners.delete(i)};getSnapshot=()=>{return this.stateSnapshot};createSnapshot(){return{position:{...this.position},isDragging:this.isDragging,isHidden:this.isHidden,bubbleSize:{...this.bubbleSize}}}notify(){this.stateSnapshot=this.createSnapshot();this.listeners.forEach(i=>i())}async initialize(){if(this.isInitialized||!this.enablePositionPersistence||!this.storage){this.isInitialized=true;return}try{const[i,t]=await Promise.all([this.storage.getItem(_constants.STORAGE_KEYS.POSITION_X),this.storage.getItem(_constants.STORAGE_KEYS.POSITION_Y)]);if(i!==null&&t!==null){const e=parseFloat(i);const h=parseFloat(t);if(!Number.isNaN(e)&&!Number.isNaN(h)){const o=e>=this.screenWidth;const n=o?{x:this.screenWidth-this.bubbleSize.width-this.edgePadding,y:h}:{x:e,y:h};const s=this.validatePosition(n);if(Math.abs(n.x-s.x)>5||Math.abs(n.y-s.y)>5){this.savePosition(s.x,s.y)}this.position=s;if(s.x>=this.screenWidth-this.visibleHandleWidth-5){this.isHidden=true}this.notify()}}}catch{}this.isInitialized=true}getBounds(){return{minX:this.minPosition.x,maxX:this.screenWidth-this.visibleHandleWidth,minY:this.minPosition.y,maxY:this.screenHeight-this.bubbleSize.height-this.edgePadding}}validatePosition(i){const t=this.getBounds();return{x:Math.max(t.minX,Math.min(i.x,t.maxX)),y:Math.max(t.minY,Math.min(i.y,t.maxY))}}setPosition(i){this.position=i;this.onPositionChange?.(i);this.notify()}setBubbleSize(i){if(this.bubbleSize.width===i.width&&this.bubbleSize.height===i.height){return}this.bubbleSize=i;if(!this.isDragging)this.reconcileBounds();this.notify()}setScreenSize(i,t){const e=s=>!!s&&this.screenWidth>0&&s.x+this.bubbleSize.width>=this.screenWidth-this.edgePadding-RIGHT_EDGE_SLOP;const h=!this.isHidden&&e(this.position);const o=e(this.savedPosition);const n=i!==this.screenWidth;this.screenWidth=i;this.screenHeight=t;if(n){const s=i-this.bubbleSize.width-this.edgePadding;if(h){this.position={...this.position,x:s};if(this.isInitialized)this.debouncedSavePosition(s,this.position.y)}if(o&&this.savedPosition)this.savedPosition={...this.savedPosition,x:s}}this.reconcileBounds();this.notify()}reconcileBounds(){const i=e=>({x:Math.max(this.minPosition.x,Math.min(e.x,this.screenWidth-this.bubbleSize.width-this.edgePadding)),y:Math.max(this.minPosition.y,Math.min(e.y,this.screenHeight-this.bubbleSize.height-this.edgePadding))});const t=i(this.position);this.position=this.isHidden?{...t,x:this.screenWidth-this.visibleHandleWidth}:t;if(this.savedPosition)this.savedPosition=i(this.savedPosition)}setMinPosition(i){this.minPosition=i}async savePosition(i,t){if(!this.enablePositionPersistence||!this.storage)return;try{await Promise.all([this.storage.setItem(_constants.STORAGE_KEYS.POSITION_X,i.toString()),this.storage.setItem(_constants.STORAGE_KEYS.POSITION_Y,t.toString())])}catch{}}debouncedSavePosition(i,t){if(this.saveTimeout)clearTimeout(this.saveTimeout);this.saveTimeout=setTimeout(()=>this.savePosition(i,t),_constants.SAVE_DEBOUNCE_MS)}toggleHideShow(){const i=this.position.x>this.screenWidth-this.bubbleSize.width/2;if(this.isHidden||i){let t;let e;if(this.savedPosition&&this.savedPosition.x<this.screenWidth-this.bubbleSize.width/2){t=this.savedPosition.x;e=this.savedPosition.y}else{t=this.screenWidth-this.bubbleSize.width-20;e=this.position.y}this.isHidden=false;this.onHiddenChange?.(false);this.notify();return{targetPosition:{x:t,y:e},isHiding:false}}else{this.savedPosition={...this.position};const t=this.screenWidth-this.visibleHandleWidth;this.isHidden=true;this.onHiddenChange?.(true);this.notify();return{targetPosition:{x:t,y:this.position.y},isHiding:true}}}forceHide(){if(this.isHidden){return{targetPosition:this.position}}this.savedPosition={...this.position};const i=this.screenWidth-this.visibleHandleWidth;this.isHidden=true;this.onHiddenChange?.(true);this.notify();return{targetPosition:{x:i,y:this.position.y}}}forceShow(){if(!this.isHidden){return{targetPosition:this.position}}let i;let t;if(this.savedPosition){i=this.savedPosition.x;t=this.savedPosition.y}else{i=this.screenWidth-this.bubbleSize.width-20;t=this.position.y}this.isHidden=false;this.onHiddenChange?.(false);this.notify();return{targetPosition:{x:i,y:t}}}handleDragStart(i){this.hasMoved=false;this.dragStartPos={...this.position};this.dragStartMouse={x:i.clientX,y:i.clientY}}handleDragMove(i){const t=i.clientX-this.dragStartMouse.x;const e=i.clientY-this.dragStartMouse.y;const h=Math.abs(t)+Math.abs(e);if(!this.hasMoved&&h>this.dragThreshold){this.hasMoved=true;this.isDragging=true;this.onDraggingChange?.(true);this.notify()}if(this.hasMoved){const o=this.dragStartPos.x+t;const n=this.dragStartPos.y+e;const s=this.getBounds();const l=Math.max(s.minX,Math.min(o,this.screenWidth-this.visibleHandleWidth+this.bubbleSize.width));const a=Math.max(s.minY,Math.min(n,s.maxY));this.position={x:l,y:a};this.onPositionChange?.(this.position);this.notify();return{position:this.position,isDragging:true}}return{position:this.position,isDragging:false}}handleDragEnd(i){const t=!this.hasMoved;if(t){this.isDragging=false;this.onDraggingChange?.(false);this.notify();return{position:this.position,shouldHide:false,wasTap:true}}const e=i.clientX-this.dragStartMouse.x;const h=i.clientY-this.dragStartMouse.y;const o=this.dragStartPos.x+e;const n=this.dragStartPos.y+h;const s=o+this.bubbleSize.width/2;const l=s>this.screenWidth;const a=this.getBounds();if(l){const d=this.screenWidth-this.visibleHandleWidth;const r=Math.max(a.minY,Math.min(n,a.maxY));this.isHidden=true;this.onHiddenChange?.(true);this.isDragging=false;this.onDraggingChange?.(false);this.notify();return{position:{x:d,y:r},shouldHide:true,wasTap:false}}else{if(this.isHidden&&o<this.screenWidth-this.visibleHandleWidth-10){this.isHidden=false;this.onHiddenChange?.(false)}const d=Math.max(a.minX,Math.min(o,this.screenWidth-this.bubbleSize.width-this.edgePadding));const r=Math.max(a.minY,Math.min(n,a.maxY));if(d<this.screenWidth-this.bubbleSize.width/2){this.savedPosition={x:d,y:r}}this.position={x:d,y:r};this.isDragging=false;this.onDraggingChange?.(false);this.debouncedSavePosition(d,r);this.notify();return{position:{x:d,y:r},shouldHide:false,wasTap:false}}}commitPosition(i){this.position=i;this.savePosition(i.x,i.y);this.notify()}destroy(){if(this.saveTimeout){clearTimeout(this.saveTimeout);this.saveTimeout=null}this.listeners.clear()}}exports.FloatingToolsStore=FloatingToolsStore;