trotl-modal 1.0.12 → 1.0.13

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/dist/index.cjs.js CHANGED
@@ -263,6 +263,7 @@ function Modal({
263
263
  }, /*#__PURE__*/React.createElement("div", {
264
264
  className: "modal-title"
265
265
  }, title), /*#__PURE__*/React.createElement("button", {
266
+ type: "button",
266
267
  className: "modal-close",
267
268
  onClick: onClose
268
269
  }, "\xD7")), /*#__PURE__*/React.createElement("div", {
@@ -599,6 +600,7 @@ function Drawer({
599
600
  }, /*#__PURE__*/React.createElement("div", {
600
601
  className: "modal-title"
601
602
  }, title), /*#__PURE__*/React.createElement("button", {
603
+ type: "button",
602
604
  className: "modal-close",
603
605
  onClick: onClose
604
606
  }, "\xD7")), /*#__PURE__*/React.createElement("div", {
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs.js","sources":["../src/components/Modal.jsx","../src/components/Drawer.jsx"],"sourcesContent":["import React, {useEffect, useLayoutEffect, useRef, useState} from 'react'\r\n\r\nexport default function Modal({\r\n isOpen,\r\n onClose,\r\n title,\r\n children,\r\n initialPosition = 'center',\r\n theme = 'light' // new prop: 'light' or 'dark'\r\n}){\r\n const modalRef = useRef(null)\r\n const headerRef = useRef(null)\r\n const [pos, setPos] = useState({x: 0, y: 0})\r\n const [origin, setOrigin] = useState('50% 50%')\r\n\r\n function computeOrigin(pos){\r\n if(typeof pos === 'object'){\r\n // explicit coords – treat as pixels from top-left of modal\r\n const x = typeof pos.left === 'number' ? `${pos.left}px` : '0'\r\n const y = typeof pos.top === 'number' ? `${pos.top}px` : '0'\r\n return `${x} ${y}`\r\n }\r\n switch(pos){\r\n case 'top-left': return '0 0'\r\n case 'top-center': return '50% 0'\r\n case 'top-right': return '100% 0'\r\n case 'right-center': return '100% 50%'\r\n case 'bottom-right': return '100% 100%'\r\n case 'bottom-center': return '50% 100%'\r\n case 'bottom-left': return '0 100%'\r\n case 'left-center': return '0 50%'\r\n case 'center':\r\n default: return '50% 50%'\r\n }\r\n }\r\n const draggingRef = useRef(false)\r\n const offsetRef = useRef({x:0,y:0})\r\n // transition helpers -> keep component rendered during fade-out\r\n const [rendered, setRendered] = useState(isOpen)\r\n const [visible, setVisible] = useState(isOpen)\r\n\r\n // when isOpen changes, trigger fade in / fade out\r\n useEffect(() => {\r\n if (isOpen) {\r\n setRendered(true)\r\n // next frame to allow initial render before adding class\r\n requestAnimationFrame(() => {\r\n setVisible(true)\r\n })\r\n } else if (rendered) {\r\n setVisible(false)\r\n // remove from DOM after transition duration\r\n const timeout = setTimeout(() => setRendered(false), 200)\r\n return () => clearTimeout(timeout)\r\n }\r\n }, [isOpen, rendered])\r\n\r\n // ESC key handler\r\n useEffect(() => {\r\n if (!isOpen) return\r\n function handleEsc(e) {\r\n if (e.key === 'Escape') {\r\n onClose()\r\n }\r\n }\r\n window.addEventListener('keydown', handleEsc)\r\n return () => window.removeEventListener('keydown', handleEsc)\r\n }, [isOpen, onClose])\r\n\r\n // calculate coordinates synchronously before paint so the dialog doesn't\r\n // jump from {0,0} when it first renders. using useLayoutEffect ensures the\r\n // position is available when visible transitions start.\r\n useLayoutEffect(() => {\r\n // only position when the modal is actually rendered & opening\r\n if (!isOpen || !rendered) return\r\n const el = modalRef.current\r\n if (!el) return\r\n\r\n const { innerWidth, innerHeight } = window\r\n const rect = el.getBoundingClientRect()\r\n const maxX = Math.max(0, innerWidth - rect.width)\r\n const maxY = Math.max(0, innerHeight - rect.height)\r\n const centerX = (innerWidth - rect.width) / 2\r\n const centerY = (innerHeight - rect.height) / 2\r\n\r\n let x = centerX\r\n let y = centerY\r\n\r\n if (typeof initialPosition === 'object') {\r\n if (typeof initialPosition.left === 'number') x = initialPosition.left\r\n if (typeof initialPosition.top === 'number') y = initialPosition.top\r\n } else {\r\n switch (initialPosition) {\r\n case 'top-center':\r\n x = centerX; y = 0; break\r\n case 'bottom-center':\r\n x = centerX; y = maxY; break\r\n case 'top-left':\r\n x = 0; y = 0; break\r\n case 'top-right':\r\n x = maxX; y = 0; break\r\n case 'bottom-left':\r\n x = 0; y = maxY; break\r\n case 'bottom-right':\r\n x = maxX; y = maxY; break\r\n case 'left-center':\r\n x = 0; y = centerY; break\r\n case 'right-center':\r\n x = maxX; y = centerY; break\r\n case 'center':\r\n default:\r\n x = centerX; y = centerY; break\r\n }\r\n }\r\n\r\n // clamp to viewport\r\n x = Math.min(Math.max(0, x), maxX)\r\n y = Math.min(Math.max(0, y), maxY)\r\n\r\n setPos({ x, y })\r\n setOrigin(computeOrigin(initialPosition))\r\n }, [isOpen, initialPosition, rendered])\r\n\r\n useEffect(()=>{\r\n function onMove(e){\r\n if(!draggingRef.current) return\r\n if (e.touches) e.preventDefault()\r\n const clientX = e.touches ? e.touches[0].clientX : e.clientX\r\n const clientY = e.touches ? e.touches[0].clientY : e.clientY\r\n // compute desired position\r\n const desiredX = clientX - offsetRef.current.x\r\n const desiredY = clientY - offsetRef.current.y\r\n // clamp to viewport so it can't be dragged fully offscreen\r\n const el = modalRef.current\r\n if(el){\r\n const rect = el.getBoundingClientRect()\r\n const maxX = window.innerWidth - rect.width\r\n const maxY = window.innerHeight - rect.height\r\n const clampedX = Math.min(Math.max(0, desiredX), Math.max(0, maxX))\r\n const clampedY = Math.min(Math.max(0, desiredY), Math.max(0, maxY))\r\n setPos({x: clampedX, y: clampedY})\r\n } else {\r\n setPos({x: desiredX, y: desiredY})\r\n }\r\n }\r\n function onUp(){ draggingRef.current = false }\r\n window.addEventListener('mousemove', onMove)\r\n window.addEventListener('mouseup', onUp)\r\n window.addEventListener('touchmove', onMove, {passive:false})\r\n window.addEventListener('touchend', onUp)\r\n return ()=>{\r\n window.removeEventListener('mousemove', onMove)\r\n window.removeEventListener('mouseup', onUp)\r\n window.removeEventListener('touchmove', onMove)\r\n window.removeEventListener('touchend', onUp)\r\n }\r\n },[])\r\n\r\n function startDrag(e){\r\n e.preventDefault()\r\n draggingRef.current = true\r\n document.body.style.userSelect = 'none'\r\n const clientX = e.touches ? e.touches[0].clientX : e.clientX\r\n const clientY = e.touches ? e.touches[0].clientY : e.clientY\r\n const rect = modalRef.current.getBoundingClientRect()\r\n offsetRef.current = {x: clientX - rect.left, y: clientY - rect.top}\r\n }\r\n\r\n // ensure we re-enable selection when drag ends\r\n useEffect(()=>{\r\n function onUpCleanup(){\r\n draggingRef.current = false\r\n document.body.style.userSelect = ''\r\n // final clamp to ensure modal stays visible if window size changed\r\n const el = modalRef.current\r\n if(el){\r\n const rect = el.getBoundingClientRect()\r\n const maxX = window.innerWidth - rect.width\r\n const maxY = window.innerHeight - rect.height\r\n setPos(prev => ({\r\n x: Math.min(Math.max(0, prev.x), Math.max(0, maxX)),\r\n y: Math.min(Math.max(0, prev.y), Math.max(0, maxY))\r\n }))\r\n }\r\n }\r\n window.addEventListener('mouseup', onUpCleanup)\r\n window.addEventListener('touchend', onUpCleanup)\r\n return ()=>{\r\n window.removeEventListener('mouseup', onUpCleanup)\r\n window.removeEventListener('touchend', onUpCleanup)\r\n }\r\n },[])\r\n\r\n if (!rendered) return null\r\n\r\n return (\r\n <div\r\n className={\"modal-overlay\" + (visible ? \" visible\" : \"\")}\r\n data-theme={theme}\r\n onMouseDown={(e) => { if (visible && e.target === e.currentTarget) onClose() }}>\r\n <div\r\n className={\"modal\" + (visible ? \" visible\" : \"\")}\r\n data-theme={theme}\r\n ref={modalRef}\r\n style={{left:`${pos.x}px`, top:`${pos.y}px`, transformOrigin: origin}}>\r\n <div className=\"modal-header\" ref={headerRef} onMouseDown={startDrag} onTouchStart={startDrag}>\r\n <div className=\"modal-title\">{title}</div>\r\n <button className=\"modal-close\" onClick={onClose}>×</button>\r\n </div>\r\n <div className=\"modal-body\">{children}</div>\r\n </div>\r\n </div>\r\n )\r\n}\r\n","import React, {useEffect, useLayoutEffect, useRef, useState} from 'react'\r\n\r\nexport default function Drawer({\r\n isOpen,\r\n onClose,\r\n title,\r\n children,\r\n initialPosition = 'left',\r\n transitionDuration = '0.45s',\r\n theme = 'light' // support light/dark themes\r\n}){\r\n const drawerRef = useRef(null)\r\n const headerRef = useRef(null)\r\n const [pos, setPos] = useState({x: 0, y: 0})\r\n const [origin, setOrigin] = useState('50% 50%')\r\n\r\n // determine orientation (horizontal/vertical) and simple side for animation\r\n function detectOrientation(pos){\r\n if(typeof pos === 'string'){\r\n if(pos.includes('left') || pos.includes('right')) return 'horizontal'\r\n if(pos.includes('top') || pos.includes('bottom')) return 'vertical'\r\n }\r\n // fall back to horizontal for coordinate objects\r\n return 'horizontal'\r\n }\r\n function detectSide(pos){\r\n if(typeof pos === 'string'){\r\n if(pos.includes('left')) return 'left'\r\n if(pos.includes('right')) return 'right'\r\n if(pos.includes('top')) return 'top'\r\n if(pos.includes('bottom')) return 'bottom'\r\n }\r\n return 'left'\r\n }\r\n const orientation = detectOrientation(initialPosition)\r\n const side = detectSide(initialPosition)\r\n const [shrink, setShrink] = useState(null)\r\n\r\n function computeOrigin(pos){\r\n if(typeof pos === 'object'){\r\n const x = typeof pos.left === 'number' ? `${pos.left}px` : '0'\r\n const y = typeof pos.top === 'number' ? `${pos.top}px` : '0'\r\n return `${x} ${y}`\r\n }\r\n switch(pos){\r\n case 'top-left': return '0 0'\r\n case 'top-center': return '50% 0'\r\n case 'top-right': return '100% 0'\r\n case 'right': return '100% 50%'\r\n case 'right-center': return '100% 50%'\r\n case 'bottom-right': return '100% 100%'\r\n case 'bottom-center': return '50% 100%'\r\n case 'bottom-left': return '0 100%'\r\n case 'left': return '0 50%'\r\n case 'left-center': return '0 50%'\r\n case 'center':\r\n default: return '50% 50%'\r\n }\r\n }\r\n\r\n const draggingRef = useRef(false)\r\n const offsetRef = useRef({x:0,y:0})\r\n const [rendered, setRendered] = useState(isOpen)\r\n const [visible, setVisible] = useState(isOpen)\r\n\r\n function toMs(duration){\r\n if (typeof duration !== 'string') return 450\r\n const trimmed = duration.trim()\r\n if (trimmed.endsWith('ms')) {\r\n const val = Number(trimmed.slice(0, -2))\r\n return Number.isFinite(val) ? val : 450\r\n }\r\n if (trimmed.endsWith('s')) {\r\n const val = Number(trimmed.slice(0, -1))\r\n return Number.isFinite(val) ? Math.round(val * 1000) : 450\r\n }\r\n return 450\r\n }\r\n\r\n // ESC key handler\r\n useEffect(() => {\r\n if (!isOpen) return\r\n function handleEsc(e) {\r\n if (e.key === 'Escape') {\r\n onClose()\r\n }\r\n }\r\n window.addEventListener('keydown', handleEsc)\r\n return () => window.removeEventListener('keydown', handleEsc)\r\n }, [isOpen, onClose])\r\n\r\n useEffect(() => {\r\n if (isOpen) {\r\n setRendered(true)\r\n setShrink(null)\r\n requestAnimationFrame(() => setVisible(true))\r\n } else if (rendered) {\r\n setVisible(false)\r\n const timeout = setTimeout(\r\n () => setRendered(false),\r\n toMs(transitionDuration)\r\n )\r\n return () => clearTimeout(timeout)\r\n }\r\n }, [isOpen, rendered, transitionDuration])\r\n\r\n useEffect(() => {\r\n if (isOpen) setShrink(null)\r\n }, [isOpen, children, orientation])\r\n\r\n useLayoutEffect(() => {\r\n if (!isOpen || !rendered) return\r\n const el = drawerRef.current\r\n if (!el) return\r\n\r\n const { innerWidth, innerHeight } = window\r\n const rect = el.getBoundingClientRect()\r\n const effectiveWidth = orientation === 'horizontal' && shrink === true\r\n ? Math.round(innerWidth * 0.3)\r\n : rect.width\r\n const effectiveHeight = orientation === 'vertical' && shrink === true\r\n ? Math.round(innerHeight * 0.3)\r\n : rect.height\r\n const maxX = Math.max(0, innerWidth - effectiveWidth)\r\n const maxY = Math.max(0, innerHeight - effectiveHeight)\r\n const centerX = (innerWidth - effectiveWidth) / 2\r\n const centerY = (innerHeight - effectiveHeight) / 2\r\n\r\n let x = centerX\r\n let y = centerY\r\n\r\n if (typeof initialPosition === 'object') {\r\n if (typeof initialPosition.left === 'number') x = initialPosition.left\r\n if (typeof initialPosition.top === 'number') y = initialPosition.top\r\n } else {\r\n switch (initialPosition) {\r\n case 'left':\r\n x = 0; y = 0; break\r\n case 'right':\r\n x = maxX; y = 0; break\r\n case 'top':\r\n x = 0; y = 0; break\r\n case 'bottom':\r\n x = 0; y = maxY; break\r\n case 'top-left':\r\n x = 0; y = 0; break\r\n case 'top-right':\r\n x = maxX; y = 0; break\r\n case 'bottom-left':\r\n x = 0; y = maxY; break\r\n case 'bottom-right':\r\n x = maxX; y = maxY; break\r\n case 'top-center':\r\n x = centerX; y = 0; break\r\n case 'bottom-center':\r\n x = centerX; y = maxY; break\r\n case 'left-center':\r\n x = 0; y = centerY; break\r\n case 'right-center':\r\n x = maxX; y = centerY; break\r\n case 'center':\r\n default:\r\n x = centerX; y = centerY; break\r\n }\r\n }\r\n\r\n x = Math.min(Math.max(0, x), maxX)\r\n y = Math.min(Math.max(0, y), maxY)\r\n\r\n setPos({ x, y })\r\n setOrigin(computeOrigin(initialPosition))\r\n }, [isOpen, initialPosition, rendered, orientation, shrink])\r\n\r\n // shrink measurement – check dimensions after render\r\n useLayoutEffect(() => {\r\n if (!rendered || !drawerRef.current) return\r\n if (!isOpen) return\r\n if (shrink !== null) return\r\n const el = drawerRef.current\r\n const { innerWidth, innerHeight } = window\r\n if (orientation === 'horizontal') {\r\n setShrink(el.scrollWidth < innerWidth * 0.3)\r\n } else {\r\n setShrink(el.scrollHeight < innerHeight * 0.3)\r\n }\r\n }, [rendered, visible, children, orientation, shrink])\r\n\r\n useEffect(()=>{\r\n function onMove(e){\r\n if(!draggingRef.current) return\r\n if (e.touches) e.preventDefault()\r\n const clientX = e.touches ? e.touches[0].clientX : e.clientX\r\n const clientY = e.touches ? e.touches[0].clientY : e.clientY\r\n const desiredX = clientX - offsetRef.current.x\r\n const desiredY = clientY - offsetRef.current.y\r\n const el = drawerRef.current\r\n if(el){\r\n const rect = el.getBoundingClientRect()\r\n const maxX = window.innerWidth - rect.width\r\n const maxY = window.innerHeight - rect.height\r\n const clampedX = Math.min(Math.max(0, desiredX), Math.max(0, maxX))\r\n const clampedY = Math.min(Math.max(0, desiredY), Math.max(0, maxY))\r\n setPos({x: clampedX, y: clampedY})\r\n } else {\r\n setPos({x: desiredX, y: desiredY})\r\n }\r\n }\r\n function onUp(){ draggingRef.current = false }\r\n window.addEventListener('mousemove', onMove)\r\n window.addEventListener('mouseup', onUp)\r\n window.addEventListener('touchmove', onMove, {passive:false})\r\n window.addEventListener('touchend', onUp)\r\n return ()=>{\r\n window.removeEventListener('mousemove', onMove)\r\n window.removeEventListener('mouseup', onUp)\r\n window.removeEventListener('touchmove', onMove)\r\n window.removeEventListener('touchend', onUp)\r\n }\r\n },[])\r\n\r\n function startDrag(e){\r\n e.preventDefault()\r\n draggingRef.current = true\r\n document.body.style.userSelect = 'none'\r\n const clientX = e.touches ? e.touches[0].clientX : e.clientX\r\n const clientY = e.touches ? e.touches[0].clientY : e.clientY\r\n const rect = drawerRef.current.getBoundingClientRect()\r\n offsetRef.current = {x: clientX - rect.left, y: clientY - rect.top}\r\n }\r\n\r\n useEffect(()=>{\r\n function onUpCleanup(){\r\n draggingRef.current = false\r\n document.body.style.userSelect = ''\r\n const el = drawerRef.current\r\n if(el){\r\n const rect = el.getBoundingClientRect()\r\n const maxX = window.innerWidth - rect.width\r\n const maxY = window.innerHeight - rect.height\r\n setPos(prev => ({\r\n x: Math.min(Math.max(0, prev.x), Math.max(0, maxX)),\r\n y: Math.min(Math.max(0, prev.y), Math.max(0, maxY))\r\n }))\r\n }\r\n }\r\n window.addEventListener('mouseup', onUpCleanup)\r\n window.addEventListener('touchend', onUpCleanup)\r\n return ()=>{\r\n window.removeEventListener('mouseup', onUpCleanup)\r\n window.removeEventListener('touchend', onUpCleanup)\r\n }\r\n },[])\r\n\r\n if (!rendered) return null\r\n\r\n return (\r\n <div\r\n className={\"modal-overlay drawer-overlay\" + (visible ? \" visible\" : \"\")}\r\n data-theme={theme}\r\n onMouseDown={(e) => { if (visible && e.target === e.currentTarget) onClose() }}>\r\n <div\r\n className={\r\n `drawer ${orientation} side-${side}` + (visible ? \" visible\" : \"\")\r\n }\r\n data-theme={theme}\r\n ref={drawerRef}\r\n style={{\r\n left:`${pos.x}px`,\r\n top:`${pos.y}px`,\r\n transformOrigin: origin,\r\n '--drawer-transition': transitionDuration,\r\n ...(orientation === 'horizontal' ? {height: '100%'} : {width: '100%'}),\r\n ...(shrink === true\r\n ? (orientation === 'horizontal'\r\n ? {width: '30vw'}\r\n : {height: '30vh'})\r\n : {}),\r\n }}>\r\n <div className=\"modal-header\" ref={headerRef} onMouseDown={startDrag} onTouchStart={startDrag}>\r\n <div className=\"modal-title\">{title}</div>\r\n <button className=\"modal-close\" onClick={onClose}>×</button>\r\n </div>\r\n <div className=\"modal-body\">{children}</div>\r\n </div>\r\n </div>\r\n )\r\n}\r\n"],"names":["Modal","isOpen","onClose","title","children","initialPosition","theme","modalRef","useRef","headerRef","pos","setPos","useState","x","y","origin","setOrigin","computeOrigin","left","top","draggingRef","offsetRef","rendered","setRendered","visible","setVisible","useEffect","requestAnimationFrame","timeout","setTimeout","clearTimeout","handleEsc","e","key","window","addEventListener","removeEventListener","useLayoutEffect","el","current","innerWidth","innerHeight","rect","getBoundingClientRect","maxX","Math","max","width","maxY","height","centerX","centerY","min","onMove","touches","preventDefault","clientX","clientY","desiredX","desiredY","clampedX","clampedY","onUp","passive","startDrag","document","body","style","userSelect","onUpCleanup","prev","React","createElement","className","onMouseDown","target","currentTarget","ref","transformOrigin","onTouchStart","onClick","Drawer","transitionDuration","drawerRef","detectOrientation","includes","detectSide","orientation","side","shrink","setShrink","toMs","duration","trimmed","trim","endsWith","val","Number","slice","isFinite","round","effectiveWidth","effectiveHeight","scrollWidth","scrollHeight"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs.js","sources":["../src/components/Modal.jsx","../src/components/Drawer.jsx"],"sourcesContent":["import React, {useEffect, useLayoutEffect, useRef, useState} from 'react'\r\n\r\nexport default function Modal({\r\n isOpen,\r\n onClose,\r\n title,\r\n children,\r\n initialPosition = 'center',\r\n theme = 'light' // new prop: 'light' or 'dark'\r\n}){\r\n const modalRef = useRef(null)\r\n const headerRef = useRef(null)\r\n const [pos, setPos] = useState({x: 0, y: 0})\r\n const [origin, setOrigin] = useState('50% 50%')\r\n\r\n function computeOrigin(pos){\r\n if(typeof pos === 'object'){\r\n // explicit coords – treat as pixels from top-left of modal\r\n const x = typeof pos.left === 'number' ? `${pos.left}px` : '0'\r\n const y = typeof pos.top === 'number' ? `${pos.top}px` : '0'\r\n return `${x} ${y}`\r\n }\r\n switch(pos){\r\n case 'top-left': return '0 0'\r\n case 'top-center': return '50% 0'\r\n case 'top-right': return '100% 0'\r\n case 'right-center': return '100% 50%'\r\n case 'bottom-right': return '100% 100%'\r\n case 'bottom-center': return '50% 100%'\r\n case 'bottom-left': return '0 100%'\r\n case 'left-center': return '0 50%'\r\n case 'center':\r\n default: return '50% 50%'\r\n }\r\n }\r\n const draggingRef = useRef(false)\r\n const offsetRef = useRef({x:0,y:0})\r\n // transition helpers -> keep component rendered during fade-out\r\n const [rendered, setRendered] = useState(isOpen)\r\n const [visible, setVisible] = useState(isOpen)\r\n\r\n // when isOpen changes, trigger fade in / fade out\r\n useEffect(() => {\r\n if (isOpen) {\r\n setRendered(true)\r\n // next frame to allow initial render before adding class\r\n requestAnimationFrame(() => {\r\n setVisible(true)\r\n })\r\n } else if (rendered) {\r\n setVisible(false)\r\n // remove from DOM after transition duration\r\n const timeout = setTimeout(() => setRendered(false), 200)\r\n return () => clearTimeout(timeout)\r\n }\r\n }, [isOpen, rendered])\r\n\r\n // ESC key handler\r\n useEffect(() => {\r\n if (!isOpen) return\r\n function handleEsc(e) {\r\n if (e.key === 'Escape') {\r\n onClose()\r\n }\r\n }\r\n window.addEventListener('keydown', handleEsc)\r\n return () => window.removeEventListener('keydown', handleEsc)\r\n }, [isOpen, onClose])\r\n\r\n // calculate coordinates synchronously before paint so the dialog doesn't\r\n // jump from {0,0} when it first renders. using useLayoutEffect ensures the\r\n // position is available when visible transitions start.\r\n useLayoutEffect(() => {\r\n // only position when the modal is actually rendered & opening\r\n if (!isOpen || !rendered) return\r\n const el = modalRef.current\r\n if (!el) return\r\n\r\n const { innerWidth, innerHeight } = window\r\n const rect = el.getBoundingClientRect()\r\n const maxX = Math.max(0, innerWidth - rect.width)\r\n const maxY = Math.max(0, innerHeight - rect.height)\r\n const centerX = (innerWidth - rect.width) / 2\r\n const centerY = (innerHeight - rect.height) / 2\r\n\r\n let x = centerX\r\n let y = centerY\r\n\r\n if (typeof initialPosition === 'object') {\r\n if (typeof initialPosition.left === 'number') x = initialPosition.left\r\n if (typeof initialPosition.top === 'number') y = initialPosition.top\r\n } else {\r\n switch (initialPosition) {\r\n case 'top-center':\r\n x = centerX; y = 0; break\r\n case 'bottom-center':\r\n x = centerX; y = maxY; break\r\n case 'top-left':\r\n x = 0; y = 0; break\r\n case 'top-right':\r\n x = maxX; y = 0; break\r\n case 'bottom-left':\r\n x = 0; y = maxY; break\r\n case 'bottom-right':\r\n x = maxX; y = maxY; break\r\n case 'left-center':\r\n x = 0; y = centerY; break\r\n case 'right-center':\r\n x = maxX; y = centerY; break\r\n case 'center':\r\n default:\r\n x = centerX; y = centerY; break\r\n }\r\n }\r\n\r\n // clamp to viewport\r\n x = Math.min(Math.max(0, x), maxX)\r\n y = Math.min(Math.max(0, y), maxY)\r\n\r\n setPos({ x, y })\r\n setOrigin(computeOrigin(initialPosition))\r\n }, [isOpen, initialPosition, rendered])\r\n\r\n useEffect(()=>{\r\n function onMove(e){\r\n if(!draggingRef.current) return\r\n if (e.touches) e.preventDefault()\r\n const clientX = e.touches ? e.touches[0].clientX : e.clientX\r\n const clientY = e.touches ? e.touches[0].clientY : e.clientY\r\n // compute desired position\r\n const desiredX = clientX - offsetRef.current.x\r\n const desiredY = clientY - offsetRef.current.y\r\n // clamp to viewport so it can't be dragged fully offscreen\r\n const el = modalRef.current\r\n if(el){\r\n const rect = el.getBoundingClientRect()\r\n const maxX = window.innerWidth - rect.width\r\n const maxY = window.innerHeight - rect.height\r\n const clampedX = Math.min(Math.max(0, desiredX), Math.max(0, maxX))\r\n const clampedY = Math.min(Math.max(0, desiredY), Math.max(0, maxY))\r\n setPos({x: clampedX, y: clampedY})\r\n } else {\r\n setPos({x: desiredX, y: desiredY})\r\n }\r\n }\r\n function onUp(){ draggingRef.current = false }\r\n window.addEventListener('mousemove', onMove)\r\n window.addEventListener('mouseup', onUp)\r\n window.addEventListener('touchmove', onMove, {passive:false})\r\n window.addEventListener('touchend', onUp)\r\n return ()=>{\r\n window.removeEventListener('mousemove', onMove)\r\n window.removeEventListener('mouseup', onUp)\r\n window.removeEventListener('touchmove', onMove)\r\n window.removeEventListener('touchend', onUp)\r\n }\r\n },[])\r\n\r\n function startDrag(e){\r\n e.preventDefault()\r\n draggingRef.current = true\r\n document.body.style.userSelect = 'none'\r\n const clientX = e.touches ? e.touches[0].clientX : e.clientX\r\n const clientY = e.touches ? e.touches[0].clientY : e.clientY\r\n const rect = modalRef.current.getBoundingClientRect()\r\n offsetRef.current = {x: clientX - rect.left, y: clientY - rect.top}\r\n }\r\n\r\n // ensure we re-enable selection when drag ends\r\n useEffect(()=>{\r\n function onUpCleanup(){\r\n draggingRef.current = false\r\n document.body.style.userSelect = ''\r\n // final clamp to ensure modal stays visible if window size changed\r\n const el = modalRef.current\r\n if(el){\r\n const rect = el.getBoundingClientRect()\r\n const maxX = window.innerWidth - rect.width\r\n const maxY = window.innerHeight - rect.height\r\n setPos(prev => ({\r\n x: Math.min(Math.max(0, prev.x), Math.max(0, maxX)),\r\n y: Math.min(Math.max(0, prev.y), Math.max(0, maxY))\r\n }))\r\n }\r\n }\r\n window.addEventListener('mouseup', onUpCleanup)\r\n window.addEventListener('touchend', onUpCleanup)\r\n return ()=>{\r\n window.removeEventListener('mouseup', onUpCleanup)\r\n window.removeEventListener('touchend', onUpCleanup)\r\n }\r\n },[])\r\n\r\n if (!rendered) return null\r\n\r\n return (\r\n <div\r\n className={\"modal-overlay\" + (visible ? \" visible\" : \"\")}\r\n data-theme={theme}\r\n onMouseDown={(e) => { if (visible && e.target === e.currentTarget) onClose() }}>\r\n <div\r\n className={\"modal\" + (visible ? \" visible\" : \"\")}\r\n data-theme={theme}\r\n ref={modalRef}\r\n style={{left:`${pos.x}px`, top:`${pos.y}px`, transformOrigin: origin}}>\r\n <div className=\"modal-header\" ref={headerRef} onMouseDown={startDrag} onTouchStart={startDrag}>\r\n <div className=\"modal-title\">{title}</div>\r\n <button type=\"button\" className=\"modal-close\" onClick={onClose}>×</button>\r\n </div>\r\n <div className=\"modal-body\">{children}</div>\r\n </div>\r\n </div>\r\n )\r\n}\r\n","import React, {useEffect, useLayoutEffect, useRef, useState} from 'react'\r\n\r\nexport default function Drawer({\r\n isOpen,\r\n onClose,\r\n title,\r\n children,\r\n initialPosition = 'left',\r\n transitionDuration = '0.45s',\r\n theme = 'light' // support light/dark themes\r\n}){\r\n const drawerRef = useRef(null)\r\n const headerRef = useRef(null)\r\n const [pos, setPos] = useState({x: 0, y: 0})\r\n const [origin, setOrigin] = useState('50% 50%')\r\n\r\n // determine orientation (horizontal/vertical) and simple side for animation\r\n function detectOrientation(pos){\r\n if(typeof pos === 'string'){\r\n if(pos.includes('left') || pos.includes('right')) return 'horizontal'\r\n if(pos.includes('top') || pos.includes('bottom')) return 'vertical'\r\n }\r\n // fall back to horizontal for coordinate objects\r\n return 'horizontal'\r\n }\r\n function detectSide(pos){\r\n if(typeof pos === 'string'){\r\n if(pos.includes('left')) return 'left'\r\n if(pos.includes('right')) return 'right'\r\n if(pos.includes('top')) return 'top'\r\n if(pos.includes('bottom')) return 'bottom'\r\n }\r\n return 'left'\r\n }\r\n const orientation = detectOrientation(initialPosition)\r\n const side = detectSide(initialPosition)\r\n const [shrink, setShrink] = useState(null)\r\n\r\n function computeOrigin(pos){\r\n if(typeof pos === 'object'){\r\n const x = typeof pos.left === 'number' ? `${pos.left}px` : '0'\r\n const y = typeof pos.top === 'number' ? `${pos.top}px` : '0'\r\n return `${x} ${y}`\r\n }\r\n switch(pos){\r\n case 'top-left': return '0 0'\r\n case 'top-center': return '50% 0'\r\n case 'top-right': return '100% 0'\r\n case 'right': return '100% 50%'\r\n case 'right-center': return '100% 50%'\r\n case 'bottom-right': return '100% 100%'\r\n case 'bottom-center': return '50% 100%'\r\n case 'bottom-left': return '0 100%'\r\n case 'left': return '0 50%'\r\n case 'left-center': return '0 50%'\r\n case 'center':\r\n default: return '50% 50%'\r\n }\r\n }\r\n\r\n const draggingRef = useRef(false)\r\n const offsetRef = useRef({x:0,y:0})\r\n const [rendered, setRendered] = useState(isOpen)\r\n const [visible, setVisible] = useState(isOpen)\r\n\r\n function toMs(duration){\r\n if (typeof duration !== 'string') return 450\r\n const trimmed = duration.trim()\r\n if (trimmed.endsWith('ms')) {\r\n const val = Number(trimmed.slice(0, -2))\r\n return Number.isFinite(val) ? val : 450\r\n }\r\n if (trimmed.endsWith('s')) {\r\n const val = Number(trimmed.slice(0, -1))\r\n return Number.isFinite(val) ? Math.round(val * 1000) : 450\r\n }\r\n return 450\r\n }\r\n\r\n // ESC key handler\r\n useEffect(() => {\r\n if (!isOpen) return\r\n function handleEsc(e) {\r\n if (e.key === 'Escape') {\r\n onClose()\r\n }\r\n }\r\n window.addEventListener('keydown', handleEsc)\r\n return () => window.removeEventListener('keydown', handleEsc)\r\n }, [isOpen, onClose])\r\n\r\n useEffect(() => {\r\n if (isOpen) {\r\n setRendered(true)\r\n setShrink(null)\r\n requestAnimationFrame(() => setVisible(true))\r\n } else if (rendered) {\r\n setVisible(false)\r\n const timeout = setTimeout(\r\n () => setRendered(false),\r\n toMs(transitionDuration)\r\n )\r\n return () => clearTimeout(timeout)\r\n }\r\n }, [isOpen, rendered, transitionDuration])\r\n\r\n useEffect(() => {\r\n if (isOpen) setShrink(null)\r\n }, [isOpen, children, orientation])\r\n\r\n useLayoutEffect(() => {\r\n if (!isOpen || !rendered) return\r\n const el = drawerRef.current\r\n if (!el) return\r\n\r\n const { innerWidth, innerHeight } = window\r\n const rect = el.getBoundingClientRect()\r\n const effectiveWidth = orientation === 'horizontal' && shrink === true\r\n ? Math.round(innerWidth * 0.3)\r\n : rect.width\r\n const effectiveHeight = orientation === 'vertical' && shrink === true\r\n ? Math.round(innerHeight * 0.3)\r\n : rect.height\r\n const maxX = Math.max(0, innerWidth - effectiveWidth)\r\n const maxY = Math.max(0, innerHeight - effectiveHeight)\r\n const centerX = (innerWidth - effectiveWidth) / 2\r\n const centerY = (innerHeight - effectiveHeight) / 2\r\n\r\n let x = centerX\r\n let y = centerY\r\n\r\n if (typeof initialPosition === 'object') {\r\n if (typeof initialPosition.left === 'number') x = initialPosition.left\r\n if (typeof initialPosition.top === 'number') y = initialPosition.top\r\n } else {\r\n switch (initialPosition) {\r\n case 'left':\r\n x = 0; y = 0; break\r\n case 'right':\r\n x = maxX; y = 0; break\r\n case 'top':\r\n x = 0; y = 0; break\r\n case 'bottom':\r\n x = 0; y = maxY; break\r\n case 'top-left':\r\n x = 0; y = 0; break\r\n case 'top-right':\r\n x = maxX; y = 0; break\r\n case 'bottom-left':\r\n x = 0; y = maxY; break\r\n case 'bottom-right':\r\n x = maxX; y = maxY; break\r\n case 'top-center':\r\n x = centerX; y = 0; break\r\n case 'bottom-center':\r\n x = centerX; y = maxY; break\r\n case 'left-center':\r\n x = 0; y = centerY; break\r\n case 'right-center':\r\n x = maxX; y = centerY; break\r\n case 'center':\r\n default:\r\n x = centerX; y = centerY; break\r\n }\r\n }\r\n\r\n x = Math.min(Math.max(0, x), maxX)\r\n y = Math.min(Math.max(0, y), maxY)\r\n\r\n setPos({ x, y })\r\n setOrigin(computeOrigin(initialPosition))\r\n }, [isOpen, initialPosition, rendered, orientation, shrink])\r\n\r\n // shrink measurement – check dimensions after render\r\n useLayoutEffect(() => {\r\n if (!rendered || !drawerRef.current) return\r\n if (!isOpen) return\r\n if (shrink !== null) return\r\n const el = drawerRef.current\r\n const { innerWidth, innerHeight } = window\r\n if (orientation === 'horizontal') {\r\n setShrink(el.scrollWidth < innerWidth * 0.3)\r\n } else {\r\n setShrink(el.scrollHeight < innerHeight * 0.3)\r\n }\r\n }, [rendered, visible, children, orientation, shrink])\r\n\r\n useEffect(()=>{\r\n function onMove(e){\r\n if(!draggingRef.current) return\r\n if (e.touches) e.preventDefault()\r\n const clientX = e.touches ? e.touches[0].clientX : e.clientX\r\n const clientY = e.touches ? e.touches[0].clientY : e.clientY\r\n const desiredX = clientX - offsetRef.current.x\r\n const desiredY = clientY - offsetRef.current.y\r\n const el = drawerRef.current\r\n if(el){\r\n const rect = el.getBoundingClientRect()\r\n const maxX = window.innerWidth - rect.width\r\n const maxY = window.innerHeight - rect.height\r\n const clampedX = Math.min(Math.max(0, desiredX), Math.max(0, maxX))\r\n const clampedY = Math.min(Math.max(0, desiredY), Math.max(0, maxY))\r\n setPos({x: clampedX, y: clampedY})\r\n } else {\r\n setPos({x: desiredX, y: desiredY})\r\n }\r\n }\r\n function onUp(){ draggingRef.current = false }\r\n window.addEventListener('mousemove', onMove)\r\n window.addEventListener('mouseup', onUp)\r\n window.addEventListener('touchmove', onMove, {passive:false})\r\n window.addEventListener('touchend', onUp)\r\n return ()=>{\r\n window.removeEventListener('mousemove', onMove)\r\n window.removeEventListener('mouseup', onUp)\r\n window.removeEventListener('touchmove', onMove)\r\n window.removeEventListener('touchend', onUp)\r\n }\r\n },[])\r\n\r\n function startDrag(e){\r\n e.preventDefault()\r\n draggingRef.current = true\r\n document.body.style.userSelect = 'none'\r\n const clientX = e.touches ? e.touches[0].clientX : e.clientX\r\n const clientY = e.touches ? e.touches[0].clientY : e.clientY\r\n const rect = drawerRef.current.getBoundingClientRect()\r\n offsetRef.current = {x: clientX - rect.left, y: clientY - rect.top}\r\n }\r\n\r\n useEffect(()=>{\r\n function onUpCleanup(){\r\n draggingRef.current = false\r\n document.body.style.userSelect = ''\r\n const el = drawerRef.current\r\n if(el){\r\n const rect = el.getBoundingClientRect()\r\n const maxX = window.innerWidth - rect.width\r\n const maxY = window.innerHeight - rect.height\r\n setPos(prev => ({\r\n x: Math.min(Math.max(0, prev.x), Math.max(0, maxX)),\r\n y: Math.min(Math.max(0, prev.y), Math.max(0, maxY))\r\n }))\r\n }\r\n }\r\n window.addEventListener('mouseup', onUpCleanup)\r\n window.addEventListener('touchend', onUpCleanup)\r\n return ()=>{\r\n window.removeEventListener('mouseup', onUpCleanup)\r\n window.removeEventListener('touchend', onUpCleanup)\r\n }\r\n },[])\r\n\r\n if (!rendered) return null\r\n\r\n return (\r\n <div\r\n className={\"modal-overlay drawer-overlay\" + (visible ? \" visible\" : \"\")}\r\n data-theme={theme}\r\n onMouseDown={(e) => { if (visible && e.target === e.currentTarget) onClose() }}>\r\n <div\r\n className={\r\n `drawer ${orientation} side-${side}` + (visible ? \" visible\" : \"\")\r\n }\r\n data-theme={theme}\r\n ref={drawerRef}\r\n style={{\r\n left:`${pos.x}px`,\r\n top:`${pos.y}px`,\r\n transformOrigin: origin,\r\n '--drawer-transition': transitionDuration,\r\n ...(orientation === 'horizontal' ? {height: '100%'} : {width: '100%'}),\r\n ...(shrink === true\r\n ? (orientation === 'horizontal'\r\n ? {width: '30vw'}\r\n : {height: '30vh'})\r\n : {}),\r\n }}>\r\n <div className=\"modal-header\" ref={headerRef} onMouseDown={startDrag} onTouchStart={startDrag}>\r\n <div className=\"modal-title\">{title}</div>\r\n <button type=\"button\" className=\"modal-close\" onClick={onClose}>×</button>\r\n </div>\r\n <div className=\"modal-body\">{children}</div>\r\n </div>\r\n </div>\r\n )\r\n}\r\n"],"names":["Modal","isOpen","onClose","title","children","initialPosition","theme","modalRef","useRef","headerRef","pos","setPos","useState","x","y","origin","setOrigin","computeOrigin","left","top","draggingRef","offsetRef","rendered","setRendered","visible","setVisible","useEffect","requestAnimationFrame","timeout","setTimeout","clearTimeout","handleEsc","e","key","window","addEventListener","removeEventListener","useLayoutEffect","el","current","innerWidth","innerHeight","rect","getBoundingClientRect","maxX","Math","max","width","maxY","height","centerX","centerY","min","onMove","touches","preventDefault","clientX","clientY","desiredX","desiredY","clampedX","clampedY","onUp","passive","startDrag","document","body","style","userSelect","onUpCleanup","prev","React","createElement","className","onMouseDown","target","currentTarget","ref","transformOrigin","onTouchStart","type","onClick","Drawer","transitionDuration","drawerRef","detectOrientation","includes","detectSide","orientation","side","shrink","setShrink","toMs","duration","trimmed","trim","endsWith","val","Number","slice","isFinite","round","effectiveWidth","effectiveHeight","scrollWidth","scrollHeight"],"mappings":"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"}
package/dist/index.esm.js CHANGED
@@ -259,6 +259,7 @@ function Modal({
259
259
  }, /*#__PURE__*/React.createElement("div", {
260
260
  className: "modal-title"
261
261
  }, title), /*#__PURE__*/React.createElement("button", {
262
+ type: "button",
262
263
  className: "modal-close",
263
264
  onClick: onClose
264
265
  }, "\xD7")), /*#__PURE__*/React.createElement("div", {
@@ -595,6 +596,7 @@ function Drawer({
595
596
  }, /*#__PURE__*/React.createElement("div", {
596
597
  className: "modal-title"
597
598
  }, title), /*#__PURE__*/React.createElement("button", {
599
+ type: "button",
598
600
  className: "modal-close",
599
601
  onClick: onClose
600
602
  }, "\xD7")), /*#__PURE__*/React.createElement("div", {
@@ -1 +1 @@
1
- {"version":3,"file":"index.esm.js","sources":["../src/components/Modal.jsx","../src/components/Drawer.jsx"],"sourcesContent":["import React, {useEffect, useLayoutEffect, useRef, useState} from 'react'\r\n\r\nexport default function Modal({\r\n isOpen,\r\n onClose,\r\n title,\r\n children,\r\n initialPosition = 'center',\r\n theme = 'light' // new prop: 'light' or 'dark'\r\n}){\r\n const modalRef = useRef(null)\r\n const headerRef = useRef(null)\r\n const [pos, setPos] = useState({x: 0, y: 0})\r\n const [origin, setOrigin] = useState('50% 50%')\r\n\r\n function computeOrigin(pos){\r\n if(typeof pos === 'object'){\r\n // explicit coords – treat as pixels from top-left of modal\r\n const x = typeof pos.left === 'number' ? `${pos.left}px` : '0'\r\n const y = typeof pos.top === 'number' ? `${pos.top}px` : '0'\r\n return `${x} ${y}`\r\n }\r\n switch(pos){\r\n case 'top-left': return '0 0'\r\n case 'top-center': return '50% 0'\r\n case 'top-right': return '100% 0'\r\n case 'right-center': return '100% 50%'\r\n case 'bottom-right': return '100% 100%'\r\n case 'bottom-center': return '50% 100%'\r\n case 'bottom-left': return '0 100%'\r\n case 'left-center': return '0 50%'\r\n case 'center':\r\n default: return '50% 50%'\r\n }\r\n }\r\n const draggingRef = useRef(false)\r\n const offsetRef = useRef({x:0,y:0})\r\n // transition helpers -> keep component rendered during fade-out\r\n const [rendered, setRendered] = useState(isOpen)\r\n const [visible, setVisible] = useState(isOpen)\r\n\r\n // when isOpen changes, trigger fade in / fade out\r\n useEffect(() => {\r\n if (isOpen) {\r\n setRendered(true)\r\n // next frame to allow initial render before adding class\r\n requestAnimationFrame(() => {\r\n setVisible(true)\r\n })\r\n } else if (rendered) {\r\n setVisible(false)\r\n // remove from DOM after transition duration\r\n const timeout = setTimeout(() => setRendered(false), 200)\r\n return () => clearTimeout(timeout)\r\n }\r\n }, [isOpen, rendered])\r\n\r\n // ESC key handler\r\n useEffect(() => {\r\n if (!isOpen) return\r\n function handleEsc(e) {\r\n if (e.key === 'Escape') {\r\n onClose()\r\n }\r\n }\r\n window.addEventListener('keydown', handleEsc)\r\n return () => window.removeEventListener('keydown', handleEsc)\r\n }, [isOpen, onClose])\r\n\r\n // calculate coordinates synchronously before paint so the dialog doesn't\r\n // jump from {0,0} when it first renders. using useLayoutEffect ensures the\r\n // position is available when visible transitions start.\r\n useLayoutEffect(() => {\r\n // only position when the modal is actually rendered & opening\r\n if (!isOpen || !rendered) return\r\n const el = modalRef.current\r\n if (!el) return\r\n\r\n const { innerWidth, innerHeight } = window\r\n const rect = el.getBoundingClientRect()\r\n const maxX = Math.max(0, innerWidth - rect.width)\r\n const maxY = Math.max(0, innerHeight - rect.height)\r\n const centerX = (innerWidth - rect.width) / 2\r\n const centerY = (innerHeight - rect.height) / 2\r\n\r\n let x = centerX\r\n let y = centerY\r\n\r\n if (typeof initialPosition === 'object') {\r\n if (typeof initialPosition.left === 'number') x = initialPosition.left\r\n if (typeof initialPosition.top === 'number') y = initialPosition.top\r\n } else {\r\n switch (initialPosition) {\r\n case 'top-center':\r\n x = centerX; y = 0; break\r\n case 'bottom-center':\r\n x = centerX; y = maxY; break\r\n case 'top-left':\r\n x = 0; y = 0; break\r\n case 'top-right':\r\n x = maxX; y = 0; break\r\n case 'bottom-left':\r\n x = 0; y = maxY; break\r\n case 'bottom-right':\r\n x = maxX; y = maxY; break\r\n case 'left-center':\r\n x = 0; y = centerY; break\r\n case 'right-center':\r\n x = maxX; y = centerY; break\r\n case 'center':\r\n default:\r\n x = centerX; y = centerY; break\r\n }\r\n }\r\n\r\n // clamp to viewport\r\n x = Math.min(Math.max(0, x), maxX)\r\n y = Math.min(Math.max(0, y), maxY)\r\n\r\n setPos({ x, y })\r\n setOrigin(computeOrigin(initialPosition))\r\n }, [isOpen, initialPosition, rendered])\r\n\r\n useEffect(()=>{\r\n function onMove(e){\r\n if(!draggingRef.current) return\r\n if (e.touches) e.preventDefault()\r\n const clientX = e.touches ? e.touches[0].clientX : e.clientX\r\n const clientY = e.touches ? e.touches[0].clientY : e.clientY\r\n // compute desired position\r\n const desiredX = clientX - offsetRef.current.x\r\n const desiredY = clientY - offsetRef.current.y\r\n // clamp to viewport so it can't be dragged fully offscreen\r\n const el = modalRef.current\r\n if(el){\r\n const rect = el.getBoundingClientRect()\r\n const maxX = window.innerWidth - rect.width\r\n const maxY = window.innerHeight - rect.height\r\n const clampedX = Math.min(Math.max(0, desiredX), Math.max(0, maxX))\r\n const clampedY = Math.min(Math.max(0, desiredY), Math.max(0, maxY))\r\n setPos({x: clampedX, y: clampedY})\r\n } else {\r\n setPos({x: desiredX, y: desiredY})\r\n }\r\n }\r\n function onUp(){ draggingRef.current = false }\r\n window.addEventListener('mousemove', onMove)\r\n window.addEventListener('mouseup', onUp)\r\n window.addEventListener('touchmove', onMove, {passive:false})\r\n window.addEventListener('touchend', onUp)\r\n return ()=>{\r\n window.removeEventListener('mousemove', onMove)\r\n window.removeEventListener('mouseup', onUp)\r\n window.removeEventListener('touchmove', onMove)\r\n window.removeEventListener('touchend', onUp)\r\n }\r\n },[])\r\n\r\n function startDrag(e){\r\n e.preventDefault()\r\n draggingRef.current = true\r\n document.body.style.userSelect = 'none'\r\n const clientX = e.touches ? e.touches[0].clientX : e.clientX\r\n const clientY = e.touches ? e.touches[0].clientY : e.clientY\r\n const rect = modalRef.current.getBoundingClientRect()\r\n offsetRef.current = {x: clientX - rect.left, y: clientY - rect.top}\r\n }\r\n\r\n // ensure we re-enable selection when drag ends\r\n useEffect(()=>{\r\n function onUpCleanup(){\r\n draggingRef.current = false\r\n document.body.style.userSelect = ''\r\n // final clamp to ensure modal stays visible if window size changed\r\n const el = modalRef.current\r\n if(el){\r\n const rect = el.getBoundingClientRect()\r\n const maxX = window.innerWidth - rect.width\r\n const maxY = window.innerHeight - rect.height\r\n setPos(prev => ({\r\n x: Math.min(Math.max(0, prev.x), Math.max(0, maxX)),\r\n y: Math.min(Math.max(0, prev.y), Math.max(0, maxY))\r\n }))\r\n }\r\n }\r\n window.addEventListener('mouseup', onUpCleanup)\r\n window.addEventListener('touchend', onUpCleanup)\r\n return ()=>{\r\n window.removeEventListener('mouseup', onUpCleanup)\r\n window.removeEventListener('touchend', onUpCleanup)\r\n }\r\n },[])\r\n\r\n if (!rendered) return null\r\n\r\n return (\r\n <div\r\n className={\"modal-overlay\" + (visible ? \" visible\" : \"\")}\r\n data-theme={theme}\r\n onMouseDown={(e) => { if (visible && e.target === e.currentTarget) onClose() }}>\r\n <div\r\n className={\"modal\" + (visible ? \" visible\" : \"\")}\r\n data-theme={theme}\r\n ref={modalRef}\r\n style={{left:`${pos.x}px`, top:`${pos.y}px`, transformOrigin: origin}}>\r\n <div className=\"modal-header\" ref={headerRef} onMouseDown={startDrag} onTouchStart={startDrag}>\r\n <div className=\"modal-title\">{title}</div>\r\n <button className=\"modal-close\" onClick={onClose}>×</button>\r\n </div>\r\n <div className=\"modal-body\">{children}</div>\r\n </div>\r\n </div>\r\n )\r\n}\r\n","import React, {useEffect, useLayoutEffect, useRef, useState} from 'react'\r\n\r\nexport default function Drawer({\r\n isOpen,\r\n onClose,\r\n title,\r\n children,\r\n initialPosition = 'left',\r\n transitionDuration = '0.45s',\r\n theme = 'light' // support light/dark themes\r\n}){\r\n const drawerRef = useRef(null)\r\n const headerRef = useRef(null)\r\n const [pos, setPos] = useState({x: 0, y: 0})\r\n const [origin, setOrigin] = useState('50% 50%')\r\n\r\n // determine orientation (horizontal/vertical) and simple side for animation\r\n function detectOrientation(pos){\r\n if(typeof pos === 'string'){\r\n if(pos.includes('left') || pos.includes('right')) return 'horizontal'\r\n if(pos.includes('top') || pos.includes('bottom')) return 'vertical'\r\n }\r\n // fall back to horizontal for coordinate objects\r\n return 'horizontal'\r\n }\r\n function detectSide(pos){\r\n if(typeof pos === 'string'){\r\n if(pos.includes('left')) return 'left'\r\n if(pos.includes('right')) return 'right'\r\n if(pos.includes('top')) return 'top'\r\n if(pos.includes('bottom')) return 'bottom'\r\n }\r\n return 'left'\r\n }\r\n const orientation = detectOrientation(initialPosition)\r\n const side = detectSide(initialPosition)\r\n const [shrink, setShrink] = useState(null)\r\n\r\n function computeOrigin(pos){\r\n if(typeof pos === 'object'){\r\n const x = typeof pos.left === 'number' ? `${pos.left}px` : '0'\r\n const y = typeof pos.top === 'number' ? `${pos.top}px` : '0'\r\n return `${x} ${y}`\r\n }\r\n switch(pos){\r\n case 'top-left': return '0 0'\r\n case 'top-center': return '50% 0'\r\n case 'top-right': return '100% 0'\r\n case 'right': return '100% 50%'\r\n case 'right-center': return '100% 50%'\r\n case 'bottom-right': return '100% 100%'\r\n case 'bottom-center': return '50% 100%'\r\n case 'bottom-left': return '0 100%'\r\n case 'left': return '0 50%'\r\n case 'left-center': return '0 50%'\r\n case 'center':\r\n default: return '50% 50%'\r\n }\r\n }\r\n\r\n const draggingRef = useRef(false)\r\n const offsetRef = useRef({x:0,y:0})\r\n const [rendered, setRendered] = useState(isOpen)\r\n const [visible, setVisible] = useState(isOpen)\r\n\r\n function toMs(duration){\r\n if (typeof duration !== 'string') return 450\r\n const trimmed = duration.trim()\r\n if (trimmed.endsWith('ms')) {\r\n const val = Number(trimmed.slice(0, -2))\r\n return Number.isFinite(val) ? val : 450\r\n }\r\n if (trimmed.endsWith('s')) {\r\n const val = Number(trimmed.slice(0, -1))\r\n return Number.isFinite(val) ? Math.round(val * 1000) : 450\r\n }\r\n return 450\r\n }\r\n\r\n // ESC key handler\r\n useEffect(() => {\r\n if (!isOpen) return\r\n function handleEsc(e) {\r\n if (e.key === 'Escape') {\r\n onClose()\r\n }\r\n }\r\n window.addEventListener('keydown', handleEsc)\r\n return () => window.removeEventListener('keydown', handleEsc)\r\n }, [isOpen, onClose])\r\n\r\n useEffect(() => {\r\n if (isOpen) {\r\n setRendered(true)\r\n setShrink(null)\r\n requestAnimationFrame(() => setVisible(true))\r\n } else if (rendered) {\r\n setVisible(false)\r\n const timeout = setTimeout(\r\n () => setRendered(false),\r\n toMs(transitionDuration)\r\n )\r\n return () => clearTimeout(timeout)\r\n }\r\n }, [isOpen, rendered, transitionDuration])\r\n\r\n useEffect(() => {\r\n if (isOpen) setShrink(null)\r\n }, [isOpen, children, orientation])\r\n\r\n useLayoutEffect(() => {\r\n if (!isOpen || !rendered) return\r\n const el = drawerRef.current\r\n if (!el) return\r\n\r\n const { innerWidth, innerHeight } = window\r\n const rect = el.getBoundingClientRect()\r\n const effectiveWidth = orientation === 'horizontal' && shrink === true\r\n ? Math.round(innerWidth * 0.3)\r\n : rect.width\r\n const effectiveHeight = orientation === 'vertical' && shrink === true\r\n ? Math.round(innerHeight * 0.3)\r\n : rect.height\r\n const maxX = Math.max(0, innerWidth - effectiveWidth)\r\n const maxY = Math.max(0, innerHeight - effectiveHeight)\r\n const centerX = (innerWidth - effectiveWidth) / 2\r\n const centerY = (innerHeight - effectiveHeight) / 2\r\n\r\n let x = centerX\r\n let y = centerY\r\n\r\n if (typeof initialPosition === 'object') {\r\n if (typeof initialPosition.left === 'number') x = initialPosition.left\r\n if (typeof initialPosition.top === 'number') y = initialPosition.top\r\n } else {\r\n switch (initialPosition) {\r\n case 'left':\r\n x = 0; y = 0; break\r\n case 'right':\r\n x = maxX; y = 0; break\r\n case 'top':\r\n x = 0; y = 0; break\r\n case 'bottom':\r\n x = 0; y = maxY; break\r\n case 'top-left':\r\n x = 0; y = 0; break\r\n case 'top-right':\r\n x = maxX; y = 0; break\r\n case 'bottom-left':\r\n x = 0; y = maxY; break\r\n case 'bottom-right':\r\n x = maxX; y = maxY; break\r\n case 'top-center':\r\n x = centerX; y = 0; break\r\n case 'bottom-center':\r\n x = centerX; y = maxY; break\r\n case 'left-center':\r\n x = 0; y = centerY; break\r\n case 'right-center':\r\n x = maxX; y = centerY; break\r\n case 'center':\r\n default:\r\n x = centerX; y = centerY; break\r\n }\r\n }\r\n\r\n x = Math.min(Math.max(0, x), maxX)\r\n y = Math.min(Math.max(0, y), maxY)\r\n\r\n setPos({ x, y })\r\n setOrigin(computeOrigin(initialPosition))\r\n }, [isOpen, initialPosition, rendered, orientation, shrink])\r\n\r\n // shrink measurement – check dimensions after render\r\n useLayoutEffect(() => {\r\n if (!rendered || !drawerRef.current) return\r\n if (!isOpen) return\r\n if (shrink !== null) return\r\n const el = drawerRef.current\r\n const { innerWidth, innerHeight } = window\r\n if (orientation === 'horizontal') {\r\n setShrink(el.scrollWidth < innerWidth * 0.3)\r\n } else {\r\n setShrink(el.scrollHeight < innerHeight * 0.3)\r\n }\r\n }, [rendered, visible, children, orientation, shrink])\r\n\r\n useEffect(()=>{\r\n function onMove(e){\r\n if(!draggingRef.current) return\r\n if (e.touches) e.preventDefault()\r\n const clientX = e.touches ? e.touches[0].clientX : e.clientX\r\n const clientY = e.touches ? e.touches[0].clientY : e.clientY\r\n const desiredX = clientX - offsetRef.current.x\r\n const desiredY = clientY - offsetRef.current.y\r\n const el = drawerRef.current\r\n if(el){\r\n const rect = el.getBoundingClientRect()\r\n const maxX = window.innerWidth - rect.width\r\n const maxY = window.innerHeight - rect.height\r\n const clampedX = Math.min(Math.max(0, desiredX), Math.max(0, maxX))\r\n const clampedY = Math.min(Math.max(0, desiredY), Math.max(0, maxY))\r\n setPos({x: clampedX, y: clampedY})\r\n } else {\r\n setPos({x: desiredX, y: desiredY})\r\n }\r\n }\r\n function onUp(){ draggingRef.current = false }\r\n window.addEventListener('mousemove', onMove)\r\n window.addEventListener('mouseup', onUp)\r\n window.addEventListener('touchmove', onMove, {passive:false})\r\n window.addEventListener('touchend', onUp)\r\n return ()=>{\r\n window.removeEventListener('mousemove', onMove)\r\n window.removeEventListener('mouseup', onUp)\r\n window.removeEventListener('touchmove', onMove)\r\n window.removeEventListener('touchend', onUp)\r\n }\r\n },[])\r\n\r\n function startDrag(e){\r\n e.preventDefault()\r\n draggingRef.current = true\r\n document.body.style.userSelect = 'none'\r\n const clientX = e.touches ? e.touches[0].clientX : e.clientX\r\n const clientY = e.touches ? e.touches[0].clientY : e.clientY\r\n const rect = drawerRef.current.getBoundingClientRect()\r\n offsetRef.current = {x: clientX - rect.left, y: clientY - rect.top}\r\n }\r\n\r\n useEffect(()=>{\r\n function onUpCleanup(){\r\n draggingRef.current = false\r\n document.body.style.userSelect = ''\r\n const el = drawerRef.current\r\n if(el){\r\n const rect = el.getBoundingClientRect()\r\n const maxX = window.innerWidth - rect.width\r\n const maxY = window.innerHeight - rect.height\r\n setPos(prev => ({\r\n x: Math.min(Math.max(0, prev.x), Math.max(0, maxX)),\r\n y: Math.min(Math.max(0, prev.y), Math.max(0, maxY))\r\n }))\r\n }\r\n }\r\n window.addEventListener('mouseup', onUpCleanup)\r\n window.addEventListener('touchend', onUpCleanup)\r\n return ()=>{\r\n window.removeEventListener('mouseup', onUpCleanup)\r\n window.removeEventListener('touchend', onUpCleanup)\r\n }\r\n },[])\r\n\r\n if (!rendered) return null\r\n\r\n return (\r\n <div\r\n className={\"modal-overlay drawer-overlay\" + (visible ? \" visible\" : \"\")}\r\n data-theme={theme}\r\n onMouseDown={(e) => { if (visible && e.target === e.currentTarget) onClose() }}>\r\n <div\r\n className={\r\n `drawer ${orientation} side-${side}` + (visible ? \" visible\" : \"\")\r\n }\r\n data-theme={theme}\r\n ref={drawerRef}\r\n style={{\r\n left:`${pos.x}px`,\r\n top:`${pos.y}px`,\r\n transformOrigin: origin,\r\n '--drawer-transition': transitionDuration,\r\n ...(orientation === 'horizontal' ? {height: '100%'} : {width: '100%'}),\r\n ...(shrink === true\r\n ? (orientation === 'horizontal'\r\n ? {width: '30vw'}\r\n : {height: '30vh'})\r\n : {}),\r\n }}>\r\n <div className=\"modal-header\" ref={headerRef} onMouseDown={startDrag} onTouchStart={startDrag}>\r\n <div className=\"modal-title\">{title}</div>\r\n <button className=\"modal-close\" onClick={onClose}>×</button>\r\n </div>\r\n <div className=\"modal-body\">{children}</div>\r\n </div>\r\n </div>\r\n )\r\n}\r\n"],"names":["Modal","isOpen","onClose","title","children","initialPosition","theme","modalRef","useRef","headerRef","pos","setPos","useState","x","y","origin","setOrigin","computeOrigin","left","top","draggingRef","offsetRef","rendered","setRendered","visible","setVisible","useEffect","requestAnimationFrame","timeout","setTimeout","clearTimeout","handleEsc","e","key","window","addEventListener","removeEventListener","useLayoutEffect","el","current","innerWidth","innerHeight","rect","getBoundingClientRect","maxX","Math","max","width","maxY","height","centerX","centerY","min","onMove","touches","preventDefault","clientX","clientY","desiredX","desiredY","clampedX","clampedY","onUp","passive","startDrag","document","body","style","userSelect","onUpCleanup","prev","React","createElement","className","onMouseDown","target","currentTarget","ref","transformOrigin","onTouchStart","onClick","Drawer","transitionDuration","drawerRef","detectOrientation","includes","detectSide","orientation","side","shrink","setShrink","toMs","duration","trimmed","trim","endsWith","val","Number","slice","isFinite","round","effectiveWidth","effectiveHeight","scrollWidth","scrollHeight"],"mappings":"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"}
1
+ {"version":3,"file":"index.esm.js","sources":["../src/components/Modal.jsx","../src/components/Drawer.jsx"],"sourcesContent":["import React, {useEffect, useLayoutEffect, useRef, useState} from 'react'\r\n\r\nexport default function Modal({\r\n isOpen,\r\n onClose,\r\n title,\r\n children,\r\n initialPosition = 'center',\r\n theme = 'light' // new prop: 'light' or 'dark'\r\n}){\r\n const modalRef = useRef(null)\r\n const headerRef = useRef(null)\r\n const [pos, setPos] = useState({x: 0, y: 0})\r\n const [origin, setOrigin] = useState('50% 50%')\r\n\r\n function computeOrigin(pos){\r\n if(typeof pos === 'object'){\r\n // explicit coords – treat as pixels from top-left of modal\r\n const x = typeof pos.left === 'number' ? `${pos.left}px` : '0'\r\n const y = typeof pos.top === 'number' ? `${pos.top}px` : '0'\r\n return `${x} ${y}`\r\n }\r\n switch(pos){\r\n case 'top-left': return '0 0'\r\n case 'top-center': return '50% 0'\r\n case 'top-right': return '100% 0'\r\n case 'right-center': return '100% 50%'\r\n case 'bottom-right': return '100% 100%'\r\n case 'bottom-center': return '50% 100%'\r\n case 'bottom-left': return '0 100%'\r\n case 'left-center': return '0 50%'\r\n case 'center':\r\n default: return '50% 50%'\r\n }\r\n }\r\n const draggingRef = useRef(false)\r\n const offsetRef = useRef({x:0,y:0})\r\n // transition helpers -> keep component rendered during fade-out\r\n const [rendered, setRendered] = useState(isOpen)\r\n const [visible, setVisible] = useState(isOpen)\r\n\r\n // when isOpen changes, trigger fade in / fade out\r\n useEffect(() => {\r\n if (isOpen) {\r\n setRendered(true)\r\n // next frame to allow initial render before adding class\r\n requestAnimationFrame(() => {\r\n setVisible(true)\r\n })\r\n } else if (rendered) {\r\n setVisible(false)\r\n // remove from DOM after transition duration\r\n const timeout = setTimeout(() => setRendered(false), 200)\r\n return () => clearTimeout(timeout)\r\n }\r\n }, [isOpen, rendered])\r\n\r\n // ESC key handler\r\n useEffect(() => {\r\n if (!isOpen) return\r\n function handleEsc(e) {\r\n if (e.key === 'Escape') {\r\n onClose()\r\n }\r\n }\r\n window.addEventListener('keydown', handleEsc)\r\n return () => window.removeEventListener('keydown', handleEsc)\r\n }, [isOpen, onClose])\r\n\r\n // calculate coordinates synchronously before paint so the dialog doesn't\r\n // jump from {0,0} when it first renders. using useLayoutEffect ensures the\r\n // position is available when visible transitions start.\r\n useLayoutEffect(() => {\r\n // only position when the modal is actually rendered & opening\r\n if (!isOpen || !rendered) return\r\n const el = modalRef.current\r\n if (!el) return\r\n\r\n const { innerWidth, innerHeight } = window\r\n const rect = el.getBoundingClientRect()\r\n const maxX = Math.max(0, innerWidth - rect.width)\r\n const maxY = Math.max(0, innerHeight - rect.height)\r\n const centerX = (innerWidth - rect.width) / 2\r\n const centerY = (innerHeight - rect.height) / 2\r\n\r\n let x = centerX\r\n let y = centerY\r\n\r\n if (typeof initialPosition === 'object') {\r\n if (typeof initialPosition.left === 'number') x = initialPosition.left\r\n if (typeof initialPosition.top === 'number') y = initialPosition.top\r\n } else {\r\n switch (initialPosition) {\r\n case 'top-center':\r\n x = centerX; y = 0; break\r\n case 'bottom-center':\r\n x = centerX; y = maxY; break\r\n case 'top-left':\r\n x = 0; y = 0; break\r\n case 'top-right':\r\n x = maxX; y = 0; break\r\n case 'bottom-left':\r\n x = 0; y = maxY; break\r\n case 'bottom-right':\r\n x = maxX; y = maxY; break\r\n case 'left-center':\r\n x = 0; y = centerY; break\r\n case 'right-center':\r\n x = maxX; y = centerY; break\r\n case 'center':\r\n default:\r\n x = centerX; y = centerY; break\r\n }\r\n }\r\n\r\n // clamp to viewport\r\n x = Math.min(Math.max(0, x), maxX)\r\n y = Math.min(Math.max(0, y), maxY)\r\n\r\n setPos({ x, y })\r\n setOrigin(computeOrigin(initialPosition))\r\n }, [isOpen, initialPosition, rendered])\r\n\r\n useEffect(()=>{\r\n function onMove(e){\r\n if(!draggingRef.current) return\r\n if (e.touches) e.preventDefault()\r\n const clientX = e.touches ? e.touches[0].clientX : e.clientX\r\n const clientY = e.touches ? e.touches[0].clientY : e.clientY\r\n // compute desired position\r\n const desiredX = clientX - offsetRef.current.x\r\n const desiredY = clientY - offsetRef.current.y\r\n // clamp to viewport so it can't be dragged fully offscreen\r\n const el = modalRef.current\r\n if(el){\r\n const rect = el.getBoundingClientRect()\r\n const maxX = window.innerWidth - rect.width\r\n const maxY = window.innerHeight - rect.height\r\n const clampedX = Math.min(Math.max(0, desiredX), Math.max(0, maxX))\r\n const clampedY = Math.min(Math.max(0, desiredY), Math.max(0, maxY))\r\n setPos({x: clampedX, y: clampedY})\r\n } else {\r\n setPos({x: desiredX, y: desiredY})\r\n }\r\n }\r\n function onUp(){ draggingRef.current = false }\r\n window.addEventListener('mousemove', onMove)\r\n window.addEventListener('mouseup', onUp)\r\n window.addEventListener('touchmove', onMove, {passive:false})\r\n window.addEventListener('touchend', onUp)\r\n return ()=>{\r\n window.removeEventListener('mousemove', onMove)\r\n window.removeEventListener('mouseup', onUp)\r\n window.removeEventListener('touchmove', onMove)\r\n window.removeEventListener('touchend', onUp)\r\n }\r\n },[])\r\n\r\n function startDrag(e){\r\n e.preventDefault()\r\n draggingRef.current = true\r\n document.body.style.userSelect = 'none'\r\n const clientX = e.touches ? e.touches[0].clientX : e.clientX\r\n const clientY = e.touches ? e.touches[0].clientY : e.clientY\r\n const rect = modalRef.current.getBoundingClientRect()\r\n offsetRef.current = {x: clientX - rect.left, y: clientY - rect.top}\r\n }\r\n\r\n // ensure we re-enable selection when drag ends\r\n useEffect(()=>{\r\n function onUpCleanup(){\r\n draggingRef.current = false\r\n document.body.style.userSelect = ''\r\n // final clamp to ensure modal stays visible if window size changed\r\n const el = modalRef.current\r\n if(el){\r\n const rect = el.getBoundingClientRect()\r\n const maxX = window.innerWidth - rect.width\r\n const maxY = window.innerHeight - rect.height\r\n setPos(prev => ({\r\n x: Math.min(Math.max(0, prev.x), Math.max(0, maxX)),\r\n y: Math.min(Math.max(0, prev.y), Math.max(0, maxY))\r\n }))\r\n }\r\n }\r\n window.addEventListener('mouseup', onUpCleanup)\r\n window.addEventListener('touchend', onUpCleanup)\r\n return ()=>{\r\n window.removeEventListener('mouseup', onUpCleanup)\r\n window.removeEventListener('touchend', onUpCleanup)\r\n }\r\n },[])\r\n\r\n if (!rendered) return null\r\n\r\n return (\r\n <div\r\n className={\"modal-overlay\" + (visible ? \" visible\" : \"\")}\r\n data-theme={theme}\r\n onMouseDown={(e) => { if (visible && e.target === e.currentTarget) onClose() }}>\r\n <div\r\n className={\"modal\" + (visible ? \" visible\" : \"\")}\r\n data-theme={theme}\r\n ref={modalRef}\r\n style={{left:`${pos.x}px`, top:`${pos.y}px`, transformOrigin: origin}}>\r\n <div className=\"modal-header\" ref={headerRef} onMouseDown={startDrag} onTouchStart={startDrag}>\r\n <div className=\"modal-title\">{title}</div>\r\n <button type=\"button\" className=\"modal-close\" onClick={onClose}>×</button>\r\n </div>\r\n <div className=\"modal-body\">{children}</div>\r\n </div>\r\n </div>\r\n )\r\n}\r\n","import React, {useEffect, useLayoutEffect, useRef, useState} from 'react'\r\n\r\nexport default function Drawer({\r\n isOpen,\r\n onClose,\r\n title,\r\n children,\r\n initialPosition = 'left',\r\n transitionDuration = '0.45s',\r\n theme = 'light' // support light/dark themes\r\n}){\r\n const drawerRef = useRef(null)\r\n const headerRef = useRef(null)\r\n const [pos, setPos] = useState({x: 0, y: 0})\r\n const [origin, setOrigin] = useState('50% 50%')\r\n\r\n // determine orientation (horizontal/vertical) and simple side for animation\r\n function detectOrientation(pos){\r\n if(typeof pos === 'string'){\r\n if(pos.includes('left') || pos.includes('right')) return 'horizontal'\r\n if(pos.includes('top') || pos.includes('bottom')) return 'vertical'\r\n }\r\n // fall back to horizontal for coordinate objects\r\n return 'horizontal'\r\n }\r\n function detectSide(pos){\r\n if(typeof pos === 'string'){\r\n if(pos.includes('left')) return 'left'\r\n if(pos.includes('right')) return 'right'\r\n if(pos.includes('top')) return 'top'\r\n if(pos.includes('bottom')) return 'bottom'\r\n }\r\n return 'left'\r\n }\r\n const orientation = detectOrientation(initialPosition)\r\n const side = detectSide(initialPosition)\r\n const [shrink, setShrink] = useState(null)\r\n\r\n function computeOrigin(pos){\r\n if(typeof pos === 'object'){\r\n const x = typeof pos.left === 'number' ? `${pos.left}px` : '0'\r\n const y = typeof pos.top === 'number' ? `${pos.top}px` : '0'\r\n return `${x} ${y}`\r\n }\r\n switch(pos){\r\n case 'top-left': return '0 0'\r\n case 'top-center': return '50% 0'\r\n case 'top-right': return '100% 0'\r\n case 'right': return '100% 50%'\r\n case 'right-center': return '100% 50%'\r\n case 'bottom-right': return '100% 100%'\r\n case 'bottom-center': return '50% 100%'\r\n case 'bottom-left': return '0 100%'\r\n case 'left': return '0 50%'\r\n case 'left-center': return '0 50%'\r\n case 'center':\r\n default: return '50% 50%'\r\n }\r\n }\r\n\r\n const draggingRef = useRef(false)\r\n const offsetRef = useRef({x:0,y:0})\r\n const [rendered, setRendered] = useState(isOpen)\r\n const [visible, setVisible] = useState(isOpen)\r\n\r\n function toMs(duration){\r\n if (typeof duration !== 'string') return 450\r\n const trimmed = duration.trim()\r\n if (trimmed.endsWith('ms')) {\r\n const val = Number(trimmed.slice(0, -2))\r\n return Number.isFinite(val) ? val : 450\r\n }\r\n if (trimmed.endsWith('s')) {\r\n const val = Number(trimmed.slice(0, -1))\r\n return Number.isFinite(val) ? Math.round(val * 1000) : 450\r\n }\r\n return 450\r\n }\r\n\r\n // ESC key handler\r\n useEffect(() => {\r\n if (!isOpen) return\r\n function handleEsc(e) {\r\n if (e.key === 'Escape') {\r\n onClose()\r\n }\r\n }\r\n window.addEventListener('keydown', handleEsc)\r\n return () => window.removeEventListener('keydown', handleEsc)\r\n }, [isOpen, onClose])\r\n\r\n useEffect(() => {\r\n if (isOpen) {\r\n setRendered(true)\r\n setShrink(null)\r\n requestAnimationFrame(() => setVisible(true))\r\n } else if (rendered) {\r\n setVisible(false)\r\n const timeout = setTimeout(\r\n () => setRendered(false),\r\n toMs(transitionDuration)\r\n )\r\n return () => clearTimeout(timeout)\r\n }\r\n }, [isOpen, rendered, transitionDuration])\r\n\r\n useEffect(() => {\r\n if (isOpen) setShrink(null)\r\n }, [isOpen, children, orientation])\r\n\r\n useLayoutEffect(() => {\r\n if (!isOpen || !rendered) return\r\n const el = drawerRef.current\r\n if (!el) return\r\n\r\n const { innerWidth, innerHeight } = window\r\n const rect = el.getBoundingClientRect()\r\n const effectiveWidth = orientation === 'horizontal' && shrink === true\r\n ? Math.round(innerWidth * 0.3)\r\n : rect.width\r\n const effectiveHeight = orientation === 'vertical' && shrink === true\r\n ? Math.round(innerHeight * 0.3)\r\n : rect.height\r\n const maxX = Math.max(0, innerWidth - effectiveWidth)\r\n const maxY = Math.max(0, innerHeight - effectiveHeight)\r\n const centerX = (innerWidth - effectiveWidth) / 2\r\n const centerY = (innerHeight - effectiveHeight) / 2\r\n\r\n let x = centerX\r\n let y = centerY\r\n\r\n if (typeof initialPosition === 'object') {\r\n if (typeof initialPosition.left === 'number') x = initialPosition.left\r\n if (typeof initialPosition.top === 'number') y = initialPosition.top\r\n } else {\r\n switch (initialPosition) {\r\n case 'left':\r\n x = 0; y = 0; break\r\n case 'right':\r\n x = maxX; y = 0; break\r\n case 'top':\r\n x = 0; y = 0; break\r\n case 'bottom':\r\n x = 0; y = maxY; break\r\n case 'top-left':\r\n x = 0; y = 0; break\r\n case 'top-right':\r\n x = maxX; y = 0; break\r\n case 'bottom-left':\r\n x = 0; y = maxY; break\r\n case 'bottom-right':\r\n x = maxX; y = maxY; break\r\n case 'top-center':\r\n x = centerX; y = 0; break\r\n case 'bottom-center':\r\n x = centerX; y = maxY; break\r\n case 'left-center':\r\n x = 0; y = centerY; break\r\n case 'right-center':\r\n x = maxX; y = centerY; break\r\n case 'center':\r\n default:\r\n x = centerX; y = centerY; break\r\n }\r\n }\r\n\r\n x = Math.min(Math.max(0, x), maxX)\r\n y = Math.min(Math.max(0, y), maxY)\r\n\r\n setPos({ x, y })\r\n setOrigin(computeOrigin(initialPosition))\r\n }, [isOpen, initialPosition, rendered, orientation, shrink])\r\n\r\n // shrink measurement – check dimensions after render\r\n useLayoutEffect(() => {\r\n if (!rendered || !drawerRef.current) return\r\n if (!isOpen) return\r\n if (shrink !== null) return\r\n const el = drawerRef.current\r\n const { innerWidth, innerHeight } = window\r\n if (orientation === 'horizontal') {\r\n setShrink(el.scrollWidth < innerWidth * 0.3)\r\n } else {\r\n setShrink(el.scrollHeight < innerHeight * 0.3)\r\n }\r\n }, [rendered, visible, children, orientation, shrink])\r\n\r\n useEffect(()=>{\r\n function onMove(e){\r\n if(!draggingRef.current) return\r\n if (e.touches) e.preventDefault()\r\n const clientX = e.touches ? e.touches[0].clientX : e.clientX\r\n const clientY = e.touches ? e.touches[0].clientY : e.clientY\r\n const desiredX = clientX - offsetRef.current.x\r\n const desiredY = clientY - offsetRef.current.y\r\n const el = drawerRef.current\r\n if(el){\r\n const rect = el.getBoundingClientRect()\r\n const maxX = window.innerWidth - rect.width\r\n const maxY = window.innerHeight - rect.height\r\n const clampedX = Math.min(Math.max(0, desiredX), Math.max(0, maxX))\r\n const clampedY = Math.min(Math.max(0, desiredY), Math.max(0, maxY))\r\n setPos({x: clampedX, y: clampedY})\r\n } else {\r\n setPos({x: desiredX, y: desiredY})\r\n }\r\n }\r\n function onUp(){ draggingRef.current = false }\r\n window.addEventListener('mousemove', onMove)\r\n window.addEventListener('mouseup', onUp)\r\n window.addEventListener('touchmove', onMove, {passive:false})\r\n window.addEventListener('touchend', onUp)\r\n return ()=>{\r\n window.removeEventListener('mousemove', onMove)\r\n window.removeEventListener('mouseup', onUp)\r\n window.removeEventListener('touchmove', onMove)\r\n window.removeEventListener('touchend', onUp)\r\n }\r\n },[])\r\n\r\n function startDrag(e){\r\n e.preventDefault()\r\n draggingRef.current = true\r\n document.body.style.userSelect = 'none'\r\n const clientX = e.touches ? e.touches[0].clientX : e.clientX\r\n const clientY = e.touches ? e.touches[0].clientY : e.clientY\r\n const rect = drawerRef.current.getBoundingClientRect()\r\n offsetRef.current = {x: clientX - rect.left, y: clientY - rect.top}\r\n }\r\n\r\n useEffect(()=>{\r\n function onUpCleanup(){\r\n draggingRef.current = false\r\n document.body.style.userSelect = ''\r\n const el = drawerRef.current\r\n if(el){\r\n const rect = el.getBoundingClientRect()\r\n const maxX = window.innerWidth - rect.width\r\n const maxY = window.innerHeight - rect.height\r\n setPos(prev => ({\r\n x: Math.min(Math.max(0, prev.x), Math.max(0, maxX)),\r\n y: Math.min(Math.max(0, prev.y), Math.max(0, maxY))\r\n }))\r\n }\r\n }\r\n window.addEventListener('mouseup', onUpCleanup)\r\n window.addEventListener('touchend', onUpCleanup)\r\n return ()=>{\r\n window.removeEventListener('mouseup', onUpCleanup)\r\n window.removeEventListener('touchend', onUpCleanup)\r\n }\r\n },[])\r\n\r\n if (!rendered) return null\r\n\r\n return (\r\n <div\r\n className={\"modal-overlay drawer-overlay\" + (visible ? \" visible\" : \"\")}\r\n data-theme={theme}\r\n onMouseDown={(e) => { if (visible && e.target === e.currentTarget) onClose() }}>\r\n <div\r\n className={\r\n `drawer ${orientation} side-${side}` + (visible ? \" visible\" : \"\")\r\n }\r\n data-theme={theme}\r\n ref={drawerRef}\r\n style={{\r\n left:`${pos.x}px`,\r\n top:`${pos.y}px`,\r\n transformOrigin: origin,\r\n '--drawer-transition': transitionDuration,\r\n ...(orientation === 'horizontal' ? {height: '100%'} : {width: '100%'}),\r\n ...(shrink === true\r\n ? (orientation === 'horizontal'\r\n ? {width: '30vw'}\r\n : {height: '30vh'})\r\n : {}),\r\n }}>\r\n <div className=\"modal-header\" ref={headerRef} onMouseDown={startDrag} onTouchStart={startDrag}>\r\n <div className=\"modal-title\">{title}</div>\r\n <button type=\"button\" className=\"modal-close\" onClick={onClose}>×</button>\r\n </div>\r\n <div className=\"modal-body\">{children}</div>\r\n </div>\r\n </div>\r\n )\r\n}\r\n"],"names":["Modal","isOpen","onClose","title","children","initialPosition","theme","modalRef","useRef","headerRef","pos","setPos","useState","x","y","origin","setOrigin","computeOrigin","left","top","draggingRef","offsetRef","rendered","setRendered","visible","setVisible","useEffect","requestAnimationFrame","timeout","setTimeout","clearTimeout","handleEsc","e","key","window","addEventListener","removeEventListener","useLayoutEffect","el","current","innerWidth","innerHeight","rect","getBoundingClientRect","maxX","Math","max","width","maxY","height","centerX","centerY","min","onMove","touches","preventDefault","clientX","clientY","desiredX","desiredY","clampedX","clampedY","onUp","passive","startDrag","document","body","style","userSelect","onUpCleanup","prev","React","createElement","className","onMouseDown","target","currentTarget","ref","transformOrigin","onTouchStart","type","onClick","Drawer","transitionDuration","drawerRef","detectOrientation","includes","detectSide","orientation","side","shrink","setShrink","toMs","duration","trimmed","trim","endsWith","val","Number","slice","isFinite","round","effectiveWidth","effectiveHeight","scrollWidth","scrollHeight"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "trotl-modal",
3
- "version": "1.0.12",
3
+ "version": "1.0.13",
4
4
  "description": "Modal UI",
5
5
  "main": "./dist/index.cjs.js",
6
6
  "module": "./dist/index.esm.js",