{"version":3,"sources":["jsdelivr-header.js","/npm/@riculum/meta-pixel-next@0.1.2/src/MetaPixel.tsx","/npm/@riculum/meta-pixel-next@0.1.2/src/fbpixel.ts","/npm/@riculum/meta-pixel-next@0.1.2/src/useFbClick.ts"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA,iFCeO,SAAS,WAAU,QACI,EAAA,cACA,GAAgB,EAAA,SAChB,GAAW,IAErC,IAAK,EAAS,OAAO,KAmBrB,OACI,KAAA,SAAA,CACI,SAAA,CAAA,IAAC,OAAA,CAAO,GAAG,WAAW,SAAS,mBAC1B,SApBE,ojBAYE,eACb,EAAgB,4BAA8B,kBAUzC,GAAA,IACI,YAEG,SAAA,IAAC,OACG,OAAO,IACP,MAAM,IACN,MAAO,CAAE,QAAS,QAClB,IAAK,kCAAkC,2BACvC,IAAI,SAM5B,CC1DO,IAAM,mBAAqB,CAC9B,WACA,cACA,SACA,YACA,mBACA,iBACA,WACA,OACA,wBA+BE,QAAU,IAAI,KACM,oBAAX,QAAgD,mBAAf,OAAO,KACnD,OAAO,OAAO,EAAI,EAIf,SAAS,gBAAgB,EAAiB,OAC7C,MAAM,EAAe,KAAK,SAAS,SAAS,IAAI,MAAM,GAEtD,MAAO,GAAG,KADQ,KAAK,MAAM,SAAS,OACL,GACrC,CAGO,SAAS,QACZ,EACA,EACA,EAAkB,gBAAgB,IAGlC,MAAM,EAAa,IAAK,EAAQ,SAAU,GAC1C,QAAQ,QAAS,EAAO,EAC5B,CAGO,SAAS,cACZ,EACA,EACA,EAAkB,gBAAgB,IAGlC,MAAM,EAAa,IAAK,EAAQ,SAAU,GAC1C,QAAQ,cAAe,EAAM,EACjC,CAGO,SAAS,cACZ,EACA,EACA,EACA,EAAkB,gBAAgB,IAGlC,MAAM,EAAa,IAAK,EAAQ,SAAU,GAC1C,QAAQ,cAAe,EAAS,EAAO,EAC3C,CAEO,SAAS,oBACZ,EACA,EACA,EACA,EAAkB,gBAAgB,IAGlC,MAAM,EAAa,IAAK,EAAQ,SAAU,GAC1C,QAAQ,oBAAqB,EAAS,EAAM,EAChD,CC7FO,SAAS,WAGd,GACE,MAAO,KACe,aAAd,EAAK,KAAS,QAAoB,EAAK,KAAM,EAAK,QACjD,cAAiB,EAAK,KAAM,EAAK,OAAM,CAEpD,Q","file":"/npm/@riculum/meta-pixel-next@0.1.2/dist/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/@riculum/meta-pixel-next@0.1.2/dist/index.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","\"use client\";\n\nimport Script from \"next/script\";\nimport React from \"react\";\n\ndeclare global {\n    interface Window {\n        __fbPixelInitialized?: boolean;\n        fbq?: (...args: any[]) => void;\n    }\n}\n\nexport type MetaPixelProps = {\n    /** Your Meta Pixel ID (e.g. \"123456789012345\") */\n    pixelId: string;\n    /** Auto-fire PageView after init (default: true) */\n    trackPageView?: boolean;\n    /** Render <noscript> fallback (default: true) */\n    noscript?: boolean;\n};\n\nexport function MetaPixel({\n                              pixelId,\n                              trackPageView = true,\n                              noscript = true,\n                          }: MetaPixelProps) {\n    if (!pixelId) return null;\n\n    const inline = `\n    (function(f,b,e,v,n,t,s){\n      if(f.fbq) return; n=f.fbq=function(){ n.callMethod ?\n      n.callMethod.apply(n,arguments) : n.queue.push(arguments) };\n      if(!f._fbq) f._fbq=n; n.push=n; n.loaded=!0; n.version='2.0';\n      n.queue=[]; t=b.createElement(e); t.async=!0;\n      t.src=v; s=b.getElementsByTagName(e)[0];\n      s.parentNode.insertBefore(t,s)\n    })(window, document, 'script', 'https://connect.facebook.net/en_US/fbevents.js');\n\n    if (!window.__fbPixelInitialized) {\n      window.__fbPixelInitialized = true;\n      fbq('init', '${pixelId}');\n      ${trackPageView ? `fbq('track', 'PageView');` : \"\"}\n    }\n  `;\n\n    return (\n        <>\n            <Script id=\"fb-pixel\" strategy=\"afterInteractive\">\n                {inline}\n            </Script>\n\n            {noscript && (\n                <noscript>\n                    {/* eslint-disable-next-line @next/next/no-img-element */}\n                    <img\n                        height=\"1\"\n                        width=\"1\"\n                        style={{ display: \"none\" }}\n                        src={`https://www.facebook.com/tr?id=${pixelId}&ev=PageView&noscript=1`}\n                        alt=\"\"\n                    />\n                </noscript>\n            )}\n        </>\n    );\n}\n","declare global {\n    interface Window {\n        fbq?: (...args: any[]) => void;\n    }\n}\n\n/** Meta standard events you want to support */\nexport const FB_STANDARD_EVENTS = [\n    \"PageView\",\n    \"ViewContent\",\n    \"Search\",\n    \"AddToCart\",\n    \"InitiateCheckout\",\n    \"AddPaymentInfo\",\n    \"Purchase\",\n    \"Lead\",\n    \"CompleteRegistration\",\n] as const;\n\nexport type FBStandardEvent = typeof FB_STANDARD_EVENTS[number];\n\n/** Helpful param fragments */\ntype Money = { value?: number; currency?: string };\ntype Contents =\n    | { content_ids?: string[]; content_type?: string }\n    | {\n    contents?: Array<{ id: string; quantity?: number; item_price?: number }>;\n    content_type?: string;\n};\n\n/** Strong param typing per event (extend as needed) */\nexport interface FBEventMap {\n    PageView: Record<string, never>;\n    ViewContent: Partial<Contents & Money> & {\n        content_name?: string;\n        content_category?: string;\n    };\n    Search: { search_string?: string } & Partial<Money>;\n    AddToCart: Partial<Contents & Money>;\n    InitiateCheckout: Partial<Contents & Money> & { num_items?: number };\n    AddPaymentInfo: Partial<Contents & Money>;\n    Purchase: Required<Money> & Partial<Contents> & { num_items?: number };\n    Lead: { value?: number; currency?: string; content_name?: string };\n    CompleteRegistration: { status?: boolean } & Partial<Money>;\n}\n\n/** Internal guard that no-ops on SSR or if fbq is missing */\nconst callFbq = (...args: any[]) => {\n    if (typeof window === \"undefined\" || typeof window.fbq !== \"function\") return;\n    window.fbq(...args);\n};\n\n/** Generate a unique event_id (can be order ID or UUID) */\nexport function generateEventId(prefix: string = \"evt\"): string {\n    const randomString = Math.random().toString(36).slice(2);\n    const timestamp = Date.now().toString(36);\n    return `${prefix}_${timestamp}_${randomString}`;\n}\n\n/** Track a standard event with strict param typing */\nexport function fbTrack<E extends FBStandardEvent>(\n    event: E,\n    params?: FBEventMap[E],\n    eventId: string = generateEventId(event)  // Default to generated event_id\n) {\n    // Attach event_id to params\n    const fullParams = { ...params, event_id: eventId };\n    callFbq(\"track\", event, fullParams);\n}\n\n/** Track a custom event */\nexport function fbTrackCustom<T extends Record<string, unknown> = Record<string, unknown>>(\n    name: string,\n    params?: T,\n    eventId: string = generateEventId(name)  // Default to generated event_id\n) {\n    // Attach event_id to params\n    const fullParams = { ...params, event_id: eventId };\n    callFbq(\"trackCustom\", name, fullParams);\n}\n\n/** Optional: target a single Pixel if users run multiple IDs */\nexport function fbTrackSingle<E extends FBStandardEvent>(\n    pixelId: string,\n    event: E,\n    params?: FBEventMap[E],\n    eventId: string = generateEventId(event)  // Default to generated event_id\n) {\n    // Attach event_id to params\n    const fullParams = { ...params, event_id: eventId };\n    callFbq(\"trackSingle\", pixelId, event, fullParams);\n}\n\nexport function fbTrackSingleCustom<T extends Record<string, unknown> = Record<string, unknown>>(\n    pixelId: string,\n    name: string,\n    params?: T,\n    eventId: string = generateEventId(name)  // Default to generated event_id\n) {\n    // Attach event_id to params\n    const fullParams = { ...params, event_id: eventId };\n    callFbq(\"trackSingleCustom\", pixelId, name, fullParams);\n}","\"use client\";\n\nimport { fbTrack, fbTrackCustom, type FBStandardEvent, type FBEventMap } from \"./fbpixel\";\n\ntype Standard<E extends FBStandardEvent> = { type: \"standard\"; name: E; params?: FBEventMap[E] };\ntype Custom<T extends Record<string, unknown> = Record<string, unknown>> = {\n    type: \"custom\"; name: string; params?: T;\n};\n\nexport function useFbClick<\n    E extends FBStandardEvent,\n    T extends Record<string, unknown> = Record<string, unknown>\n>(opts: Standard<E> | Custom<T>) {\n    return () => {\n        if (opts.type === \"standard\") fbTrack(opts.name, opts.params);\n        else fbTrackCustom<T>(opts.name, opts.params);\n    };\n}\n"]}