{"version":3,"file":"TwoLineSplitText.DpcUK5jC.mjs","names":["React.useMemo"],"sources":["https:/framerusercontent.com/modules/cldyvVTAO52EICJK8lbx/WWDJKlwcLszahJgloIHJ/TwoLineSplitText.js"],"sourcesContent":["// create component that divide the text inputted into two line, first line is using inputted first font, second line is using inputted second font.\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import*as React from\"react\";import{addPropertyControls,ControlType}from\"framer\";function normalizeWhitespace(input){return input.replace(/\\s+/g,\" \").trim();}function splitBalanced(text){const cleaned=normalizeWhitespace(text);if(!cleaned)return[\"\",\"\"];const words=cleaned.split(\" \");if(words.length===1)return[words[0],\"\"];// Find split index that minimizes the difference in character counts.\nconst total=words.join(\" \");const totalLen=total.length;let bestIdx=1;let bestScore=Number.POSITIVE_INFINITY;let left=words[0];for(let i=1;i<words.length;i++){const right=words.slice(i).join(\" \");const leftLen=left.length;const rightLen=right.length;const score=Math.abs(leftLen-rightLen);// Prefer splits closer to the middle if scores tie\nconst midBias=Math.abs(i-words.length/2)*.01;const finalScore=score+midBias;if(finalScore<bestScore){bestScore=finalScore;bestIdx=i;}left+=\" \"+words[i];}const first=words.slice(0,bestIdx).join(\" \");const second=words.slice(bestIdx).join(\" \");// Edge case: if something went wrong, fallback to simple half split\nif(!first&&second){const half=Math.max(1,Math.floor(words.length/2));return[words.slice(0,half).join(\" \"),words.slice(half).join(\" \")];}return[first,second];}function splitNewline(text){const parts=text.split(/\\r?\\n/);const first=(parts[0]??\"\").trimEnd();const second=parts.slice(1).join(\" \").trim();return[first,second];}function splitDelimiter(text,delimiter){const d=delimiter||\"|\";const idx=text.indexOf(d);if(idx===-1)return splitBalanced(text);const first=text.slice(0,idx).trimEnd();const second=text.slice(idx+d.length).trimStart();return[first,second];}/**\n * Two Line Split Text\n *\n * @framerIntrinsicWidth 600\n * @framerIntrinsicHeight 150\n *\n * @framerSupportedLayoutWidth any-prefer-fixed\n * @framerSupportedLayoutHeight auto\n */export default function TwoLineSplitText(props){const{text,splitMode,delimiter,firstFont,secondFont,color,align,lineGap,style}=props;const isFixedWidth=!!style&&style.width===\"100%\";const[line1,line2]=React.useMemo(()=>{if(!text)return[\"\",\"\"];if(splitMode===\"newline\")return splitNewline(text);if(splitMode===\"delimiter\")return splitDelimiter(text,delimiter);return splitBalanced(text);},[text,splitMode,delimiter]);return /*#__PURE__*/_jsxs(\"div\",{style:{position:\"relative\",width:\"100%\",height:\"100%\",display:\"flex\",flexDirection:\"column\",justifyContent:\"center\",alignItems:align===\"left\"?\"flex-start\":align===\"right\"?\"flex-end\":\"center\",gap:`${lineGap}px`,color,...isFixedWidth?{}:{minWidth:\"max-content\"},...style},\"aria-label\":\"Two line text\",children:[/*#__PURE__*/_jsx(\"div\",{style:{width:\"100%\",whiteSpace:\"pre-wrap\",textAlign:align,...firstFont,color},children:/*#__PURE__*/_jsx(\"span\",{style:{width:\"max-content\"},children:line1})}),/*#__PURE__*/_jsx(\"div\",{style:{width:\"100%\",whiteSpace:\"pre-wrap\",textAlign:align,...secondFont,color},children:/*#__PURE__*/_jsx(\"span\",{style:{width:\"max-content\"},children:line2})})]});}addPropertyControls(TwoLineSplitText,{text:{type:ControlType.String,title:\"Text\",defaultValue:\"Lorem ipsum dolor sit amet consectetur adipiscing\",displayTextArea:true},splitMode:{type:ControlType.Enum,title:\"Split\",options:[\"balanced\",\"newline\",\"delimiter\"],optionTitles:[\"Balanced\",\"New line\",\"Delimiter\"],defaultValue:\"balanced\",displaySegmentedControl:true},delimiter:{type:ControlType.String,title:\"Delimiter\",defaultValue:\"|\",hidden:({splitMode})=>splitMode!==\"delimiter\"},firstFont:{type:ControlType.Font,title:\"First Font\",controls:\"extended\",defaultFontType:\"sans-serif\",defaultValue:{fontSize:\"56px\",variant:\"Regular\",letterSpacing:\"-0.04em\",lineHeight:\"1em\"}},secondFont:{type:ControlType.Font,title:\"Second Font\",controls:\"extended\",defaultFontType:\"sans-serif\",defaultValue:{fontSize:\"56px\",variant:\"Semibold\",letterSpacing:\"-0.04em\",lineHeight:\"1em\"}},color:{type:ControlType.Color,title:\"Color\",defaultValue:\"#FFFFFF\"},align:{type:ControlType.Enum,title:\"Align\",options:[\"left\",\"center\",\"right\"],optionTitles:[\"Left\",\"Center\",\"Right\"],defaultValue:\"left\",displaySegmentedControl:true},lineGap:{type:ControlType.Number,title:\"Line Gap\",defaultValue:6,min:0,max:80,step:1,unit:\"px\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"TwoLineSplitText\",\"slots\":[],\"annotations\":{\"framerIntrinsicHeight\":\"150\",\"framerSupportedLayoutWidth\":\"any-prefer-fixed\",\"framerContractVersion\":\"1\",\"framerIntrinsicWidth\":\"600\",\"framerSupportedLayoutHeight\":\"auto\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./TwoLineSplitText.map"],"mappings":"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"}