{"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(, document.getElementById('image-loader'));\n\n// This is a hack to prevent iPad scroll failure\n// because