{"version":3,"file":"FAQSchemaItem.CSSlxJLU.mjs","names":[],"sources":["https:/framerusercontent.com/modules/DARY0QJCtxabr8Bu361x/cgIQuW3wmV652jJSKdUL/FAQSchemaItem.js"],"sourcesContent":["// ─────────────────────────────────────────────────────────────\n//  FAQSchemaItem.tsx  —  Framer Code Component\n//  온리프의원 강남 · FAQ Schema 자동 생성기\n//\n//  사용법:\n//    1. 각 페이지에 숨긴 Collection List 추가 (카테고리 필터 적용)\n//    2. Collection List 안에 이 컴포넌트 삽입\n//    3. question → CMS \"질문\" 필드 연결\n//    4. answer   → CMS \"답변\" 필드 연결\n//    5. Publish → FAQPage JSON-LD 자동 head 주입\n// ─────────────────────────────────────────────────────────────\nimport{jsx as _jsx}from\"react/jsx-runtime\";import{addPropertyControls,ControlType}from\"framer\";import{useEffect}from\"react\";// ── 페이지 단위 전역 레지스트리 ──────────────────────────────\n// 각 CMS 아이템(컴포넌트 인스턴스)이 마운트될 때마다 등록되고,\n// 모든 아이템이 등록된 뒤 한 번만 head에 주입합니다.\nconst registry=new Map;let flushTimer=null;function injectSchema(){// 기존 스키마 제거\nconst existing=document.getElementById(\"onlif-faq-schema\");if(existing)existing.remove();if(registry.size===0)return;const items=Array.from(registry.values());const script=document.createElement(\"script\");script.id=\"onlif-faq-schema\";script.type=\"application/ld+json\";script.text=JSON.stringify({\"@context\":\"https://schema.org\",\"@type\":\"FAQPage\",mainEntity:items.map(({q,a})=>({\"@type\":\"Question\",name:q,acceptedAnswer:{\"@type\":\"Answer\",text:a}}))},null,2);document.head.appendChild(script);}// ── 컴포넌트 ─────────────────────────────────────────────────\nexport function FAQSchemaItem({question=\"\",answer=\"\",itemKey=\"\"}){useEffect(()=>{if(!question||!answer)return;// itemKey가 없으면 질문 텍스트를 키로 사용\nconst key=itemKey||question;registry.set(key,{q:question,a:answer});// 모든 아이템이 등록된 후 한 번만 flush\nif(flushTimer)clearTimeout(flushTimer);flushTimer=setTimeout(injectSchema,80);return()=>{registry.delete(key);if(flushTimer)clearTimeout(flushTimer);flushTimer=setTimeout(injectSchema,80);};},[question,answer,itemKey]);// 화면에 렌더링되지 않는 invisible 컴포넌트\nreturn /*#__PURE__*/_jsx(\"div\",{style:{display:\"none\"},\"aria-hidden\":\"true\"});}// ── Framer Property Controls ──────────────────────────────────\naddPropertyControls(FAQSchemaItem,{itemKey:{type:ControlType.String,title:\"항목 Key\",description:\"CMS slug 또는 고유 ID 연결 권장 (중복 방지)\",defaultValue:\"\"},question:{type:ControlType.String,title:\"질문\",description:\"CMS '질문' 필드 연결\",defaultValue:\"질문을 입력하거나 CMS 필드를 연결하세요\"},answer:{type:ControlType.String,title:\"답변\",description:\"CMS '답변' 필드 연결\",defaultValue:\"답변을 입력하거나 CMS 필드를 연결하세요\",displayTextArea:true}});\nexport const __FramerMetadata__ = {\"exports\":{\"FAQSchemaItem\":{\"type\":\"reactComponent\",\"name\":\"FAQSchemaItem\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./FAQSchemaItem.map"],"mappings":"qKAc2C,SAAS,GAAc,CAClE,IAAM,EAAS,SAAS,eAAe,kBAAkB,EAAgC,GAA3B,GAAS,EAAS,OAAO,EAAK,EAAS,OAAO,EAAE,OAAO,IAAM,EAAM,MAAM,KAAK,EAAS,OAAO,CAAC,EAAQ,EAAO,SAAS,cAAc,QAAQ,EAAE,EAAO,GAAG,mBAAmB,EAAO,KAAK,sBAAsB,EAAO,KAAK,KAAK,UAAU,CAAC,WAAW,qBAAqB,QAAQ,UAAU,WAAW,EAAM,KAAK,CAAC,IAAE,QAAM,CAAC,QAAQ,WAAW,KAAK,EAAE,eAAe,CAAC,QAAQ,SAAS,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,SAAS,KAAK,YAAY,CAAM,CAAE,CAC3e,SAAgB,EAAc,CAAC,WAAS,GAAG,SAAO,GAAG,UAAQ,IAAI,CAGjE,OAHkE,MAAc,CAAC,GAAG,CAAC,GAAU,CAAC,EAAO,OACvG,IAAM,EAAI,GAAS,EAC2D,OADlD,EAAS,IAAI,EAAI,CAAC,EAAE,EAAS,EAAE,CAAM,CAAC,EAC/D,GAAW,aAAa,CAAU,EAAE,EAAW,WAAW,EAAa,EAAE,MAAY,CAAC,EAAS,OAAO,CAAG,EAAK,GAAW,aAAa,CAAU,EAAE,EAAW,WAAW,EAAa,EAAE,CAAE,CAAE,EAAE,CAAC,EAAS,EAAO,CAAO,CAAC,EACrM,EAAK,MAAM,CAAC,MAAM,CAAC,QAAQ,MAAM,EAAE,cAAc,MAAM,CAAC,CAAE,qBARpC,IAAoD,IAA6B,EAGrH,EAAS,IAAI,IAAQ,EAAW,KAMtC,EAAoB,EAAc,CAAC,QAAQ,CAAC,KAAK,EAAY,OAAO,MAAM,SAAS,YAAY,kCAAkC,aAAa,EAAE,EAAE,SAAS,CAAC,KAAK,EAAY,OAAO,MAAM,KAAK,YAAY,iBAAiB,aAAa,yBAAyB,EAAE,OAAO,CAAC,KAAK,EAAY,OAAO,MAAM,KAAK,YAAY,iBAAiB,aAAa,0BAA0B,gBAAgB,EAAI,CAAC,CAAC"}