{
  "version": 3,
  "sources": ["ssg:https://framerusercontent.com/modules/LzqwhCMBskA39jhufps6/Eym8plGkUbSZzVef26dO/OriginResolver.js"],
  "sourcesContent": ["/**\n * @file OriginResolver.ts\n * @description Stagger origin point resolution utilities\n *\n * @version 1.0.0 - Production Implementation\n * @since 1.0.0\n *\n * @example\n * ```typescript\n * import { OriginResolver } from './OriginResolver.ts';\n *\n * const resolver = new OriginResolver();\n * const originPoint = resolver.resolveOrigin(gridResult, 'center');\n *\n * console.log(`Origin resolved to: (${originPoint.x}, ${originPoint.y})`);\n * ```\n */// Module name for logging\nconst MODULE_NAME=\"OriginResolver\";/**\n * Origin point resolution utilities for stagger calculations\n *\n * @description\n * Calculates precise origin coordinates for grid-based staggering.\n * Supports multiple origin types with proper grid bounds handling.\n *\n * **Key Features:**\n * - Multiple origin types: center, corners, edges\n * - Precise grid coordinate calculation\n * - Automatic grid bounds detection\n * - Edge case handling for irregular grids\n * - Mouse/pointer origin support (future)\n *\n * **Supported Origin Types:**\n * - **center**: Grid center point (most common)\n * - **top-left**: Top-left corner\n * - **top-right**: Top-right corner\n * - **bottom-left**: Bottom-left corner\n * - **bottom-right**: Bottom-right corner\n * - **first**: First element position\n * - **last**: Last element position\n * - **random**: Random element position\n */export class OriginResolver{/**\n     * Resolve origin coordinates for stagger calculations\n     *\n     * @description\n     * Main entry point for origin resolution. Converts origin type string\n     * to precise grid coordinates for distance calculations.\n     *\n     * **Algorithm Steps:**\n     * 1. Validate input parameters and grid result\n     * 2. Handle special cases (empty grid, single element)\n     * 3. Calculate grid bounds and dimensions\n     * 4. Resolve origin type to grid coordinates\n     * 5. Validate and return final origin point\n     *\n     * @param gridResult - Grid detection result with positioned elements\n     * @param originType - Type of origin point to resolve\n     * @returns Precise origin coordinates in grid space\n     */resolveOrigin(gridResult,originType){console.log(`\uD83D\uDD0D [${MODULE_NAME}] Resolving origin \"${originType}\" for grid ${gridResult.rows}x${gridResult.columns}`);// Validate input\nif(!gridResult||gridResult.elements.length===0){console.warn(`\uD83D\uDD0D [${MODULE_NAME}] Empty grid result, using default origin (0, 0)`);return{x:0,y:0};}const{rows,columns,elements}=gridResult;// Handle single element case\nif(elements.length===1){console.log(`\uD83D\uDD0D [${MODULE_NAME}] Single element grid, using element position`);return{x:0,y:0};}// Normalize origin string\nconst normalizedOrigin=this.normalizeOriginString(originType);console.log(`\uD83D\uDD0D [${MODULE_NAME}] Normalized origin: \"${normalizedOrigin}\"`);// Resolve origin based on type\nlet result;switch(normalizedOrigin){case\"center\":result=this.calculateCenterOrigin(rows,columns);console.log(`\uD83D\uDD0D [${MODULE_NAME}] CENTER origin resolved to (${result.x.toFixed(2)}, ${result.y.toFixed(2)})`);break;case\"top-left\":result={x:0,y:0};console.log(`\uD83D\uDD0D [${MODULE_NAME}] TOP_LEFT origin resolved to (${result.x}, ${result.y})`);break;case\"top-center\":result={x:(columns-1)/2,y:0};console.log(`\uD83D\uDD0D [${MODULE_NAME}] TOP_CENTER origin resolved to (${result.x.toFixed(2)}, ${result.y})`);break;case\"top-right\":result={x:columns-1,y:0};console.log(`\uD83D\uDD0D [${MODULE_NAME}] TOP_RIGHT origin resolved to (${result.x}, ${result.y})`);break;case\"center-left\":result={x:0,y:(rows-1)/2};console.log(`\uD83D\uDD0D [${MODULE_NAME}] CENTER_LEFT origin resolved to (${result.x}, ${result.y.toFixed(2)})`);break;case\"center-right\":result={x:columns-1,y:(rows-1)/2};console.log(`\uD83D\uDD0D [${MODULE_NAME}] CENTER_RIGHT origin resolved to (${result.x}, ${result.y.toFixed(2)})`);break;case\"bottom-left\":result={x:0,y:rows-1};console.log(`\uD83D\uDD0D [${MODULE_NAME}] BOTTOM_LEFT origin resolved to (${result.x}, ${result.y})`);break;case\"bottom-center\":result={x:(columns-1)/2,y:rows-1};console.log(`\uD83D\uDD0D [${MODULE_NAME}] BOTTOM_CENTER origin resolved to (${result.x.toFixed(2)}, ${result.y})`);break;case\"bottom-right\":result={x:columns-1,y:rows-1};console.log(`\uD83D\uDD0D [${MODULE_NAME}] BOTTOM_RIGHT origin resolved to (${result.x}, ${result.y})`);break;case\"first\":result=this.calculateFirstElementOrigin(elements);console.log(`\uD83D\uDD0D [${MODULE_NAME}] FIRST origin resolved to element at (${result.x}, ${result.y})`);break;case\"last\":result=this.calculateLastElementOrigin(elements,rows,columns);console.log(`\uD83D\uDD0D [${MODULE_NAME}] LAST origin resolved to element at (${result.x}, ${result.y})`);break;case\"random\":result=this.calculateRandomOrigin(elements,rows,columns);console.log(`\uD83D\uDD0D [${MODULE_NAME}] RANDOM origin resolved to (${result.x}, ${result.y})`);break;default:console.warn(`\uD83D\uDD0D [${MODULE_NAME}] Unknown origin type: \"${normalizedOrigin}\", falling back to center`);result=this.calculateCenterOrigin(rows,columns);break;}// Validate and return result\nreturn this.validateOrigin(result,rows,columns);}/**\n     * Normalize origin string to handle case variations\n     *\n     * @description\n     * Converts various origin string formats to standardized lowercase format\n     * for consistent processing.\n     *\n     * @param originType - Origin type string (any case)\n     * @returns Normalized origin string\n     */normalizeOriginString(originType){if(typeof originType!==\"string\"){return\"center\"// Safe fallback\n;}return originType.toLowerCase().trim();}/**\n     * Calculate center origin point\n     *\n     * @description\n     * Calculates the geometric center of the grid for natural radial staggering.\n     * Handles both even and odd grid dimensions properly.\n     *\n     * @param rows - Number of grid rows\n     * @param columns - Number of grid columns\n     * @returns Center coordinates\n     */calculateCenterOrigin(rows,columns){const centerX=(columns-1)/2;const centerY=(rows-1)/2;return{x:centerX,y:centerY};}/**\n     * Calculate first element origin point\n     *\n     * @description\n     * Uses the position of the first element in the grid as origin.\n     * Provides consistent starting point for element-based staggering.\n     *\n     * @param elements - Grid elements array\n     * @returns First element coordinates\n     */calculateFirstElementOrigin(elements){if(elements.length===0){return{x:0,y:0};}const firstElement=elements[0];return{x:firstElement.position.x,y:firstElement.position.y};}/**\n     * Calculate last element origin point\n     *\n     * @description\n     * Uses the position of the last element in the grid as origin.\n     * Falls back to bottom-right corner if no elements available.\n     *\n     * @param elements - Grid elements array\n     * @param rows - Number of grid rows\n     * @param columns - Number of grid columns\n     * @returns Last element coordinates\n     */calculateLastElementOrigin(elements,rows,columns){if(elements.length===0){return{x:columns-1,y:rows-1};}const lastElement=elements[elements.length-1];return{x:lastElement.position.x,y:lastElement.position.y};}/**\n     * Calculate random element origin point\n     *\n     * @description\n     * Selects a random element position as origin for unpredictable stagger patterns.\n     * Falls back to random coordinates if no elements available.\n     *\n     * @param elements - Grid elements array\n     * @param rows - Number of grid rows\n     * @param columns - Number of grid columns\n     * @returns Random element coordinates\n     */calculateRandomOrigin(elements,rows,columns){if(elements.length===0){return{x:Math.floor(Math.random()*columns),y:Math.floor(Math.random()*rows)};}const randomIndex=Math.floor(Math.random()*elements.length);const randomElement=elements[randomIndex];console.log(`\uD83D\uDD0D [${MODULE_NAME}] Selected random element ${randomIndex} from ${elements.length} elements`);return{x:randomElement.position.x,y:randomElement.position.y};}/**\n     * Calculate edge midpoint origins\n     *\n     * @description\n     * Calculates midpoint coordinates for grid edges, useful for\n     * linear stagger effects from edge centers.\n     *\n     * @param edge - Edge type (top, right, bottom, left)\n     * @param rows - Number of grid rows\n     * @param columns - Number of grid columns\n     * @returns Edge midpoint coordinates\n     */calculateEdgeOrigin(edge,rows,columns){switch(edge.toLowerCase()){case\"top\":return{x:(columns-1)/2,y:0};case\"right\":return{x:columns-1,y:(rows-1)/2};case\"bottom\":return{x:(columns-1)/2,y:rows-1};case\"left\":return{x:0,y:(rows-1)/2};default:console.warn(`\uD83D\uDD0D [${MODULE_NAME}] Unknown edge type: \"${edge}\", falling back to center`);return this.calculateCenterOrigin(rows,columns);}}/**\n     * Validate origin coordinates\n     *\n     * @description\n     * Ensures origin coordinates are within valid grid bounds.\n     * Clamps values to grid boundaries and provides fallback handling.\n     *\n     * @param origin - Calculated origin coordinates\n     * @param rows - Number of grid rows\n     * @param columns - Number of grid columns\n     * @returns Validated origin coordinates\n     */validateOrigin(origin,rows,columns){// Clamp coordinates to valid grid bounds\nconst clampedX=Math.max(0,Math.min(columns-1,origin.x));const clampedY=Math.max(0,Math.min(rows-1,origin.y));// Check if clamping was necessary\nif(clampedX!==origin.x||clampedY!==origin.y){console.warn(`\uD83D\uDD0D [${MODULE_NAME}] Origin coordinates (${origin.x}, ${origin.y}) clamped to (${clampedX}, ${clampedY}) to fit grid bounds`);}return{x:clampedX,y:clampedY};}/**\n     * Find closest grid element to target element\n     *\n     * @description\n     * Future feature: Finds the grid element closest to a target element\n     * for pointer-based or element-relative origin calculations.\n     *\n     * @param targetElement - Target element to find closest grid element to\n     * @param gridResult - Grid detection result\n     * @returns Position of closest grid element\n     */findClosestGridElementToTarget(targetElement,gridResult){const{elements,rows,columns}=gridResult;if(!elements||elements.length===0){console.warn(`\uD83D\uDD0D [${MODULE_NAME}] No grid elements found, using default position`);return{x:0,y:0};}if(!targetElement||!targetElement.getBoundingClientRect){console.warn(`\uD83D\uDD0D [${MODULE_NAME}] Invalid target element, using center position`);return{x:(columns-1)/2,y:(rows-1)/2};}try{const targetRect=targetElement.getBoundingClientRect();const targetCenterX=targetRect.left+targetRect.width/2;const targetCenterY=targetRect.top+targetRect.height/2;// Find closest grid element by Euclidean distance\nlet closestElement=null;let closestDistance=Infinity;for(const element of elements){const rect=element.pixelPosition;const centerX=rect.left+rect.width/2;const centerY=rect.top+rect.height/2;const dx=centerX-targetCenterX;const dy=centerY-targetCenterY;const distance=Math.sqrt(dx*dx+dy*dy);if(distance<closestDistance){closestDistance=distance;closestElement=element;}}if(closestElement){console.log(`\uD83D\uDD0D [${MODULE_NAME}] Found closest grid element at (${closestElement.position.x}, ${closestElement.position.y}), distance=${closestDistance.toFixed(1)}px`);return{x:closestElement.position.x,y:closestElement.position.y};}}catch(error){console.error(`\uD83D\uDD0D [${MODULE_NAME}] Error finding closest grid element: ${error}`);}// Fallback to center if no closest element found\nconsole.warn(`\uD83D\uDD0D [${MODULE_NAME}] Could not find closest grid element, using center position`);return{x:(columns-1)/2,y:(rows-1)/2};}/**\n     * Convert mouse position to grid coordinates\n     *\n     * @description\n     * Future feature: Converts mouse/pointer coordinates to grid space\n     * for interactive origin selection.\n     *\n     * @param mouseEvent - Mouse event with position data\n     * @param gridResult - Grid detection result\n     * @returns Grid coordinates from mouse position\n     */convertMousePositionToGridCoordinates(mouseEvent,gridResult){const{elements,rows,columns}=gridResult;if(!elements||elements.length===0||!mouseEvent){console.warn(`\uD83D\uDD0D [${MODULE_NAME}] No grid elements or mouse event, using center position`);return{x:(columns-1)/2,y:(rows-1)/2};}try{const mouseX=mouseEvent.clientX;const mouseY=mouseEvent.clientY;if(mouseX===undefined||mouseY===undefined){console.warn(`\uD83D\uDD0D [${MODULE_NAME}] Invalid mouse position, using center position`);return{x:(columns-1)/2,y:(rows-1)/2};}console.log(`\uD83D\uDD0D [${MODULE_NAME}] Mouse position: (${mouseX}, ${mouseY})`);// Calculate grid bounds in screen coordinates\nconst gridBounds=this.calculateGridBounds(elements);// Map mouse position to grid coordinates\nconst relativeX=(mouseX-gridBounds.left)/gridBounds.width;const relativeY=(mouseY-gridBounds.top)/gridBounds.height;const gridX=Math.max(0,Math.min(columns-1,relativeX*(columns-1)));const gridY=Math.max(0,Math.min(rows-1,relativeY*(rows-1)));console.log(`\uD83D\uDD0D [${MODULE_NAME}] Mouse mapped to grid coordinates: (${gridX.toFixed(2)}, ${gridY.toFixed(2)})`);return{x:gridX,y:gridY};}catch(error){console.error(`\uD83D\uDD0D [${MODULE_NAME}] Error converting mouse position: ${error}`);return{x:(columns-1)/2,y:(rows-1)/2};}}/**\n     * Calculate grid bounds from elements\n     *\n     * @description\n     * Helper method to determine the bounding rectangle of all grid elements\n     * for coordinate mapping calculations.\n     *\n     * @param elements - Grid elements to analyze\n     * @returns Grid boundary information\n     */calculateGridBounds(elements){if(elements.length===0){return{left:0,right:0,top:0,bottom:0,width:0,height:0};}let minX=Infinity;let maxX=-Infinity;let minY=Infinity;let maxY=-Infinity;elements.forEach(element=>{const rect=element.pixelPosition;minX=Math.min(minX,rect.left);maxX=Math.max(maxX,rect.left+rect.width);minY=Math.min(minY,rect.top);maxY=Math.max(maxY,rect.top+rect.height);});return{left:minX,right:maxX,top:minY,bottom:maxY,width:maxX-minX,height:maxY-minY};}}\nexport const __FramerMetadata__ = {\"exports\":{\"OriginResolver\":{\"type\":\"class\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./OriginResolver.map"],
  "mappings": "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",
  "names": ["MODULE_NAME", "OriginResolver", "gridResult", "originType", "rows", "columns", "elements", "normalizedOrigin", "result", "centerX", "centerY", "firstElement", "lastElement", "randomIndex", "randomElement", "edge", "origin", "clampedX", "clampedY", "targetElement", "targetRect", "targetCenterX", "targetCenterY", "closestElement", "closestDistance", "element", "rect", "dx", "dy", "distance", "error", "mouseEvent", "mouseX", "mouseY", "gridBounds", "relativeX", "relativeY", "gridX", "gridY", "minX", "maxX", "minY", "maxY", "__FramerMetadata__"]
}
