{"version":3,"file":"photo-loader-dcf7ce19.js","sources":["../../../client/src/javascripts/customer_pages/_photo-loader/photo-loader-omni-analytics.js","../../../client/src/javascripts/entry_points/photo-loader.jsx"],"sourcesContent":["\nimport getImageSources from './image-sources';\nimport { builderDispatch, WebUI, PrismUI } from '../_utils/ui';\n\n(function () {\n  if (typeof s_omni !== 'object') {\n    return;\n  }\n\n  let old_omni = {};\n\n  const omni = {\n    adid: s_omni.getQueryParam('adid'),\n    fbref: s_omni.getQueryParam('fb_ref'),\n    sourceid: s_omni.getQueryParam('sourceid'),\n    povid: s_omni.getQueryParam('povid'),\n    findingMethod: s_omni.getQueryParam('findingMethod'),\n    getCampaignId() {\n      if (this.adid) {\n        return this.adid;\n      }\n      if (this.fbref) {\n        return this.fbref.split('_')[1];\n      }\n      if (this.sourceid) {\n        return this.sourceid;\n      } return '';\n    },\n  }; s_omni.campaign = omni.getCampaignId(); s_omni.channel = window.location.hostname;\n  // Create IE + others compatible event handler\n  const eventMethod = window.addEventListener ? 'addEventListener' : 'attachEvent';\n  const eventer = window[eventMethod];\n  const messageEvent = (eventMethod === 'attachEvent') ? 'onmessage' : 'message';\n\n  //* ***********************************************************************\n  // Event Tracking Code\n\n  function setPhotoUpload() {\n    old_omni = $.extend({}, s_omni); // Clone old vars\n\n    s_omni.pageName = 'Upload Photos';\n    s_omni.prop1 = 'Photo Upload';\n    s_omni.prop2 = 'Upload Photos';\n    s_omni.prop3 = '';\n    s_omni.prop4 = '';\n    s_omni.prop5 = '';\n    s_omni.events = 'event106';\n  }\n\n\n  function unsetPhotoUpload() {\n    s_omni.pageName = old_omni.pageName;\n    s_omni.prop1 = old_omni.prop1;\n    s_omni.prop2 = old_omni.prop2;\n    s_omni.prop3 = old_omni.prop3;\n    s_omni.prop4 = old_omni.prop4;\n    s_omni.events = old_omni.events;\n  }\n\n  const photoStrings = {};\n  const imageSources = getImageSources();\n  if (imageSources) {\n    imageSources.forEach((source) => {\n      photoStrings[source.service] = source.title;\n    });\n  }\n\n  function getServiceName(service) {\n    if (photoStrings.hasOwnProperty(service)) {\n      return photoStrings[service];\n    }\n    return 'Unknown';\n  }\n\n  function getEventName(event, eventType) {\n    if (WebUI && eventType && eventType.hasOwnProperty(event)) {\n      return eventType[event];\n    }\n    return 'Unknown';\n  }\n\n  //* ***********************************************************************\n  // Click Event Listeners\n\n  const clickDispatchToken = builderDispatch.register((payload) => {\n    try {\n      switch (payload.type) {\n        //* ********************************************************************\n        // Photo Uploader Cases\n        case WebUI.PROMPT_LOGIN:\n          setPhotoUpload();\n          omniLinkClick('o', getEventName('pleaselogin', WebUI.PhotoEvents));\n          unsetPhotoUpload();\n          break;\n\n        case WebUI.PHOTO_EVENT_UPLOAD:\n          setPhotoUpload();\n          omniLinkClick('o', getEventName(payload.uploadEvent, WebUI.PhotoEvents));\n          unsetPhotoUpload();\n          break;\n\n        case WebUI.PHOTO_SERVICE_SELECTED:\n          setPhotoUpload();\n          omniLinkClick('o', `Toggle: ${getServiceName(payload.service)}`);\n          unsetPhotoUpload();\n          break;\n\n        // Service Connected\n        case WebUI.PHOTO_SERVICE_CONNECTED:\n          setPhotoUpload();\n          omniLinkClick('o', `Connect: ${getServiceName(payload.service)}`);\n          unsetPhotoUpload();\n          break;\n\n        // Prints Builder Cases\n        case PrismUI.ADD_PHOTOS:\n          omniLinkClick('o', 'Add Photos');\n          break;\n\n        case WebUI.PHOTO_EVENT_CHANGE_CLICKED:\n        case WebUI.PHOTO_EVENT_ADVANCED_EDIT:\n        case WebUI.PHOTO_EVENT_RESIZE_ALL:\n        case WebUI.PHOTO_EVENT_CHANGE_QUANTITY:\n        case WebUI.PHOTO_EVENT_PREVIEW:\n        case WebUI.PHOTO_EVENT_EDIT:\n        case WebUI.PHOTO_EVENT_ADD_TO_CART:\n        case WebUI.PHOTO_EVENT_REMOVE_PRINTS_MODAL:\n        case WebUI.PHOTO_EVENT_REMOVE_PRINTS_CONFIRM:\n        case WebUI.PHOTO_EVENT_REMOVE_PRINTS_CANCEL:\n\n          omniLinkClick('o', getEventName(payload.type, WebUI.PhotoEventStrings));\n          break;\n\n        case PrismUI.EVENT_CUSTOMIZE_COVER:\n        case PrismUI.EVENT_CUSTOMIZE_DESIGNS:\n        case PrismUI.EVENT_CUSTOMIZE_LAYOUTS:\n        case PrismUI.EVENT_CUSTOMIZE_ENVELOPE:\n        case PrismUI.EVENT_MORE_DESIGNS:\n        case PrismUI.EVENT_TEMPLATES:\n        case PrismUI.EVENT_COLORS:\n        case PrismUI.EVENT_ADD_TO_CART:\n        case PrismUI.EVENT_SAVE_PROJECT:\n        case PrismUI.EVENT_EDIT_PROJECT_NAME:\n        case PrismUI.EVENT_CHANGE:\n        case PrismUI.EVENT_AUTO_FILL:\n        case PrismUI.EVENT_ADD_PHOTOS:\n        case PrismUI.EVENT_HIDE_PHOTOS:\n        case PrismUI.EVENT_HIDE_USED:\n        case PrismUI.EVENT_SHOW_PHOTOS:\n        case PrismUI.EVENT_PAGES:\n        case PrismUI.EVENT_PREVIEW:\n        case PrismUI.EVENT_EDIT:\n\n          omniLinkClick('o', getEventName(payload.type, PrismUI.EventStrings));\n          break;\n      }\n    } catch (e) {\n      window.console && window.console.warn && window.console.warn(e);\n    }\n  });\n\n  //* ***********************************************************************\n  // Connect Event Listeners\n\n  eventer(messageEvent, (e) => {\n    const msg = e.data;\n\n    if (typeof msg !== 'string') {\n      return;\n    }\n    if (!msg.match('Attempt to connect to')) {\n      return;\n    }\n    const parts = msg.split('///');\n\n    if (parts[1]) {\n      // Decoupled due to odd cross domain issues see sporadically\n      setTimeout(() => {\n        builderDispatch.dispatch({ type: WebUI.PHOTO_SERVICE_CONNECTED, service: parts[1] });\n      }, 100);\n    }\n  }, false);\n\n\n  //* ***********************************************************************\n  // Omni Dispatcher\n\n  function omniLinkClick(linkType, omniLinkName) {\n    const s_linkTrackVarsTemp = s_omni.linkTrackVars;\n    const s_linkTrackEventsTemp = s_omni.linkTrackEvents;\n    s_omni.linkTrackVars = 'prop54';\n    s_omni.linkTrackEvents = 'None';\n    s_omni.prop54 = `${s_omni.prop2} | ${omniLinkName}`;\n    s_omni.tl(omni, linkType, 'Link click');\n    // Clean Up\n    s_omni.linkTrackVars = s_linkTrackVarsTemp;\n    s_omni.linkTrackEvents = s_linkTrackEventsTemp;\n    s_omni.prop54 = '';\n  }\n\n  //* ***********************************************************************\n  // Clean Up\n  window.addEventListener('unload', () => {\n    builderDispatch.unregister(clickDispatchToken); // Clean up on exit\n  });\n}());\n","// Import Libraries\nimport React from 'react';\nimport ReactDOM from 'react-dom';\n// Import JS Modules\nimport 'Utils/login-launcher';\nimport Loader from '../customer_pages/_photo-loader/photo-loader';\nimport '../customer_pages/_libs/analytics/checkout-google-analytics.js';\nimport '../customer_pages/_photo-loader/photo-loader-omni-analytics';\n\n// Render Loader\nReactDOM.render(<Loader />, document.getElementById('image-loader'));\n\n// This is a hack to prevent iPad scroll failure\n// because <iframe> elements derive their height from child document content\n// which varies to zero on dom refresh under certain circumstances.\n//\n// 0 height automatically resets scrollTop property to 0, which persists\n// even when iframe height is recalculated.\n// This sets height on iframe element in parent page explicitly, so iframe\n// height never varies to zero, even if the content does.\n\nif (/iPad|iPhone|iPod/.test(navigator.platform)) {\n  window.addEventListener('message', msg => {\n    if (msg.data && msg.data.freize_height) {\n      const h = msg.data.freize_height;\n      const activeIframe = $(\n        '.image-loader-service:visible .iframe-container iframe'\n      );\n      activeIframe.css('height', h);\n    }\n  });\n}\n"],"names":["old_omni","omni","eventMethod","eventer","messageEvent","setPhotoUpload","unsetPhotoUpload","photoStrings","imageSources","getImageSources","source","getServiceName","service","getEventName","event","eventType","WebUI","clickDispatchToken","builderDispatch","payload","omniLinkClick","PrismUI","e","msg","parts","linkType","omniLinkName","s_linkTrackVarsTemp","s_linkTrackEventsTemp","ReactDOM","React","Loader","h"],"mappings":"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"}