{
  "version": 3,
  "sources": ["ssg:https://framerusercontent.com/modules/kZDaRhgomrgsZMuUTn6C/7TFVJK3qynBnWIRmdRAT/TextClip.js"],
  "sourcesContent": ["import{jsx as _jsx}from\"react/jsx-runtime\";import*as React from\"react\";import{motion}from\"framer-motion\";import{addPropertyControls,ControlType}from\"framer\";export function TextClip(props){const{text,lineCount,textStyle,letterMode,maxCharacters,lineHeightUnit,useMaxLines}=props;// Handle text clipping if in letter mode\nlet displayText=text;if(letterMode&&text.length>maxCharacters){displayText=text.slice(0,maxCharacters)+\"...\";}// Create refs to measure the height of the text content and container\nconst textRef=React.useRef(null);const containerRef=React.useRef(null);const[dynamicLineClamp,setDynamicLineClamp]=React.useState(lineCount);// Calculate the height for the available space option\nReact.useEffect(()=>{if(textRef.current&&containerRef.current&&!useMaxLines){const parentHeight=containerRef.current.clientHeight// Get parent container's height\n;const fontSize=parseFloat(textStyle.fontSize)// Get font size in px\n;const lineHeight=parseFloat(textStyle.lineHeight)*(lineHeightUnit===\"em\"?fontSize:1)// Calculate line height in px\n;// Calculate the number of lines that fit in the parent container's height\nconst maxLines=Math.floor(parentHeight/lineHeight);setDynamicLineClamp(maxLines)// Dynamically set the max number of lines that can fit\n;}else{setDynamicLineClamp(lineCount)// Use the provided line count when useMaxLines is true\n;}},[useMaxLines,text,textStyle,lineCount,lineHeightUnit]);const lineClampStyle={display:\"-webkit-box\",overflow:\"hidden\",textOverflow:\"ellipsis\",whiteSpace:\"normal\",WebkitBoxOrient:\"vertical\",WebkitLineClamp:dynamicLineClamp,textAlign:textStyle.textAlign};const transformStyle={textTransform:textStyle.textTransform};const containerStyle={display:\"block\",textAlign:textStyle.textAlign,overflow:\"hidden\",height:\"100%\"};// Determine lineHeight with appropriate unit\nconst computedLineHeight=`${textStyle.lineHeight}${lineHeightUnit}`;return /*#__PURE__*/_jsx(motion.div,{ref:containerRef,style:{...containerStyle},children:/*#__PURE__*/_jsx(motion.div,{ref:textRef,style:{...lineClampStyle,...textStyle,...transformStyle,fontFamily:textStyle.font,lineHeight:computedLineHeight},children:displayText})});}addPropertyControls(TextClip,{text:{type:ControlType.String,defaultValue:\"Lorem ipsum dolor sit amet, consectetur adipiscing elit.\"},letterMode:{type:ControlType.Boolean,title:\"Letter Mode\",defaultValue:false},maxCharacters:{type:ControlType.Number,title:\"Max Characters\",defaultValue:20,min:1,step:1,displayStepper:true,hidden(props){return!props.letterMode;}},lineCount:{type:ControlType.Number,defaultValue:2,min:1,displayStepper:true,step:1,hidden(props){return props.letterMode||!props.useMaxLines// Hide when not using max lines\n;}},useMaxLines:{type:ControlType.Boolean,title:\"Use Max Lines\",defaultValue:true},textStyle:{type:ControlType.Object,controls:{font:{type:ControlType.Enum,options:[\"ITC Avant Garde Gothic Std Bold\",\"ITC Avant Garde Gothic Std Book\",\"ITC Avant Garde Gothic Std Demi\",\"ITC Avant Garde Gothic Std Extra Light\",\"ITC Avant Garde Gothic Std Medium\"],optionTitles:[\"Avant Garde Bold\",\"Avant Garde Book\",\"Avant Garde Demi\",\"Avant Garde Extra Light\",\"Avant Garde Medium\"],defaultValue:\"ITC Avant Garde Gothic Std Book\"},color:{type:ControlType.Color,defaultValue:\"#000\"},fontSize:{type:ControlType.Number,defaultValue:16},fontWeight:{type:ControlType.Number,defaultValue:400,displayStepper:true,step:100},lineHeight:{type:ControlType.Number,defaultValue:1.5,displayStepper:true,step:.1},textAlign:{type:ControlType.Enum,options:[\"left\",\"center\",\"right\"],defaultValue:\"left\"},textTransform:{type:ControlType.Enum,options:[\"none\",\"capitalize\",\"lowercase\",\"uppercase\"],defaultValue:\"none\",title:\"Transform\"}}},lineHeightUnit:{type:ControlType.SegmentedEnum,title:\"Line Height Unit\",options:[\"em\",\"px\"],optionTitles:[\"em\",\"px\"],defaultValue:\"em\"}});export default TextClip;\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"TextClip\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"TextClip\":{\"type\":\"reactComponent\",\"name\":\"TextClip\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./TextClip.map"],
  "mappings": "qFAAoK,SAASA,EAASC,EAAM,CAAC,GAAK,CAAC,KAAAC,EAAK,UAAAC,EAAU,UAAAC,EAAU,WAAAC,EAAW,cAAAC,EAAc,eAAAC,EAAe,YAAAC,CAAW,EAAEP,EAC7QQ,EAAYP,EAAQG,GAAYH,EAAK,OAAOI,IAAeG,EAAYP,EAAK,MAAM,EAAEI,CAAa,EAAE,OACvG,IAAMI,EAAcC,EAAO,IAAI,EAAQC,EAAmBD,EAAO,IAAI,EAAO,CAACE,EAAiBC,CAAmB,EAAQC,EAASZ,CAAS,EACrIa,EAAU,IAAI,CAAC,GAAGN,EAAQ,SAASE,EAAa,SAAS,CAACJ,EAAY,CAAC,IAAMS,EAAaL,EAAa,QAAQ,aAC9GM,EAAS,WAAWd,EAAU,QAAQ,EACtCe,EAAW,WAAWf,EAAU,UAAU,GAAGG,IAAiB,KAAKW,EAAS,GAE7EE,EAAS,KAAK,MAAMH,EAAaE,CAAU,EAAEL,EAAoBM,CAAQ,CAC9E,MAAMN,EAAoBX,CAAS,CAClC,EAAE,CAACK,EAAYN,EAAKE,EAAUD,EAAUI,CAAc,CAAC,EAAE,IAAMc,EAAe,CAAC,QAAQ,cAAc,SAAS,SAAS,aAAa,WAAW,WAAW,SAAS,gBAAgB,WAAW,gBAAgBR,EAAiB,UAAUT,EAAU,SAAS,EAAQkB,EAAe,CAAC,cAAclB,EAAU,aAAa,EAAQmB,EAAe,CAAC,QAAQ,QAAQ,UAAUnB,EAAU,UAAU,SAAS,SAAS,OAAO,MAAM,EAC1ZoB,EAAmB,GAAGpB,EAAU,UAAU,GAAGG,CAAc,GAAG,OAAoBkB,EAAKC,EAAO,IAAI,CAAC,IAAId,EAAa,MAAM,CAAC,GAAGW,CAAc,EAAE,SAAsBE,EAAKC,EAAO,IAAI,CAAC,IAAIhB,EAAQ,MAAM,CAAC,GAAGW,EAAe,GAAGjB,EAAU,GAAGkB,EAAe,WAAWlB,EAAU,KAAK,WAAWoB,CAAkB,EAAE,SAASf,CAAW,CAAC,CAAC,CAAC,CAAE,CAACkB,EAAoB3B,EAAS,CAAC,KAAK,CAAC,KAAK4B,EAAY,OAAO,aAAa,0DAA0D,EAAE,WAAW,CAAC,KAAKA,EAAY,QAAQ,MAAM,cAAc,aAAa,EAAK,EAAE,cAAc,CAAC,KAAKA,EAAY,OAAO,MAAM,iBAAiB,aAAa,GAAG,IAAI,EAAE,KAAK,EAAE,eAAe,GAAK,OAAO3B,EAAM,CAAC,MAAM,CAACA,EAAM,UAAW,CAAC,EAAE,UAAU,CAAC,KAAK2B,EAAY,OAAO,aAAa,EAAE,IAAI,EAAE,eAAe,GAAK,KAAK,EAAE,OAAO3B,EAAM,CAAC,OAAOA,EAAM,YAAY,CAACA,EAAM,WAC5zB,CAAC,EAAE,YAAY,CAAC,KAAK2B,EAAY,QAAQ,MAAM,gBAAgB,aAAa,EAAI,EAAE,UAAU,CAAC,KAAKA,EAAY,OAAO,SAAS,CAAC,KAAK,CAAC,KAAKA,EAAY,KAAK,QAAQ,CAAC,kCAAkC,kCAAkC,kCAAkC,yCAAyC,mCAAmC,EAAE,aAAa,CAAC,mBAAmB,mBAAmB,mBAAmB,0BAA0B,oBAAoB,EAAE,aAAa,iCAAiC,EAAE,MAAM,CAAC,KAAKA,EAAY,MAAM,aAAa,MAAM,EAAE,SAAS,CAAC,KAAKA,EAAY,OAAO,aAAa,EAAE,EAAE,WAAW,CAAC,KAAKA,EAAY,OAAO,aAAa,IAAI,eAAe,GAAK,KAAK,GAAG,EAAE,WAAW,CAAC,KAAKA,EAAY,OAAO,aAAa,IAAI,eAAe,GAAK,KAAK,EAAE,EAAE,UAAU,CAAC,KAAKA,EAAY,KAAK,QAAQ,CAAC,OAAO,SAAS,OAAO,EAAE,aAAa,MAAM,EAAE,cAAc,CAAC,KAAKA,EAAY,KAAK,QAAQ,CAAC,OAAO,aAAa,YAAY,WAAW,EAAE,aAAa,OAAO,MAAM,WAAW,CAAC,CAAC,EAAE,eAAe,CAAC,KAAKA,EAAY,cAAc,MAAM,mBAAmB,QAAQ,CAAC,KAAK,IAAI,EAAE,aAAa,CAAC,KAAK,IAAI,EAAE,aAAa,IAAI,CAAC,CAAC",
  "names": ["TextClip", "props", "text", "lineCount", "textStyle", "letterMode", "maxCharacters", "lineHeightUnit", "useMaxLines", "displayText", "textRef", "pe", "containerRef", "dynamicLineClamp", "setDynamicLineClamp", "ye", "ue", "parentHeight", "fontSize", "lineHeight", "maxLines", "lineClampStyle", "transformStyle", "containerStyle", "computedLineHeight", "p", "motion", "addPropertyControls", "ControlType"]
}
