{"version":3,"file":"Cms_count.BjSxOvyC.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,CAAK,GAAG,EAAO,IAAI,EAAM,IAAI,GAAG,EAAG,EAAO,IAAI,CAAK,CAAC,CAAC,IAAI,CAAE,EAAE,EAAU,QAAQ,GAAI,EAAG,CAAC,CAAE,CAAC,SAAS,EAAa,EAAG,EAAM,CAAC,IAAM,EAAI,EAAO,IAAI,CAAK,EAAK,IAAK,EAAI,OAAO,CAAE,EAAK,EAAI,OAAO,GAAE,EAAO,OAAO,CAAK,EACnR,EAAU,QAAQ,GAAI,EAAG,CAAC,EAAG,CAAC,SAAS,EAAS,EAAM,CAAC,OAAO,EAAO,IAAI,CAAK,CAAC,EAAE,MAAM,CAAE,CAC1F,SAAwB,EAAW,EAAM,CAAC,GAAK,CAAC,OAAK,QAAM,QAAM,WAAS,cAAY,EAAW,CAAC,EAAa,GAAiBA,EAAS,CAAC,EAAQ,EAAUC,EAAO,IAAI,EAKT,OAJ9J,MAAc,CAAC,GAAG,IAAO,SAAS,OAAO,IAAM,EAAG,EAAU,QAAc,EAAa,GAAO,GAAsC,OAAhC,GAAI,EAAU,EAAG,CAAY,MAAa,CAAI,GAAG,EAAa,EAAG,CAAY,CAAE,CAAE,EAAE,CAAC,EAAK,CAAK,CAAC,EACnM,MAAc,CAAC,GAAG,IAAO,UAAU,OAAO,IAAM,EAAa,GAAO,GAAS,MAAa,CAAC,EAAgB,EAAS,CAAY,CAAC,CAAE,EACxH,OAD0H,EAAU,IAAI,CAAQ,EAC3J,EAAS,MAAY,CAAC,EAAU,OAAO,CAAQ,CAAE,CAAE,EAAE,CAAC,EAAK,CAAK,CAAC,EAC9D,IAAO,SAA8B,EAAK,MAAM,CAAC,IAAI,EAAU,iCAAiC,OAAO,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,cAAc,OAAO,SAAS,QAAQ,CAAC,CAAC,EACF,EAAK,OAAO,CAAC,MAAM,CAAjL,MAAM,GAAO,UAAU,SAAS,GAAU,GAAG,WAAW,GAAY,IAAI,QAAQ,eAAe,WAAW,8BAAkF,EAAE,SAAS,CAAY,CAAC,CAAE,qBAVhM,IAA6C,IAAoD,EAErI,EAAO,IAAI,IACX,EAAU,IAAI,IAQpB,EAAoB,EAAW,CAAC,KAAK,CAAC,KAAK,EAAY,KAAK,MAAM,OAAO,QAAQ,CAAC,UAAU,QAAQ,EAAE,aAAa,SAAS,EAAE,MAAM,CAAC,KAAK,EAAY,OAAO,MAAM,QAAQ,aAAa,GAAG,YAAY,SAAS,EAAE,MAAM,CAAC,KAAK,EAAY,MAAM,MAAM,QAAQ,aAAa,SAAS,EAAE,SAAS,CAAC,KAAK,EAAY,OAAO,MAAM,YAAY,aAAa,GAAG,IAAI,EAAE,IAAI,IAAI,KAAK,CAAC,EAAE,WAAW,CAAC,KAAK,EAAY,KAAK,MAAM,cAAc,QAAQ,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,aAAa,GAAG,CAAC,CAAC"}