Click here to print the Lighting Design Spec Sheet
Size Guide View Sizing Guide
Care
Glass, metal and bulbs use a duster once a week to prevent dust build up
Linen/material use a lint roller
Most lights can be wiped down with a damp cloth after light is off
Warning: This product can expose you to chemicals which are known to the State of California to cause cancer. For more information go to www.P65Warnings.ca.gov.
`; } else { modal.innerHTML = `
${levar.info.custom_text.qr_header}
${levar.info.custom_text.qr_footer}
`; } return modal; } /** ************************************** * Create Viewer ********************** ************************************** */ function createViewer() { var levar_frame = document.createElement('iframe'); levar_frame.setAttribute('src', ''); levar_frame.setAttribute('id', 'levar_master_id'); levar_frame.setAttribute('style', levar.styles.modal_iframe); return levar_frame; } /** ************************************** * Shade Listener ********************* ************************************** */ function shadeListener(event) { // Get viewer iframe element var levar_viewer = document.getElementById('levar_master_id'); // If viewer is closed terminate function if (!levar_viewer) return; // Handler for event.data to determine what type of event and how to respond (i.e. in-viewerevents: add to cart, close, etc. ) switch (event.data) { // iPad Exit was activated case 'iPadExit': fullScreenMode('off'); break; // Viewer close button has been activated case 'levarViewerClose': removeViewers(); break; // Default - All other event data types default: break; } }; /** ************************************** * Helper Functions ******************* ************************************** */ // Trigger Conversion Event function triggerConversionEvent() { let levar_conversion_cookie = getCookie('levar_conversion'), levar_pixel_cookie = getCookie('levar_pixel'), levar_checkout_cookie = getCookie('levar_checkout'); if (!levar_pixel_cookie || (levar_checkout_cookie.toString() === window.levar.checkout_id.toString())) return; let data = { created_at: (new Date()).toISOString(), device_type: window.navigator.userAgent, domain: window.location.hostname, event_type: 'levar_purchase', levar_pixel_id: levar_pixel_cookie, levar_session_id: levar_conversion_cookie, origin: 'shopify', price: Math.floor(window.levar.price / 100), quantity: 1, store_id: window.levar.store_id, }; sendLevarAnalytics('levar_purchase', null, data); setCookie('levar_checkout', window.levar.checkout_id, 30); } // Check for existing cookie and return value (e.g. _shopify_y (marketing) cookie, LEVAR analytics) function getCookie(cname) { let name = cname + '='; let decoded_cookie = decodeURIComponent(document.cookie); let ca = decoded_cookie.split(';'); for(let i = 0; i < ca.length; i++) { let c = ca[i]; // Remove space while (c.charAt(0) == ' ') { c = c.substring(1); } if (c.indexOf(name) == 0) { return c.substring(name.length, c.length); } } console.log('<<< LEVAR Cookie NOT Found - "'+ cname +'" >>>'); return ''; } // Set LEVAR analytics cookie function setCookie(cname, cvalue, exdays, override = false) { let existing_cookie = getCookie(cname), existing_cookie_obj, new_cookie_obj; // Bypass this if no cvalue to prevent error when no full pdp levar object (triggerConversionEvent()) // If levar pixel cookie already exists don't reset it if (cvalue && existing_cookie && !override && (cname === 'levar_pixel')) return; let expires = ''; if (exdays > 0) { const d = new Date(); d.setTime(d.getTime() + (exdays*24*60*60*1000)); expires = 'expires='+ d.toUTCString()+';'; } document.cookie = cname + '=' + cvalue + ';' + expires + 'path=/'; console.log('<<< LEVAR Cookie Set - "'+ cname +'" >>>'); } // Generate random UUID function generateUUID() { return ([1e7]+-1e3+-4e3+-8e3+-1e11).replace(/[018]/g, c => (c ^ crypto.getRandomValues(new Uint8Array(1))[0] & 15 >> c / 4).toString(16)); }; // Call to LEVAR getActivation API to return data associated with selected variant function getActivation() { console.log('api url', `${levar.config.api_url}public/models/live?account_owner_uuid=06093825-903f-4d2f-b7ee-9e3c1e045951&mpn=${mpn}`); return fetch(`${levar.config.api_url}public/models/live?account_owner_uuid=06093825-903f-4d2f-b7ee-9e3c1e045951&mpn=${mpn}`).then(res => res.json()); }; // Return true if user is viewing from a mobile device function mobileCheck() { let check = false; (function(a){if(/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(a)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(a.substr(0,4))) check = true;})(navigator.userAgent||navigator.vendor||window.opera); return check; }; // Get viewer url function getViewerURL(activation_id) { var params = '', viewer_url = '', session_values = `&levar_pixel_id=${levar.session_info.levar_pixel_id}&levar_session_id=${levar.session_info.levar_session_id}`, origin = ((activation_id == 'qr') && !levar.session_info.is_mobile) ? 'external' : 'shopify', bottom_drawer = (activation_id == '3d') ? 'off' : 'on'; params = `&fullscreen=on&origin=${origin}&viewer_type=imbedded&view_in_space_off=off&local_off&billboards=off&auto_ar_launch=on&hank_modal=ground_offset&bottom_drawer=${bottom_drawer}`; viewer_url = `${levar.config.viewer_domain}?model=${levar.info.model_3d_id}${session_values}${params}`; console.log("getViewerURL", viewer_url); return viewer_url; } // Generate QR code function generateQRCode() { // Remove exisiting QR Code if it exists document.getElementById('qrcode').innerHTML = ''; // Generate QR Code HTML var QR_CODE = new QRCode(document.getElementById('qrcode'), { width: 250, height: 250, colorDark: '#000000', colorLight: '#ffffff', correctLevel: QRCode.CorrectLevel.H }); // Compile and return QR code QR_CODE.makeCode(getViewerURL('qr')); }; // Push Google Analytics event function sendGoogleAnalytics(activation_id) { var hidden_field = document.querySelector('[name="id"]'), metaTitle = document.querySelector('meta[property="og:title"]'); let data = { 'activation_type': activation_id, 'created_at': (new Date()).toISOString(), 'device_type': levar.session_info.ua, 'domain': window.location.hostname, 'model_3d_id': levar.info.model_3d_id, 'origin': levar.info.origin, 'product_id': levar.info.product_id, 'product_name': levar.info.product_title, 'variant_id': levar.info.store_variant_id, 'variant_name': levar.info.variant_title, 'viewer_url': levar.config.viewer_url, }; if (window.ga4_property_id) data['send_to'] = window.ga4_property_id; gtag('event', 'levar_activation', data); console.log('<<< Send Google Analytics Event >>>', data); } // Push Klaviyo event function sendKlaviyoAnalytics(activation_id) { var _learnq = _learnq || [], hidden_field = document.querySelector('[name="id"]'), metaTitle = document.querySelector('meta[property="og:title"]'); let data = { ActivationType: activation_id, CreatedAt: (new Date()).toISOString(), DeviceType: levar.session_info.ua, Domain: window.location.hostname, Model3dId: levar.info.model_3d_id, Origin: levar.info.origin, ProductId: levar.info.product_id, ProductName: levar.info.product_title, VariantId: levar.info.store_variant_id, VariantName: levar.info.variant_title, ViewerUrl: levar.config.viewer_url, }; _learnq.push(['track', 'LEVAR Activation', data]); console.log('<<< Send Klaviyo Event >>>', data); } // Push levar analytics event function sendLevarAnalytics(event_type, activation_id, data) { let xhr = new XMLHttpRequest; xhr.open('POST', levar.config ? levar.config.events_url : 'https://be9ylitupj.execute-api.us-east-1.amazonaws.com/dev/send/pixel', true); // Works for sychronous firefox xhr.setRequestHeader('Content-Type', 'application/json'); data = data ? data : { created_at: (new Date()).toISOString(), device_type: levar.session_info.ua, domain: window.location.hostname, event_type: event_type, implementation_type: activation_id, levar_pixel_id: levar.session_info.levar_pixel_id, levar_session_id: levar.session_info.levar_session_id, model_3d_id: levar.info.model_3d_id, origin: levar.info.origin, product_id: levar.info.product_id, referrer: levar.session_info.referrer, store_id: levar.info.store_id, variant_id: levar.info.variant_id, }; console.log('<<< Send LEVAR Analytics >>>', event_type, data); xhr.send(JSON.stringify(data)); }; // Enter/Exit full screen mode function fullScreenMode(status, element = null) { if (!element) element = document; if (status === 'off') { if (element.fullscreenElement) { element.exitFullscreen(); } else if (element.webkitFullscreenElement) { element.webkitExitFullscreen(); } else if (element.mozFullScreenElement) { element.mozCancelFullScreen(); } else if (element.msFullscreenElement) { element.msExitFullscreen(); } } else { if(element.requestFullscreen) { element.requestFullscreen(); } else if(element.webkitRequestFullScreen ) { element.webkitRequestFullscreen(); } else if(element.mozRequestFullScreen) { element.mozRequestFullscreen(); } else if(element.msRequestFullscreen) { element.msRequestFullscreen(); } } }; // Close any open viewer function removeViewers(iframe_id = 'levar_master_id', send_analytics = true) { // If viewer iframe does not exist terminate function const viewer_iframe = document.getElementById(iframe_id); if (!viewer_iframe) return; // Close full screen mode fullScreenMode('off', viewer_iframe); // Remove shade event listeners window.removeEventListener('message', null); // Remove viewer close button from DOM const levar_close_btn = document.getElementById('levar_iframe_close'); if (levar_close_btn) levar_close_btn.remove(); // Remove viewer iframe from DOM viewer_iframe.parentNode.removeChild(viewer_iframe); // Close open modal closeModal(); // Trigger levar analytics event for viewer exit if (send_analytics) sendLevarAnalytics('viewer_page_exit'); // Remove open viewer class from body element document.body.classList.remove('levar_player_on'); // Reset levar object session info data for open viewer levar.session_info.viewer_on = false; } // Close any open levar modal function closeModal() { var levar_modal = document.getElementById('levar-modal'); if (!levar_modal) return; levar_modal.remove(); }; // Disable any existing levar activation buttons function disableButtons() { if (levar.elements.activations) { for(var i = 0; i < levar.elements.activations.length; i++) { if (levar.elements.activations[i]) disableActivation(levar.elements.activations[i]); } } }; function disableActivation(activation) { // Apply inactive button styles and remove from tab index activation.style = levar.styles.inactive_button; activation.setAttribute('tabindex', '-1'); } function enableActivation(activation) { // Apply proper activation click event, active button styles and add to tab index activation.style = levar.styles.active_button; activation.setAttribute('tabindex', '0'); activation.addEventListener('click', (event) => launchViewer(activation.dataset.levarActivation, event)); } /** ************************************** * Create LEVAR Object **************** ************************************** */ function createLevarObject() { var levar_object = { config: { api_url: 'https://c0l9hb8b28.execute-api.us-east-1.amazonaws.com/dev/', events_url: 'https://be9ylitupj.execute-api.us-east-1.amazonaws.com/dev/send/pixel', viewer_domain: 'https://viewer.levar.io/', viewer_url: null, viewer_url_empty: null, }, elements: { activation_containers: document.querySelectorAll('[data-levar-activations]'), activations: document.querySelectorAll('[data-levar-activation]'), modal_qr: null, modal_viewer: null, viewer_close_button: '', viewer_close_button_mobile: '', viewer_master: null, }, info: { asset_ready: false, custom_text: { qr_header: 'You\'re moments away from Augmented Reality', // QR modal header text qr_footer: 'Scan this QR code with your phone\'s camera', // QR modal footer text }, model_3d_id: null, product_id: product_id, // Shopify product ID product_title: product_title, store_id: null, // Shopify store ID store_variant_id: null, variant_id: null, // Shopify selected variant ID variant_title: variant_title, }, init: init, session_info: { environment: (!window.location.pathname.includes('/products/') && !window.location.pathname.includes('products_preview')) ? 'pdp' : null, initialized: false, // initialized script has run once is_mobile: mobileCheck(), levar_pixel_id: getCookie('levar_pixel'), levar_session_id: null, // Analytics referrer: window.location.href, // For exit button ua: window.navigator.userAgent, // Current user agent string viewer_on: false, // viewer currently on }, styles: { active_button: 'opacity: 1; cursor: pointer; pointer-events: all; transition: all 1s ease;', default_iframe: 'width:100%; height:100%; border:none; margin:0; padding:0; z-index: 99; position: absolute; top: 0px; right: 0px; left: 0px; bottom: 0px; overflow: hidden; outline: none; box-shadow: none;', inactive_button: 'opacity: 0; pointer-events: none; display: none;', mobile_iframe: 'width:100%; height:100%; z-index: 9999999999; border:none; margin:0; padding:0; position: fixed; top: 0px; right: 0px; left: 0px; bottom: 0px; overflow: hidden;', modal_iframe: 'width: 95vw; height: 90vh; max-height: 80vh; max-width: 80vw; position: relative; outline: none; overflow: hidden; margin: 0 auto; border: 0; outline: none; box-shadow: none;', } }; return levar_object; } })(window, document);
Hobby: Calligraphy, Rowing, Vacation, Geocaching, Web surfing, Electronics, Electronics
Introduction: My name is Msgr. Benton Quitzon, I am a comfortable, charming, thankful, happy, adventurous, handsome, precious person who loves writing and wants to share my knowledge and understanding with you.
We notice you're using an ad blocker
Without advertising income, we can't keep making this site awesome for you.