{"version":3,"file":"TimeBasedText.BnMu_7AE.mjs","names":["useMemo","useState"],"sources":["https:/framerusercontent.com/modules/LNb2HoGpD7JKuleGEjoY/MO2eNrDY71gA12uSid7S/TimeBasedText.js"],"sourcesContent":["import{jsx as _jsx}from\"react/jsx-runtime\";import{useState,useEffect,useMemo,startTransition}from\"react\";import{addPropertyControls,ControlType,useIsStaticRenderer}from\"framer\";export default function TimeBasedText(props){const{windows=[{start:\"06:00\",end:\"11:00\",text:\"Good Morning!\"},{start:\"18:00\",end:\"22:00\",text:\"Good Evening!\"},{start:\"22:00\",end:\"06:00\",text:\"Good Night!\"}],defaultText=\"Hello!\",font,textColor=\"#000000\",backgroundColor=\"#FFFFFF\",padding=16,borderRadius=8,textAlign=\"left\"}=props;const isStatic=useIsStaticRenderer();const parseHHMM=str=>{const[h,m]=(str??\"\").split(\":\").map(Number);if(Number.isNaN(h)||Number.isNaN(m))return NaN;return(h*60+m)%(24*60);};const nowMinutes=()=>{const d=new Date;return(d.getHours()*60+d.getMinutes())%(24*60);};const isInWindow=(now,start,end)=>Number.isNaN(start)||Number.isNaN(end)?false:start<=end?now>=start&&now<end:now>=start||now<end;const picker=useMemo(()=>{const parsed=(windows??[]).map(w=>({start:parseHHMM(w.start),end:parseHHMM(w.end),text:w.text??\"\"}));return now=>{for(const w of parsed)if(isInWindow(now,w.start,w.end))return w.text;return defaultText;};},[windows,defaultText]);// 1) Statisches Rendering: ohne State berechnen (reagiert sofort auf Prop-Änderungen)\nconst staticText=useMemo(()=>picker(nowMinutes()),[picker]);// 2) Dynamisch (Preview/Live): minütlich aktualisieren\nconst[currentText,setCurrentText]=useState(staticText);useEffect(()=>{if(isStatic)return;const update=()=>{const txt=picker(nowMinutes());startTransition(()=>setCurrentText(txt));};update();const msToNextMinute=()=>{const d=new Date;return(60-d.getSeconds())*1e3-d.getMilliseconds();};const to=window.setTimeout(()=>{update();const iv=window.setInterval(update,6e4);cleanup.iv=iv;},msToNextMinute());const cleanup={};return()=>{window.clearTimeout(to);if(cleanup.iv)window.clearInterval(cleanup.iv);};},[picker,isStatic]);const isFixedWidth=props?.style&&props.style.width===\"100%\";const displayText=isStatic?staticText:currentText;return /*#__PURE__*/_jsx(\"div\",{style:{...props.style,position:\"relative\",backgroundColor,color:textColor,padding:`${padding}px`,borderRadius:`${borderRadius}px`,...isFixedWidth?{}:{minWidth:\"max-content\"},...font,textAlign},\"aria-live\":\"polite\",children:displayText});}addPropertyControls(TimeBasedText,{windows:{type:ControlType.Array,title:\"Time Windows\",control:{type:ControlType.Object,controls:{start:{type:ControlType.String,title:\"Start\",defaultValue:\"06:00\",placeholder:\"HH:MM\"},end:{type:ControlType.String,title:\"End\",defaultValue:\"11:00\",placeholder:\"HH:MM\"},text:{type:ControlType.String,title:\"Text\",defaultValue:\"Good Morning!\",displayTextArea:true}}},defaultValue:[{start:\"06:00\",end:\"11:00\",text:\"Good Morning!\"},{start:\"18:00\",end:\"22:00\",text:\"Good Evening!\"},{start:\"22:00\",end:\"06:00\",text:\"Good Night!\"}],description:\"Add as many time windows as you want.\"},defaultText:{type:ControlType.String,title:\"Default Text\",defaultValue:\"Hello!\",displayTextArea:true,description:\"Shown when no time window is active.\"},font:{type:ControlType.Font,title:\"Font\",defaultValue:{fontSize:\"22px\",variant:\"Semibold\",letterSpacing:\"-0.01em\",lineHeight:\"1.2em\"},controls:\"extended\",defaultFontType:\"sans-serif\"},textColor:{type:ControlType.Color,title:\"Text\",defaultValue:\"#000000\"},backgroundColor:{type:ControlType.Color,title:\"Background\",defaultValue:\"#FFFFFF\"},textAlign:{type:ControlType.Enum,title:\"Align\",options:[\"left\",\"center\",\"right\"],optionTitles:[\"Left\",\"Center\",\"Right\"],defaultValue:\"left\",displaySegmentedControl:true},padding:{type:ControlType.Number,title:\"Padding\",defaultValue:16,min:0,max:64,step:1,unit:\"px\"},borderRadius:{type:ControlType.Number,title:\"Radius\",defaultValue:8,min:0,max:128,step:1,unit:\"px\",description:\"An out of storage component.\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"TimeBasedText\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./TimeBasedText.map"],"mappings":"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"}