@buoy-gg/floating-tools-core 7.0.46 → 7.0.48
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.
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use client";if(typeof window!=="undefined"&&typeof globalThis.global==="undefined"){globalThis.global=globalThis}var f=32;var m=5;var y=200;var g=10;var P=500;var l={POSITION_X:"@react_buoy_bubble_position_x",POSITION_Y:"@react_buoy_bubble_position_y"};var S=class{constructor(i){this.isDragging=false;this.isHidden=false;this.dragStartPos={x:0,y:0};this.dragStartMouse={x:0,y:0};this.hasMoved=false;this.savedPosition=null;this.saveTimeout=null;this.isInitialized=false;this.listeners=new Set;this.subscribe=t=>{this.listeners.add(t);return()=>this.listeners.delete(t)};this.getSnapshot=()=>{return this.stateSnapshot};this.screenWidth=i.screenWidth;this.screenHeight=i.screenHeight;this.bubbleSize=i.initialBubbleSize??{width:100,height:32};this.minPosition=i.minPosition??{x:g,y:g};this.visibleHandleWidth=i.visibleHandleWidth??f;this.dragThreshold=i.dragThreshold??m;this.edgePadding=i.edgePadding??g;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()}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(l.POSITION_X),this.storage.getItem(l.POSITION_Y)]);if(i!==null&&t!==null){const s=parseFloat(i);const e=parseFloat(t);if(!Number.isNaN(s)&&!Number.isNaN(e)){const n={x:s,y:e};const o=this.validatePosition(n);if(Math.abs(n.x-o.x)>5||Math.abs(n.y-o.y)>5){this.savePosition(o.x,o.y)}this.position=o;if(o.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(l.POSITION_X,i.toString()),this.storage.setItem(l.POSITION_Y,t.toString())])}catch{}}debouncedSavePosition(i,t){if(this.saveTimeout)clearTimeout(this.saveTimeout);this.saveTimeout=setTimeout(()=>this.savePosition(i,t),P)}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 e=Math.abs(t)+Math.abs(s);if(!this.hasMoved&&e>this.dragThreshold){this.hasMoved=true;this.isDragging=true;this.onDraggingChange?.(true);this.notify()}if(this.hasMoved){const n=this.dragStartPos.x+t;const o=this.dragStartPos.y+s;const d=this.getBounds();const c=Math.max(d.minX,Math.min(n,this.screenWidth-this.visibleHandleWidth+this.bubbleSize.width));const h=Math.max(d.minY,Math.min(o,d.maxY));this.position={x:c,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 e=i.clientY-this.dragStartMouse.y;const n=this.dragStartPos.x+s;const o=this.dragStartPos.y+e;const d=n+this.bubbleSize.width/2;const c=d>this.screenWidth;const h=this.getBounds();if(c){const a=this.screenWidth-this.visibleHandleWidth;const r=Math.max(h.minY,Math.min(o,h.maxY));this.isHidden=true;this.onHiddenChange?.(true);this.isDragging=false;this.onDraggingChange?.(false);this.notify();return{position:{x:a,y:r},shouldHide:true,wasTap:false}}else{if(this.isHidden&&n<this.screenWidth-this.visibleHandleWidth-10){this.isHidden=false;this.onHiddenChange?.(false)}const a=Math.max(h.minX,Math.min(n,this.screenWidth-this.bubbleSize.width-this.edgePadding));const r=Math.max(h.minY,Math.min(o,h.maxY));if(a<this.screenWidth-this.bubbleSize.width/2){this.savedPosition={x:a,y:r}}this.position={x:a,y:r};this.isDragging=false;this.onDraggingChange?.(false);this.debouncedSavePosition(a,r);this.notify();return{position:{x:a,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()}};function x(i,t){switch(i){case"admin":return{label:"Admin",dotColor:t.success,textColor:t.success};case"internal":return{label:"Internal",dotColor:t.optional,textColor:t.optional};case"user":default:return{label:"User",dotColor:t.muted,textColor:t.secondary}}}function p(i){return{dotSize:Math.max(2,Math.round(i/6)),columnGap:Math.max(2,Math.round(i/12)),rowGap:Math.max(2,Math.round(i/12))}}function v(i){return i.filter(t=>t!=null&&t!==false)}var u={linear:i=>i,easeOutCubic:i=>1-Math.pow(1-i,3),easeInCubic:i=>i*i*i,easeInOutCubic:i=>i<.5?4*i*i*i:1-Math.pow(-2*i+2,3)/2,easeOutQuad:i=>1-(1-i)*(1-i),easeOutExpo:i=>i===1?1:1-Math.pow(2,-10*i)};function M(i){return u[i]}function b(i,t,s,e=u.easeOutCubic){const n=e(Math.max(0,Math.min(1,s)));return i+(t-i)*n}function H(i,t,s,e=u.easeOutCubic){return{x:b(i.x,t.x,s,e),y:b(i.y,t.y,s,e)}}var C={panel:"#1A1A1A",muted:"#888888",secondary:"#E0E0E0",info:"#20C997",success:"#20C997",optional:"#FFA94D",error:"#EF4444",primary:"#20C997",dragActive:"#20C997"};function T(i,t){if(typeof t==="number"){const s=Math.round(t*255).toString(16).padStart(2,"0");return`${i}${s}`}return`${i}${t}`}export{f as VISIBLE_HANDLE_WIDTH,m as DRAG_THRESHOLD,y as ANIMATION_DURATION,g as EDGE_PADDING,P as SAVE_DEBOUNCE_MS,l as STORAGE_KEYS,S as FloatingToolsStore,x as getUserStatusConfig,p as getGripIconLayout,v as filterValidChildren,u as easing,M as getEasing,b as interpolate,H as interpolatePosition,C as floatingToolsColors,T as withAlpha};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use client";var f=32;var m=5;var y=200;var g=10;var P=500;var l={POSITION_X:"@react_buoy_bubble_position_x",POSITION_Y:"@react_buoy_bubble_position_y"};var S=class{constructor(i){this.isDragging=false;this.isHidden=false;this.dragStartPos={x:0,y:0};this.dragStartMouse={x:0,y:0};this.hasMoved=false;this.savedPosition=null;this.saveTimeout=null;this.isInitialized=false;this.listeners=new Set;this.subscribe=t=>{this.listeners.add(t);return()=>this.listeners.delete(t)};this.getSnapshot=()=>{return this.stateSnapshot};this.screenWidth=i.screenWidth;this.screenHeight=i.screenHeight;this.bubbleSize=i.initialBubbleSize??{width:100,height:32};this.minPosition=i.minPosition??{x:g,y:g};this.visibleHandleWidth=i.visibleHandleWidth??f;this.dragThreshold=i.dragThreshold??m;this.edgePadding=i.edgePadding??g;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()}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(l.POSITION_X),this.storage.getItem(l.POSITION_Y)]);if(i!==null&&t!==null){const s=parseFloat(i);const e=parseFloat(t);if(!Number.isNaN(s)&&!Number.isNaN(e)){const n={x:s,y:e};const o=this.validatePosition(n);if(Math.abs(n.x-o.x)>5||Math.abs(n.y-o.y)>5){this.savePosition(o.x,o.y)}this.position=o;if(o.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(l.POSITION_X,i.toString()),this.storage.setItem(l.POSITION_Y,t.toString())])}catch{}}debouncedSavePosition(i,t){if(this.saveTimeout)clearTimeout(this.saveTimeout);this.saveTimeout=setTimeout(()=>this.savePosition(i,t),P)}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 e=Math.abs(t)+Math.abs(s);if(!this.hasMoved&&e>this.dragThreshold){this.hasMoved=true;this.isDragging=true;this.onDraggingChange?.(true);this.notify()}if(this.hasMoved){const n=this.dragStartPos.x+t;const o=this.dragStartPos.y+s;const d=this.getBounds();const c=Math.max(d.minX,Math.min(n,this.screenWidth-this.visibleHandleWidth+this.bubbleSize.width));const h=Math.max(d.minY,Math.min(o,d.maxY));this.position={x:c,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 e=i.clientY-this.dragStartMouse.y;const n=this.dragStartPos.x+s;const o=this.dragStartPos.y+e;const d=n+this.bubbleSize.width/2;const c=d>this.screenWidth;const h=this.getBounds();if(c){const a=this.screenWidth-this.visibleHandleWidth;const r=Math.max(h.minY,Math.min(o,h.maxY));this.isHidden=true;this.onHiddenChange?.(true);this.isDragging=false;this.onDraggingChange?.(false);this.notify();return{position:{x:a,y:r},shouldHide:true,wasTap:false}}else{if(this.isHidden&&n<this.screenWidth-this.visibleHandleWidth-10){this.isHidden=false;this.onHiddenChange?.(false)}const a=Math.max(h.minX,Math.min(n,this.screenWidth-this.bubbleSize.width-this.edgePadding));const r=Math.max(h.minY,Math.min(o,h.maxY));if(a<this.screenWidth-this.bubbleSize.width/2){this.savedPosition={x:a,y:r}}this.position={x:a,y:r};this.isDragging=false;this.onDraggingChange?.(false);this.debouncedSavePosition(a,r);this.notify();return{position:{x:a,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()}};function x(i,t){switch(i){case"admin":return{label:"Admin",dotColor:t.success,textColor:t.success};case"internal":return{label:"Internal",dotColor:t.optional,textColor:t.optional};case"user":default:return{label:"User",dotColor:t.muted,textColor:t.secondary}}}function p(i){return{dotSize:Math.max(2,Math.round(i/6)),columnGap:Math.max(2,Math.round(i/12)),rowGap:Math.max(2,Math.round(i/12))}}function v(i){return i.filter(t=>t!=null&&t!==false)}var u={linear:i=>i,easeOutCubic:i=>1-Math.pow(1-i,3),easeInCubic:i=>i*i*i,easeInOutCubic:i=>i<.5?4*i*i*i:1-Math.pow(-2*i+2,3)/2,easeOutQuad:i=>1-(1-i)*(1-i),easeOutExpo:i=>i===1?1:1-Math.pow(2,-10*i)};function M(i){return u[i]}function b(i,t,s,e=u.easeOutCubic){const n=e(Math.max(0,Math.min(1,s)));return i+(t-i)*n}function H(i,t,s,e=u.easeOutCubic){return{x:b(i.x,t.x,s,e),y:b(i.y,t.y,s,e)}}var C={panel:"#1A1A1A",muted:"#888888",secondary:"#E0E0E0",info:"#20C997",success:"#20C997",optional:"#FFA94D",error:"#EF4444",primary:"#20C997",dragActive:"#20C997"};function I(i,t){if(typeof t==="number"){const s=Math.round(t*255).toString(16).padStart(2,"0");return`${i}${s}`}return`${i}${t}`}export{f as VISIBLE_HANDLE_WIDTH,m as DRAG_THRESHOLD,y as ANIMATION_DURATION,g as EDGE_PADDING,P as SAVE_DEBOUNCE_MS,l as STORAGE_KEYS,S as FloatingToolsStore,x as getUserStatusConfig,p as getGripIconLayout,v as filterValidChildren,u as easing,M as getEasing,b as interpolate,H as interpolatePosition,C as floatingToolsColors,I as withAlpha};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use client";typeof window<"u"&&typeof globalThis.global>"u"&&(globalThis.global=globalThis);var u=32,b=5,c=200,m=10,P=500,d={POSITION_X:"@react_buoy_bubble_position_x",POSITION_Y:"@react_buoy_bubble_position_y"};var y=class{constructor(i){this.isDragging=false;this.isHidden=false;this.dragStartPos={x:0,y:0};this.dragStartMouse={x:0,y:0};this.hasMoved=false;this.savedPosition=null;this.saveTimeout=null;this.isInitialized=false;this.listeners=new Set;this.subscribe=t=>(this.listeners.add(t),()=>this.listeners.delete(t));this.getSnapshot=()=>this.stateSnapshot;this.screenWidth=i.screenWidth,this.screenHeight=i.screenHeight,this.bubbleSize=i.initialBubbleSize??{width:100,height:32},this.minPosition=i.minPosition??{x:10,y:10},this.visibleHandleWidth=i.visibleHandleWidth??32,this.dragThreshold=i.dragThreshold??5,this.edgePadding=i.edgePadding??10,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()}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{let[i,t]=await Promise.all([this.storage.getItem(d.POSITION_X),this.storage.getItem(d.POSITION_Y)]);if(i!==null&&t!==null){let s=parseFloat(i),e=parseFloat(t);if(!Number.isNaN(s)&&!Number.isNaN(e)){let n={x:s,y:e},h=this.validatePosition(n);(Math.abs(n.x-h.x)>5||Math.abs(n.y-h.y)>5)&&this.savePosition(h.x,h.y),this.position=h,h.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){let 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){this.bubbleSize.width===i.width&&this.bubbleSize.height===i.height||(this.bubbleSize=i,this.isDragging||this.reconcileBounds(),this.notify())}setScreenSize(i,t){this.screenWidth=i,this.screenHeight=t,this.reconcileBounds(),this.notify()}reconcileBounds(){let 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))}),t=i(this.position);this.position=this.isHidden?{...t,x:this.screenWidth-this.visibleHandleWidth}:t,this.savedPosition&&(this.savedPosition=i(this.savedPosition))}setMinPosition(i){this.minPosition=i}async savePosition(i,t){if(!(!this.enablePositionPersistence||!this.storage))try{await Promise.all([this.storage.setItem(d.POSITION_X,i.toString()),this.storage.setItem(d.POSITION_Y,t.toString())])}catch{}}debouncedSavePosition(i,t){this.saveTimeout&&clearTimeout(this.saveTimeout),this.saveTimeout=setTimeout(()=>this.savePosition(i,t),500)}toggleHideShow(){let i=this.position.x>this.screenWidth-this.bubbleSize.width/2;if(this.isHidden||i){let t,s;return this.savedPosition&&this.savedPosition.x<this.screenWidth-this.bubbleSize.width/2?(t=this.savedPosition.x,s=this.savedPosition.y):(t=this.screenWidth-this.bubbleSize.width-20,s=this.position.y),this.isHidden=false,this.onHiddenChange?.(false),this.notify(),{targetPosition:{x:t,y:s},isHiding:false}}else{this.savedPosition={...this.position};let t=this.screenWidth-this.visibleHandleWidth;return this.isHidden=true,this.onHiddenChange?.(true),this.notify(),{targetPosition:{x:t,y:this.position.y},isHiding:true}}}forceHide(){if(this.isHidden)return{targetPosition:this.position};this.savedPosition={...this.position};let i=this.screenWidth-this.visibleHandleWidth;return this.isHidden=true,this.onHiddenChange?.(true),this.notify(),{targetPosition:{x:i,y:this.position.y}}}forceShow(){if(!this.isHidden)return{targetPosition:this.position};let i,t;return this.savedPosition?(i=this.savedPosition.x,t=this.savedPosition.y):(i=this.screenWidth-this.bubbleSize.width-20,t=this.position.y),this.isHidden=false,this.onHiddenChange?.(false),this.notify(),{targetPosition:{x:i,y:t}}}handleDragStart(i){this.hasMoved=false,this.dragStartPos={...this.position},this.dragStartMouse={x:i.clientX,y:i.clientY}}handleDragMove(i){let t=i.clientX-this.dragStartMouse.x,s=i.clientY-this.dragStartMouse.y,e=Math.abs(t)+Math.abs(s);if(!this.hasMoved&&e>this.dragThreshold&&(this.hasMoved=true,this.isDragging=true,this.onDraggingChange?.(true),this.notify()),this.hasMoved){let n=this.dragStartPos.x+t,h=this.dragStartPos.y+s,a=this.getBounds(),o=Math.max(a.minX,Math.min(n,this.screenWidth-this.visibleHandleWidth+this.bubbleSize.width)),r=Math.max(a.minY,Math.min(h,a.maxY));return this.position={x:o,y:r},this.onPositionChange?.(this.position),this.notify(),{position:this.position,isDragging:true}}return{position:this.position,isDragging:false}}handleDragEnd(i){if(!this.hasMoved)return this.isDragging=false,this.onDraggingChange?.(false),this.notify(),{position:this.position,shouldHide:false,wasTap:true};let t=i.clientX-this.dragStartMouse.x,s=i.clientY-this.dragStartMouse.y,e=this.dragStartPos.x+t,n=this.dragStartPos.y+s,h=e+this.bubbleSize.width/2>this.screenWidth,a=this.getBounds();if(h){let o=this.screenWidth-this.visibleHandleWidth,r=Math.max(a.minY,Math.min(n,a.maxY));return this.isHidden=true,this.onHiddenChange?.(true),this.isDragging=false,this.onDraggingChange?.(false),this.notify(),{position:{x:o,y:r},shouldHide:true,wasTap:false}}else{this.isHidden&&e<this.screenWidth-this.visibleHandleWidth-10&&(this.isHidden=false,this.onHiddenChange?.(false));let o=Math.max(a.minX,Math.min(e,this.screenWidth-this.bubbleSize.width-this.edgePadding)),r=Math.max(a.minY,Math.min(n,a.maxY));return o<this.screenWidth-this.bubbleSize.width/2&&(this.savedPosition={x:o,y:r}),this.position={x:o,y:r},this.isDragging=false,this.onDraggingChange?.(false),this.debouncedSavePosition(o,r),this.notify(),{position:{x:o,y:r},shouldHide:false,wasTap:false}}}commitPosition(i){this.position=i,this.savePosition(i.x,i.y),this.notify()}destroy(){this.saveTimeout&&(clearTimeout(this.saveTimeout),this.saveTimeout=null),this.listeners.clear()}};function f(i,t){switch(i){case"admin":return{label:"Admin",dotColor:t.success,textColor:t.success};case"internal":return{label:"Internal",dotColor:t.optional,textColor:t.optional};case"user":default:return{label:"User",dotColor:t.muted,textColor:t.secondary}}}function x(i){return{dotSize:Math.max(2,Math.round(i/6)),columnGap:Math.max(2,Math.round(i/12)),rowGap:Math.max(2,Math.round(i/12))}}function p(i){return i.filter(t=>t!=null&&t!==false)}var l={linear:i=>i,easeOutCubic:i=>1-Math.pow(1-i,3),easeInCubic:i=>i*i*i,easeInOutCubic:i=>i<.5?4*i*i*i:1-Math.pow(-2*i+2,3)/2,easeOutQuad:i=>1-(1-i)*(1-i),easeOutExpo:i=>i===1?1:1-Math.pow(2,-10*i)};function S(i){return l[i]}function g(i,t,s,e=l.easeOutCubic){let n=e(Math.max(0,Math.min(1,s)));return i+(t-i)*n}function v(i,t,s,e=l.easeOutCubic){return{x:g(i.x,t.x,s,e),y:g(i.y,t.y,s,e)}}var M={panel:"#1A1A1A",muted:"#888888",secondary:"#E0E0E0",info:"#20C997",success:"#20C997",optional:"#FFA94D",error:"#EF4444",primary:"#20C997",dragActive:"#20C997"};function H(i,t){if(typeof t=="number"){let s=Math.round(t*255).toString(16).padStart(2,"0");return`${i}${s}`}return`${i}${t}`}export{u as a,b,c,m as d,P as e,d as f,y as g,f as h,x as i,p as j,l as k,S as l,g as m,v as n,M as o,H as p};
|