{
  "version": 3,
  "sources": ["../../../../../../owl-nest/common/sharing/src/sharing.ts", "../../../../../../owl-nest/common/sharing/src/useSharing.ts", "../../../../../../owl-nest/common/sharing/index.ts"],
  "sourcesContent": ["import { Project, PublicUser } from '@owl-nest/api-client/latest'\nimport * as model from '@owl-nest/models'\nimport * as env from '@owl-nest/config'\nimport { SOCIAL_NETWORK } from '@owl-nest/shadow'\nimport { text } from '@owl-nest/utils'\n\nimport { Platform } from './types'\n\n/* TODO:\n ** - Handle case where social providers are blocked (mainly Facebook SDK since others are merely anchors)\n ** - Make the Facebook SDK import and init dynamic, invoking it only when user tries to share to FB/Messenger\n */\n\ndeclare global {\n  interface Window {\n    FB?: any\n  }\n}\n\nexport const providers = {\n  clipboard: () => {},\n  facebook: (URL: string, track: (socialAction: string, socialNetwork: SOCIAL_NETWORK) => void) => {\n    if (window.FB && URL) {\n      track('click: Share', SOCIAL_NETWORK.FACEBOOK)\n\n      window.FB.ui(\n        {\n          method: 'share',\n          href: URL,\n        },\n        (response: unknown) => {\n          if (response !== undefined) {\n            track('Share', SOCIAL_NETWORK.FACEBOOK)\n          }\n        },\n      )\n    }\n  },\n  linkedin: (URL: string, track: (socialAction: string, socialNetwork: SOCIAL_NETWORK) => void) => {\n    const link = `http://www.linkedin.com/shareArticle?url=${URL}`\n    openCenteredWindow(link)\n    track('click: Share', SOCIAL_NETWORK.LINKEDIN)\n  },\n  messenger: (URL: string, track: (socialAction: string, socialNetwork: SOCIAL_NETWORK) => void) => {\n    track('click: Share', SOCIAL_NETWORK.MESSENGER)\n    // TODO: FIXME: Use a more solid check (based on actual device data, not just viewport)\n    if (!window.matchMedia('(min-width: 768px)').matches && env.FACEBOOK_APP_ID) {\n      window.open(`fb-messenger://share?link=${URL}&app_id=${encodeURIComponent(env.FACEBOOK_APP_ID)}`)\n    } else if (window.FB) {\n      window.FB.ui(\n        {\n          method: 'send',\n          link: URL,\n        },\n        (response: unknown) => {\n          if (response !== undefined) {\n            track('Share', SOCIAL_NETWORK.MESSENGER)\n          }\n        },\n      )\n    }\n  },\n  native: () => {},\n  twitter: (URL: string, track: (socialAction: string, socialNetwork: SOCIAL_NETWORK) => void) => {\n    const hashtags = encodeURIComponent('ulule,crowdfunding')\n    const link = `https://twitter.com/share?url=${URL}&hashtags=${hashtags}`\n    openCenteredWindow(link)\n    track('click: Share', SOCIAL_NETWORK.TWITTER)\n  },\n  whatsapp: (URL: string, track: (socialAction: string, socialNetwork: SOCIAL_NETWORK) => void) => {\n    openCenteredWindow(`https://api.whatsapp.com/send?text=${URL}\"`)\n    track('click: Share', SOCIAL_NETWORK.WHATSAPP)\n  },\n} as const\n\nexport function getSharingURL<PROJECT_EXTRA_FIELDS extends string = ''>(\n  context: string,\n  platform: Platform,\n  project: Project<PROJECT_EXTRA_FIELDS>,\n  user?: PublicUser,\n): string {\n  const baseURL = project.sharing_urls ? model.i18n.get(project.sharing_urls) : project.absolute_url\n  const platformName = platform === 'clipboard' ? '--http.referer--' : text.capitalize(platform)\n\n  const UTMBase = `utm_campaign=presale_${project.id}&utm_source=shared-from-Ulule-${context}-on-${platformName}`\n  const UTMUserData = user?.id !== undefined ? `&utm_medium=uluid_${user.id}` : ''\n  // Twitter needs the URL to be URI encoded.\n  const UTM =\n    platform === 'twitter' || platform === 'whatsapp'\n      ? encodeURIComponent(`${UTMBase}${UTMUserData}`)\n      : `${UTMBase}${UTMUserData}`\n\n  return `${baseURL}?${UTM}`\n}\n\nfunction openCenteredWindow(URL: string): void {\n  // Open in the middle of window\n  const height = 400\n  const width = 550\n  const left = window.outerWidth / 2 + (window.screenX || window.screenLeft || 0) - width / 2\n  const top = window.outerHeight / 2 + (window.screenY || window.screenTop || 0) - height / 2\n\n  const config = {\n    centerscreen: 'yes',\n    chrome: 'yes',\n    directories: 'no',\n    height,\n    left,\n    location: 'no',\n    menubar: 'no',\n    resizable: 'no',\n    scrollbars: 'yes',\n    status: 'no',\n    toolbar: 'no',\n    top,\n    width,\n  } as const\n\n  window.open(\n    URL,\n    undefined,\n    Object.keys(config)\n      .map((key) => `${key}=${config[key as keyof typeof config]}`)\n      .join(', '),\n  )\n}\n", "import { Project, PublicUser } from '@owl-nest/api-client/latest'\nimport * as shadow from '@owl-nest/shadow'\n\nimport { providers, getSharingURL } from './sharing'\nimport { Platform } from './types'\n\ntype SharingHelpers = {\n  shareTo: (platform: Platform, extra?: any) => void\n}\n\nexport function useSharing<PROJECT_EXTRA_FIELDS extends string = ''>(\n  context: string,\n  project: Project<PROJECT_EXTRA_FIELDS>,\n  user?: PublicUser,\n): SharingHelpers {\n  const tracking = shadow.useTracking()\n  return { shareTo }\n\n  function shareTo(platform: Platform, extra?: any): void {\n    const URL = getSharingURL(context, platform, project, user)\n    providers[platform](URL, (socialAction: string, socialNetwork: shadow.SOCIAL_NETWORK) => {\n      tracking.social.track({\n        socialAction,\n        socialNetwork,\n        socialTarget: project.absolute_url,\n        ...extra,\n      })\n    })\n  }\n}\n", "export { getSharingURL } from './src/sharing'\nexport { useSharing } from './src/useSharing'\nexport type { Platform } from './src/types'\n"],
  "mappings": "0PAAAA,IAAAC,IAmBO,IAAMC,EAAY,CACvB,UAAW,IAAM,CAAC,EAClB,SAAU,CAACC,EAAaC,IAAyE,CAC3F,OAAO,IAAMD,IACfC,EAAM,yBAAuC,EAE7C,OAAO,GAAG,GACR,CACE,OAAQ,QACR,KAAMD,CACR,EACCE,GAAsB,CACjBA,IAAa,QACfD,EAAM,kBAAgC,CAE1C,CACF,EAEJ,EACA,SAAU,CAACD,EAAaC,IAAyE,CAC/F,IAAME,EAAO,4CAA4C,OAAAH,GACzDI,EAAmBD,CAAI,EACvBF,EAAM,yBAAuC,CAC/C,EACA,UAAW,CAACD,EAAaC,IAAyE,CAChGA,EAAM,0BAAwC,EAE1C,CAAC,OAAO,WAAW,oBAAoB,EAAE,SAAeI,EAC1D,OAAO,KAAK,6BAA6B,OAAAL,EAAG,YAAW,0BAAuBK,CAAe,EAAG,EACvF,OAAO,IAChB,OAAO,GAAG,GACR,CACE,OAAQ,OACR,KAAML,CACR,EACCE,GAAsB,CACjBA,IAAa,QACfD,EAAM,mBAAiC,CAE3C,CACF,CAEJ,EACA,OAAQ,IAAM,CAAC,EACf,QAAS,CAACD,EAAaC,IAAyE,CAC9F,IAAMK,EAAW,mBAAmB,oBAAoB,EAClDH,EAAO,iCAAiC,OAAAH,EAAG,cAAa,OAAAM,GAC9DF,EAAmBD,CAAI,EACvBF,EAAM,wBAAsC,CAC9C,EACA,SAAU,CAACD,EAAaC,IAAyE,CAC/FG,EAAmB,sCAAsC,OAAAJ,EAAG,IAAG,EAC/DC,EAAM,yBAAuC,CAC/C,CACF,EAEO,SAASM,EACdC,EACAC,EACAC,EACAC,EACQ,CACR,IAAMC,EAAUF,EAAQ,aAAqBG,EAAK,IAAIH,EAAQ,YAAY,EAAIA,EAAQ,aAChFI,EAAeL,IAAa,YAAc,mBAAqBM,EAAK,WAAWN,CAAQ,EAEvFO,EAAU,wBAAwB,OAAAN,EAAQ,GAAE,kCAAiC,OAAAF,EAAO,QAAO,OAAAM,GAC3FG,GAAcN,GAAA,YAAAA,EAAM,MAAO,OAAY,qBAAqB,OAAAA,EAAK,IAAO,GAExEO,EACJT,IAAa,WAAaA,IAAa,WACnC,mBAAmB,GAAG,OAAAO,GAAU,OAAAC,EAAa,EAC7C,GAAG,OAAAD,GAAU,OAAAC,GAEnB,MAAO,GAAG,OAAAL,EAAO,KAAI,OAAAM,EACvB,CAEA,SAASd,EAAmBJ,EAAmB,CAI7C,IAAMmB,EAAO,OAAO,WAAa,GAAK,OAAO,SAAW,OAAO,YAAc,GAAK,IAC5EC,EAAM,OAAO,YAAc,GAAK,OAAO,SAAW,OAAO,WAAa,GAAK,IAAS,EAEpFC,EAAS,CACb,aAAc,MACd,OAAQ,MACR,YAAa,KACb,WACA,KAAAF,EACA,SAAU,KACV,QAAS,KACT,UAAW,KACX,WAAY,MACZ,OAAQ,KACR,QAAS,KACT,IAAAC,EACA,SACF,EAEA,OAAO,KACLpB,EACA,OACA,OAAO,KAAKqB,CAAM,EACf,IAAKC,GAAQ,GAAG,OAAAA,EAAG,KAAI,OAAAD,EAAOC,CAA0B,EAAG,EAC3D,KAAK,IAAI,CACd,CACF,CC7HAC,IAAAC,IAUO,SAASC,EACdC,EACAC,EACAC,EACgB,CAChB,IAAMC,EAAkBC,EAAY,EACpC,MAAO,CAAE,QAAAC,CAAQ,EAEjB,SAASA,EAAQC,EAAoBC,EAAmB,CACtD,IAAMC,EAAMC,EAAcT,EAASM,EAAUL,EAASC,CAAI,EAC1DQ,EAAUJ,CAAQ,EAAEE,EAAK,CAACG,EAAsBC,IAAyC,CACvFT,EAAS,OAAO,MAAMU,EAAA,CACpB,aAAAF,EACA,cAAAC,EACA,aAAcX,EAAQ,cACnBM,EACJ,CACH,CAAC,CACH,CACF,CC7BAO,IAAAC",
  "names": ["init_define_process_env", "init_sentry_release_injection_stub", "providers", "URL", "track", "response", "link", "openCenteredWindow", "FACEBOOK_APP_ID", "hashtags", "getSharingURL", "context", "platform", "project", "user", "baseURL", "i18n_exports", "platformName", "text_exports", "UTMBase", "UTMUserData", "UTM", "left", "top", "config", "key", "init_define_process_env", "init_sentry_release_injection_stub", "useSharing", "context", "project", "user", "tracking", "useTracking", "shareTo", "platform", "extra", "URL", "getSharingURL", "providers", "socialAction", "socialNetwork", "__spreadValues", "init_define_process_env", "init_sentry_release_injection_stub"]
}