{"version":3,"file":"modern.widget.BlU3FbzT.js","names":[],"sources":["../../src/modern/features/widget/utils.js","../../src/modern/features/widget/Widget.js","../../src/modern/features/widget/index.js"],"sourcesContent":["function initGTM(key) {\n if (!key) return\n\n ;(function(w, d, s, l, i) {\n w[l] = w[l] || []\n w[l].push({ 'gtm.start': new Date().getTime(), event: 'gtm.js' })\n var f = d.getElementsByTagName(s)[0],\n j = d.createElement(s),\n dl = l != 'dataLayer' ? '&l=' + l : ''\n j.async = true\n j.src = 'https://www.googletagmanager.com/gtm.js?id=' + i + dl\n f.parentNode.insertBefore(j, f)\n })(window, document, 'script', 'dataLayer', key)\n}\n\nexport function trackWidget(projectId, analytics = []) {\n const event = {\n 'siteCategory': 'External widget',\n 'pageCategory': 'Project external reference',\n 'ululeProjectId': `${projectId}`\n }\n\n if (analytics && analytics.length > 0) {\n event.poTagIDs = {}\n\n analytics.forEach(analytic => {\n switch (analytic.type) {\n case 'google':\n event.poTagIDs.poGApropertyID = analytic.tag\n break\n case 'google_ads_remarketing':\n event.poTagIDs.poGAdsRemarketingConversionID = analytic.tag\n break\n case 'facebook':\n event.poTagIDs.poFBpixelID = analytic.tag\n break\n case 'twitter':\n event.poTagIDs.poTWpixelID = analytic.tag\n break\n }\n })\n }\n\n window.dataLayer.push(event)\n\n // NOTE: Google Tag Manager MUST be instanciated after first dataLayer push\n initGTM(window.UFE.gtmKey)\n}\n","import React from 'react'\nimport PropTypes from 'prop-types'\n\nimport { t, tn } from '@owl-nest/localize'\nimport { CardTypeSelector } from '@ulule/duvet/CardTypeSelector.tsx'\nimport * as utils from '@owl-nest/utils'\n\nimport { getProgress, getShortCountdown, getStatus } from '$models/projects'\nimport { projectShape } from '$utils/prop-types'\n\nconst Widget = ({ project, rates }) => {\n const progress = getProgress(project)\n const countdownText = getShortCountdown(project)\n\n // TODO: Remove this once we have the spec for the archived version of the project card.\n if (project.is_cancelled) {\n return null\n }\n\n return (\n \n )\n}\n\nWidget.propTypes = {\n project: projectShape,\n rates: PropTypes.object,\n}\n\nexport default Widget\n","import * as React from 'react'\nimport * as ReactDOM from 'react-dom/client'\n\nimport { configure as initApiRequester, api } from '$utils/apiRequester'\nimport { trackWidget } from './utils'\nimport Widget from './Widget'\n\nconst { projectSlug } = window.WIDGET_DATA\nconst rates = window.CURRENCIES.RATES\nconst container = document.getElementById('react-ulule-widget')\n\nconst EXTRA_FIELDS = ['partnerships']\n\ninitApiRequester(window.UFE.api)\n\nfunction renderWidget(project) {\n const root = ReactDOM.createRoot(container)\n root.render()\n}\n\nwindow.addEventListener('js:location:loaded', async (event) => {\n api('ulule')\n .get(`/projects/${projectSlug}?extra_fields=${EXTRA_FIELDS.join(',')}`)\n .then((project) => {\n if (project.analytics_count) {\n api('ulule')\n .get(`/projects/${project.id}/analytics`)\n .then((data) => {\n const analytics = (data && data.analytics) || []\n trackWidget(project.id, analytics)\n })\n } else {\n trackWidget(project.id)\n }\n\n renderWidget(project)\n })\n})\n"],"mappings":"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"}