{"version":3,"file":"Cms_count.GQ-Rowvk.mjs","names":["useState","useRef"],"sources":["https:/framerusercontent.com/modules/b0klcnmLSDDyCKwXywak/nhHRK4BG2DqnoNgkl5oS/Cms_count.js"],"sourcesContent":["import{jsx as _jsx}from\"react/jsx-runtime\";import{useEffect,useState,useRef}from\"react\";import{addPropertyControls,ControlType}from\"framer\";// ─── 全局分组计数器系统 ──────────────────────────────\n// groups: 以 group 字符串为键，存储该组内活跃的 Anchor DOM 元素\nconst groups=new Map;// listeners: 全局监听器，任何分组发生变化时都会通知所有 Counter 重新计算\nconst listeners=new Set;function addAnchor(el,group){if(!groups.has(group)){groups.set(group,new Set);}groups.get(group).add(el);listeners.forEach(fn=>fn());}function removeAnchor(el,group){const set=groups.get(group);if(set){set.delete(el);if(set.size===0)groups.delete(group)// 清理空组\n;listeners.forEach(fn=>fn());}}function getCount(group){return groups.get(group)?.size??0;}// ─── 主组件 ─────────────────────────────────────────\nexport default function CMSCounter(props){const{mode,group,color,fontSize,fontWeight}=props;const[displayCount,setDisplayCount]=useState(0);const anchorRef=useRef(null);// ── Anchor 模式：向全局系统注册自己所属的分组 ──\nuseEffect(()=>{if(mode!==\"anchor\")return;const el=anchorRef.current;const currentGroup=group??\"\";if(el){addAnchor(el,currentGroup);}return()=>{if(el)removeAnchor(el,currentGroup);};},[mode,group]);// ── Counter 模式：监听并显示自己分组的实时计数 ──\nuseEffect(()=>{if(mode!==\"counter\")return;const currentGroup=group??\"\";const listener=()=>{setDisplayCount(getCount(currentGroup));};listeners.add(listener);// 初始化显示\nlistener();return()=>{listeners.delete(listener);};},[mode,group]);// ── Anchor 渲染（不可见标记） ─────────────────\nif(mode===\"anchor\"){return /*#__PURE__*/_jsx(\"div\",{ref:anchorRef,\"data-framer-cms-counter-anchor\":\"true\",style:{width:1,height:1,opacity:0,pointerEvents:\"none\",overflow:\"hidden\"}});}// ── Counter 渲染 ─────────────────────────────\nconst counterStyle={color:color||\"#000000\",fontSize:fontSize||16,fontWeight:fontWeight||400,display:\"inline-block\",fontFamily:\"Inter, system-ui, sans-serif\"};return /*#__PURE__*/_jsx(\"span\",{style:counterStyle,children:displayCount});}// ─── 属性控制面板（添加 Group 输入框） ──────────────\naddPropertyControls(CMSCounter,{mode:{type:ControlType.Enum,title:\"Mode\",options:[\"counter\",\"anchor\"],defaultValue:\"counter\"},group:{type:ControlType.String,title:\"Group\",defaultValue:\"\",placeholder:\"e.g. 00\"},color:{type:ControlType.Color,title:\"Color\",defaultValue:\"#000000\"},fontSize:{type:ControlType.Number,title:\"Font Size\",defaultValue:16,min:8,max:200,step:1},fontWeight:{type:ControlType.Enum,title:\"Font Weight\",options:[100,200,300,400,500,600,700,800,900],defaultValue:400}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"CMSCounter\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Cms_count.map"],"mappings":"yLAGwB,SAAS,EAAU,EAAG,EAAM,CAAK,EAAO,IAAI,EAAM,EAAE,EAAO,IAAI,EAAM,IAAI,IAAI,CAAE,EAAO,IAAI,EAAM,CAAC,IAAI,EAAG,CAAC,EAAU,QAAQ,GAAI,GAAI,CAAC,CAAE,SAAS,EAAa,EAAG,EAAM,CAAC,IAAM,EAAI,EAAO,IAAI,EAAM,CAAI,IAAK,EAAI,OAAO,EAAG,CAAI,EAAI,OAAO,GAAE,EAAO,OAAO,EAAM,CACpR,EAAU,QAAQ,GAAI,GAAI,CAAC,EAAG,SAAS,EAAS,EAAM,CAAC,OAAO,EAAO,IAAI,EAAM,EAAE,MAAM,EACxF,SAAwB,EAAW,EAAM,CAAC,GAAK,CAAC,OAAK,QAAM,QAAM,WAAS,cAAY,EAAW,CAAC,EAAa,GAAiBA,EAAS,EAAE,CAAO,EAAUC,EAAO,KAAK,CAKV,OAJ9J,MAAc,CAAC,GAAG,IAAO,SAAS,OAAO,IAAM,EAAG,EAAU,QAAc,EAAa,GAAO,GAAsC,OAAhC,GAAI,EAAU,EAAG,EAAa,KAAY,CAAI,GAAG,EAAa,EAAG,EAAa,GAAK,CAAC,EAAK,EAAM,CAAC,CACpM,MAAc,CAAC,GAAG,IAAO,UAAU,OAAO,IAAM,EAAa,GAAO,GAAS,MAAa,CAAC,EAAgB,EAAS,EAAa,CAAC,EACvH,OAD0H,EAAU,IAAI,EAAS,CAC5J,GAAU,KAAW,CAAC,EAAU,OAAO,EAAS,GAAK,CAAC,EAAK,EAAM,CAAC,CAC/D,IAAO,SAA8B,EAAK,MAAM,CAAC,IAAI,EAAU,iCAAiC,OAAO,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,cAAc,OAAO,SAAS,SAAS,CAAC,CAAC,CACH,EAAK,OAAO,CAAC,MAA5K,CAAC,MAAM,GAAO,UAAU,SAAS,GAAU,GAAG,WAAW,GAAY,IAAI,QAAQ,eAAe,WAAW,+BAA+B,CAAqD,SAAS,EAAa,CAAC,sBAV9L,IAA6C,IAAoD,CAEtI,EAAO,IAAI,IACX,EAAU,IAAI,IAQpB,EAAoB,EAAW,CAAC,KAAK,CAAC,KAAK,EAAY,KAAK,MAAM,OAAO,QAAQ,CAAC,UAAU,SAAS,CAAC,aAAa,UAAU,CAAC,MAAM,CAAC,KAAK,EAAY,OAAO,MAAM,QAAQ,aAAa,GAAG,YAAY,UAAU,CAAC,MAAM,CAAC,KAAK,EAAY,MAAM,MAAM,QAAQ,aAAa,UAAU,CAAC,SAAS,CAAC,KAAK,EAAY,OAAO,MAAM,YAAY,aAAa,GAAG,IAAI,EAAE,IAAI,IAAI,KAAK,EAAE,CAAC,WAAW,CAAC,KAAK,EAAY,KAAK,MAAM,cAAc,QAAQ,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,CAAC,aAAa,IAAI,CAAC,CAAC"}