-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathFacebookPixel.svelte
56 lines (47 loc) · 1.21 KB
/
FacebookPixel.svelte
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
<script>
import { onMount } from 'svelte'
import { queue } from './queue.js'
export let enabled = true
export let version = '2.0'
export let pixels = []
onMount(() => {
if (!enabled) { return }
init()
})
export function init () {
const fn = function (f, b, e, v, n, t, s) {
if (f.fbq) return
n = f.fbq = function () {
n.callMethod
? n.callMethod.apply(n, arguments) : n.queue.push(arguments)
}
if (!f._fbq) f._fbq = n
n.push = n
n.loaded = !0
n.version = version
n.queue = []
t = b.createElement(e)
t.async = !0
t.src = v
s = b.getElementsByTagName(e)[0]
s.parentNode.insertBefore(t, s)
}
fn(window, document, 'script', 'https://connect.facebook.net/en_US/fbevents.js')
callback()
}
function event (cmd, params) {
window.fbq(cmd, ...params)
}
function callback () {
if (!window.fbq) { return }
pixels.forEach(pixel => event('init', [ pixel ]))
return queue.subscribe(queue => {
let next = queue.length && queue.shift()
while (next) {
const { type, params } = next
event(type, params)
next = queue.shift()
}
})
}
</script>