1<!doctype html> 2<html lang="en"> 3<head prefix="og: http://ogp.me/ns# cms: http://ogp.me/ns/cms#"> 4 <meta charset="utf-8"/>
4<script type="text/javascript">(window.NREUM||(NREUM={})).init={privacy:{cookies_enabled:true},ajax:{deny_list:["bam.nr-data.net"]},distributed_tracing:{enabled:true}};(window.NREUM||(NREUM={})).loader_config={agentID:"1120151136",accountID:"3731713",trustKey:"1322840",xpid:"VwEEUFFSCxABVVBQAQACV1cJ",licenseKey:"NRJS-d3390ca2649c82069a5",applicationID:"1112615138",browserID:"1120151136"};;/*! For license information please see nr-loader-spa-1.322.0.min.js.LICENSE.txt */ 5(()=>{var e={8122(e,t,r){"use strict";r.d(t,{a:()=>i});var n=r(944);function i(e,t){try{if(!e||"object"!=typeof e)return(0,n.R)(3);if(!t||"object"!=typeof t)return(0,n.R)(4);const r=Object.create(Object.getPrototypeOf(t),Object.getOwnPropertyDescriptors(t)),s=0===Object.keys(r).length?e:r;for(let a in s)if(void 0!==e[a])try{if(null===e[a]){r[a]=null;continue}Array.isArray(e[a])&&Array.isArray(t[a])?r[a]=Array.from(new Set([...e[a],...t[a]])):e[a]instanceof Map||e[a]instanceof Set||e[a]instanceof Date||e[a]instanceof RegExp?r[a]=e[a]:"object"==typeof e[a]&&null!==t[a]&&"object"==typeof t[a]?r[a]=i(e[a],t[a]):r[a]=e[a]}catch(e){r[a]||(0,n.R)(1,e)}return r}catch(e){(0,n.R)(2,e)}}},2555(e,t,r){"use strict";r.d(t,{f:()=>a});var n=r(384),i=r(8122);const s={beacon:n.NT.beacon,errorBeacon:n.NT.errorBeacon,licenseKey:void 0,applicationID:void 0,sa:void 0,queueTime:void 0,applicationTime:void 0,ttGuid:void 0,user:void 0,account:void 0,product:void 0,extra:void 0,jsAttributes:{},userAttributes:void 0,atts:void 0,transactionName:void 0,tNamePlain:void 0};function a(e){try{return!!e.licenseKey&&!!e.errorBeacon&&!!e.applicationID}catch(e){return!1}}r.d(t,["D",0,e=>(0,i.a)(e,s)])},7699(e,t,r){"use strict";var n=r(860);const i={[n.K7.logging]:!0,[n.K7.genericEvents]:!0,[n.K7.jserrors]:!0,[n.K7.ajax]:!0};r.d(t,["It",0,1e6,"KC",0,i,"qh",0,"SESSION_ERROR"])},9324(e,t,r){"use strict";r.d(t,["A",0,"@newrelic/rrweb","x",0,"1.322.0"])},981(e,t,r){"use strict";r.d(t,["R",0,{AJAX:"AjaxRequest",PA:"PageAction",UA:"UserAction",BP:"BrowserPerformance",WS:"WebSocket",SPV:"SecurityPolicyViolation",JSE:"JavaScriptError",LOG:"Log",PVE:"PageView",PVT:"PageViewTiming",SR:"SessionReplay",ST:"SessionTrace",BI:"BrowserInteraction"}])},9752(e,t,r){"use strict";const n="newrelic-iframe-",i=n+"timing-update",s=n+"api",a=n+"api-response",o=n+"vitals-update",c=n+"ajax";r.d(t,["$8",0,o,"Gi",0,a,"KU",0,c,"Pl",0,n,"cS",0,s,"cr",0,i])},6154(e,t,r){"use strict";var n=r(1863);const i="undefined"!=typeof window&&!!window.document,s="undefined"!=typeof WorkerGlobalScope&&("undefined"!=typeof self&&self instanceof WorkerGlobalScope&&self.navigator instanceof WorkerNavigator||"undefined"!=typeof globalThis&&globalThis instanceof WorkerGlobalScope&&globalThis.navigator instanceof WorkerNavigator),a=i?window:"undefined"!=typeof WorkerGlobalScope&&("undefined"!=typeof self&&self instanceof WorkerGlobalScope&&self||"undefined"!=typeof globalThis&&globalThis instanceof WorkerGlobalScope&&globalThis),o=Boolean("hidden"===a?.document?.visibilityState),c=""+a?.location,d=/iPad|iPhone|iPod/.test(a.navigator?.userAgent),u=d&&"undefined"==typeof SharedWorker,l=(()=>{const e=a.navigator?.userAgent?.match(/Firefox[/\s](\d+\.\d+)/);return Array.isArray(e)&&e.length>=2?+e[1]:0})(),f=Date.now()-(0,n.t)();r.d(t,["OF",0,d,"RI",0,i,"WN",0,f,"bv",0,s,"gm",0,a,"lR",0,l,"m",0,c,"mw",0,o,"sb",0,u,"zk",0,()=>{const e=a?.performance?.getEntriesByType?.("navigation")?.[0];if(e&&e.responseStart>0&&e.responseStart<a.performance.now())return e}])},7295(e,t,r){"use strict";r.d(t,{Xv:()=>a,gX:()=>i,iW:()=>s});var n=[];function i(e){if(!e||s(e))return!1;if(0===n.length)return!0;if("*"===n[0].hostname)return!1;for(var t=0;t<n.length;t++){var r=n[t];if(r.hostname.test(e.hostname)&&r.pathname.test(e.pathname))return!1}return!0}function s(e){return void 0===e.hostname}function a(e){if(n=[],e&&e.length)for(var t=0;t<e.length;t++){let r=e[t];if(!r)continue;if("*"===r)return void(n=[{hostname:"*"}]);0===r.indexOf("http://")?r=r.substring(7):0===r.indexOf("https://")&&(r=r.substring(8));const i=r.indexOf("/");let s,a;i>0?(s=r.substring(0,i),a=r.substring(i)):(s=r,a="*");let[c]=s.split(":");n.push({hostname:o(c),pathname:o(a,!0)})}}function o(e,t=!1){const r=e.replace(/[.+?^${}()|[\]\\]/g,e=>"\\"+e).replace(/\*/g,".*?");return new RegExp((t?"^":"")+r+"$")}},3241(e,t,r){"use strict";r.d(t,{W:()=>i});var n=r(6154);function i(e={}){try{n.gm.dispatchEvent(new CustomEvent("newrelic",{detail:e}))}catch(e){}}},1687(e,t,r){"use strict";r.d(t,{Ak:()=>o,Ze:()=>d,x3:()=>c});var n=r(3241),i=r(3606),s=r(860),a=r(2646);function o(e,t){if(!e)return;const r={staged:!1,priority:s.P3[t]||0};
5e.runtime.drainRegistry.get(t)||e.runtime.drainRegistry.set(t,r)}function c(e,t){if(!e)return;const r=e.runtime.drainRegistry;r&&(r.get(t)&&r.delete(t),l(e,t,!1),r.size&&u(e))}function d(e,t="feature",r=!1){if(e){if(!e.runtime.drainRegistry.get(t)||r)return l(e,t);e.runtime.drainRegistry.get(t).staged=!0,u(e)}}function u(e){if(!e)return;const t=Array.from(e.runtime.drainRegistry);t.every(([e,t])=>t.staged)&&(t.sort((e,t)=>e[1].priority-t[1].priority),t.forEach(([t])=>{e.runtime.drainRegistry.delete(t),l(e,t)}))}function l(e,t,r=!0){if(!e)return;const s=e.ee,o=i.i.handlers;if(s&&!s.aborted&&s.backlog&&o){if((0,n.W)({type:"lifecycle",name:"drain",feature:t}),r){const e=s.backlog[t],r=o[t];if(r){for(let t=0;e&&t<e.length;++t)f(e[t],r);Object.entries(r).forEach(([e,t])=>{Object.values(t||{}).forEach(t=>{t[0]?.on&&t[0].context()instanceof a.y&&!t[0].listeners(e).includes(t[1])&&t[0].on(e,t[1])})})}}s.isolatedBacklog||delete o[t],s.backlog[t]=null,s.emit("drain-"+t,[])}}function f(e,t){var r=e[1];Object.values(t[r]||{}).forEach(t=>{var r=e[0];if(t[0]===r){var n=t[1],i=e[3],s=e[2];n.apply(i,s)}})}},7836(e,t,r){"use strict";var n=r(384),i=r(8990),s=r(2646),a=r(5607);const o="nr@context:".concat(a.W),c=function e(t,r){var n={},a={},u={},l=!1;try{l=16===r.length&&d.initializedAgents?.[r]?.runtime.isolatedBacklog}catch(e){}var f={on:p,addEventListener:p,removeEventListener:function(e,t){var r=n[e];if(!r)return;for(var i=0;i<r.length;i++)r[i]===t&&r.splice(i,1)},emit:function(e,r,n,i,s){!1!==s&&(s=!0);if(c.aborted&&!i)return;t&&s&&t.emit(e,r,n);var o=h(n);g(e).forEach(e=>{e.apply(o,r)});var d=v()[a[e]];d&&d.push([f,e,r,o]);return o},get:m,listeners:g,context:h,buffer:function(e,t){const r=v();if(t=t||"feature",f.aborted)return;Object.entries(e||{}).forEach(([e,n])=>{a[n]=t,t in r||(r[t]=[])})},abort:function(){f._aborted=!0,Object.keys(f.backlog).forEach(e=>{delete f.backlog[e]})},isBuffering:function(e){return!!v()[a[e]]},debugId:r,backlog:l?{}:t&&"object"==typeof t.backlog?t.backlog:{},isolatedBacklog:l};return Object.defineProperty(f,"aborted",{get:()=>{let e=f._aborted||!1;return e||(t&&(e=t.aborted),e)}}),f;function h(e){return e&&e instanceof s.y?e:e?(0,i.I)(e,o,()=>new s.y(o)):new s.y(o)}function p(e,t){n[e]=g(e).concat(t)}function g(e){return n[e]||[]}function m(t){return u[t]=u[t]||e(f,t)}function v(){return f.backlog}}(void 0,"globalEE"),d=(0,n.Zm)();d.ee||(d.ee=c),r.d(t,["P",0,o,"ee",0,c])},2646(e,t,r){"use strict";r.d(t,{y:()=>n});class n{constructor(e){this.contextId=e}}},9908(e,t,r){"use strict";r.d(t,{d:()=>n,p:()=>i});var n=r(7836).ee.get("handle");function i(e,t,r,i,s){s?(s.buffer([e],i),s.emit(e,t,r)):(n.buffer([e],i),n.emit(e,t,r))}},3606(e,t,r){"use strict";r.d(t,{i:()=>s});var n=r(9908);s.on=a;var i=s.handlers={};function s(e,t,r,s){a(s||n.d,i,e,t,r)}function a(e,t,r,i,s){s||(s="feature"),e||(e=n.d);var a=t[s]=t[s]||{};(a[r]=a[r]||[]).push([e,i])}},3878(e,t,r){"use strict";function n(e,t){return{capture:e,passive:!1,signal:t}}function i(e,t,r=!1,i){window.addEventListener(e,t,n(r,i))}function s(e,t,r=!1,i){document.addEventListener(e,t,n(r,i))}r.d(t,{DD:()=>s,jT:()=>n,sp:()=>i})},5607(e,t,r){"use strict";const n=(0,r(9566).bz)();r.d(t,["W",0,n])},9566(e,t,r){"use strict";r.d(t,{LA:()=>a,ZF:()=>o,bz:()=>s,el:()=>c});var n=r(6154);function i(e,t){return e?15&e[t]:16*Math.random()|0}function s(){const e=n.gm?.crypto||n.gm?.msCrypto;let t,r=0;return e&&e.getRandomValues&&(t=e.getRandomValues(new Uint8Array(30))),"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".split("").map(e=>"x"===e?i(t,r++).toString(16):"y"===e?(3&i()|8).toString(16):e).join("")}function a(e){const t=n.gm?.crypto||n.gm?.msCrypto;let r,s=0;t&&t.getRandomValues&&(r=t.getRandomValues(new Uint8Array(e)));const a=[];for(var o=0;o<e;o++)a.push(i(r,s++).toString(16));return a.join("")}function o(){return a(16)}function c(){return a(32)}},2614(e,t,r){"use strict";r.d(t,["BB",0,18e5,"Wt",0,"NRBA_SESSION::","g",0,{OFF:0,FULL:1,ERROR:2},"iL",0,{SAME_TAB:"same-tab",CROSS_TAB:"cross-tab"},"tS",0,{STARTED:"session-started",PAUSE:"session-pause",RESET:"session-reset",RESUME:"session-resume",UPDATE:"session-update"},"wk",0,144e5])},733(e,t,r){"use strict";function n(e,t){return function(e){let t=2166136261;for(let r=0;r<e.length;r++)t^=e.charCodeAt(r),t=Math.imul(t,16777619);return(t>>>0).toString(16).padStart(8,"0")}("".concat(String(e),":").concat(String(t)))}r.d(t,{Y:()=>n})},1863(e,t,r){"use strict";function n(){return Math.floor(performance.now())}r.d(t,{t:()=>n})},9119(e,t,r){"use strict";r.d(t,{L:()=>s});var n=/([^?#]*)[^#]*(#[^?]*|$).*/,i=/([^?#]*)().*/;function s(e,t){return e?e.replace(t?n:i,"$1$2"):e}},7485(e,t,r){"use strict";r.d(t,{D:()=>i});var n=r(6154);function i(e){if(0===(e||"").indexOf("data:"))return{protocol:"data"};try{const t=new URL(e,location.href),r={port:t.port,hostname:t.hostname,pathname:t.pathname,search:t.search,protocol:t.protocol.slice(0,t.protocol.indexOf(":")),sameOrigin:t.protocol===n.gm?.location?.protocol&&t.host===n.gm?.location?.host};return r.port&&""!==r.port||("http:"===t.protocol&&(r.port="80"),"https:"===t.protocol&&(r.port="443")),r.pathname&&""!==r.pathname?r.pathname.startsWith("/")||(r.pathname="/".concat(r.pathname)):r.pathname="/",r}catch(e){return{}}}},7866(e,t,r){"use strict";r.d(t,["Nc",0,/^\s*at Function code \(Function code:\d+:\d+\)\s*/i,"cn",0,/^\s*(?:([^@]*)(?:\(.*?\))?@)?((?:file|http|https|chrome|safari-extension).*?):(\d+)(?::(\d+))?\s*$/i,"fL",0,/^\s*at .+ \(eval at \S+ \((?:(?:file|http|https):[^)]+)?\)(?:, [^:]*:\d+:\d+)?\)$/i,"h3",0,/function (.+?)\s*\(/,"hB",0,/^\s*at (?:((?:\[object object\])?(?:[^(]*\([^)]*\))*[^()]*(?: \[as \S+\])?) )?\(?((?:file|http|https|chrome-extension):.*?)?:(\d+)(?::(\d+))?\)?\s*$/i])},944(e,t,r){"use strict";r.d(t,{R:()=>i});var n=r(3241);function i(e,t){"function"==typeof console.debug&&(console.debug("New Relic Warning: https://github.com/newrelic/newrelic-browser-agent/blob/main/docs/warning-codes.md#".concat(e),t),(0,n.W)({drained:null,type:"data",name:"warn",feature:"warn",data:{code:e,secondary:t}}))}},8990(e,t,r){"use strict";r.d(t,{I:()=>i});var n=Object.prototype.hasOwnProperty;function i(e,t,r){if(n.call(e,t))return e[t];var i=r();if(Object.defineProperty&&Object.keys)try{return Object.defineProperty(e,t,{value:i,writable:!0,enumerable:!1}),i}catch(e){}return e[t]=i,i}},6389(e,t,r){"use strict";function n(e,t=500,r={}){const n=r?.leading||!1;let i;return(...r)=>{n&&void 0===i&&(e.apply(this,r),i=setTimeout(()=>{i=clearTimeout(i)},t)),n||(clearTimeout(i),i=setTimeout(()=>{e.apply(this,r)},t))}}function i(e){let t=!1;return(...r)=>{t||(t=!0,e.apply(this,r))}}r.d(t,{J:()=>i,s:()=>n})},1910(e,t,r){"use strict";r.d(t,{i:()=>s});var n=r(944);const i=new Map;function s(...e){return e.every(e=>{if(i.has(e))return i.get(e);const t="function"==typeof e?e.toString():"",r=t.includes("[native code]"),s=t.includes("nrWrapper");return r||s||(0,n.R)(64,e?.name||t),i.set(e,r),r})}},3304(e,t,r){"use strict";r.d(t,{A:()=>i});var n=r(7836);function i(e){try{return JSON.stringify(e,(()=>{const e=new WeakSet;return(t,r)=>{if("object"==typeof r&&null!==r){if(e.has(r))return;e.add(r)}return r}})())??""}catch(e){try{n.ee.emit("internal-error",[e])}catch(e){}return""}}},9232(e,t,r){"use strict";r.d(t,["f",0,{MFE:"MFE",BA:"BA"}])},7560(e,t,r){"use strict";r.d(t,{N:()=>a,j:()=>c});var n=r(9119),i=r(944);const s=(0,r(6389).J)(e=>(0,i.R)(80,e));function a(e){if(!Array.isArray(e?.assets)||!e.assets.length)return;
5const t=e.assets.map(o).filter(Boolean);return t.length?{assets:t,scripts:t.filter(e=>e.isScript)}:void 0}function o(e){if(!e||"object"!=typeof e)return;const{matcher:t,type:r}=e;let i="string"==typeof t&&t.endsWith(".js");return void 0!==r&&(!function(e){return"script"===e||"asset"===e}(r)?s(r):i=function(e){return"script"===e}(r)),a=t,"[object RegExp]"===Object.prototype.toString.call(a)?{pattern:t,test:e=>(t.lastIndex=0,t.test((0,n.L)(e))),isScript:i}:"string"==typeof t&&t.length>0?{pattern:t,test:e=>(0,n.L)(e).includes(t),isScript:i}:void s(t);var a}function c(e,t,{scriptsOnly:r=!1}={}){if(!e||!t)return!1;return(r?e.scripts:e.assets).some(e=>e.test(t))}},5718(e,t,r){"use strict";r.d(t,{xo:()=>T,AZ:()=>v,cI:()=>g,Qr:()=>A,QL:()=>y});var n=r(6154),i=r(1863),s=r(9119),a=r(7866);class o{dom=new c;performance=new c;constructor(e){this.url=e,this.claimedBy=new Set}get script(){const e=Math.max(this.dom.start,this.performance.end);return{start:e,end:Math.max(this.dom.end,this.performance.end,e)}}}class c{start=0;end=0;value=void 0}function d(e=()=>{},t){return{get:()=>void 0!==t?t:e(),set:e=>{t=e}}}let u;try{u=v(y())[0]}catch(e){u=v(e)[0]}const l=new Map;let f=[];const h=new WeakMap;function p(e){let t=h.get(e);return t||(t={weighedAssetUrls:new Set,recordManifestScriptWindow:(t,r)=>{t&&(e.scriptStart=e.scriptStart>0?Math.min(e.scriptStart,t):t),r&&(e.scriptEnd=e.scriptEnd>0?Math.max(e.scriptEnd,r):r)}},h.set(e,t)),t}function g(e){return l.get(e)}function m(e){const t=g(e);
5if(t)return t;const r=new o(e);if(l.set(e,r),l.size>1e3){const e=l.keys().next().value;l.delete(e)}return r}if(n.gm.MutationObserver&&n.gm.document){new MutationObserver(e=>{e.forEach(e=>{e.addedNodes.forEach(e=>{if("SCRIPT"===e.nodeName&&e.src){const t=m((0,s.L)(e.src));t.dom.start=(0,i.t)(),t.dom.value=e;const r=()=>{t.dom.end=(0,i.t)()};["load","error"].forEach(t=>e.addEventListener(t,r,{once:!0}))}})})}).observe(n.gm.document,{childList:!0,subtree:!0})}if(n.gm.PerformanceObserver?.supportedEntryTypes.includes("resource")){new PerformanceObserver(e=>{e.getEntries().forEach(e=>{if((e=>"script"===e.initiatorType||["link","fetch"].includes(e.initiatorType)&&(0,s.L)(e.name).endsWith(".js"))(e)){const t=m((0,s.L)(e.name));t.performance.start=Math.floor(e.startTime),t.performance.end=Math.floor(e.responseEnd),t.performance.value=e}if(!f.length)return;const t=[];f.forEach(({test:r,addedAt:n},s)=>{(r(e)||(0,i.t)()-n>1e4)&&t.push(s)}),f=f.filter((e,r)=>!t.includes(r))})}).observe({type:"resource",buffered:!0})}function v(e){if(!e||"string"!=typeof e)return[];const t=new Set,r=e.split("\n");for(const e of r){const r=e.match(a.cn)||e.match(a.hB)||e.match(a.fL);if(r&&r[2])t.add((0,s.L)(r[2]));else{const r=e.match(/\(([^)]+\.js):\d+:\d+\)/)||e.match(/^\s+at\s+([^\s(]+\.js):\d+:\d+/);r&&r[1]&&t.add((0,s.L)(r[1]))}}return[...t]}function y(){let e;try{const t=Error.stackTraceLimit;Error.stackTraceLimit=50,e=(new Error).stack,Error.stackTraceLimit=t}catch(t){e=(new Error).stack}return e}function b(e,t){return(0,s.L)(e.name)===t}function E(e,t){e.fetchStart=Math.floor(t.startTime),e.fetchEnd=Math.floor(t.responseEnd),e.asset=t.name,e.type=t.initiatorType,w(e,t)}function w(e,t){const r=(0,s.L)(t.name),{weighedAssetUrls:n}=p(e);n.has(r)||(n.add(r),e.totalWeight=(e.totalWeight||0)+(t.transferSize||0),"blocking"===t.renderBlockingStatus?e.renderBlocking=!0:"non-blocking"===t.renderBlockingStatus&&!0!==e.renderBlocking&&(e.renderBlocking=!1))}function R(e,t,r,n,i){if(w(e,t),"scripts"!==i&&"all"!==i)return;if("all"===i||r.isScript){const r=Math.floor(t.startTime),n=Math.floor(t.responseEnd);e.fetchStart=e.fetchStart>0?Math.min(e.fetchStart,r):r,e.fetchEnd=e.fetchEnd>0?Math.max(e.fetchEnd,n):n}if(r.isScript){const r=g((0,s.L)(t.name));if(r){const t=()=>{const{start:t,end:n}=r.script;p(e).recordManifestScriptWindow(t,n)};t(),!r.dom.end&&r.dom.value&&["load","error"].forEach(e=>r.dom.value.addEventListener(e,t,{once:!0}))}n.resolved||(e.asset=t.name,e.type=t.initiatorType,n.resolved=!0)}}function T(e,t){const r=t?.manifest;if(!r||!r.assets.length)return;const s={resolved:!1},a=new Set(r.assets);(n.gm.performance?.getEntriesByType("resource")||[]).forEach(r=>{const n=[...a].find(e=>e.test(r.name));n&&(R(e,r,n,s,t.timingMethod),a.delete(n))}),a.size&&function(e,t,r,s){n.gm.PerformanceObserver?.supportedEntryTypes?.includes("resource")&&f.push({addedAt:(0,i.t)(),test:n=>{const i=[...t].find(e=>e.test(n.name));return i&&(R(e,n,i,r,s),t.delete(i)),0===t.size}})}(e,a,s,t.timingMethod)}function A(e){const t=e?.id,r={registeredAt:(0,i.t)(),reportedAt:void 0,fetchStart:0,fetchEnd:0,scriptStart:0,scriptEnd:0,asset:void 0,type:"unknown",totalWeight:0,renderBlocking:void 0},a=y();if(!a)return r;const o=n.gm.performance?.getEntriesByType("navigation")?.[0]?.name||"";try{const e=v(a),c=(e.length>1?e.filter(e=>u!==e):e)[0];if(!c)return r;if(o.includes(c))return r.asset=(0,s.L)(o),r.type="inline",r;r.correlation=g(c);const l=r.correlation?.performance.value||n.gm.performance?.getEntriesByType("resource")?.find(e=>b(e,c));if(l)E(r,l);else{(function(e){if(!e||!n.gm.document)return!1;try{const t=n.gm.document.querySelectorAll('link[rel="preload"][as="script"]');for(const r of t)if((0,s.L)(r.href)===e)return!0}catch(e){}return!1})(c)&&(r.asset=c,r.type="preload"),function(e,t){n.gm.PerformanceObserver?.supportedEntryTypes?.includes("resource")&&f.push({addedAt:(0,i.t)(),test:r=>!!b(r,t)&&(E(e,r),!0)})}(r,c)}const h=r.correlation,m=!!t&&!!h?.claimedBy.has(t);h&&t&&h.claimedBy.add(t);const y=()=>{const e=h?.script.start;if(!m||!e)return!1;return r.registeredAt-e>1e4};let w=0,R=0;p(r).recordManifestScriptWindow=(e,t)=>{e&&(w=w>0?Math.min(w,e):e),t&&(R=R>0?Math.max(R,t):t)},Object.defineProperty(r,"scriptStart",d(()=>{const e=y()?r.registeredAt:h?.script.start??r.fetchEnd;return w>0?Math.min(e,w):e})),Object.defineProperty(r,"scriptEnd",d(()=>{const e=y()?r.registeredAt:h?.script.end??r.registeredAt;return R>0?Math.max(e,R):e}))}catch(e){}return r}},5732(e,t,r){"use strict";r.d(t,{$5:()=>m,B5:()=>g,K6:()=>u,M$:()=>
5o,Ms:()=>d,NG:()=>c,Ux:()=>h,YA:()=>p,yx:()=>l});var n=r(5718),i=r(7560),s=r(9119),a=r(9232);function o(e){return e?.type===a.f.MFE}function c(e,t){if(!y(e,t))return;const r=t.runtime.registeredEntities;return r?.find(t=>t.metadata.target.iframeInterfaceId===e)}function d(e,t){if(!y(e,t))return[];const r=t.runtime.registeredEntities;return r?.filter(t=>String(t.metadata.target.id)===String(e)).map(e=>e.metadata.target)||[]}function u(e,t){if(!y(e,t))return[];const r=t.runtime.registeredEntities,n=(0,s.L)(e),a=r?.filter(t=>{const r=t.metadata.target?.manifest;return r?(0,i.j)(r,e,{scriptsOnly:!1}):!!t.metadata.timings?.asset&&(0,s.L)(t.metadata.timings.asset)===n});return f(a).map(e=>e.metadata.target)}function l(e,t){if(!y(e,t))return[];const r=t.runtime.registeredEntities,n=r?.filter(t=>{const r=t.metadata.target?.manifest;return r?(0,i.j)(r,e,{scriptsOnly:!0}):!!t.metadata.timings?.asset?.endsWith(e)});return f(n).map(e=>e.metadata.target)}function f(e){if(!e?.length)return e||[];const t=new Map,r=[];for(const n of e){const e=n.metadata?.timings?.asset;if(!e){r.push(n);continue}const i="".concat(e,"::").concat(n.metadata?.target?.id),s=t.get(i);if(s){if(s.metadata.target?.blocked&&!n.metadata.target?.blocked){const e=r.indexOf(s);-1!==e&&(r[e]=n),t.set(i,n)}}else t.set(i,n),r.push(n)}return r}function h(e,t){return v(t)?o(e)?e.attributes:t.agentRef.runtime.v2Target.attributes:{}}function p(e,t){return g(e,t)?{"child.id":e.id,"child.type":e.type,...h(void 0,t)}:{}}function g(e,t){return o(e)&&!!v(t)&&t.agentRef.init.api.register.duplicate_data_to_container}function m(e){if(!e?.runtime)return[];if(!y(!0,e)||!e.runtime.registeredEntities?.length)return[e.runtime.v2Target];const t=[];try{var r=(0,n.AZ)((0,n.QL)());let i=r.length-1;for(;r[i];)t.push(...l(r[i--],e))}catch(e){}const i=function(e){const t=new Set,r=[];for(const n of e){const e=n?.instance;t.has(e)||(t.add(e),r.push(n))}return r}(t);return i.length||i.push(e.runtime.v2Target),i}function v(e){return 2===e?.harvestEndpointVersion}function y(e,t){return!!e&&!!t?.init.api.register.enabled}},5289(e,t,r){"use strict";r.d(t,{GG:()=>a,Qr:()=>c,sB:()=>o});var n=r(3878),i=r(6389);function s(){return"undefined"==typeof document||"complete"===document.readyState}function a(e,t){if(s())return e();const r=(0,i.J)(e),a=setInterval(()=>{s()&&(clearInterval(a),r())},500);(0,n.sp)("load",r,t)}function o(e){if(s())return e();(0,n.DD)("DOMContentLoaded",e)}function c(e){if(s())return e();(0,n.sp)("popstate",e)}},384(e,t,r){"use strict";r.d(t,{Zm:()=>c,bQ:()=>u,dV:()=>d,pV:()=>l});var n=r(6154),i=r(1863),s=r(944),a=r(1910);const o={beacon:"bam.nr-data.net",errorBeacon:"bam.nr-data.net"};function c(){return n.gm.NREUM||(n.gm.NREUM={}),void 0===n.gm.newrelic&&(n.gm.newrelic=n.gm.NREUM),n.gm.NREUM}function d(){let e=c();return e.o||(e.o={ST:n.gm.setTimeout,SI:n.gm.setImmediate||n.gm.setInterval,CT:n.gm.clearTimeout,XHR:n.gm.XMLHttpRequest,REQ:n.gm.Request,EV:n.gm.Event,PR:n.gm.Promise,MO:n.gm.MutationObserver,FETCH:n.gm.fetch,WS:n.gm.WebSocket},(0,a.i)(...Object.values(e.o))),e}function u(e,t){let r=c();r.initializedAgents??={},t.initializedAt={ms:(0,i.t)(),date:new Date},r.initializedAgents[e]=t,2===Object.keys(r.initializedAgents).length&&(0,s.R)(69)}function l(){return function(){let e=c();const t=e.info||{};e.info={beacon:o.beacon,errorBeacon:o.errorBeacon,...t}}(),function(){let e=c();const t=e.init||{};e.init={...t}}(),d(),function(){let e=c();const t=e.loader_config||{};e.loader_config={...t}}(),c()}r.d(t,["NT",0,o])},2843(e,t,r){"use strict";r.d(t,{G:()=>s,u:()=>i});var n=r(3878);function i(e,t=!1,r,i){(0,n.DD)("visibilitychange",function(){if(t)return void("hidden"===document.visibilityState&&e());e(document.visibilityState)},r,i)}function s(e,t,r){(0,n.sp)("pagehide",e,t,r)}},8139(e,t,r){"use strict";r.d(t,{u:()=>f});var n=r(7836),i=r(3434),s=r(8990),a=r(6154);const o={},c=a.gm.XMLHttpRequest,d="addEventListener",u="removeEventListener",l="nr@wrapped:".concat(n.P);function f(e,t){var r=function(e){return(e||n.ee).get("events")}(e);if(o[r.debugId]++)return r;o[r.debugId]=1;var f=(0,i.YM)(r,!0,t);function p(e){f.inPlace(e,[d,u],"-",g)}function g(e,t){return e[1]}return"getPrototypeOf"in Object&&(a.RI&&h(document,p),c&&h(c.prototype,p),h(a.gm,p)),r.on(d+"-start",function(e,t){var r=e[1];if(null!==r&&("function"==typeof r||"object"==typeof r)&&"newrelic"!==e[0]){var n=(0,s.I)(r,l,function(){var e={object:function(){if("function"!=typeof r.handleEvent)return;return r.handleEvent.apply(r,arguments)},function:r}[typeof r];return e?f(e,"fn-",null,e.name||"anonymous"):r});this.wrapped=e[1]=n}}),r.on(u+"-start",function(e){e[1]=this.wrapped||e[1]}),r}function h(e,t,...r){let n=e;for(;"object"==typeof n&&!Object.prototype.hasOwnProperty.call(n,d);)n=Object.getPrototypeOf(n);n&&t(n,...r)}},3434(e,t,r){"use strict";r.d(t,{YM:()=>d});var n=r(7836),i=r(5607),s=r(5732);const a="nr@original:".concat(i.W);var o=Object.prototype.hasOwnProperty,c=!1;function d(e,t,r){return e||(e=n.ee),i.inPlace=function(e,t,r,n,s,a){r||(r="");const o="-"===r.charAt(0);for(let c=0;c<t.length;c++){const d=t[c],u=e[d];l(u)||(e[d]=i(u,o?d+r:r,n,d,s,a))}},i.flag=a,i;function i(t,n,i,c,f,h){return l(t)?t:(n||(n=""),nrWrapper[a]=t,function(e,t,r){if(Object.defineProperty&&Object.keys)try{return Object.keys(e).forEach(function(r){Object.defineProperty(t,r,{get:function(){return e[r]},set:function(t){return e[r]=t,t}})}),t}catch(e){u([e],r)}for(var n in e)o.call(e,n)&&(t[n]=e[n])}
5(t,nrWrapper,e),nrWrapper);function nrWrapper(){var a,o,l,p;let g,m;try{o=this,a=[...arguments],m=h?(0,s.$5)(r):[r?.runtime?.v2Target],l="function"==typeof i?i(a,o):i||{}}catch(t){u([t,"",[a,o,c],l],e)}d(n+"start",[a,o,c,m],l,f);const v=performance.now();let y;try{return p=t.apply(o,a),y=performance.now(),p}catch(e){throw y=performance.now(),d(n+"err",[a,o,e,m],l,f),g=e,g}finally{const e=y-v,t={start:v,end:y,duration:e,isLongTask:e>=50,methodName:c,thrownError:g};t.isLongTask&&d("long-task",[t,o,m],l,f),d(n+"end",[a,o,p,m],l,f)}}}function d(r,n,i,s){if(!c||t){var a=c;c=!0;try{e.emit(r,n,i,t,s)}catch(t){u([t,r,n,i],e)}c=a}}}function u(e,t){t||(t=n.ee);try{t.emit("internal-error",e)}catch(e){}}function l(e){return!(e&&"function"==typeof e&&e.apply&&!e[a])}r.d(t,["Jt",0,a])},9300(e,t,r){"use strict";const n=r(860).K7.ajax;r.d(t,["TZ",0,n,"f5",0,"ajaxRequest.id","mo",0,{NONE:"none",FAILURES:"failures",ALL:"all"}])},3333(e,t,r){"use strict";var n=r(981);const i=r(860).K7.genericEvents,s=[n.R.PA,n.R.UA,n.R.BP];r.d(t,["$v",0,{RESOURCES:"experimental.resources",REGISTER:"register"},"TZ",0,i,"Zp",0,["auxclick","click","copy","keydown","paste","scrollend"],"kd",0,s,"qN",0,["focus","blur"]])},6774(e,t,r){"use strict";const n=r(860).K7.jserrors;r.d(t,["T",0,n])},993(e,t,r){"use strict";const n=r(860).K7.logging;r.d(t,["A$",0,{OFF:0,ERROR:1,WARN:2,INFO:3,DEBUG:4,TRACE:5},"TZ",0,n,"p_",0,{ERROR:"ERROR",WARN:"WARN",INFO:"INFO",DEBUG:"DEBUG",TRACE:"TRACE"}])},3785(e,t,r){"use strict";r.d(t,{R:()=>c,b:()=>d});var n=r(9908),i=r(1863),s=r(860),a=r(3969),o=r(993);function c(e,t,r={},c=o.p_.INFO,d=!0,u,l=(0,i.t)()){(0,n.p)(a.xV,["API/logging/".concat(c.toLowerCase(),"/called")],void 0,s.K7.metrics,e),(0,n.p)("log",[l,t,r,c,d,u],void 0,s.K7.logging,e)}function d(e){return"string"==typeof e&&Object.values(o.p_).some(t=>t===e.toUpperCase().trim())}},3969(e,t,r){"use strict";const n=r(860).K7.metrics;r.d(t,["TZ",0,n,"XG",0,"storeEventMetrics","xV",0,"storeSupportabilityMetrics"])},6630(e,t,r){"use strict";const n=r(860).K7.pageViewEvent;r.d(t,["T",0,n])},782(e,t,r){"use strict";const n=r(860).K7.pageViewTiming;r.d(t,["T",0,n])},6344(e,t,r){"use strict";var n=r(2614);const i=r(860).K7.sessionReplay,s={[n.g.ERROR]:15e3,[n.g.FULL]:3e5,[n.g.OFF]:0}
5;r.d(t,["Qb",0,{API:"api",RESUME:"resume",SWITCH_TO_FULL:"switchToFull",INITIALIZE:"initialize",PRELOAD:"preload"},"TZ",0,i,"Vh",0,"errorDuringReplay","_s",0,{DomContentLoaded:0,Load:1,FullSnapshot:2,IncrementalSnapshot:3,Meta:4,Custom:5},"bc",0,{RESET:{message:"Session was reset",sm:"Reset"},IMPORT:{message:"Recorder failed to import",sm:"Import"},TOO_MANY:{message:"429: Too Many Requests",sm:"Too-Many"},TOO_BIG:{message:"Payload was too large",sm:"Too-Big"},CROSS_TAB:{message:"Session Entity was set to OFF on another tab",sm:"Cross-Tab"},ENTITLEMENTS:{message:"Session Replay is not allowed and will not be started",sm:"Entitlement"}},"yP",0,s])},5270(e,t,r){"use strict";r.d(t,{Aw:()=>a,SR:()=>s,rF:()=>o});var n=r(384),i=r(7767);function s(e){return!!(0,n.dV)().o.MO&&(0,i.V)(e)&&!0===e?.session_trace.enabled}function a(e){return!0===e?.session_replay.preload&&s(e)}function o(e,t){try{if("string"==typeof t?.type&&"password"===t.type.toLowerCase())return"*".repeat(e?.length||0);if(void 0!==t?.dataset?.nrUnmask||t?.classList?.contains("nr-unmask"))return e}catch(e){}return"string"==typeof e?e.replace(/[\S]/g,"*"):"*".repeat(e?.length||0)}},3738(e,t,r){"use strict";const n=r(860).K7.sessionTrace,i="-start",s="-end",a="fn"+i,o="fn"+s;r.d(t,["He",0,"bstResource","Kp",0,s,"Lc",0,o,"Rz",0,"pushState","TZ",0,n,"bD",0,"resource","bc",0,{CROSS_TAB:{message:"Session Entity was set to OFF on another tab"},ENTITLEMENTS:{message:"Session Trace is not allowed and will not be started"},RESET:{message:"Session was reset"},SESSION_CHANGED:{message:"Session identifier changed unexpectedly"}},"d3",0,i,"uP",0,a])},3962(e,t,r){"use strict";const n=r(860).K7.softNav;r.d(t,["O2",0,{INITIAL_PAGE_LOAD:"",ROUTE_CHANGE:1,UNSPECIFIED:2},"OV",0,"popstate","Qu",0,{INTERACTION:1,AJAX:2,CUSTOM_END:3,CUSTOM_TRACER:4},"TZ",0,n,"ih",0,{IP:"in progress",PF:"pending finish",FIN:"finished",CAN:"cancelled"},"pP",0,"initialPageLoad","tC",0,["click","keydown","submit"]])},4234(e,t,r){"use strict";r.d(t,{W:()=>i});var n=r(1687);class i{constructor(e,t){this.agentRef=e,this.ee=e?.ee,this.featureName=t,this.blocked=!1}deregisterDrain(){(0,n.x3)(this.agentRef,this.featureName)}}},7767(e,t,r){"use strict";var n=r(6154);r.d(t,["V",0,e=>n.RI&&!0===e?.privacy.cookies_enabled])},8362(e,t,r){"use strict";r.d(t,{d:()=>s});var n=r(9566),i=r(1741);class s extends i.W{agentIdentifier=(0,n.LA)(16)}},1741(e,t,r){"use strict";r.d(t,{W:()=>s});var n=r(944),i=r(4261);class s{#e(e,...t){if(this[e]!==s.prototype[e])return this[e](...t);(0,n.R)(35,e)}addPageAction(e,t){return this.#e(i.hG,e,t)}register(e){return this.#e(i.eY,e)}recordCustomEvent(e,t){return this.#e(i.fF,e,t)}setPageViewName(e,t){return this.#e(i.Fw,e,t)}setCustomAttribute(e,t,r){return this.#e(i.cD,e,t,r)}noticeError(e,t){return this.#e(i.o5,e,t)}setUserId(e,t=!1){return this.#e(i.Dl,e,t)}setApplicationVersion(e){return this.#e(i.nb,e)}setErrorHandler(e){return this.#e(i.bt,e)}addRelease(e,t){return this.#e(i.k6,e,t)}log(e,t){return this.#e("log",e,t)}start(){return this.#e("start")}finished(e){return this.#e(i.BL,e)}recordReplay(){return this.#e(i.CH)}pauseReplay(){return this.#e(i.Tb)}addToTrace(e){return this.#e(i.U2,e)}setCurrentRouteName(e){return this.#e(i.PA,e)}interaction(e){return this.#e(i.dT,e)}wrapLogger(e,t,r){return this.#e(i.Wb,e,t,r)}measure(e,t){return this.#e(i.V1,e,t)}consent(e){return this.#e(i.Pv,e)}}},4261(e,t,r){"use strict";r.d(t,["BL",0,"finished","CH",0,"recordReplay","Dl",0,"setUserId","Fw",0,"setPageViewName","PA",0,"setCurrentRouteName","Pv",0,"consent","Tb",0,"pauseReplay","U2",0,"addToTrace","V1",0,"measure","Wb",0,"wrapLogger","bt",0,"setErrorHandler","cD",0,"setCustomAttribute","dT",0,"interaction","eY",0,"register","fF",0,"recordCustomEvent","hG",0,"addPageAction","hw",0,"api-ixn-","k6",0,"addRelease","nb",0,"setApplicationVersion","o5",0,"noticeError"])},1738(e,t,r){"use strict";r.d(t,{U:()=>l,Y:()=>u});var n=r(3241),i=r(9908),s=r(1863),a=r(944),o=r(3969),c=r(8362),d=r(860);function u(e,t,r,s){const u=s||r;!u||u[e]&&u[e]!==c.d.prototype[e]||(u[e]=function(){(0,i.p)(o.xV,["API/"+e+"/called"],void 0,d.K7.metrics,r.ee),(0,n.W)({drained:!!r.runtime?.activatedFeatures,type:"data",name:"api",feature:"api-"+e,data:{}});try{return t.apply(this,arguments)}catch(e){(0,a.R)(23,e)}})}function l(e,t,r,n,a){const o=e.info;null===r?delete o.jsAttributes[t]:o.jsAttributes[t]=r,(a||null===r)&&(0,i.p)("api-"+n,[(0,s.t)(),t,r],void 0,"session",e.ee)}},8374(e,t,r){r.nc=(()=>{try{return document?.currentScript?.nonce}catch(e){}return""})()},860(e,t,r){"use strict";const n="events",i="jserrors",s="browser/blobs",a="browser/logs",o={ajax:"ajax",genericEvents:"generic_events",jserrors:i,logging:"logging",metrics:"metrics",pageAction:"page_action",pageViewEvent:"page_view_event",pageViewTiming:"page_view_timing",sessionReplay:"session_replay",sessionTrace:"session_trace",softNav:"soft_navigations"},c={[o.pageViewEvent]:1,[o.pageViewTiming]:2,[o.metrics]:3,[o.jserrors]:4,[o.softNav]:5,[o.ajax]:6,[o.sessionTrace]:7,[o.sessionReplay]:8,[o.logging]:9,[o.genericEvents]:10},d={[o.pageViewEvent]:"rum",[o.pageViewTiming]:n,[o.ajax]:n,[o.softNav]:n,[o.metrics]:i,[o.jserrors]:i,[o.sessionTrace]:s,[o.sessionReplay]:s,[o.logging]:a,[o.genericEvents]:"ins"};r.d(t,["$J",0,d,"K7",0,o,"P3",0,c,"XX",0,i,"Yy",0,a,"df",0,s,"hg",0,"connect"])}};const t={};function r(n){const i=t[n];if(void 0!==i)return i.exports;const s=t[n]={exports:{}};return e[n](s,s.exports,r),s.exports}r.m=e,r.d=(e,t)=>{if(Array.isArray(t))for(var n=0;n<t.length;){var i=t[n++],s=t[n++];r.o(e,i)?0===s&&n++:0===s?Object.defineProperty(e,i,{enumerable:!0,value:t[n++]}):Object.defineProperty(e,i,{enumerable:!0,get:s})}else for(var i in t)r.o(t,i)&&!r.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:t[i]})},r.f={},r.e=e=>Promise.all(Object.keys(r.f).reduce((t,n)=>(r.f[n](e,t),t),[])),r.u=e=>({212:"nr-spa-compressor",238:"nr-spa-iframe-message-handler",249:"nr-spa-recorder",478:"nr-spa"}[e]+"-1.322.0.min.js"),r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),(()=>{const e={},t="NRBA-1.322.0.PROD:";r.l=(n,i,s,a)=>
5{if(e[n])return void e[n].push(i);let o,c;if(void 0!==s){const e=document.getElementsByTagName("script");for(var d=0;d<e.length;d++){const r=e[d];if(r.getAttribute("src")==n||r.getAttribute("data-webpack")==t+s){o=r;break}}}if(!o){c=!0;var u={478:"sha512-SARROoir04gFygxlr/+mTI+PyMeFL+epi1vnUA2G5mTQ7s3G44ItQBJKbOaIMdIE5OBzuaKhb4k5JYta0NICxg==",249:"sha512-6DKQo5WP7YlpzX6l9UfYkgGLGK2oITdoaYTcZtgl5Foa22NY63lED/0z1hBBLeD7qZCz/YdlY19/r8drlol1tg==",212:"sha512-CYxuvSpDx6ErqWJwAvpoHn54eY37YdMcFao/axOumlw3BsSL7yioOeB2LWViY/Njs818sQG10dSglUhYCMfLPw==",238:"sha512-mvbMILWa3ohYst+u6TLfNrmtY2swUIB3rbJFN/uzt3W62KhgvUVwB81UEZ1R0/it5bfrQ5EVz864pi/CAmucNQ=="};o=document.createElement("script"),o.charset="utf-8",r.nc&&o.setAttribute("nonce",r.nc),o.setAttribute("data-webpack",t+s),o.src=n,0!==o.src.indexOf(window.location.origin+"/")&&(o.crossOrigin="anonymous"),u[a]&&(o.integrity=u[a])}e[n]=[i];const l=(t,r)=>{o.onerror=o.onload=null,clearTimeout(f);const i=e[n];if(delete e[n],o.parentNode?.removeChild(o),i?.forEach(e=>e(r)),t)return t(r)},f=setTimeout(l.bind(null,void 0,{type:"timeout",target:o}),12e4);o.onerror=l.bind(null,o.onerror),o.onload=l.bind(null,o.onload),c&&document.head.appendChild(o)}})(),r.r=e=>{Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.p="https://js-agent.newrelic.com/",(()=>{const e={38:0,788:0};r.f.j=(t,n)=>{let i=r.o(e,t)?e[t]:void 0;if(0!==i)if(i)n.push(i[2]);else{const s=new Promise((r,n)=>i=e[t]=[r,n]);n.push(i[2]=s);const a=r.p+r.u(t),o=new Error,c=n=>{if(r.o(e,t)&&(i=e[t],0!==i&&(e[t]=void 0),i)){const e=n&&("load"===n.type?"missing":n.type),r=n&&n.target&&n.target.src;o.message="Loading chunk "+t+" failed: ("+e+": "+r+")",o.name="ChunkLoadError",o.type=e,o.request=r,i[1](o)}};r.l(a,c,"chunk-"+t,t)}};const t=(t,n)=>{let[i,s,a]=n;var o,c,d=0;if(i.some(t=>0!==e[t])){for(o in s)r.o(s,o)&&(r.m[o]=s[o]);if(a)a(r)}for(t&&t(n);d<i.length;d++)c=i[d],r.o(e,c)&&e[c]&&e[c][0](),e[c]=0},n=self["webpackChunk:NRBA-1.322.0.PROD"]=self["webpackChunk:NRBA-1.322.0.PROD"]||[];n.forEach(t.bind(null,0)),n.push=t.bind(null,n.push.bind(n))})(),(()=>{"use strict";r(8374);var e=r(8362),t=r(860);const n=Object.values(t.K7);var i=r(384),s=r(1741);var a=r(2555),o=r(3333),c=r(9300);const d=e=>{if(!e||"string"!=typeof e)return!1;try{document.createDocumentFragment().querySelector(e)}catch{return!1}return!0};var u=r(2614),l=r(944),f=r(8122);const h="[data-nr-mask]",p=e=>(0,f.a)(e,(()=>{const e={feature_flags:[],experimental:{register:!1,resources:!1,iframe_bridge:!1,iframe_domains:[]},mask_selector:"*",block_selector:"[data-nr-block]",mask_input_options:{color:!1,date:!1,"datetime-local":!1,email:!1,month:!1,number:!1,range:!1,search:!1,tel:!1,text:!1,time:!1,url:!1,week:!1,textarea:!1,select:!1,password:!0}};return{ajax:{deny_list:void 0,block_internal:!0,enabled:!0,autoStart:!0,capture_payloads:c.mo.NONE},api:{register:{get enabled(){return e.feature_flags.includes(o.$v.REGISTER)||e.experimental.register},set enabled(t){e.experimental.register=t},duplicate_data_to_container:!1,get allow_iframe_bridge(){return e.feature_flags.includes(o.$v.IFRAME_BRIDGE)||e.experimental.iframe_bridge},set allow_iframe_bridge(t){e.experimental.iframe_bridge=t},get iframe_domains(){return e.experimental.iframe_domains},set iframe_domains(t){Array.isArray(t)?e.experimental.iframe_domains=t:(0,l.R)(1,t)}}},browser_consent_mode:{enabled:!1},distributed_tracing:{enabled:void 0,exclude_newrelic_header:void 0,cors_use_newrelic_header:void 0,cors_use_tracecontext_headers:void 0,allowed_origins:void 0},get feature_flags(){return e.feature_flags},set feature_flags(t){e.feature_flags=t},generic_events:{enabled:!0,autoStart:!0},harvest:{interval:30},jserrors:{enabled:!0,autoStart:!0},logging:{enabled:!0,autoStart:!0},metrics:{enabled:!0,autoStart:!0},obfuscate:void 0,page_action:{enabled:!0},page_view_event:{enabled:!0,autoStart:!0},page_view_timing:{enabled:!0,autoStart:!0},performance:{capture_marks:!1,capture_measures:!1,capture_detail:!0,resources:{get enabled(){return e.feature_flags.includes(o.$v.RESOURCES)||e.experimental.resources},set enabled(t){e.experimental.resources=t},asset_types:[],first_party_domains:[],ignore_newrelic:!0}},privacy:{cookies_enabled:!0},proxy:{assets:void 0,beacon:void 0},session:{expiresMs:u.wk,inactiveMs:u.BB},session_replay:{autoStart:!0,enabled:!1,preload:!1,sampling_rate:10,error_sampling_rate:100,collect_fonts:!1,inl
5ine_images:!1,fix_stylesheets:!0,mask_all_inputs:!0,get mask_text_selector(){return e.mask_selector},set mask_text_selector(t){d(t)?e.mask_selector="".concat(t,",").concat(h):""===t||null===t?e.mask_selector=h:(0,l.R)(5,t)},get block_class(){return"nr-block"},get ignore_class(){return"nr-ignore"},get mask_text_class(){return"nr-mask"},get block_selector(){return e.block_selector},set block_selector(t){d(t)?e.block_selector+=",".concat(t):""!==t&&(0,l.R)(6,t)},get mask_input_options(){return e.mask_input_options},set mask_input_options(t){t&&"object"==typeof t?e.mask_input_options={...t,password:!0}:(0,l.R)(7,t)}},session_trace:{enabled:!0,autoStart:!0},soft_navigations:{enabled:!0,autoStart:!0},ssl:void 0,user_actions:{enabled:!0,elementAttributes:["id","className","tagName","type"]},web_sockets:{enabled:!1}}})());var g=r(6154),m=r(9324);let v=0;const y={buildEnv:"PROD",distMethod:"CDN",version:m.x,originTime:g.WN},b={consented:!1},E={activatedFeatures:void 0,appMetadata:{},configured:!1,get consented(){return this.session?.state?.consent||b.consented},set consented(e){b.consented=e},customTransaction:void 0,denyList:[],disabled:!1,drainRegistry:new Map,connector:void 0,harvester:void 0,v2Target:void 0,isolatedBacklog:!1,isRecording:!1,loaderType:void 0,maxBytes:3e4,obfuscator:void 0,onerror:void 0,ptid:void 0,releaseIds:{},session:void 0,timeKeeper:void 0,registeredEntities:[],jsAttributesMetadata:{bytes:0},get harvestCount(){return++v},listeningForIframeMessages:!1};var w=r(9232);var R=r(7836),T=r(3241);const A={accountID:void 0,trustKey:void 0,agentID:void 0,licenseKey:void 0,applicationID:void 0,xpid:void 0};var S=r(9908),x=r(9752);function O(e,t={},n,o){let{init:c,info:d,loader_config:u,runtime:l={},exposed:h=!0}=t;if(!d){const e=(0,i.pV)();c=e.init,d=e.info,u=e.loader_config}var m;e.init=p(c||{}),e.loader_config=(m=u||{},(0,f.a)(m,A)),d.jsAttributes??={},g.bv&&(d.jsAttributes.isWorker=!0),e.info=(0,a.D)(d);const v=e.init;e.runtime??=(e=>{const t=(0,f.a)(e,E),r=Object.keys(y).reduce((e,t)=>(e[t]={value:y[t],writable:!1,configurable:!0,enumerable:!0},e),{});return Object.defineProperties(t,r)})(l),e.runtime.v2Target??={type:w.f.BA,instance:e.agentIdentifier,get id(){return e.runtime.appMetadata?.agents?.[0]?.entityGuid},get attributes(){return{"entity.guid":this.id,appId:e.info.applicationID}}},v.proxy.assets&&(e=>{const t=e.startsWith("http");e+="/",r.p=t?e:"https://"+e})(v.proxy.assets),e.runtime.configured||(Object.defineProperty(e,"beacons",{get:()=>[e.info.beacon,e.info.errorBeacon,e.init.proxy.assets,e.init.proxy.beacon].filter(Boolean)}),Object.defineProperty(e.runtime,"denyList",{get:()=>[...e.init.ajax.deny_list||[],...e.init.ajax.block_internal?e.beacons:[]]}),e.runtime.ptid=e.agentIdentifier,function(e){const t=(0,i.pV)();Object.getOwnPropertyNames(s.W.prototype).forEach(r=>{const n=s.W.prototype[r];if("function"!=typeof n||"constructor"===n)return;let i=t[r];e[r]&&!1!==e.exposed&&"micro-agent"!==e.runtime?.loaderType&&(t[r]=(...t)=>{const n=e[r](...t);return i?i(...t):n})})}(e),e.runtime.loaderType=n,e.ee=R.ee.get(e.agentIdentifier),e.exposed=h,(0,T.W)({drained:!!e.runtime.activatedFeatures,type:"lifecycle",name:"initialize",feature:void 0,data:e.config}),e.init.api.register.allow_iframe_bridge&&g.gm.addEventListener("message",t=>{"string"==typeof t.data?.type&&t.data.type.startsWith(x.Pl)&&(0,S.p)("iframe-message",[t],void 0,"IFRAME",e.ee)}),e.runtime.configured=!0)}var _=r(1863),k=r(4261),N=r(1738);var L=r(1687),M=r(4234),P=r(5289),I=r(5270),j=r(7767),C=r(6389),D=r(7699);const B=new WeakSet,H=new WeakMap;class W extends M.W{constructor(e,t){super(e,t),this.abortHandler=void 0,this.featAggregate=void 0,this.loadedSuccessfully=void 0,this.onAggregateImported=new Promise(e=>{this.loadedSuccessfully=e}),this.deferred=Promise.resolve(),!1===e.init[this.featureName].autoStart?this.deferred=new Promise((t,r)=>{this.ee.on("manual-start-all",(0,C.J)(()=>{(0,L.Ak)(e,this.featureName),t()}))}):(0,L.Ak)(e,t)}importAggregator(e,t,n={}){if(this.featAggregate)return;const i=async()=>{if(await this.deferred,this.#t(e),!(0,a.f)(e.info))return(0,l.R)(43),e.ee.abort(),void this.loadedSuccessfully(!1);try{await async function(e,t,n){if(H.has(e))return H.get(e);const i=(async()=>
5{if((0,j.V)(e.init))try{const{setupAgentSession:t}=await r.e(478).then(r.bind(r,8766));t(e)}catch(e){(0,l.R)(20,e),t.emit("internal-error",[e]),(0,S.p)(D.qh,[e],void 0,n,t)}if(e.init.api.register.allow_iframe_bridge)try{const{setupIframeMFEMessageListener:t}=await r.e(238).then(r.bind(r,6417));t(e)}catch(e){(0,l.R)(23,e)}const[{Connector:i},{Harvester:s}]=await Promise.all([r.e(478).then(r.bind(r,6589)),r.e(478).then(r.bind(r,5237))]);e.runtime.connector=new i(e),e.runtime.harvester=new s(e);const a=Object.values(e.features).filter(t=>e.runtime.drainRegistry.has(t.featureName));Promise.all(a.map(e=>e.onAggregateImported)).then(()=>e.runtime.harvester.startTimer())})();H.set(e,i),await i}(e,this.ee,this.featureName)}catch(e){return(0,l.R)(79,e),this.ee.abort(),void this.loadedSuccessfully(!1)}try{if(!this.#r(this.featureName,e.runtime.session,e.init))return this.abortHandler?.(),(0,L.Ze)(this.agentRef,this.featureName),void this.loadedSuccessfully(!1);const{Aggregate:r}=await t();this.featAggregate=new r(e,n),e.runtime.harvester.initializedAggregates.push(this.featAggregate),this.loadedSuccessfully(!0)}catch(e){(0,l.R)(34,e),this.abortHandler?.(),(0,L.Ze)(this.agentRef,this.featureName,!0),this.loadedSuccessfully(!1)}};g.RI?(0,P.GG)(()=>i(),!0):i()}#r(e,r,n){if(this.blocked)return!1;switch(e){case t.K7.sessionReplay:return(0,I.SR)(n)&&!!r;case t.K7.sessionTrace:return!!r;default:return!0}}#t(e){if(!B.has(e)&&(B.add(e),!(0,a.f)(e.info))){const t=(0,i.pV)();let r={...t.info?.jsAttributes};try{r={...r,...e.info?.jsAttributes}}catch(e){}O(e,{...t,info:{...t.info,jsAttributes:r},runtime:e.runtime},e.runtime.loaderType)}}}var U=r(6630);class K extends W{static featureName=U.T;constructor(e){var t;super(e,U.T),this.setupInspectionEvents(),t=e,(0,N.Y)(k.Fw,function(e,r){"string"==typeof e&&("/"!==e.charAt(0)&&(e="/"+e),t.runtime.customTransaction=(r||"http://custom.transaction")+e,(0,S.p)("api-"+k.Fw,[(0,_.t)()],void 0,void 0,t.ee))},t),this.importAggregator(e,()=>e.init.feature_flags.includes("rum_v2")?r.e(478).then(r.bind(r,908)):r.e(478).then(r.bind(r,7927)))}setupInspectionEvents(){const e=(e,t)=>{e&&(0,T.W)({timeStamp:e.timeStamp,loaded:"complete"===e.target.readyState,type:"window",name:t,data:e.target.location+""})};(0,P.sB)(t=>{e(t,"DOMContentLoaded")}),(0,P.GG)(t=>{e(t,"load")}),(0,P.Qr)(t=>{e(t,"navigate")}),this.ee.on(u.tS.UPDATE,(e,t)=>{(0,T.W)({type:"lifecycle",name:"session",data:t})})}}class F extends e.d{constructor(e){var t;(super(),g.gm)?(this.features={},(0,i.bQ)(this.agentIdentifier,this),this.desiredFeatures=new Set(e.features||[]),this.desiredFeatures.add(K),O(this,e,e.loaderType||"agent"),t=this,(0,N.Y)(k.cD,function(e,r,n=!1){if("string"==typeof e){if(["string","number","boolean"].includes(typeof r)||null===r)return(0,N.U)(t,e,r,k.cD,n);(0,l.R)(40,typeof r)}else(0,l.R)(39,typeof e)},t),function(e){(0,N.Y)(k.Dl,function(t,r=!1){if("string"!=typeof t&&null!==t)return void(0,l.R)(41,typeof t);const n=e.info.jsAttributes["enduser.id"];r&&null!=n&&n!==t?(0,S.p)("api-setUserIdAndResetSession",[t],void 0,"session",e.ee):(0,N.U)(e,"enduser.id",t,k.Dl,!0)},e)}(this),function(e){(0,N.Y)(k.nb,function(t){if("string"==typeof t||null===t)return(0,N.U)(e,"application.version",t,k.nb,!1);(0,l.R)(42,typeof t)},e)}(this),function(e){(0,N.Y)("start",function(){e.ee.emit("manual-start-all")},e)}(this),function(e){(0,N.Y)(k.Pv,function(t=!0){if("boolean"==typeof t){if((0,S.p)("api-"+k.Pv,[t],void 0,"session",e.ee),e.runtime.consented=t,t){const t=e.features.page_view_event;t.onAggregateImported.then(e=>{const r=t.featAggregate;e&&!r.sentRum&&r.sendRum?.()})}}else(0,l.R)(65,typeof t)},e)}(this),this.run()):(0,l.R)(21)}get config(){return{info:this.info,init:this.init,loader_config:this.loader_config,runtime:this.runtime}}get api(){return this}run(){try{const e=function(e){const t={};return n.forEach(r=>{t[r]=!!e[r]?.enabled}),t}(this.init),r=[...this.desiredFeatures],i=this.init.feature_flags.includes("rum_v2");r.sort((e,r)=>t.P3[e.featureName]-t.P3[r.featureName]),r.forEach(r=>{if(!e[r.featureName]&&(i||r.featureName!==t.K7.pageViewEvent))return;const n=function(e){switch(e){case t.K7.ajax:return[t.K7.jserrors];case t.K7.sessionTrace:return[t.K7.ajax,t.K7.pageViewEvent];case t.K7.sessionReplay:return[t.K7.sessionTrace];case t.K7.pageViewTiming:return[t.K7.pageViewEvent];default:return[]}}(r.featureName).filter(e=>!(e in this.features));n.length>0&&(0,l.R)(36,{targetFeature:r.featureName,missingDependencies:n}),this.features[r.featureName]=new r(this)})}catch(e){(0,l.R)(22,e);for(const e in this.features)this.features[e].abortHandler?.();const t=(0,i.Zm)();delete t.initializedAgents[this.agentIdentifier]?.features,delete this.sharedAggregator;return t.ee.get(this.agentIdentifier).abort(),!1}}}var V=r(2843),z=r(782);class G extends W{static featureName=z.T;constructor(e){super(e,z.T),g.RI&&((0,V.u)(()=>(0,S.p)("docHidden",[(0,_.t)()],void 0,z.T,this.ee),!0),(0,V.G)(()=>(0,S.p)("winPagehide",[(0,_.t)()],void 0,z.T,this.ee)),this.importAggregator(e,()=>r.e(478).then(r.bind(r,9917))))}}var q=r(3969);class Y extends W{static featureName=q.TZ;constructor(e){super(e,q.TZ),this.importAggregator(e,()=>r.e(478).then(r.bind(r,6555)))}}var Z=r(6774),J=r(3878),X=r(3304);class Q{constructor(e,t,r,n,i){this.name="UncaughtError",this.message="string"==typeof e?e:(0,X.A)(e),this.sourceURL=t,this.line=r,this.column=n,this.__newrelic=i}}function ee(e){return ne(e)?e:new Q(void 0!==e?.message?e.message:e,e?.filename||e?.sourceURL,e?.lineno||e?.line,e?.colno||e?.col,e?.__newrelic,e?.cause)}function te(e){const t="Unhandled Promise Rejection: ";if(!e?.reason)return;if(ne(e.reason)){try{e.reason.message.startsWith(t)||(e.reason.message=t+e.reason.message)}catch(e){}return ee(e.reason)}const r=ee(e.reason);return(r.message||"").startsWith(t)||(r.message=t+r.message),r}function re(e){if(e.error instanceof SyntaxError&&!/:\d+$/.test(e.error.stack?.trim())){const t=new Q(e.message,e.filename,e.lineno,e.colno,e.error.__newrelic,e.cause);return t.name=SyntaxError.name,t}return ne(e.error)?e.error:ee(e)}function ne(e){return e instanceof Error&&!!e.stack}function ie(e,r,n,i,s=(0,_.t)()){"string"==typeof e&&(e=new Error(e)),(0,S.p)("err",[e,s,!1,r,n.runtime.isRecording,void 0,i],void 0,t.K7.jserrors,n.ee),(0,S.p)("uaErr",[],void 0,t.K7.genericEvents,n.ee)}var se=r(993),ae=r(3785);function oe(e,{customAttributes:t={},level:r=se.p_.INFO}={},n,i,s=(0,_.t)()){(0,ae.R)(n.ee,e,t,r,!1,i,s)}function ce(e,r,n,i,s=(0,_.t)()){(0,S.p)("api-"+k.hG,[s,e,r,i],void 0,t.K7.genericEvents,n.ee)}function de(e,r,n,i,s=(0,_.t)()){const{start:a,end:o,customAttributes:c}=r||{},d={customAttributes:c||{}};if("object"!=typeof d.customAttributes||"string"!=typeof e||0===e.length)return void(0,l.R)(57);const u=(e,t)=>
5null==e?t:"number"==typeof e?e:e instanceof PerformanceMark?e.startTime:Number.NaN;if(d.start=u(a,0),d.end=u(o,s),Number.isNaN(d.start)||Number.isNaN(d.end))(0,l.R)(57);else{if(d.duration=d.end-d.start,!(d.duration<0))return(0,S.p)("api-"+k.V1,[d,e,i],void 0,t.K7.genericEvents,n.ee),d;(0,l.R)(58)}}function ue(e,r={},n,i,s=(0,_.t)()){(0,S.p)("api-"+k.fF,[s,e,r,i],void 0,t.K7.genericEvents,n.ee)}var le=r(5718);const fe=(e,t)=>e?.nrMfeId===t.id&&(!e?.nrMfeObserved||e?.nrMfeObserved===t.instance),he=e=>{try{return g.gm.CSS.escape(e)}catch(t){return e}},pe=(e,t={})=>{const r=t.id,n=t.instance;if(!e||!r||!n)return!1;try{let r=1===e.nodeType?e:e.parentElement;for(;r?.tagName;){if(fe(r.dataset,t))return r.dataset.nrMfeObserved=n,!0;r=r.parentNode}}catch(e){}return!1},ge=(e,t)=>{const r=g.gm.document?.querySelectorAll('[data-nr-mfe-id="'.concat(he(e.id),'"]')),n=(Array.from(r)||[]).find(t=>fe(t.dataset,e));let i=!!n;i&&(n.dataset.nrMfeObserved??=e.instance);const s=new g.gm.MutationObserver(r=>{r.forEach(r=>{r.addedNodes.forEach(r=>{const n=1===r.nodeType?r:null;!i&&fe(n?.dataset,e)&&(s.disconnect(),s.observe(n,{childList:!0,subtree:!0}),i=!0,n.dataset.nrMfeObserved=e.instance),(e=>{try{return e?.textContent?.trim()||["img","video","canvas","svg"].includes(e?.nodeName?.toLowerCase())}catch(e){return!1}})(r)&&(i||pe(r,e))&&t(r,s)})})});return s.observe(n||g.gm.document,{childList:!0,subtree:!0}),s},me=(e,t,r)=>{try{const n=new g.gm.PerformanceObserver(e=>{e.getEntries().forEach(r)});return n.observe(t),e.push(n),n}catch(e){return null}};function ve(e,t){let r,n,i=!1;const s=e=>null==e?e:e-(t?.scriptStart||t?.registeredAt||0),a={fcp:{get value(){const e=s(r);return e>1e4?void 0:e},set value(e){i||(r=e)}},lcp:{get value(){if(void 0!==a.fcp.value)return s(n)},set value(e){i||(n=e)}},cls:{value:void 0},inp:{value:void 0},disconnect:()=>{}};if(!(e&&g.RI&&g.gm.MutationObserver&&g.gm.PerformanceObserver))return a;const o=[];setTimeout(()=>{r||a.disconnect()},1e4);const c=()=>{if(!i){if(null==r){const e=(0,_.t)();if(s(e)>1e4)return void a.disconnect();r=e}n??=(0,_.t)(),a.cls.value??=0}},d=ge(e,(e,t)=>{c(),t.disconnect()});o.push(d);let u=0,l=null;const f=new Set;try{l=new g.gm.ResizeObserver(e=>{i||e.forEach(e=>{try{const t=e.contentRect.width*e.contentRect.height;t>u&&(u=t,a.lcp.value=(0,_.t)()),l.unobserve(e.target)}catch(e){}})})}catch(e){}const h=ge(e,e=>{if(c(),l)try{const t=1===e.nodeType?e:e.parentElement;t&&!f.has(t)&&(f.add(t),"IMG"===t.tagName?t.complete?l.observe(t):t.addEventListener("load",()=>{l.observe(t)},{once:!0}):"VIDEO"===t.tagName?t.readyState>=2?l.observe(t):t.addEventListener("loadeddata",()=>{l.observe(t)},{once:!0}):l.observe(t))}catch(e){}});l&&o.push(l),o.push(h),me(o,{type:"layout-shift",buffered:!0},t=>{i||t.hadRecentInput||(t.sources||[]).some(r=>!!pe(r.node,e)&&(c(),a.cls.value+=t.value,!0))}),me(o,{type:"event",buffered:!0,durationThreshold:40},t=>{!i&&t.interactionId&&pe(t.target,e)&&(void 0===a.inp.value||t.duration>a.inp.value)&&(c(),a.inp.value=t.duration)});const p=["pointerdown","keydown"],m=()=>{p.forEach(e=>{g.gm.removeEventListener(e,v,{passive:!0})})};a.disconnect=()=>{i=!0,o.forEach(e=>{try{e?.disconnect()}catch(e){}}),m(),["visibilitychange","pagehide"].forEach(e=>{g.gm.removeEventListener(e,a.disconnect,{once:!0,passive:!0})})};const v=t=>{pe(t?.target,e)&&((()=>{try{h?.disconnect(),l?.disconnect()}catch(e){}})(),m())};p.forEach(e=>{g.gm.addEventListener(e,v,{passive:!0})}),["visibilitychange","pagehide"].forEach(e=>{g.gm.addEventListener(e,a.disconnect,{once:!0,passive:!0})});const y=g.gm.document?.querySelectorAll('[data-nr-mfe-id="'.concat(he(e.id),'"]'));return Array.from(y||[]).some(t=>fe(t.dataset,e))&&c(),a}var ye=r(9566),be=r(7560),Ee=r(9119);const we=["entry","scripts","all"],Re=["name","id","type"],Te=new Map([[ce,"addPageAction"],[oe,"log"],[de,"measure"],[ie,"noticeError"],[ue,"recordCustomEvent"]]),Ae={experimental:(0,C.J)(()=>(0,l.R)(54,"newrelic.register")),disabled:(0,C.J)(()=>(0,l.R)(55)),invalidTarget:(0,C.J)(e=>(0,l.R)(48,e)),deregistered:(0,C.J)(()=>(0,l.R)(68)),invalidTimingMethod:(0,C.J)(e=>(0,l.R)(80,e)),duplicateName:(0,C.J)(e=>(0,l.R)(81,e)),duplicateId:(0,C.J)(e=>(0,l.R)(82,e))};function Se(e){(0,N.Y)(k.eY,function(t){return xe(e,t)},e)}function xe(e,r){Ae.experimental(),r||={},r.instance=(0,ye.LA)(8),r.type=w.f.MFE,r.licenseKey||=e.info.licenseKey,r.blocked=!1,("object"!=typeof r.tags||null===r.tags||Array.isArray(r.tags))&&(r.tags={}),r.parent??={get id(){return e.runtime.appMetadata.agents?.[0].entityGuid},type:w.f.BA},r.manifest=(0,be.N)(r.manifest),void 0===r.timingMethod||we.includes(r.timingMethod)||(Ae.invali
5dTimingMethod(r.timingMethod),r.timingMethod=void 0);const n=(0,le.Qr)(r);r.manifest&&(0,le.xo)(n,r);const i=ve(r,n),s=(0,Ee.L)(""+location),a={};Object.prototype.hasOwnProperty.call(r,"attributes")||Object.defineProperty(r,"attributes",{get:()=>({...a,"source.id":r.id,"source.name":r.name,"source.type":r.type,"parent.type":r.parent?.type||w.f.BA,"parent.id":r.parent?.id})}),Object.entries(r.tags).forEach(([e,t])=>{Re.includes(e)||(a["source.".concat(e)]=t)});let o=()=>{};const c=e.runtime.registeredEntities,d=e=>{r.blocked=!0,o=e};function u(e){return"string"==typeof e&&!!e.trim()&&e.trim().length<501}e.init.api.register.enabled||d(Ae.disabled),u(r.id)&&u(r.name)||d(()=>Ae.invalidTarget(r)),c.forEach(e=>{try{const{name:t,id:n}=e.metadata.target;t===r.name&&n!==r.id&&Ae.duplicateName(r),n===r.id&&t!==r.name&&Ae.duplicateId(r)}catch(e){}});const f={addPageAction:(t,n={})=>m(ce,[t,{...a,...n},e],r),deregister:()=>{p(),d(Ae.deregistered)},log:(t,n={})=>m(oe,[t,{...n,customAttributes:{...a,...n.customAttributes||{}}},e],r),measure:(t,n={})=>m(de,[t,{...n,customAttributes:{...a,...n.customAttributes||{}}},e],r),noticeError:(t,n={})=>m(ie,[t,{...a,...n},e],r),recordCustomEvent:(t,n={})=>m(ue,[t,{...a,...n},e],r),setApplicationVersion:e=>g("application.version",e),setCustomAttribute:(e,t)=>g(e,t),setUserId:e=>g("enduser.id",e),metadata:{get customAttributes(){return a},target:r,timings:n,vitals:i,events:{latestTimestamp:void 0}}},h=()=>(r.blocked&&o(),r.blocked);function p(){if(n.reportedAt)return;n.reportedAt=(0,_.t)(),i.disconnect(),n.fcp=i.fcp,n.lcp=i.lcp,n.cls=i.cls,n.inp=i.inp;const e=n.fetchEnd-n.fetchStart,t=n.scriptEnd-n.scriptStart,r={assetUrl:n.asset,assetType:n.type,registerUrl:s,deregisterUrl:(0,Ee.L)(""+location),pageUrl:void 0,currentUrl:void 0,timeAlive:n.reportedAt-n.registeredAt,timeToBeRequested:n.fetchStart,timeToExecute:t,timeToFetch:e,timeToLoad:e+t,t
5imeToRegister:n.registeredAt,totalWeight:n.totalWeight,...void 0!==n.renderBlocking&&{renderBlocking:n.renderBlocking},...i.fcp.value>=0&&{"vitals.fcp.value":i.fcp.value},...i.lcp.value>=0&&{"vitals.lcp.value":i.lcp.value},...i.cls.value>=0&&{"vitals.cls.value":i.cls.value},...i.inp.value>=0&&{"vitals.inp.value":i.inp.value}};f.recordCustomEvent("MicroFrontEndTiming",r)}h()||(c.push(f),(0,V.G)(p));const g=(e,t)=>{h()||(a[e]=t)},m=(r,n,i)=>{if(h()&&r!==xe)return;const s=f.metadata.events.latestTimestamp??(0,_.t)();f.metadata.events.latestTimestamp=void 0;const a=Te.get(r)||"unknown";(0,S.p)(q.xV,["API/register/".concat(a,"/called")],void 0,t.K7.metrics,e.ee);try{return r(...n,i,s)}catch(e){(0,l.R)(50,e)}};return f}class Oe extends W{static featureName=Z.T;constructor(e){var t;super(e,Z.T),t=e,(0,N.Y)(k.o5,(e,r)=>ie(e,r,t),t),function(e){(0,N.Y)(k.bt,function(t){e.runtime.onerror=t},e)}(e),function(e){let t=0;(0,N.Y)(k.k6,function(e,r){++t>10||(this.runtime.releaseIds[e.slice(-200)]=(""+r).slice(-200))},e)}(e),Se(e);try{this.removeOnAbort=new AbortController}catch(e){}this.ee.on("internal-error",(t,r)=>{this.abortHandler&&(0,S.p)("ierr",[ee(t),(0,_.t)(),!0,{},e.runtime.isRecording,r],void 0,this.featureName,this.ee)}),g.gm.addEventListener("unhandledrejection",t=>{this.abortHandler&&(0,S.p)("err",[te(t),(0,_.t)(),!1,{unhandledPromiseRejection:1},e.runtime.isRecording],void 0,this.featureName,this.ee)},(0,J.jT)(!1,this.removeOnAbort?.signal)),g.gm.addEventListener("error",t=>{this.abortHandler&&(0,S.p)("err",[re(t),(0,_.t)(),!1,{},e.runtime.isRecording],void 0,this.featureName,this.ee)},(0,J.jT)(!1,this.removeOnAbort?.signal)),this.abortHandler=this.#n,this.importAggregator(e,()=>r.e(478).then(r.bind(r,9377)))}#n(){this.removeOnAbort?.abort(),this.abortHandler=void 0}}var _e=r(8990);let ke=1;function Ne(e){const t=typeof e;return!e||"object"!==t&&"function"!==t?-1:e===g.gm?0:(0,_e.I)(e,"nr@id",function(){return ke++})}function Le(e){if("string"==typeof e)return e.length;if("object"==typeof e){if("undefined"!=typeof ArrayBuffer&&e instanceof ArrayBuffer&&e.byteLength)return e.byteLength;if("undefined"!=typeof Blob&&e instanceof Blob&&e.size)return e.size;if(!("undefined"!=typeof FormData&&e instanceof FormData))try{return(0,X.A)(e).length}catch(e){return}}}var Me=r(8139),Pe=r(3434),Ie=r(5732);const je={},Ce=["open","send","setRequestHeader"];function De(e,t){var r=e||R.ee;const n=function(e){return(e||R.ee).get("xhr")}(r);if(void 0===g.gm.XMLHttpRequest)return n;if(je[n.debugId]++)return n;je[n.debugId]=1,(0,Me.u)(r,t);var i=(0,Pe.YM)(n,void 0,t),s=g.gm.XMLHttpRequest,a=g.gm.MutationObserver,o=g.gm.Promise,c=g.gm.setInterval,d="readystatechange",u=["onload","onerror","onabort","onloadstart","onloadend","onprogress","ontimeout"],f=[],h=g.gm.XMLHttpRequest=function(e){const r=new s(e),a=n.context(r);a.targets=(0,Ie.$5)(t);try{n.emit("new-xhr",[r],a),r.addEventListener(d,(o=a,function(){var e=this;e.readyState>3&&!o.resolved&&(o.resolved=!0,n.emit("xhr-resolved",[],e)),i.inPlace(e,u,"fn-",E)}),(0,J.jT)(!1))}catch(e){(0,l.R)(15,e);try{n.emit("internal-error",[e])}catch(e){}}var o;return r};function p(e,t){i.inPlace(t,["onreadystatechange"],"fn-",E)}if(function(e,t){for(var r in e)t[r]=e[r]}(s,h),h.prototype=s.prototype,i.inPlace(h.prototype,Ce,"-xhr-",E),n.on("send-xhr-start",function(e,t){p(e,t),function(e){f.push(e),a&&(m?m.then(b):c?c(b):(v=-v,y.data=v))}(t)}),n.on("open-xhr-start",p),a){var m=o&&o.resolve();if(!c&&!o){var v=1,y=document.createTextNode(v);new a(b).observe(y,{characterData:!0})}}else r.on("fn-end",function(e){e[0]&&e[0].type===d||b()});function b(){for(var e=0;e<f.length;e++)p(0,f[e]);f.length&&(f=[])}function E(e,t){return t}return n}var Be="fetch-",He=Be+"body-",We=["arrayBuffer","blob","json","text","formData"],Ue=g.gm.Request,Ke=g.gm.Response,Fe="prototype";const Ve={};function ze(e,t){const r=function(e){return(e||R.ee).get("fetch")}(e);if(!(Ue&&Ke&&g.gm.fetch))return r;if(Ve[r.debugId]++)return r;function n(e,n,i){var s=e[n];"function"==typeof s&&(e[n]=function(){var e=[...arguments];const n={},a=(0,Ie.$5)(t);var o;r.emit(i+"before-start",[e],n),n[R.P]&&n[R.P].dt&&(o=n[R.P].dt);var c=s.apply(this,e);return r.emit(i+"start",[e,o],c),c.then(function(e){return r.emit(i+"end",[null,e,a],c),e},function(e){throw r.emit(i+"end",[e,void 0,a],c),e})})}
5return Ve[r.debugId]=1,We.forEach(e=>{n(Ue[Fe],e,He),n(Ke[Fe],e,He)}),n(g.gm,"fetch",Be),r.on(Be+"end",function(e,n,i){var s=this;if(s.targets=i||[t.runtime.v2Target],n){var a=n.headers.get("content-length");null!==a&&(s.rxSize=a),r.emit(Be+"done",[null,n],s)}else r.emit(Be+"done",[e],s)}),r}var Ge=r(7485);class qe{constructor(e){this.agentRef=e}generateTracePayload(e){const t=this.agentRef.loader_config;if(!this.shouldGenerateTrace(e)||!t)return null;var r=(t.accountID||"").toString()||null,n=(t.agentID||"").toString()||null,i=(t.trustKey||"").toString()||null;if(!r||!n)return null;var s=(0,ye.ZF)(),a=(0,ye.el)(),o=Date.now(),c={spanId:s,traceId:a,timestamp:o};return(e.sameOrigin||this.isAllowedOrigin(e)&&this.useTraceContextHeadersForCors())&&(c.traceContextParentHeader=this.generateTraceContextParentHeader(s,a),c.traceContextStateHeader=this.generateTraceContextStateHeader(s,o,r,n,i)),(e.sameOrigin&&!this.excludeNewrelicHeader()||!e.sameOrigin&&this.isAllowedOrigin(e)&&this.useNewrelicHeaderForCors())&&(c.newrelicHeader=this.generateTraceHeader(s,a,o,r,n,i)),c}generateTraceContextParentHeader(e,t){return"00-"+t+"-"+e+"-01"}generateTraceContextStateHeader(e,t,r,n,i){return i+"@nr=0-1-"+r+"-"+n+"-"+e+"----"+t}generateTraceHeader(e,t,r,n,i,s){if(!("function"==typeof g.gm?.btoa))return null;var a={v:[0,1],d:{ty:"Browser",ac:n,ap:i,id:e,tr:t,ti:r}};return s&&n!==s&&(a.d.tk=s),btoa((0,X.A)(a))}shouldGenerateTrace(e){return this.agentRef.init?.distributed_tracing?.enabled&&this.isAllowedOrigin(e)}isAllowedOrigin(e){var t=!1;const r=this.agentRef.init?.distributed_tracing;if(e.sameOrigin)t=!0;else if(r?.allowed_origins instanceof Array)for(var n=0;n<r.allowed_origins.length;n++){var i=(0,Ge.D)(r.allowed_origins[n]);if(e.hostname===i.hostname&&e.protocol===i.protocol&&e.port===i.port){t=!0;break}}return t}excludeNewrelicHeader(){var e=this.agentRef.init?.distributed_tracing;return!!e&&!!e.exclude_newrelic_header}useNewrelicHeaderForCors(){var e=this.agentRef.init?.distributed_tracing;return!!e&&!1!==e.cors_use_newrelic_header}useTraceContextHeadersForCors(){var e=this.agentRef.init?.distributed_tracing;return!!e&&!!e.cors_use_tracecontext_headers}}var Ye=r(7295);function Ze(e){return"string"==typeof e?e:e instanceof(0,i.dV)().o.REQ?e.url:g.gm?.URL&&e instanceof URL?e.href:void 0}function $e(e,t){var r=(0,Ge.D)(t),n=e.params||e;n.hostname=r.hostname,n.port=r.port,n.protocol=r.protocol,n.host=r.hostname+":"+r.port,n.pathname=r.pathname,e.parsedOrigin=r,e.sameOrigin=r.sameOrigin}var Je=["load","error","abort","timeout"],Xe=Je.length,Qe=(0,i.dV)().o.REQ,et=(0,i.dV)().o.XHR;const tt="X-NewRelic-App-Data",rt="internal-error";class nt extends W{static featureName=c.TZ;constructor(e){super(e,c.TZ),this.dt=new qe(e),this.handler=(e,t,r,n)=>(0,S.p)(e,t,r,n,this.ee);try{const e={xmlhttprequest:"xhr",fetch:"fetch",beacon:"beacon"};g.gm?.performance?.getEntriesByType("resource").forEach(r=>{if(r.initiatorType in e&&0!==r.responseStatus){const n={status:r.responseStatus},i={rxSize:r.transferSize,duration:Math.floor(r.duration),cbTime:0};$e(n,r.name),this.handler("xhr",[n,i,r.startTime,r.responseEnd,e[r.initiatorType]],void 0,t.K7.ajax)}})}catch(e){}ze(this.ee,e),De(this.ee,e),function(e,r,n,i){const s=[c.mo.ALL,c.mo.FAILURES].includes(e.init.ajax?.capture_payloads);function a(e){var t=this;t.totalCbs=0,t.called=0,t.cbTime=0,t.end=A,t.ended=!1,t.xhrGuids={},t.lastSize=null,t.loadCaptureCalled=!1,t.params=this.params||{},t.metrics=this.metrics||{},t.latestLongtaskEnd=0,e.addEventListener("load",function(r){O(t,e)},(0,J.jT)(!1)),g.lR||e.addEventListener("progress",function(e){t.lastSize=e.loaded},(0,J.jT)(!1))}function o(e){this.params={method:e[0]},$e(this,e[1]),this.metrics={}}function d(t,r){e.loader_config.xpid&&this.sameOrigin&&r.setRequestHeader("X-NewRelic-ID",e.loader_config.xpid);var n=i.generateTracePayload(this.parsedOrigin);if(n){var s=!1;n.newrelicHeader&&(r.setRequestHeader("newrelic",n.newrelicHeader),s=!0),n.traceContextParentHeader&&(r.setRequestHeader("traceparent",n.traceContextParentHeader),n.traceContextStateHeader&&r.setRequestHeader("tracestate",n.traceContextStateHeader),s=!0),s&&(this.dt=n)}}function u(e,t){s&&e.length>=2&&(this.requestHeaders??={},this.requestHeaders[e[0].toLowerCase()]=e[1])}function l(e,t){var n=this.metrics,i=e[0],s=this;if(n&&i){var a=Le(i);a&&(n.txSize=a)}this.startTime=(0,_.t)(),this.requestBody=i,this.listener=function(e){try{"abort"!==e.type||s.loadCaptureCalled||(s.params.aborted=!0),("load"
5!==e.type||s.called===s.totalCbs&&(s.onloadCalled||"function"!=typeof t.onload)&&"function"==typeof s.end)&&s.end(t)}catch(e){try{r.emit(rt,[e])}catch(e){}}};for(var o=0;o<Xe;o++)t.addEventListener(Je[o],this.listener,(0,J.jT)(!1))}function f(e,t,r){this.cbTime+=e,t?this.onloadCalled=!0:this.called+=1,this.called!==this.totalCbs||!this.onloadCalled&&"function"==typeof r.onload||"function"!=typeof this.end||this.end(r)}function h(e,t){var r=""+Ne(e)+!!t;this.xhrGuids&&!this.xhrGuids[r]&&(this.xhrGuids[r]=!0,this.totalCbs+=1)}function p(e,t){var r=""+Ne(e)+!!t;this.xhrGuids&&this.xhrGuids[r]&&(delete this.xhrGuids[r],this.totalCbs-=1)}function m(){this.endTime=(0,_.t)()}function v(e,t){t instanceof et&&"load"===e[0]&&r.emit("xhr-load-added",[e[1],e[2]],t)}function y(e,t){t instanceof et&&"load"===e[0]&&r.emit("xhr-load-removed",[e[1],e[2]],t)}function b(e,t,r){t instanceof et&&("onload"===r&&(this.onload=!0),("load"===(e[0]&&e[0].type)||this.onload)&&(this.xhrCbStart=(0,_.t)()))}function E(e,t){this.xhrCbStart&&r.emit("xhr-cb-time",[(0,_.t)()-this.xhrCbStart,this.onload,t],t)}function w(e){var t,r=e[1]||{};if("string"==typeof e[0]?0===(t=e[0]).length&&g.RI&&(t=""+g.gm.location.href):e[0]&&e[0].url?t=e[0].url:g.gm?.URL&&e[0]&&e[0]instanceof URL?t=e[0].href:"function"==typeof e[0].toString&&(t=e[0].toString()),"string"==typeof t&&0!==t.length){t&&(this.parsedOrigin=(0,Ge.D)(t),this.sameOrigin=this.parsedOrigin.sameOrigin);var n=i.generateTracePayload(this.parsedOrigin);if(n&&(n.newrelicHeader||n.traceContextParentHeader))if(e[0]&&e[0].headers)o(e[0].headers,n)&&(this.dt=n);else{var s={};for(var a in r)s[a]=r[a];s.headers=new Headers(r.headers||{}),o(s.headers,n)&&(this.dt=n),e.length>1?e[1]=s:e.push(s)}}function o(e,t){var r=!1;return t.newrelicHeader&&(e.set("newrelic",t.newrelicHeader),r=!0),t.traceContextParentHeader&&(e.set("traceparent",t.traceContextParentHeader),t.traceContextStateHeader&&e.set("tracestate",t.traceContextStateHeader),r=!0),r}}function R(e,t){this.params={},this.metrics={},this.startTime=(0,_.t)(),this.dt=t;let[r,n={}]=e;$e(this,Ze(r));const i=(""+(r&&r instanceof Qe&&r.method||n.method||"GET")).toUpperCase();this.params.method=i,this.txSize=Le(n.body||r?.body)||0;try{var a=n.headers||r?.headers;if(s&&a)if(this.requestHeaders??={},a instanceof Headers)a.forEach(function(e,t){this.requestHeaders[t.toLowerCase()]=e}.bind(this));else if("object"==typeof a)for(var o in a)this.requestHeaders[o.toLowerCase()]=a[o]}catch(e){}this.requestBody=n.body||r?.body}function T(e,t){if(this.endTime=(0,_.t)(),this.params||(this.params={}),(0,Ye.iW)(this.params))return;this.params.status=t?t.status:0;const n=()=>{const e=+this.rxSize,t=null==this.rxSize||isNaN(e)?void 0:e,r={txSize:this.txSize,rxSize:t,duration:this.endTime-this.startTime},n=[this.params,r,this.startTime,this.endTime,"fetch"];this.targets.forEach(e=>x(n,this,e))};t&&s?t.clone().text().then(e=>{this.responseBody=e,this.rxSize&&"0"!==this.rxSize&&0!==this.rxSize||void 0===e||0===this.params.status||(this.rxSize=Le(e)),t?.headers&&(this.responseHeaders={},t.headers.forEach(function(e,t){this.responseHeaders[t.toLowerCase()]=e}.bind(this)))}).catch(e=>{r.emit(rt,[e])}).finally(()=>{n()}):n()}function A(e){const t=this.params,n=this.metrics;if(this.ended)return;this.ended=!0;for(let t=0;t<Xe;t++)e.removeEventListener(Je[t],this.listener,!1);if(t.aborted)return;if((0,Ye.iW)(t))return;if(n.duration=this.endTime-this.startTime,this.loadCaptureCalled||4!==e.readyState?null==t.status&&(t.status=0):O(this,e),n.cbTime=this.cbTime,s){try{this.responseBody=e.responseText}catch(t){this.responseBody=e.response}if((!n.rxSize||0===n.rxSize)&&void 0!==this.responseBody&&0!==t.status){const e=Le(this.responseBody);void 0!==e&&(n.rxSize=e)}try{this.responseHeaders=function(e){const t={};return e?(e.split("\r\n").forEach(function(e){const r=e.indexOf(": ");if(r>0){const n=e.substring(0,r),i=e.substring(r+2);t[n.toLowerCase()]=i}}),t):t}(e.getAllResponseHeaders())}catch(e){r.emit(rt,[e])}}const i=[t,n,this.startTime,this.endTime,"xhr"];this.targets.forEach(e=>x(i,this,e))}function x(e,r,i){n("xhr",[...e,i],r,t.K7.ajax)}function O(e,n){e.params.status=n.status;var i=function(e,t){var r=e.responseType;return"json"===r&&null!==t?t:"arraybuffer"===r||"blob"===r||"json"===r?Le(e.response):"text"===r||""===r||void 0===r?Le(e.responseText):void 0}(n,e.lastSize);if(void 0!==i&&0!==n.status&&(e.metrics.rxSize=i),e.sameOrigin&&n.getAllResponseHeaders().indexOf(tt)>=0){var s=n.getResponseHeader(tt);s&&((0,S.p)("sm",["Ajax/CrossApplicationTracing/Header/Seen"],void 0,t.K7.metrics,r),e.params.cat=s.split(", ").pop())}e.loadCaptureCalled=!0}r.on("new-xhr",a),r.on("open-xhr-start",o),r.on("open-xhr-end",d),r.on("send-xhr-start",l),r.on("setRequestHeader-xhr-start",u),r.on("xhr-cb-time",f),r.on("xhr-load-added",h),r.on("xhr-load-removed",p),r.on("xhr-resolved",m),r.on("addEventListener-end",v),r.on("removeEventListener-end",y),r.on("fn-end",E),r.on("fetch-before-start",w),r.on("fetch-start",R),r.on("fn-start",b),r.on("fetch-done",T)}(e,this.ee,this.handler,this.dt),this.importAggregator(e,()=>r.e(478).then(r.bind(r,3845)))}}const it={},st=["pushState","replaceState"];function at(e,t){const r=function(e){return(e||R.ee).get("history")}(e);return!g.RI||it[r.debugId]++||(it[r.debugId]=1,(0,Pe.YM)(r,void 0,t).inPlace(window.history,st,"-")),r}var ot=r(3738);function ct(e){(0,N.Y)(k.BL,function(r=Date.now()){const n=r-g.WN;n<0&&(0,l.R)(62,r),(0,S.p)(q.XG,[k.BL,{time:n}],void 0,t.K7.metrics,e.ee),e.addToTrace({name:k.BL,start:r,origin:"nr"}),(0,S.p)("api-"+k.hG,[n,k.BL],void 0,t.K7.genericEvents,e.ee)},e)}const{He:dt,bD:ut,d3:lt,Kp:ft,TZ:ht,Lc:pt,uP:gt,Rz:mt}=ot;class vt extends W{static featureName=ht;constructor(e){var n;super(e,ht),n=e,(0,N.Y)(k.U2,function(e){if(!(e&&"object"==typeof e&&e.name&&e.start))return;const r={n:e.name,s:e.start-g.WN,e:(e.end||e.start)-g.WN,o:e.origin||"",t:"api"};r.s<0||r.e<0||r.e<r.s?(0,l.R)(61,{start:r.s,end:r.e}):(0,S.p)("bstApi",[r],void 0,t.K7.sessionTrace,n.ee)},n),ct(e);
5if(!(0,j.V)(e.init))return void this.deregisterDrain();const i=this.ee;let s;at(i,e),this.eventsEE=(0,Me.u)(i,e),this.eventsEE.on(gt,function(e,t){this.bstStart=(0,_.t)()}),this.eventsEE.on(pt,function(e,r){(0,S.p)("bst",[e[0],r,this.bstStart,(0,_.t)()],void 0,t.K7.sessionTrace,i)}),i.on(mt+lt,function(e){this.time=(0,_.t)(),this.startPath=location.pathname+location.hash}),i.on(mt+ft,function(e){(0,S.p)("bstHist",[location.pathname+location.hash,this.startPath,this.time],void 0,t.K7.sessionTrace,i)});try{s=new PerformanceObserver(e=>{const r=e.getEntries();(0,S.p)(dt,[r],void 0,t.K7.sessionTrace,i)}),s.observe({type:ut,buffered:!0})}catch(e){}this.importAggregator(e,()=>r.e(478).then(r.bind(r,6974)),{resourceObserver:s})}}var yt=r(733),bt=r(6344);class Et extends W{static featureName=bt.TZ;#i;recorder;constructor(e){var n;let i;super(e,bt.TZ),n=e,(0,N.Y)(k.CH,function(){(0,S.p)(k.CH,[],void 0,t.K7.sessionReplay,n.ee)},n),function(e){(0,N.Y)(k.Tb,function(){(0,S.p)(k.Tb,[],void 0,t.K7.sessionReplay,e.ee)},e)}(e);const s="".concat(u.Wt).concat((0,yt.Y)(e.info.licenseKey,e.info.applicationID));try{i=JSON.parse(localStorage.getItem(s))}catch(e){}(0,I.SR)(e.init)&&this.ee.on(k.CH,()=>this.#s()),this.#a(i)&&this.importRecorder().then(e=>{e.startRecording(bt.Qb.PRELOAD,i?.sessionReplayMode)}),this.abortHandler=this.#n,this.importAggregator(this.agentRef,()=>r.e(478).then(r.bind(r,6167)),this),this.ee.on("err",e=>{this.blocked||this.agentRef.runtime.isRecording&&(this.errorNoticed=!0,(0,S.p)(bt.Vh,[e],void 0,this.featureName,this.ee))})}#a(e){return e&&(e.sessionReplayMode===u.g.FULL||e.sessionReplayMode===u.g.ERROR)||(0,I.Aw)(this.agentRef.init)}importRecorder(){return this.recorder?Promise.resolve(this.recorder):(this.#i??=Promise.all([r.e(478),r.e(249)]).then(r.bind(r,4866)).then(({Recorder:e})=>(this.recorder=new e(this),this.recorder)).catch(e=>{throw this.ee.emit("internal-error",[e]),this.blocked=!0,e}),this.#i)}#s(){this.blocked||(this.featAggregate?this.featAggregate.mode!==u.g.FULL&&this.featAggregate.initializeRecording(u.g.FULL,!0,bt.Qb.API):this.importRecorder().then(()=>{this.recorder.startRecording(bt.Qb.API,u.g.FULL)}))}#n(){this.recorder?.stopRecording()}}var wt=r(3962);class Rt extends W{static featureName=wt.TZ;constructor(e){if(super(e,wt.TZ),function(e){const r=e.ee.get("tracer");function n(){}(0,N.Y)(k.dT,function(e){return(new n).get("object"==typeof e?e:{})},e);const i=n.prototype={createTracer:function(n,i){var s={},a=this,o="function"==typeof i;return(0,S.p)(q.xV,["API/createTracer/called"],void 0,t.K7.metrics,e.ee),function(){if(r.emit((o?"":"no-")+"fn-start",[(0,_.t)(),a,o],s),o)try{return i.apply(this,arguments)}catch(e){const t="string"==typeof e?new Error(e):e;throw r.emit("fn-err",[arguments,this,t],s),t}finally{r.emit("fn-end",[(0,_.t)()],s)}}}};["actionText","setName","setAttribute","save","ignore","onEnd","getContext","end","get"].forEach(r=>{N.Y.apply(this,[r,function(){return(0,S.p)(k.hw+r,[performance.now(),...arguments],this,t.K7.softNav,e.ee),this},e,i])}),(0,N.Y)(k.PA,function(){(0,S.p)(k.hw+"routeName",[performance.now(),...arguments],void 0,t.K7.softNav,e.ee)},e)}(e),!g.RI||!(0,i.dV)().o.MO)return;const n=at(this.ee,e);try{this.removeOnAbort=new AbortController}catch(e){}wt.tC.forEach(e=>{(0,J.sp)(e,e=>{c(e)},!0,this.removeOnAbort?.signal)}
5);const s=()=>(0,S.p)("newURL",[(0,_.t)(),""+window.location],void 0,this.featureName,this.ee);n.on("pushState-end",s),n.on("replaceState-end",s),(0,J.sp)(wt.OV,e=>{c(e),(0,S.p)("newURL",[e.timeStamp,""+window.location],void 0,this.featureName,this.ee)},!0,this.removeOnAbort?.signal);let a=!1;const o=new((0,i.dV)().o.MO)((e,t)=>{a||(a=!0,requestAnimationFrame(()=>{(0,S.p)("newDom",[(0,_.t)()],void 0,this.featureName,this.ee),a=!1}))}),c=(0,C.s)(e=>{"loading"!==document.readyState&&((0,S.p)("newUIEvent",[e],void 0,this.featureName,this.ee),o.observe(document.body,{attributes:!0,childList:!0,subtree:!0,characterData:!0}))},100,{leading:!0});this.abortHandler=function(){this.removeOnAbort?.abort(),o.disconnect(),this.abortHandler=void 0},this.importAggregator(e,()=>r.e(478).then(r.bind(r,4393)),{domObserver:o})}}var Tt=r(981);const At={},St=new Set;function xt(e){return"string"==typeof e?{type:"string",size:(new TextEncoder).encode(e).length}:e instanceof ArrayBuffer?{type:"ArrayBuffer",size:e.byteLength}:e instanceof Blob?{type:"Blob",size:e.size}:e instanceof DataView?{type:"DataView",size:e.byteLength}:ArrayBuffer.isView(e)?{type:"TypedArray",size:e.byteLength}:{type:"unknown",size:0}}class Ot{constructor(e,t){this.timestamp=(0,_.t)(),this.currentUrl=(0,Ee.L)(window.location.href),this.socketId=(0,ye.LA)(8),this.requestedUrl=(0,Ee.L)(e),this.requestedProtocols=Array.isArray(t)?t.join(","):t||"",this.openedAt=void 0,this.protocol=void 0,this.extensions=void 0,this.binaryType=void 0,this.messageOrigin=void 0,this.messageCount=0,this.messageBytes=0,this.messageBytesMin=0,this.messageBytesMax=0,this.messageTypes=void 0,this.sendCount=0,this.sendBytes=0,this.sendBytesMin=0,this.sendBytesMax=0,this.sendTypes=void 0,this.closedAt=void 0,this.closeCode=void 0,this.closeReason="unknown",this.closeWasClean=void 0,this.connectedDuration=0,this.hasErrors=void 0}}class _t extends W{static featureName=o.TZ;constructor(e){super(e,o.TZ);const n=e.init.feature_flags.includes("websockets")||e.init.web_sockets?.enabled,s=!e.init.feature_flags.includes("no_spv"),a=[e.init.page_action.enabled,e.init.performance.capture_marks,e.init.performance.capture_measures,e.init.performance.resources.enabled,e.init.user_actions.enabled,n,s];var c;let d;if(c=e,(0,N.Y)(k.hG,(e,t)=>ce(e,t,c),c),function(e){(0,N.Y)(k.fF,(t,r)=>ue(t,r,e),e)}(e),ct(e),Se(e),function(e){(0,N.Y)(k.V1,(t,r)=>de(t,r,e),e)}(e),this.removeOnAbort=new AbortController,this.abortHandler=()=>{this.removeOnAbort.abort(),this.abortHandler=void 0},n){const u=function(e,t){if(!(0,i.dV)().o.WS)return e;const r=e.get("websockets");if(At[r.debugId]++)return r;At[r.debugId]=1,(0,V.G)(()=>{const e=(0,_.t)();St.forEach(t=>{t.nrData.closedAt=e,t.nrData.closeCode=1001,t.nrData.closeReason="Page navigating away",t.nrData.closeWasClean=!1,t.nrData.openedAt&&(t.nrData.connectedDuration=e-t.nrData.openedAt),r.emit("ws",[t.nrData,t.targets],t)})});
5class n extends WebSocket{static name=Tt.R.WS;static toString(){return"function WebSocket() { [native code] }"}toString(){return"[object WebSocket]"}get[Symbol.toStringTag](){return n.name}#o(e){(e.__newrelic??={}).socketId=this.nrData.socketId,this.nrData.hasErrors??=!0}constructor(...e){super(...e),this.nrData=new Ot(e[0],e[1]),this.targets=(0,Ie.$5)(t),this.addEventListener("open",()=>{this.nrData.openedAt=(0,_.t)(),["protocol","extensions","binaryType"].forEach(e=>{this.nrData[e]=this[e]}),St.add(this)}),this.addEventListener("message",e=>{const{type:t,size:r}=xt(e.data);this.nrData.messageOrigin??=(0,Ee.L)(e.origin),this.nrData.messageCount++,this.nrData.messageBytes+=r,this.nrData.messageBytesMin=Math.min(this.nrData.messageBytesMin||1/0,r),this.nrData.messageBytesMax=Math.max(this.nrData.messageBytesMax,r),(this.nrData.messageTypes??"").includes(t)||(this.nrData.messageTypes=this.nrData.messageTypes?"".concat(this.nrData.messageTypes,",").concat(t):t)}),this.addEventListener("close",e=>{this.nrData.closedAt=(0,_.t)(),this.nrData.closeCode=e.code,e.reason&&(this.nrData.closeReason=e.reason),this.nrData.closeWasClean=e.wasClean,this.nrData.connectedDuration=this.nrData.closedAt-this.nrData.openedAt,St.delete(this),r.emit("ws",[this.nrData,this.targets],this)})}addEventListener(e,t,...r){const n=this,i="function"==typeof t?function(...e){try{return t.apply(this,e)}catch(e){throw n.#o(e),e}}:t?.handleEvent?{handleEvent:function(...e){try{return t.handleEvent.apply(t,e)}catch(e){throw n.#o(e),e}}}:t;return super.addEventListener(e,i,...r)}send(e){if(this.readyState===WebSocket.OPEN){const{type:t,size:r}=xt(e);this.nrData.sendCount++,this.nrData.sendBytes+=r,this.nrData.sendBytesMin=Math.min(this.nrData.sendBytesMin||1/0,r),this.nrData.sendBytesMax=Math.max(this.nrData.sendBytesMax,r),(this.nrData.sendTypes??"").includes(t)||(this.nrData.sendTypes=this.nrData.sendTypes?"".concat(this.nrData.sendTypes,",").concat(t):t)}try{return super.send(e)}catch(e){throw this.#o(e),e}}close(...e){try{super.close(...e)}catch(e){throw this.#o(e),e}}}return g.gm.WebSocket=n,r}(this.ee,e);u.on("ws",(e,t)=>{(0,S.p)("ws-complete",[e,t],void 0,this.featureName,this.ee)})}if(s){if("function"==typeof g.gm.ReportingObserver){const l=new g.gm.ReportingObserver(e=>{e.forEach(e=>{(0,S.p)("spv",[kt(e),(0,_.t)()],void 0,t.K7.genericEvents,this.ee)}),l.disconnect()},{types:["csp-violation"],buffered:!0});l.observe()}g.gm.addEventListener("securitypolicyviolation",e=>{(0,S.p)("spv",[kt(e),e.timeStamp],void 0,t.K7.genericEvents,this.ee)},(0,J.jT)(!1,this.removeOnAbort.signal))}if(g.RI){if(ze(this.ee,e),De(this.ee,e),d=at(this.ee,e),e.init.user_actions.enabled){function f(t){const r=(0,Ge.D)(t);return e.beacons.includes(r.hostname+":"+r.port)}function h(){d.emit("navChange")}o.Zp.forEach(e=>(0,J.sp)(e,e=>(0,S.p)("ua",[e],void 0,this.featureName,this.ee),!0)),o.qN.forEac
5h(e=>{const t=(0,C.s)(e=>{(0,S.p)("ua",[e],void 0,this.featureName,this.ee)},500,{leading:!0});(0,J.sp)(e,t)}),g.gm.addEventListener("error",()=>{(0,S.p)("uaErr",[],void 0,t.K7.genericEvents,this.ee)},(0,J.jT)(!1,this.removeOnAbort.signal)),this.ee.on("open-xhr-start",(e,r)=>{f(e[1])||r.addEventListener("readystatechange",()=>{2===r.readyState&&(0,S.p)("uaXhr",[],void 0,t.K7.genericEvents,this.ee)},(0,J.jT)(void 0,this.removeOnAbort.signal))}),this.ee.on("fetch-start",e=>{e.length>=1&&!f(Ze(e[0]))&&(0,S.p)("uaXhr",[],void 0,t.K7.genericEvents,this.ee)}),d.on("pushState-end",h),d.on("replaceState-end",h),window.addEventListener("hashchange",h,(0,J.jT)(!0,this.removeOnAbort.signal)),window.addEventListener("popstate",h,(0,J.jT)(!0,this.removeOnAbort.signal))}if(e.init.performance.resources.enabled&&g.gm.PerformanceObserver?.supportedEntryTypes.includes("resource")){new PerformanceObserver(e=>{e.getEntries().forEach(e=>{(0,S.p)("browserPerformance.resource",[e],void 0,this.featureName,this.ee)})}).observe({type:"resource",buffered:!0})}}a.some(e=>e)?this.importAggregator(e,()=>r.e(478).then(r.bind(r,8019))):this.deregisterDrain()}}function kt(e){const t=e.body??e;return{blockedUrl:t.blockedURL??e.blockedURI,documentUrl:t.documentURL??e.documentURI,effectiveDirective:t.effectiveDirective,originalPolicy:t.originalPolicy,sourceFile:t.sourceFile,statusCode:t.statusCode,lineNumber:t.lineNumber,columnNumber:t.columnNumber,disposition:"reporting"===t.disposition?"report":t.disposition,sample:t.sample,referrer:t.referrer}}var Nt=r(2646);const Lt=new Map;function Mt(e,t,r,n,i=!0,s){if("object"!=typeof t||!t||"string"!=typeof r||!r||"function"!=typeof t[r])return(0,l.R)(29);const a=function(e){return(e||R.ee).get("logger")}(e),o=(0,Pe.YM)(a,void 0,s),c=new Nt.y(R.P);c.level=n.level,c.customAttributes=n.customAttributes,c.autoCaptured=i;const d=t[r]?.[Pe.Jt]||t[r];return Lt.set(d,c),o.inPlace(t,[r],"wrap-logger-",()=>Lt.get(d),void 0,!0),a}var Pt=r(1910);class It extends W{static featureName=se.TZ;constructor(e){var t;super(e,se.TZ),t=e,(0,N.Y)("log",(e,r)=>oe(e,r,t),t),function(e){(0,N.Y)(k.Wb,(t,r,{customAttributes:n={},level:i=se.p_.INFO}={})=>{Mt(e.ee,t,r,{customAttributes:n,level:i},!1,e)},e)}(e),Se(e);const n=this.ee;["log","error","warn","info","debug","trace"].forEach(t=>{(0,Pt.i)(g.gm.console[t]),Mt(n,g.gm.console,t,{level:"log"===t?"info":t},void 0,e)}),this.ee.on("wrap-logger-end",function([t],r,i,s=[e.runtime.v2Target]){const{level:a,customAttributes:o,autoCaptured:c}=this;s.forEach(e=>{(0,ae.R)(n,t,o,a,c,e)})}),this.importAggregator(e,()=>r.e(478).then(r.bind(r,5288)))}}new F({features:[nt,K,G,vt,Et,Y,Oe,_t,It,Rt],loaderType:"spa"})})()})();</script>
5 6<meta name="title" content="About Us - Flooring Inc.com"/> 7<meta name="description" content="Flooring Inc is the industry leader in mats and rubber flooring. About us explains we are the Extreme Makeover: Home Edition choose us to be their flooring provider."/> 8<meta name="keywords" content="Flooring, Rubber, Garage, Foam, Dance, Carpet, Hardwood, Laminate, Vinyl, Gym Floors, Gymnastic Mats, Mats"/> 9<meta name="robots" content="INDEX,FOLLOW"/> 10<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"/> 11<title>About Us - Flooring Inc.com</title> 12<link type="text/css" rel="preload" as="style" onload="this.onload=null;this.rel='stylesheet'" href="https://www.flooringinc.com/static/version1789462004/frontend/Dcw/hyvadesktop/en_US/css/styles.min.css" />
13<script type="text/javascript" defer="defer" src="https://www.flooringinc.com/static/version1789462004/frontend/Dcw/hyvadesktop/en_US/Hyva_MagentoDataServices/js/storefront-event-collector.min.js"></script>
vendor: 1 bytes, line 13
13
14<script type="text/javascript" defer="defer" src="https://www.flooringinc.com/static/version1789462004/frontend/Dcw/hyvadesktop/en_US/Hyva_MagentoDataServices/js/storefront-events-sdk.min.js"></script>
vendor: 1 bytes, line 14
14
15<script type="text/javascript" defer="defer" src="https://www.flooringinc.com/static/version1789462004/frontend/Dcw/hyvadesktop/en_US/Hyva_MagentoProductRecommendations/js/recs-sdk.min.js"></script>
vendor: 1 bytes, line 15
15
16<script type="text/javascript" defer="defer" src="https://www.flooringinc.com/static/version1789462004/frontend/Dcw/hyvadesktop/en_US/Hyva_MagentoProductRecommendationsLayout/js/recs-sdk.min.js"></script>
16 17<link rel="canonical" href="https://www.flooringinc.com/about" /> 18<link rel="icon" type="image/x-icon" href="https://www.flooringinc.com/media/favicon/stores/1/fav.png" /> 19<link rel="shortcut icon" type="image/x-icon" href="https://www.flooringinc.com/media/favicon/stores/1/fav.png" /> 20 21<!-- Plausible Script Start --> 22
23<script defer data-domain="flooringinc.com" src="https://plausible.io/js/script.file-downloads.hash.outbound-links.pageview-props.revenue.tagged-events.js"></script>
vendor: 2 bytes, line 23
23
24<script>window.plausible = window.plausible || function() { (window.plausible.q = window.plausible.q || []).push(arguments) }</script>
24 25 26<!-- Plausible Script Ends --> 27 28<!--My8cKJTuUilt2Vvmb0igB9BsOCrMSS2F--> 29 30<link rel="preconnect" href="https://www.googletagmanager.com" crossorigin> 31<link rel="dns-prefetch" href="https://www.googletagmanager.com"> 32<link rel="preload" href="https://fonts.gstatic.com/s/poppins/v20/pxiEyp8kv8JHgFVrJJfecg.woff2" as="font" type="font/woff2" crossorigin="anonymous"/> 33 34<style> 35.needsclick.kl-teaser-UEa7DA { display:none!important; } 36.bg-white.w-full.max-w-\[580px\].text-center.rounded-lg.shadow-lg { 37 max-width: 580px; 38} 39</style> 40
41<script nonce="YjZ2ZWQxdzRxcTd4ZGJzcGk4OGs3aXlybTNkOWF6ODk="> 42 window.getWpGA4Cookie = function(name) { 43 match = document.cookie.match(new RegExp(name + '=([^;]+)')); 44 if (match) return decodeURIComponent(match[1].replace(/\+/g, ' ')) ; 45 }; 46 47 window.ga4AllowServices = false; 48 49 var isCookieRestrictionModeEnabled = 0, 50 currentWebsiteId = 1, 51 cookieRestrictionName = 'user_allowed_save_cookie'; 52 53 if (isCookieRestrictionModeEnabled) { 54 allowedCookies = window.getWpGA4Cookie(cookieRestrictionName); 55 56 if (allowedCookies !== undefined) { 57 allowedWebsites = JSON.parse(allowedCookies); 58 59 if (allowedWebsites[currentWebsiteId] === 1) { 60 window.ga4AllowServices = true; 61 } 62 } 63 } else { 64 window.ga4AllowServices = true; 65 } 66</script>
66 67
67<script nonce="YjZ2ZWQxdzRxcTd4ZGJzcGk4OGs3aXlybTNkOWF6ODk="> 68 if (window.ga4AllowServices) { 69 window.dataLayer = window.dataLayer || []; 70 var dl4Objects = [{"pageName":"About Us - Flooring Inc.com","pageType":"other"}]; 71 for (var i in dl4Objects) { 72 window.dataLayer.push({ecommerce: null}); 73 window.dataLayer.push(dl4Objects[i]); 74 } 75 var wpGA4Cookies = ['wp_ga4_user_id','wp_ga4_customerGroup']; 76 wpGA4Cookies.map(function (cookieName) { 77 var cookieValue = window.getWpGA4Cookie(cookieName); 78 if (cookieValue) { 79 var dl4Object = {}; 80 dl4Object[cookieName.replace('wp_ga4_', '')] = cookieValue; 81 window.dataLayer.push(dl4Object); 82 } 83 }); 84 } 85 </script>
85 86 87 <!-- Google Tag Manager -->
88<script nonce="YjZ2ZWQxdzRxcTd4ZGJzcGk4OGs3aXlybTNkOWF6ODk=" > if (window.ga4AllowServices) { 89 90window.addEventListener('init-external-scripts', () => {
vendor: 335 bytes, lines 90-96
90 91 92(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': 93new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], 94j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 95'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); 96})(window,document,'script','dataLayer','
96GTM-5XR7MB7
vendor: 7 bytes, lines 96-97
96'); 97
98}, {once: true, passive: true}); 99 100} </script>
100 101<!-- End Google Tag Manager --> 102 103
104<script nonce="YjZ2ZWQxdzRxcTd4ZGJzcGk4OGs3aXlybTNkOWF6ODk=">var prCookieService={defaultAttributes:{path:'/'},converter:{write:function(value){return encodeURIComponent(value);},read:function(value){return decodeURIComponent(value)}},decode:function(string){return string.replace(/(%[0-9A-Z]{2})+/g,decodeURIComponent);},set:function(key,value,attributes){if(typeof document==='undefined'){return;} 105attributes=Object.assign(this.defaultAttributes,attributes);if(typeof attributes.expires==='number'){attributes.expires=new Date(new Date()*1+attributes.expires*864e+5);} 106attributes.expires=attributes.expires?attributes.expires.toUTCString():'';try{var result=JSON.stringify(value);if(/^[\{\[]/.test(result)){value=result;}}catch(e){} 107value=this.converter.write(value);key=this.converter.write(String(key)).replace(/%(23|24|26|2B|5E|60|7C)/g,decodeURIComponent).replace(/[\(\)]/g,escape);var stringifiedAttributes='';for(var attributeName in attributes){if(!attributes[attributeName]){continue;} 108stringifiedAttributes+='; '+attributeName;if(attributes[attributeName]===true){continue;} 109stringifiedAttributes+='='+attributes[attributeName].split(';')[0];} 110return(document.cookie=key+'='+value+stringifiedAttributes);},remove:function(key,attributes){this.set(key,'',{...attributes,...{expires:-1}});},get:function(key,json=false){if(typeof document==='undefined'){return;} 111var jar={};var cookies=document.cookie?document.cookie.split('; '):[];var i=0;for(;i<cookies.length;i++){var parts=cookies[i].split('=');var cookie=parts.slice(1).join('=');if(!json&&cookie.charAt(0)==='"'){cookie=cookie.slice(1,-1);} 112try{var name=this.converter.write(parts[0]);cookie=this.converter.read(cookie);if(json){try{cookie=JSON.parse(cookie);}catch(e){}} 113jar[name]=cookie;if(key===name){break;}}catch(e){}} 114return key?jar[key]:jar;}}</script>
114 115
116<script nonce="YjZ2ZWQxdzRxcTd4ZGJzcGk4OGs3aXlybTNkOWF6ODk=">var prGlobalPrivacyControlApi={config:{"canProcessSignal":true,"isGeotargetingEnabled":true,"geotargetingApiEndpoint":"https:\/\/www.flooringinc.com\/rest\/V1\/pr-global-privacy-control\/geo-targeting\/is-applicable"},isApplicableForUser:false,isConfigured:false,configure:function(){const setConfigurationResult=(isApplicable)=>{this.isApplicableForUser=isApplicable;this.isConfigured=true;if(isApplicable){this.signalHandlers.processPendingHandlers();} 117document.dispatchEvent(new Event('pr-global-privacy-control-api:configured'));};if(!this.config.canProcessSignal){setConfigurationResult(false);return;} 118if(this.cache.get('isApplicableForUser')){setConfigurationResult(this.cache.get('isApplicableForUser'));return;} 119if(!navigator.globalPrivacyControl){setConfigurationResult(false);return;} 120if(!this.config.isGeotargetingEnabled){this.cache.set('isApplicableForUser',true);setConfigurationResult(true);return;} 121this.geotargeting.isApplicable().then(result=>{this.cache.set('isApplicableForUser',result);setConfigurationResult(result);}).catch(()=>setConfigurationResult(true));},shouldApply:function(){if(!this.isConfigured){return false;} 122return this.isApplicableForUser;},};prGlobalPrivacyControlApi.geotargeting={isApplicable:async function(){return fetch(prGlobalPrivacyControlApi.config.geotargetingApiEndpoint,{method:'POST',credentials:'include'}).then(r=>r.json());}};prGlobalPrivacyControlApi.signalHandlers={handlers:[],addHandler:function(callback){let handler={callback:callback,executed:false} 123this.handlers.push(handler);if(prGlobalPrivacyControlApi.isConfigured&&prGlobalPrivacyControlApi.shouldApply()){handler.callback();handler.executed=true;}},processPendingHandlers:function(){if(!prGlobalPrivacyControlApi.shouldApply()){return;} 124if(!prCookieService.get('pr-gpc-signal-handled')){prCookieService.set('pr-gpc-signal-handled',true,{expires:null});} 125this.handlers.forEach(function(handler){if(false===handler.executed){handler.callback();handler.executed=true;}}.bind(this));}};prGlobalPrivacyControlApi.cache={storageKey:'pr_global_privacy_control_api_cache',get:function(key){try{let raw=sessionStorage.getItem(this.storageKey);let cacheData=JSON.parse(raw);return cacheData.hasOwnProperty(key)?cacheData[key]:null;}catch(e){return null;}},set:function(key,value){try{let cacheData=JSON.parse(sessionStorage.getItem(this.storageKey)||'{}');cacheData[key]=value;sessionStorage.setItem(this.storageKey,JSON.stringify(cacheData));}catch(e){}},};prGlobalPrivacyControlApi.configure();</script>
vendor: 1 bytes, line 125
125
126<script type="text/javascript" data-routing="commerce=rum" defer="defer" src="https://rum.hlx.page/.rum/@adobe/helix-rum-js@^2/dist/rum-standalone.js"></script>
126 127 128 129
129<script type="text/javascript" nonce="YjZ2ZWQxdzRxcTd4ZGJzcGk4OGs3aXlybTNkOWF6ODk=">(()=>{let userAllowedCookies=prCookieService.get('user_allowed_save_cookie');if(!userAllowedCookies){return;} 130let customerConsent=prCookieService.get('pr-cookie-consent');if(!customerConsent){return;} 131try{customerConsent=JSON.parse(customerConsent);}catch(error){return;} 132const categoryKey='marketing';if(customerConsent.includes('all')||customerConsent.includes(categoryKey)){return;} 133let intervalId=setInterval(prCookieService.set.bind(prCookieService,'mg_dnt',true,{expires:null}),500);document.addEventListener('pr-cookie-consent-api:configured',()=>{clearInterval(intervalId);});})();</script>
133 134 135<!-- Critical CSS for <lite-youtube> element to avoid CLS: https://web.dev/cls/ --> 136<style> 137 lite-youtube{background-color:#000;position:relative;display:block;contain:content;background-position:center center;background-size:cover;cursor:pointer}lite-youtube::after{content:"";display:block;padding-bottom:calc(100% / (16 / 9))}</style>
138<script> 139 var BASE_URL = 'https://www.flooringinc.com/'; 140 var THEME_PATH = 'https://www.flooringinc.com/static/version1789462004/frontend/Dcw/hyvadesktop/en_US'; 141 var COOKIE_CONFIG = { 142 "expires": null, 143 "path": "\u002F", 144 "domain": ".www.flooringinc.com", 145 "secure": true, 146 "lifetime": "3600", 147 "cookie_restriction_enabled": false }; 148 var CURRENT_STORE_CODE = 'default'; 149 var CURRENT_WEBSITE_ID = '1'; 150 151 window.hyva = window.hyva || {} 152 153 window.cookie_consent_groups = window.cookie_consent_groups || {} 154 window.cookie_consent_groups['necessary'] = true; 155 156 window.cookie_consent_config = window.cookie_consent_config || {}; 157 window.cookie_consent_config['necessary'] = [].concat( 158 window.cookie_consent_config['necessary'] || [], 159 [ 160 'user_allowed_save_cookie', 161 'form_key', 162 'mage-messages', 163 'private_content_version', 164 'mage-cache-sessid', 165 'last_visited_store', 166 'section_data_ids' 167 ] 168 ); 169</script>
vendor: 1 bytes, line 169
169
170<script> 171 'use strict'; 172 (function( hyva, undefined ) { 173 174 function lifetimeToExpires(options, defaults) { 175 176 const lifetime = options.lifetime || defaults.lifetime; 177 178 if (lifetime) { 179 const date = new Date; 180 date.setTime(date.getTime() + lifetime * 1000); 181 return date; 182 } 183 184 return null; 185 } 186 187 function generateRandomString() { 188 189 const allowedCharacters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ', 190 length = 16; 191 192 let formKey = '', 193 charactersLength = allowedCharacters.length; 194 195 for (let i = 0; i < length; i++) { 196 formKey += allowedCharacters[Math.round(Math.random() * (charactersLength - 1))] 197 } 198 199 return formKey; 200 } 201 202 const sessionCookieMarker = {noLifetime: true} 203 204 const cookieTempStorage = {}; 205 206 const internalCookie = { 207 get(name) { 208 const v = document.cookie.match('(^|;) ?' + name + '=([^;]*)(;|$)'); 209 return v ? v[2] : null; 210 }, 211 set(name, value, days, skipSetDomain) { 212 let expires, 213 path, 214 domain, 215 secure, 216 samesite; 217 218 const defaultCookieConfig = { 219 expires: null, 220 path: '/', 221 domain: null, 222 secure: false, 223 lifetime: null, 224 samesite: 'lax' 225 }; 226 227 const cookieConfig = window.COOKIE_CONFIG || {}; 228 229 expires = days && days !== sessionCookieMarker 230 ? lifetimeToExpires({lifetime: 24 * 60 * 60 * days, expires: null}, defaultCookieConfig) 231 : lifetimeToExpires(window.COOKIE_CONFIG, defaultCookieConfig) || defaultCookieConfig.expires; 232 233 path = cookieConfig.path || defaultCookieConfig.path; 234 domain = !skipSetDomain && (cookieConfig.domain || defaultCookieConfig.domain); 235 secure = cookieConfig.secure || defaultCookieConfig.secure; 236 samesite = cookieConfig.samesite || defaultCookieConfig.samesite; 237 238 document.cookie = name + "=" + encodeURIComponent(value) + 239 (expires && days !== sessionCookieMarker ? '; expires=' + expires.toGMTString() : '') + 240 (path ? '; path=' + path : '') + 241 (domain ? '; domain=' + domain : '') + 242 (secure ? '; secure' : '') + 243 (samesite ? '; samesite=' + samesite : 'lax'); 244 }, 245 isWebsiteAllowedToSaveCookie() { 246 const allowedCookies = this.get('user_allowed_save_cookie'); 247 if (allowedCookies) { 248 const allowedWebsites = JSON.parse(unescape(allowedCookies)); 249 250 return allowedWebsites[CURRENT_WEBSITE_ID] === 1; 251 } 252 return false; 253 }, 254 getGroupByCookieName(name) { 255 const cookieConsentConfig = window.cookie_consent_config || {}; 256 let group = null; 257 for (let prop in cookieConsentConfig) { 258 if (!cookieConsentConfig.hasOwnProperty(prop)) continue; 259 if (cookieConsentConfig[prop].includes(name)) { 260 group = prop; 261 break; 262 } 263 } 264 return group; 265 }, 266 isCookieAllowed(name) { 267 const cookieGroup = this.getGroupByCookieName(name); 268 return cookieGroup 269 ? window.cookie_consent_groups[cookieGroup] 270 : this.isWebsiteAllowedToSaveCookie(); 271 }, 272 saveTempStorageCookies() { 273 for (const [name, data] of Object.entries(cookieTempStorage)) { 274 if (this.isCookieAllowed(name)) { 275 this.set(name, data['value'], data['days'], data['skipSetDomain']); 276 delete cookieTempStorage[name]; 277 } 278 } 279 } 280 }; 281 282 hyva.getCookie = (name) => { 283 const cookieConfig = window.COOKIE_CONFIG || {}; 284 285 if (cookieConfig.cookie_restriction_enabled && ! internalCookie.isCookieAllowed(name)) { 286 return cookieTempStorage[name] ? cookieTempStorage[name]['value'] : null; 287 } 288 289 return internalCookie.get(name); 290 } 291 292 hyva.setCookie = (name, value, days, skipSetDomain) => { 293 const cookieConfig = window.COOKIE_CONFIG || {}; 294 295 if (cookieConfig.cookie_restriction_enabled && ! internalCookie.isCookieAllowed(name)) { 296 cookieTempStorage[name] = {value, days, skipSetDomain}; 297 return; 298 } 299 return internalCookie.set(name, value, days, skipSetDomain); 300 } 301 302 303 hyva.setSessionCookie = (name, value, skipSetDomain) => { 304 return hyva.setCookie(name, value, sessionCookieMarker, skipSetDomain) 305 } 306 307 hyva.getBrowserStorage = () => { 308 const browserStorage = window.localStorage || window.sessionStorage; 309 if (!browserStorage) { 310 console.warn('Browser Storage is unavailable'); 311 return false;
312 } 313 try { 314 browserStorage.setItem('storage_test', '1'); 315 browserStorage.removeItem('storage_test'); 316 } catch (error) { 317 console.warn('Browser Storage is not accessible', error); 318 return false; 319 } 320 return browserStorage; 321 } 322 323 hyva.postForm = (postParams) => { 324 const form = document.createElement("form"); 325 326 let data = postParams.data; 327 328 if (! postParams.skipUenc && ! data.uenc) { 329 data.uenc = btoa(window.location.href); 330 } 331 form.method = "POST"; 332 form.action = postParams.action; 333 334 Object.keys(postParams.data).map(key => { 335 const field = document.createElement("input"); 336 field.type = 'hidden' 337 field.value = postParams.data[key]; 338 field.name = key; 339 form.appendChild(field); 340 }); 341 342 const form_key = document.createElement("input"); 343 form_key.type = 'hidden'; 344 form_key.value = hyva.getFormKey(); 345 form_key.name="form_key"; 346 form.appendChild(form_key); 347 348 document.body.appendChild(form); 349 350 form.submit(); 351 } 352 353 hyva.getFormKey = function () { 354 let formKey = hyva.getCookie('form_key'); 355 356 if (!formKey) { 357 formKey = generateRandomString(); 358 hyva.setCookie('form_key', formKey); 359 } 360 361 return formKey; 362 } 363 364 hyva.formatPrice = (value, showSign, options = {}) => { 365 const formatter = new Intl.NumberFormat( 366 'en\u002DUS', 367 Object.assign({ 368 style: 'currency', 369 currency: 'USD', 370 signDisplay: showSign ? 'always' : 'auto' 371 }, options) 372 ); 373 return (typeof Intl.NumberFormat.prototype.formatToParts === 'function') ? 374 formatter.formatToParts(value).map(({type, value}) => { 375 switch (type) { 376 case 'currency': 377 return '\u0024' || value; 378 case 'minusSign': 379 return '- '; 380 case 'plusSign': 381 return '+ '; 382 default : 383 return value; 384 } 385 }).reduce((string, part) => string + part) : 386 formatter.format(value); 387 } 388 389 const formatStr = function (str, nStart) { 390 const args = Array.from(arguments).slice(2); 391 392 return str.replace(/(%+)([0-9]+)/g, (m, p, n) => { 393 const idx = parseInt(n) - nStart; 394 395 if (args[idx] === null || args[idx] === void 0) { 396 return m; 397 } 398 return p.length % 2 399 ? p.slice(0, -1).replace('%%', '%') + args[idx] 400 : p.replace('%%', '%') + n; 401 }) 402 } 403 404 hyva.str = function (string) { 405 const args = Array.from(arguments); 406 args.splice(1, 0, 1); 407 408 return formatStr.apply(undefined, args); 409 } 410 411 hyva.strf = function () { 412 const args = Array.from(arguments); 413 args.splice(1, 0, 0); 414 415 return formatStr.apply(undefined, args); 416 } 417 418 /** 419 * Take a html string as `content` parameter and 420 * extract an element from the DOM to replace in 421 * the current page under the same selector, 422 * defined by `targetSelector` 423 */ 424 hyva.replaceDomElement = (targetSelector, content) => { 425 // Parse the content and extract the DOM node using the `targetSelector` 426 const parser = new DOMParser(); 427 const doc = parser.parseFromString(content, 'text/html'); 428 const contentNode = doc.querySelector(targetSelector); 429 430 // Bail if content can't be found 431 if (!contentNode) { 432 return; 433 } 434 435 hyva.activateScripts(contentNode) 436 437 // Replace the old DOM node with the new content
438 document.querySelector(targetSelector).replaceWith(contentNode); 439 440 // Reload customerSectionData and display cookie-messages if present 441 window.dispatchEvent(new CustomEvent("reload-customer-section-data")); 442 hyva.initMessages(); 443 } 444 445 hyva.activateScripts = (contentNode) => { 446 // Extract all the script tags from the content. 447 // Script tags won't execute when inserted into a dom-element directly, 448 // therefore we need to inject them to the head of the document. 449 const tmpScripts = contentNode.getElementsByTagName('script'); 450 451 if (tmpScripts.length > 0) { 452 // Push all script tags into an array 453 // (to prevent dom manipulation while iterating over dom nodes) 454 const scripts = []; 455 for (let i = 0; i < tmpScripts.length; i++) { 456 scripts.push(tmpScripts[i]); 457 } 458 459 // Iterate over all script tags and duplicate+inject each into the head 460 for (let i = 0; i < scripts.length; i++) { 461 let script = document.createElement('script'); 462 script.innerHTML = scripts[i].innerHTML; 463 464 document.head.appendChild(script); 465 466 // Remove the original (non-executing) node from the content 467 scripts[i].parentNode.removeChild(scripts[i]); 468 } 469 } 470 return contentNode; 471 } 472 473 const replace = {['+']: '-', ['/']: '_', ['=']: ','}; 474 hyva.getUenc = () => btoa(window.location.href).replace(/[+/=]/g, match => replace[match]); 475 476 let currentTrap; 477 478 const focusableElements = (rootElement) => { 479 const selector = 'button, [href], input, select, textarea, details, [tabindex]:not([tabindex="-1"]'; 480 return Array.from(rootElement.querySelectorAll(selector)) 481 .filter(el => { 482 return el.style.display !== 'none' 483 && !el.disabled 484 && el.tabIndex !== -1 485 && (el.offsetWidth || el.offsetHeight || el.getClientRects().length) 486 }) 487 } 488 489 const focusTrap = (e) => { 490 const isTabPressed = e.key === 'Tab' || e.keyCode === 9; 491 if (!isTabPressed) return; 492 493 const focusable = focusableElements(currentTrap) 494 const firstFocusableElement = focusable[0] 495 const lastFocusableElement = focusable[focusable.length - 1] 496 497 e.shiftKey 498 ? document.activeElement === firstFocusableElement && (lastFocusableElement.focus(), e.preventDefault()) 499 : document.activeElement === lastFocusableElement && (firstFocusableElement.focus(), e.preventDefault()) 500 }; 501 502 hyva.releaseFocus = (rootElement) => { 503 if (currentTrap && (!rootElement || rootElement === currentTrap)) { 504 currentTrap.removeEventListener('keydown', focusTrap) 505 currentTrap = null 506 } 507 } 508 hyva.trapFocus = (rootElement) => { 509 if (!rootElement) return; 510 hyva.releaseFocus() 511 currentTrap = rootElement 512 rootElement.addEventListener('keydown', focusTrap) 513 const firstElement = focusableElements(rootElement)[0] 514 firstElement && firstElement.focus() 515 } 516 517 hyva.alpineInitialized = (fn) => window.addEventListener('alpine:initialized', fn, {once: true}) 518 window.addEventListener('user-allowed-save-cookie', () => internalCookie.saveTempStorageCookies()) 519 520 }( window.hyva = window.hyva || {} )); 521</script>
vendor: 1 bytes, line 521
521
522<script> 523 if (!window.IntersectionObserver) { 524 window.IntersectionObserver = function (callback) { 525 this.observe = el => el && callback(this.takeRecords()); 526 this.takeRecords = () => [{isIntersecting: true, intersectionRatio: 1}]; 527 this.disconnect = () => {}; 528 this.unobserve = () => {}; 529 } 530 } 531</script>
531 532<div data-content-type="html" data-appearance="default" data-element="main" data-decoded="true"><button id="open-chatbox" aria-label="Open chat"><svg position="right" class="sc-1k07fow-1 cbnSms" width="24px" height="24px" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><path d="M10,18 L6,22 L6,18 L10,18 Z M17,6 C19.7614237,6 22,8.23857625 22,11 C22,13.7614237 19.7614237,16 17,16 L17,16 L7,16 C4.23857625,16 2,13.7614237 2,11 C2,8.23857625 4.23857625,6 7,6 L7,6 Z" transform="translate(12.000000, 14.000000) scale(-1, 1) translate(-12.000000, -14.000000) "></path></svg></button>
533<script> 534// Lightweight click handler: if Zendesk is already available, open messenger and hide the button. 535// If Zendesk is not available yet we do nothing here â the DOMContentLoaded handler below is 536// responsible for loading the script (avoids double-loading the Zendesk snippet). 537(function () { 538 const btn = document.getElementById('open-chatbox'); 539 if (!btn) return; 540 541 btn.addEventListener('click', function () { 542 if (typeof zE !== 'undefined') { 543 try { 544 zE('messenger', 'open'); 545 } catch (e) { 546 // ignore if API is not ready yet 547 } 548 this.style.display = 'none'; 549 this.setAttribute('aria-hidden', 'true'); 550 } 551 // If zE is not defined we intentionally don't load the script here to avoid 552 // duplicate loading. The DOMContentLoaded listener below will handle loading. 553 }); 554})(); 555</script>
vendor: 2 bytes, line 555
555
556<script> 557/* ===== Load UserWay on click ===== */ 558document.addEventListener('DOMContentLoaded', function () { 559 560 const userWayButton = document.getElementById('uw-widget-custom-trigger'); 561 const zendeskButton = document.getElementById('open-chatbox'); 562 563 /* ---- UserWay Script Functions ---- */ 564 function initUserWay() { 565 if (window.UserWay) { 566 window.UserWay.widgetToggle(); 567 return; 568 } 569 } 570 571 function loadUserWay() { 572 if (window.UserWay) return; // Skip if already loaded 573 574 const userwayScript = document.createElement('script'); 575 userwayScript.src = 'https://cdn.userway.org/widget.js'; 576 userwayScript.type = 'text/javascript'; 577 userwayScript.async = true; 578 userwayScript.crossOrigin = 'anonymous'; 579 userwayScript.setAttribute('data-account', 'vfvO52o2Kn'); 580 document.head.append(userwayScript); 581 582 /* Hide UserWay accessibility icon when initialized */ 583 document.addEventListener('userway:init_completed', function (event) { 584 const instance = event.detail.userWayInstance; 585 instance.iconVisibilityOff(); 586 587 const userwayIframe = document.getElementById("launcher"); 588 if (userwayIframe) { 589 const userwaySiblings = Array.from(userwayIframe.parentNode.children); 590 const userwaySiblingDiv = userwaySiblings.find(el => el.tagName === 'DIV'); 591 if (userwaySiblingDiv) { 592 userwaySiblingDiv.id = 'userway-live-chat'; 593 } 594 } 595 }, { once: true }); 596 } 597 598 if (userWayButton) { 599 userWayButton.addEventListener('click', initUserWay); 600 } 601 602 /* ---- Load UserWay on Scroll ---- */ 603 let hasLoaded = false; 604 function handleScroll() { 605 if (!hasLoaded) { 606 hasLoaded = true; 607 loadUserWay(); 608 // Remove scroll listener after loading 609 window.removeEventListener('scroll', handleScroll); 610 } 611 } 612 613 window.addEventListener('scroll', handleScroll); 614 615 /* ---- Load Zendesk Script ---- */ 616 function hideChatButton() { 617 try { 618 if (zendeskButton) { 619 zendeskButton.style.display = 'none'; 620 zendeskButton.setAttribute('aria-hidden', 'true'); 621 } 622 } catch (e) { 623 // ignore 624 } 625 } 626 627 function loadZendesk() { 628 // If already loaded, open messenger and hide the button 629 if (window.zE) { 630 try { zE('messenger', 'open'); } catch (e) { } 631 hideChatButton(); 632 return; 633 } 634 635 // If script is already injected, do nothing (we'll open on load) 636 if (document.getElementById('ze-snippet')) return; 637 638 const zendeskScript = document.createElement('script'); 639 zendeskScript.id = 'ze-snippet'; 640 zendeskScript.src = 'https://static.zdassets.com/ekr/snippet.js?key=f007eb69-6b5d-407a-bdff-0706af960a4d'; 641 642 zendeskScript.onload = function () { 643 // Wait a short moment to ensure widget initializes 644 setTimeout(() => { 645 if (typeof zE !== 'undefined') { 646 try { zE('messenger', 'open'); } catch (e) { } 647 hideChatButton(); 648 } 649 }, 300); 650 }; 651 652 document.head.append(zendeskScript); 653 } 654 655 if (zendeskButton) { 656 zendeskButton.addEventListener('click', loadZendesk); 657 } 658 659}); 660</script>
660 661 662<style> 663.checkout-index-index button#open-chatbox{display:none} 664.uw-widget-custom-trigger{background-image:url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" style="&%2310; fill: %2374767e;&%2310;"><circle cx="16" cy="16" r="15.5" fill="%23fff" stroke="%2374767e" class="circle-wrapper" style="&%2310; stroke: %2374767e;&%2310;"/><path d="M16 11.583a2.083 2.083 0 1 0 0-4.166 2.083 2.083 0 0 0 0 4.166ZM23.917 12.417H8.083a.834.834 0 0 0 0 1.666H13.5v11.459a1.041 1.041 0 1 0 2.083 0V19.5h.834v6.042a1.041 1.041 0 1 0 2.083 0V14.083h5.417a.833.833 0 0 0 0-1.666Z"/></svg>');} 665</style></div> 666 <meta property="og:type" content="cms"/> 667 668 <meta property="og:title" content="About Us - Flooring Inc.com"/> 669 670 <meta property="og:description" content="Flooring Inc is the industry leader in mats and rubber flooring. About us explains we are the Extreme Makeover: Home Edition choose us to be their flooring provider."/> 671 672 <meta property="og:url" content="https://www.flooringinc.com/about"/> 673 <meta property="og:site_name" content="Flooring Inc."/> 674
675<script> 676 window.addEventListener('load', function () { 677 window.magentoStorefrontEvents = magentoStorefrontEvents; 678 magentoStorefrontEvents.context.setStorefrontInstance( 679 {"storeUrl":"https:\/\/www.flooringinc.com\/","websiteId":1,"websiteCode":"base","storeId":1,"storeCode":"main_website_store","storeViewId":1,"storeViewCode":"default","websiteName":"Flooring Inc.","storeName":"Main Website Store","storeViewName":"Default Store View","baseCurrencyCode":"USD","storeViewCurrencyCode":"USD","catalogExtensionVersion":"103.4.28","environmentId":"a90eb89f-1f93-44b0-81d9-2a9af649b47f","environment":"Production","storefrontTemplate":"Hyva"} ); 680 magentoStorefrontEvents.context.setMagentoExtension({ 681 magentoExtensionVersion: "8.0.1", 682 }); 683 magentoStorefrontEvents.context.setDataServicesExtension({ 684 version: "8.0.1", 685 }); 686 magentoStorefrontEvents.context.setPage({ 687 pageType: "Default" 688 }); 689 magentoStorefrontEvents.context.setContext("pageExtended", { 690 action: "page-view" 691 }); 692 693 694 magentoStorefrontEvents.publish.pageView(); 695 }); 696</script>
696 697</head> 698<body class="pl-thm-dcw pl-thm-dcw-hyvadesktop prgdpr-dcw prgdpr-dcw-hyvadesktop cms-about page-layout-1column mst-nav__theme-hyva-reset mst-nav__theme-hyva-default mst-nav__theme-dcw-hyvadesktop cms-page-view page-layout-cms-full-width" id="html-body"> 699<!-- Google Tag Manager (noscript) -->
vendor: 69 bytes, lines 699-700
699 700<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=
700GTM-5XR7MB7
vendor: 85 bytes, lines 700-701
700" 701height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
702<!-- End Google Tag Manager (noscript) --> 703
704<script nonce="YjZ2ZWQxdzRxcTd4ZGJzcGk4OGs3aXlybTNkOWF6ODk="> 705var prCookieConsentApi = { 706 CUSTOMER_CONSENT: 'pr-cookie-consent', 707 SYSTEM_COOKIES: [ 708 'PHPSESSID', 709 this.CUSTOMER_CONSENT, 710 'user_allowed_save_cookie', 711 ], 712 config: {}, 713 whitelist: {}, 714 isConfigured: false, 715 /** 716 * Contains callbacks that run after all configuration come 717 * 718 * @type {function[]} 719 */ 720 configuredCallbacks: [], 721 initCookieBlocking: function () { 722 var cookieDesc = Object.getOwnPropertyDescriptor(Document.prototype, 'cookie') 723 || Object.getOwnPropertyDescriptor(HTMLDocument.prototype, 'cookie'); 724 if (cookieDesc && cookieDesc.configurable) { 725 var api = this; 726 Object.defineProperty(document, 'cookie', { 727 get: function () { 728 return cookieDesc.get.call(document); 729 }, 730 set: function (cookie) { 731 let cookieName = cookie.substring(0, cookie.indexOf('=')).trim(); 732 document.dispatchEvent(new CustomEvent('pr-cookie-consent-api:cookie-blocking:validation', { 733 detail: {cookieName: cookieName, isAllowed: api.isAllowed(cookieName), cookie: cookie} 734 })); 735 736 if (! api.isAllowed(cookieName)) { 737 api.logger.warn('CookieConsent: blocked cookie "' + cookieName + '"'); 738 return; 739 } 740 cookieDesc.set.call(document, cookie); 741 } 742 }); 743 } 744 }, 745 getCookieValue: function (name) { 746 var values = document.cookie.match('(^|;)\\s*' + name + '\\s*=\\s*([^;]+)'); 747 return values ? decodeURIComponent(values.pop()) : ''; 748 }, 749 configure: function (configJson) { 750 this.logger.init(); 751 this.userScript.init(); 752 try { 753 this.config = JSON.parse(configJson); 754 if (this.config.canManageCookie === null) { 755 console.error('CookieConsent: restriction config is invalid'); 756 } 757 this.isConfigured = true; 758 759 this.configuredCallbacks.forEach(function (callback) { 760 callback(); 761 }.bind(this)); 762 763 this.clearRejectedCookie(); 764 } catch (e) { 765 console.error('CookieConsent: error has happened during parse JSON'); 766 return false; 767 } 768 769 document.dispatchEvent(new Event('pr-cookie-consent-api:configured')); 770 }, 771 /** 772 * @param {function} callback 773 * @returns {prCookieConsentApi} 774 */ 775 addConfiguredCallback: function (callback) { 776 this.configuredCallbacks.push(callback); 777 return this; 778 }, 779 isAllowedCategory: function (categoryKey) { 780 if (! this.config.canManageCookie) { 781 return true; 782 } 783 if (this.isEssentialCategory(categoryKey)) { 784 return true; 785 } 786 if (this.isOptIn()) { 787 if (this.isAllCategoriesAllowed()) { 788 return true; 789 } 790 return this.consent.get().includes(categoryKey); 791 } 792 return this.config.canUseCookieBeforeOptIn; 793 }, 794 getDomain: function (cookieName) { 795 return this.config.cookies[cookieName] ? this.config.cookies[cookieName].domain : null; 796 }, 797 isAllowed: function (cookieName) { 798 if (this.isSystemCookie(cookieName)) { 799 return true; 800 } 801 if (! this.config.canManageCookie) { 802 return true; 803 } 804 if (this.whitelist[cookieName]) { 805 return true; 806 } 807 cookieName = this.getTrueCookieName(cookieName); 808 if (! this.isOptIn()) { 809 if (this.config.canUseCookieBeforeOptIn) { 810 return true; 811 } 812 if (this.isKnownCookie(cookieName)) { 813 return this.isInEssentialCategory(cookieName); 814 } 815 return false; 816 } 817 if (! this.isKnownCookie(cookieName)) { 818 return ! this.config.canBlockUnknownCookie; 819 } 820 return this.isInAllowedCategory(cookieName); 821 }, 822 isAllCategoriesAllowed: function () { 823 if (null === this.cache.get('allowAllCategories')) { 824 var customerConsent = this.consent.get(); 825 if (customerConsent && customerConsent.includes('all') ) { 826 this.cache.set('allowAllCategories', true); 827 } else { 828 var allowedWebsites = this.websiteRestriction.getAllowed(); 829 this.cache.set('allowAllCategories', allowedWebsites[this.config.mage.website] === 1); 830 } 831 } 832 return this.cache.get('allowAllCategories'); 833 }, 834 isEssentialCategory: function (categoryKey) { 835 return this.config.essentialCategoryKeys.includes(categoryKey); 836 }, 837 isInEssentialCategory: function (cookieName) { 838 return this.isEssentialCategory(this.getCookieCategory(cookieName)); 839 }, 840 isInAllowedCategory: function (cookieName) { 841 return this.isAllowedCategory(this.getCookieCategory(cookieName)); 842 }, 843 getCookieCategory: function (cookieName) {
844 return this.config.cookieToCategoryMapping[cookieName]; 845 }, 846 isOptIn: function () { 847 var allowedWithDefaultCookie = this.websiteRestriction.getAllowed()[this.config.mage.website] === 1; 848 return Boolean(this.consent.get()) || allowedWithDefaultCookie; 849 }, 850 isSystemCookie: function (cookieName) { 851 return this.SYSTEM_COOKIES.includes(cookieName); 852 }, 853 isKnownCookie: function (cookieName) { 854 return this.config.cookieToCategoryMapping.hasOwnProperty(cookieName); 855 }, 856 getTrueCookieName: function (cookieName) { 857 var keys = Object.keys(this.config.dynamicNamesPatterns), key; 858 for (var i = 0, length = keys.length; i < length; i++) { 859 key = keys[i]; 860 if (new RegExp(this.config.dynamicNamesPatterns[key]).test(cookieName)) { 861 return key; 862 } 863 } 864 return cookieName; 865 }, 866 clearRejectedCookie: function () { 867 let cookies = prCookieService.get(); 868 Object.keys(cookies).forEach(function(cookieName) { 869 if (this.isAllowed(cookieName)) { 870 return; 871 } 872 873 var encodedCookieName = cookieName = encodeURIComponent(String(cookieName)) 874 .replace(/%(23|24|26|2B|5E|60|7C)/g, decodeURIComponent) 875 .replace(/[\(\)]/g, escape); 876 877 this.whitelist[encodedCookieName] = true; 878 if (this.getDomain(cookieName)) { 879 prCookieService.remove(cookieName, {domain: this.getDomain(cookieName)}); 880 } else { 881 prCookieService.remove(cookieName); 882 if (this.config.cookie.parentDomain) { 883 prCookieService.remove(cookieName, {domain: this.config.cookie.parentDomain}); 884 } 885 } 886 this.logger.warn('CookieConsent: remove cookie "' + cookieName + '"'); 887 if (typeof prCookieService.get(cookieName) !== 'undefined') { 888 this.logger.error('CookieConsent: fail to remove cookie "' + cookieName + '"'); 889 } 890 this.whitelist[encodedCookieName] = false; 891 }.bind(this)); 892 } 893}; 894 895prCookieConsentApi.userScript = { 896 /**
897 * List of callbacks and categories they depend on. 898 */ 899 pendingScripts: [], 900 /** 901 * Run script after model is configured or after user provided consent. 902 */ 903 init: function () { 904 prCookieConsentApi.addConfiguredCallback(this.executePendingScripts.bind(this)); 905 prCookieConsentApi.consent.addCallback(this.executePendingScripts.bind(this)); 906 }, 907 /** 908 * Run or delay script. 909 * 910 * @param {function} callback 911 * @param {string} categoryKey 912 */ 913 execute: function (callback, categoryKey) { 914 if (prCookieConsentApi.isConfigured && prCookieConsentApi.isAllowedCategory(categoryKey)) { 915 callback(); 916 return; 917 } 918 919 this.pendingScripts.push({callback: callback, categoryKey: categoryKey, executed: false}); 920 }, 921 /** 922 * Run pending scripts. 923 */ 924 executePendingScripts: function () { 925 this.pendingScripts.forEach(function (script) { 926 if (false === script.executed && prCookieConsentApi.isAllowedCategory(script.categoryKey)) { 927 script.callback(); 928 script.executed = true; 929 } 930 }.bind(this)); 931 }, 932}; 933 934prCookieConsentApi.websiteRestriction = { 935 getAllowed: function () { 936 var allowedWebsites = prCookieConsentApi.getCookieValue(prCookieConsentApi.config.mage.cookieName); 937 return allowedWebsites ? JSON.parse(allowedWebsites) : {}; 938 }, 939 allowCurrent: function () { 940 return this.set(prCookieConsentApi.config.mage.website, true); 941 }, 942 disallowCurrent: function () { 943 return this.set(prCookieConsentApi.config.mage.website, false); 944 }, 945 /** 946 * @param {number} website 947 * @param {boolean} flag 948 * @return {CookieRestriction.websiteRestriction} 949 */ 950 set: function (website, flag) { 951 var allowedWebsites = this.getAllowed(); 952 953 if (flag) { 954 allowedWebsites[website] = 1; 955 } else { 956 delete allowedWebsites[website]; 957 } 958 959 prCookieService.set(prCookieConsentApi.config.mage.cookieName, allowedWebsites, { 960 path: prCookieConsentApi.config.cookie.path, 961 expires: prCookieConsentApi.config.mage.lifetime ? Math.ceil(prCookieConsentApi.config.mage.lifetime / 86400) : 0 962 }); 963 964 return this; 965 } 966}; 967 968prCookieConsentApi.cache = { 969 cacheData: {allowAllCategories: null}, 970 get: function (key) { 971 return this.cacheData[key]; 972 }, 973 set: function (key, value) { 974 this.cacheData[key] = value; 975 }, 976 reset: function () { 977 this.cacheData = {allowAllCategories: null}; 978 } 979}; 980 981prCookieConsentApi.logger = { 982 level: 0, /* disabled */ 983 init: function () { 984 if (window.location.hash === '#pr-enable-cookie-log') { 985 this.level = 1; /* only warnings and errors */ 986 } 987 if (window.location.hash === '#pr-enable-cookie-log-all') { 988 this.level = 2; /* all logs */ 989 } 990 }, 991 log: function () { 992 this.level > 1 && console.log.apply(console, arguments); 993 }, 994 warn: function () { 995 this.level > 0 && console.warn.apply(console, arguments); 996 }, 997 error: function () { 998 this.level > 0 && console.error.apply(console, arguments); 999 } 1000}; 1001 1002prCookieConsentApi.consent = { 1003 /** 1004 * Contains callbacks that run after user consent. 1005 * 1006 * @type {function[]} 1007 */ 1008 callbacks: [], 1009 allowAllCategories: function () { 1010 prCookieConsentApi.cache.reset(); 1011 prCookieConsentApi.consent.set(['all']); 1012 return this; 1013 }, 1014 declineAll: function () { 1015 prCookieConsentApi.cache.reset(); 1016 prCookieConsentApi.consent.set([]); 1017 return this; 1018 }, 1019 set: function (allowedCategories) { 1020 prCookieService.set(prCookieConsentApi.CUSTOMER_CONSENT, JSON.stringify(allowedCategories), { 1021 expires: prCookieConsentApi.config.consent.expiry, 1022 path: prCookieConsentApi.config.cookie.path, 1023 domain: prCookieConsentApi.config.cookie.domain 1024 }); 1025 1026 if (allowedCategories.includes('all')) {
1027 prCookieConsentApi.websiteRestriction.allowCurrent(); 1028 } else { 1029 prCookieConsentApi.websiteRestriction.disallowCurrent(); 1030 } 1031 prCookieConsentApi.cache.reset(); 1032 1033 var isAccepting = allowedCategories.length; 1034 1035 this.callbacks.forEach(function (callback) { 1036 callback(allowedCategories) 1037 }); 1038 1039 fetch(prCookieConsentApi.config.consent.logUrl, { 1040 method: 'POST', 1041 headers: { 1042 'Content-Type': 'application/json', 1043 'X-Requested-With': 'XMLHttpRequest' 1044 }, 1045 body: JSON.stringify({acceptedKeys: allowedCategories}) 1046 }) 1047 .then(this.pageReloadAfterAction.bind(this, isAccepting)); 1048 }, 1049 /** 1050 * Reload page by configuration and action 1051 * 1052 * @param isAccepting 1053 */ 1054 pageReloadAfterAction: function (isAccepting) { 1055 if (isAccepting && prCookieConsentApi.config.consent.reloadAfterAccept) { 1056 window.location.reload(); 1057 } 1058 1059 if (! isAccepting && prCookieConsentApi.config.consent.reloadAfterDecline) { 1060 window.location.reload(); 1061 } 1062 }, 1063 get: function () { 1064 var consent = prCookieConsentApi.getCookieValue(prCookieConsentApi.CUSTOMER_CONSENT); 1065 return consent ? JSON.parse(consent) : false; 1066 }, 1067 addCallback: function (callback) { 1068 this.callbacks.push(callback); 1069 return this; 1070 }, 1071}; 1072 1073prCookieConsentApi.configure('\u007B\u0022canManageCookie\u0022\u003Afalse,\u0022canUseCookieBeforeOptIn\u0022\u003Afalse,\u0022canBlockUnknownCookie\u0022\u003Afalse,\u0022consent\u0022\u003A\u007B\u0022isLoggedIn\u0022\u003Atrue,\u0022logUrl\u0022\u003A\u0022https\u003A\u005C\u002F\u005C\u002Fwww.flooringinc.com\u005C\u002Fpr\u002Dcookie\u002Dconsent\u005C\u002Fconsent_customer\u005C\u002Fupdate\u005C\u002F\u0022,\u0022reloadAfterAccept\u0022\u003Atrue,\u0022reloadAfterDecline\u0022\u003Afalse,\u0022expiry\u0022\u003A365\u007D,\u0022cookie\u0022\u003A\u007B\u0022path\u0022\u003A\u0022\u005C\u002F\u0022,\u0022domain\u0022\u003A\u0022www.flooringinc.com\u0022,\u0022parentDomain\u0022\u003A\u0022.flooringinc.com\u0022\u007D,\u0022cookies\u0022\u003A\u007B\u0022pr\u002Dcookie\u002Dnotice\u002Dstatus\u0022\u003A\u007B\u0022domain\u0022\u003A\u0022\u0022\u007D,\u0022user_allowed_save_cookie\u0022\u003A\u007B\u0022domain\u0022\u003A\u0022\u0022\u007D,\u0022guest\u002Dview\u0022\u003A\u007B\u0022domain\u0022\u003A\u0022\u0022\u007D,\u0022login_redirect\u0022\u003A\u007B\u0022domain\u0022\u003A\u0022\u0022\u007D,\u0022mage\u002Dmessages\u0022\u003A\u007B\u0022domain\u0022\u003A\u0022\u0022\u007D,\u0022section_data_ids\u0022\u003A\u007B\u0022domain\u0022\u003A\u0022\u0022\u007D,\u0022store\u0022\u003A\u007B\u0022domain\u0022\u003A\u0022\u0022\u007D,\u0022amz_auth_err\u0022\u003A\u007B\u0022domain\u0022\u003A\u0022\u0022\u007D,\u0022amz_auth_logout\u0022\u003A\u007B\u0022domain\u0022\u003A\u0022\u0022\u007D,\u0022mage\u002Dcache\u002Dsessid\u0022\u003A\u007B\u0022domain\u0022\u003A\u0022\u0022\u007D,\u0022mage\u002Dcache\u002Dstorage\u0022\u003A\u007B\u0022domain\u0022\u003A\u0022\u0022\u007D,\u0022stf\u0022\u003A\u007B\u0022domain\u0022\u003A\u0022\u0022\u007D,\u0022recently_viewed_product\u0022\u003A\u007B\u0022domain\u0022\u003A\u0022\u0022\u007D,\u0022recently_viewed_product_previous\u0022\u003A\u007B\u0022domain\u0022\u003A\u0022\u0022\u007D,\u0022mage\u002Dtranslation\u002Dstorage\u0022\u003A\u007B\u0022domain\u0022\u003A\u0022\u0022\u007D,\u0022mage\u002Dtranslation\u002Dfile\u002Dversion\u0022\u003A\u007B\u0022domain\u0022\u003A\u0022\u0022\u007D,\u0022product_data_storage\u0022\u003A\u007B\u0022domain\u0022\u003A\u0022\u0022\u007D,\u0022recently_compared_product\u0022\u003A\u007B\u0022domain\u0022\u003A\u0022\u0022\u007D,\u0022recently_compared_product_previous\u0022\u003A\u007B\u0022domain\u0022\u003A\u0022\u0022\u007D,\u0022mage\u002Dcache\u002Dstorage\u002Dsection\u002Dinvalidation\u0022\u003A\u007B\u0022domain\u0022\u003A\u0022\u0022\u007D,\u0022_ga\u0022\u003A\u007B\u0022domain\u0022\u003A\u0022\u0022\u007D,\u0022_ga_\u002A\u0022\u003A\u007B\u0022domain\u0022\u003A\u0022\u0022\u007D,\u0022_gid\u0022\u003A\u007B\u0022domain\u0022\u003A\u0022\u0022\u007D,\u0022_gat\u0022\u003A\u007B\u0022domain\u0022\u003A\u0022\u0022\u007D,\u0022_dc_gtm_\u002A\u0022\u003A\u007B\u0022domain\u0022\u003A\u0022\u0022\u007D,\u0022mg_dnt\u0022\u003A\u007B\u0022domain\u0022\u003A\u0022\u0022\u007D,\u0022last_visited_store\u0022\u003A\u007B\u0022domain\u0022\u003A\u0022\u0022\u007D,\u0022pr\u002Dgpc\u002Dnotification\u002Dshown\u0022\u003A\u007B\u0022domain\u0022\u003A\u0022\u0022\u007D,\u0022pr\u002Dgpc\u002Dsignal\u002Dhandled\u0022\u003A\u007B\u0022domain\u0022\u003A\u0022\u0022\u007D,\u0022_clck\u0022\u003A\u007B\u0022domain\u0022\u003A\u0022\u0022\u007D,\u0022_clsk\u0022\u003A\u007B\u0022domain\u0022\u003A\u0022\u0022\u007D,\u0022CLID\u0022\u003A\u007B\u0022domain\u0022\u003A\u0022\u0022\u007D,\u0022MR\u0022\u003A\u007B\u0022domain\u0022\u003A\u0022\u0022\u007D,\u0022MUID\u0022\u003A\u007B\u0022domain\u0022\u003A\u0022\u0022\u007D,\u0022pr\u002Dcookie\u002Dconsent\u0022\u003A\u007B\u0022domain\u0022\u003A\u0022\u0022\u007D,\u0022pr\u002Dcookie\u002Dconsent\u002Did\u0022\u003A\u007B\u0022domain\u0022\u003A\u0022\u0022\u007D,\u0022form_key\u0022\u003A\u007B\u0022domain\u0022\u003A\u0022\u0022\u007D,\u0022X\u002DMagento\u002DVary\u0022\u003A\u007B\u0022domain\u0022\u003A\u0022\u0022\u007D,\u0022private_content_version\u0022\u003A\u007B\u0022domain\u0022\u003A\u0022\u0022\u007D,\u0022persistent_shopping_cart\u0022\u003A\u007B\u0022domain\u0022\u003A\u0022\u0022\u007D,\u0022add_to_cart\u0022\u003A\u007B\u0022domain\u0022\u003A\u0022\u0022\u007D,\u0022mage\u002Dbanners\u002Dcache\u002Dstorage\u0022\u003A\u007B\u0022domain\u0022\u003A\u0022\u0022\u007D,\u0022remove_from_cart\u0022\u003A\u007B\u0022domain\u0022\u003A\u0022\u0022\u007D\u007D,\u0022mage\u0022\u003A\u007B\u0022website\u0022\u003A1,\u0022cookieName\u0022\u003A\u0022user_allowed_save_cookie\u0022,\u0022lifetime\u0022\u003A31536000\u007D,\u0022cookieToCategoryMapping\u0022\u003A\u007B\u0022pr\u002Dcookie\u002Dnotice\u002Dstatus\u0022\u003A\u0022necessary\u0022,\u0022user_allowed_save_cookie\u0022\u003A\u0022necessary\u0022,\u0022guest\u002Dview\u0022\u003A\u0022necessary\u0022,\u0022login_redirect\u0022\u003A\u0022necessary\u0022,\u0022mage\u002Dmessages\u0022\u003A\u0022necessary\u0022,\u0022section_data_ids\u0022\u003A\u0022necessary\u0022,\u0022store\u0022\u003A\u0022necessary\u0022,\u0022amz_auth_err\u0022\u003A\u0022necessary\u0022,\u0022amz_auth_logout\u0022\u003A\u0022necessary\u0022,\u0022mage\u002Dcache\u002Dsessid\u0022\u003A\u0022necessary\u0022,\u0022mage\u002Dcache\u002Dstorage\u0022\u003A\u0022necessary\u0022,\u0022stf\u0022\u003A\u0022necessary\u0022,\u0022recently_viewed_product\u
10730022\u003A\u0022necessary\u0022,\u0022recently_viewed_product_previous\u0022\u003A\u0022necessary\u0022,\u0022mage\u002Dtranslation\u002Dstorage\u0022\u003A\u0022necessary\u0022,\u0022mage\u002Dtranslation\u002Dfile\u002Dversion\u0022\u003A\u0022necessary\u0022,\u0022product_data_storage\u0022\u003A\u0022necessary\u0022,\u0022recently_compared_product\u0022\u003A\u0022necessary\u0022,\u0022recently_compared_product_previous\u0022\u003A\u0022necessary\u0022,\u0022mage\u002Dcache\u002Dstorage\u002Dsection\u002Dinvalidation\u0022\u003A\u0022necessary\u0022,\u0022_ga\u0022\u003A\u0022statistics\u0022,\u0022_ga_\u002A\u0022\u003A\u0022statistics\u0022,\u0022_gid\u0022\u003A\u0022statistics\u0022,\u0022_gat\u0022\u003A\u0022statistics\u0022,\u0022_dc_gtm_\u002A\u0022\u003A\u0022statistics\u0022,\u0022mg_dnt\u0022\u003A\u0022necessary\u0022,\u0022last_visited_store\u0022\u003A\u0022necessary\u0022,\u0022pr\u002Dgpc\u002Dnotification\u002Dshown\u0022\u003A\u0022necessary\u0022,\u0022pr\u002Dgpc\u002Dsignal\u002Dhandled\u0022\u003A\u0022necessary\u0022,\u0022_clck\u0022\u003A\u0022statistics\u0022,\u0022_clsk\u0022\u003A\u0022statistics\u0022,\u0022CLID\u0022\u003A\u0022statistics\u0022,\u0022MR\u0022\u003A\u0022statistics\u0022,\u0022MUID\u0022\u003A\u0022statistics\u0022,\u0022pr\u002Dcookie\u002Dconsent\u0022\u003A\u0022necessary\u0022,\u0022pr\u002Dcookie\u002Dconsent\u002Did\u0022\u003A\u0022necessary\u0022,\u0022form_key\u0022\u003A\u0022necessary\u0022,\u0022X\u002DMagento\u002DVary\u0022\u003A\u0022necessary\u0022,\u0022private_content_version\u0022\u003A\u0022necessary\u0022,\u0022persistent_shopping_cart\u0022\u003A\u0022necessary\u0022,\u0022add_to_cart\u0022\u003A\u0022statistics\u0022,\u0022mage\u002Dbanners\u002Dcache\u002Dstorage\u0022\u003A\u0022necessary\u0022,\u0022remove_from_cart\u0022\u003A\u0022statistics\u0022\u007D,\u0022essentialCategoryKeys\u0022\u003A\u005B\u0022necessary\u0022\u005D,\u0022dynamicNamesPatterns\u0022\u003A\u007B\u0022_dc_gtm_\u002A\u0022\u003A\u0022_dc_gtm_.\u002A\u0022,\u0022_ga_\u002A\u0022\u003A\u0022_ga_.\u002A\u0022\u007D\u007D'); 1074prCookieConsentApi.initCookieBlocking(); 1075 1076if (typeof define === 'function') { 1077 define('prCookieService', function () {return prCookieService}); 1078 define('prCookieConsentApi', function () {return prCookieConsentApi;}); 1079} 1080</script>
1080 1081 1082 1083
1083<script type="text/javascript" nonce="YjZ2ZWQxdzRxcTd4ZGJzcGk4OGs3aXlybTNkOWF6ODk="> 1084 (() => { 1085 document.addEventListener('pr-cookie-consent-api:cookie-blocking:validation', (event) => { 1086 if ('mg_dnt' !== event.detail.cookieName) { 1087 return; 1088 } 1089 1090 setTimeout(() => { 1091 const categoryKey = 'marketing'; 1092 let cookieValue = (event.detail.cookie.match(/^[^=]+=(.*?)(?:$|;)/) || [])[1]?.trim(); 1093 1094 if (prCookieConsentApi.isAllowedCategory(categoryKey) && cookieValue.length) { 1095 prCookieService.remove('mg_dnt', prCookieConsentApi.config.cookie); 1096 return; 1097 } 1098 1099 if (! prCookieConsentApi.isAllowedCategory(categoryKey) && ! cookieValue.length) { 1100 prCookieService.set('mg_dnt', true, { ...prCookieConsentApi.config.cookie, expires: null }); 1101 } 1102 }, 100); 1103 }); 1104 1105 let handleCookieConsent = () => { 1106 const categoryKey = 'marketing'; 1107 if (prCookieConsentApi.isAllowedCategory(categoryKey)) { 1108 prCookieService.remove('mg_dnt', prCookieConsentApi.config.cookie); 1109 } else { 1110 prCookieService.set('mg_dnt', true, { ...prCookieConsentApi.config.cookie, expires: null }); 1111 } 1112 }; 1113 1114 prCookieConsentApi.consent.addCallback(handleCookieConsent); 1115 handleCookieConsent(); 1116 })(); 1117 </script>
1117 1118 1119
1119<script> 1120 (function () { 1121 'use strict'; 1122 1123 window.amRecaptchaModel = { 1124 formsToProtect: "form\u005Baction\u002A\u003D\u0022faq\u002Findex\u002Fsave\u0022\u005D", 1125 isEnabledOnPayments: "", 1126 checkoutRecaptchaValidateUrl: "https://www.flooringinc.com/amcapthca/checkout/validate/", 1127 invisibleCaptchaCustomForm: "\u002D1", 1128 recaptchaConfig: { 1129 lang: "hl\u003Den" || 'hl=en', 1130 theme: "light", 1131 badge: "bottomright", 1132 sitekey: "6Lc6gcYqAAAAADiXHrgCFqC4Sewhxs-nrHYgN4oo", 1133 size: "normal" 1134 }, 1135 url: 'https://www.google.com/recaptcha/api.js', 1136 isCaptchaScriptLoaded: false, 1137 isInvisible: "normal" === 'invisible', 1138 1139 /** 1140 * Submit event 1141 * 1142 * @param {Object} $event 1143 * @return {void} 1144 */ 1145 execute: function ($event) { 1146 const eventTarget = $event?.target; 1147 if (this.isCaptchaScriptLoaded) { 1148 this.executeCaptcha(eventTarget); 1149 } else { 1150 window.addEventListener('amcaptcha-script-loaded', () => { 1151 this.isCaptchaScriptLoaded = true; 1152 this.executeCaptcha(eventTarget); 1153 this.initAmcaptchaBadges(); 1154 }); 1155 1156 this.loadRecaptchaScript(); 1157 } 1158 }, 1159 1160 /** 1161 * Execute original submit 1162 * 1163 * @param {Object} $event 1164 * @param {HTMLElement} $el 1165 * @return {void} 1166 */ 1167 recaptchaCallback: function ($event, $el) { 1168 this.shouldExecuteCallback($event, $el) && $el.dispatchEvent(new CustomEvent('amrecaptcha-executable-callback')); 1169 }, 1170 1171 /** 1172 * Reset captcha 1173 * 1174 * @param {Object} $event 1175 * @param {HTMLElement} $el 1176 */ 1177 expiredCallback: function($event, $el) { 1178 this.shouldExecuteCallback($event, $el) && grecaptcha.reset($event.detail.widgetId); 1179 }, 1180 1181 /** 1182 * Checks if event is fired on submitted element 1183 * 1184 * @param {Object} $event 1185 * @param {HTMLElement} $el 1186 * @return {boolean} 1187 */ 1188 shouldExecuteCallback: function($event, $el) { 1189 const eventWidgetId = $event.detail.widgetId; 1190 const elementWidgetId = $el.dataset.amCaptchaWidgetId || $el.closest('form')?.dataset.amCaptchaWidgetId; 1191 1192 return eventWidgetId === elementWidgetId; 1193 }, 1194 1195 /** 1196 * Run captcha for widget by id 1197 * 1198 * @param {HTMLElement} eventTarget 1199 * @return {void} 1200 */ 1201 executeCaptcha: function(eventTarget) { 1202 if (!eventTarget.dataset.hasOwnProperty('amCaptchaRendered')) { 1203 this.bindCaptchaGlobalCallbacks(eventTarget); 1204 this.renderCaptcha(eventTarget); 1205 eventTarget.dataset.amCaptchaRendered = ''; 1206 } 1207 1208 const widgetId = this.getWidgetId(eventTarget); 1209 1210 if (!widgetId) { 1211 typeof window.dispatchMessages !== "undefined" && window.dispatchMessages([ 1212 { 1213 type: "error", 1214 text: 'Recaptcha\u0020cannot\u0020properly\u0020validate\u0020form.' 1215 } 1216 ]); 1217 return; 1218 } 1219 1220 window.dispatchEvent(new CustomEvent('amcaptcha-loading-start')); 1221 grecaptcha.reset(widgetId); 1222 1223 if (!this.isInvisible) { 1224 this.stopAmcaptchaLoading(); 1225 return; 1226 } 1227 1228 grecaptcha.execute(widgetId) 1229 .then(() => this.stopAmcaptchaLoading()) 1230 .catch(() => this.stopAmcaptchaLoading()); 1231 }, 1232 1233 /** 1234 * Add recaptcha script to page 1235 * 1236 * @return {void} 1237 */ 1238 loadRecaptchaScript: function () { 1239 const lang = window.amRecaptchaModel.recaptchaConfig.lang; 1240 const url = `${window.amRecaptchaModel.url}?onload=amRecaptchaLoadCallback&render=explicit&${lang}`; 1241 const script = document.createElement('script'); 1242 1243 script.type = 'text/javascript'; 1244 script.src = url; 1245 script.async = true; 1246 document.head.appendChild(script); 1247 }, 1248 1249 /** 1250 * Stop loader on page 1251 * 1252 * @return {void} 1253 */ 1254 stopAmcaptchaLoading: function () { 1255 window.dispatchEvent(new CustomEvent('amcaptcha-loading-stop')); 1256 }, 1257 1258 /** 1259 * Add attributes to hide captcha badge 1260 * 1261 * @return {void} 1262 */ 1263 initAmcaptchaBadges: function () { 1264 if (!this.isInvisible) { 1265 return; 1266 } 1267 1268 document.querySelectorAll('.grecaptcha-badge')?.forEach(captchaBadge => { 1269 captchaBadge?.setAttribute('x-data', '{ visible: true }'); 1270 captchaBadge?.setAttribute('x-on:amcaptcha-loading-start.window', 'visible = true'); 1271 captchaBadge?.setAttribute('x-on:amcaptcha-loading-stop.window', 'visible = false'); 1272 captchaBadge?.setAttribute(':class', '!visible && "invisible"'); 1273 }); 1274 }, 1275 1276 /** 1277 * Get form widgetId 1278 * 1279 * @param {HTMLElement} eventTarget 1280 * @return {string} 1281 */ 1282 getWidgetId: function (eventTarget) { 1283 return eventTarget.dataset.amCaptchaWidgetId 1284 || eventTarget.closest('form')?.dataset.amCaptchaWidgetId; 1285 }, 1286 1287 /** 1288 * Add captcha badge or checkbox to protected form. 1289 * Store widgetId in dataset to pass this info in callbacks 1290 * 1291 * @param {HTMLElement} eventTarget 1292 * @return {void} 1293 */ 1294 renderCaptcha: function (eventTarget) { 1295 const captchaElement = document.createElement('div'); 1296 const formContent = eventTarget.closest('form')?.querySelector('[data-element="form-content"]') 1297 ?? eventTarget.closest('form'); 1298 formContent?.appendChild(captchaElement); 1299 1300 eventTarget.dataset.amCaptchaWidgetId = grecaptcha.render(captchaElement, { 1301 ...window.amRecaptchaModel?.recaptchaConfig, 1302 callback: () => { 1303 window.dispatchEvent(new CustomEvent( 1304 'amrecaptcha-callback', { 1305 detail: this.getCaptchaCallbackDetail(eventTarget) 1306 })); 1307 }, 1308 'expired-callback': () => { 1309 window.dispatchEvent(new CustomEvent( 1310 'amrecaptcha-expired-callback', { 1311 detail: this.getCaptchaCallbackDetail(eventTarget) 1312 })); 1313 } 1314 }); 1315 }, 1316 1317 /** 1318 * Get detail property for callback event 1319 * 1320 * @param {HTMLElement} eventTarget 1321 * @return {object} 1322 */ 1323 getCaptchaCallbackDetail: function (eventTarget) { 1324 return { 1325 widgetId: eventTarget.dataset.amCaptchaWidgetId, 1326 form: eventTarget 1327 } 1328 }, 1329 1330 /** 1331 * Add functions that will be called on the global state 1332 * 1333 * @param {HTMLElement} eventTarget 1334 * @return {void} 1335 */ 1336 bindCaptchaGlobalCallbacks: function (eventTarget) { 1337 eventTarget.setAttribute( 1338 'x-on:amrecaptcha-callback.window', 1339 `amRecaptchaModel.recaptchaCallback($event, $el)` 1340 ); 1341 eventTarget.setAttribute( 1342 'x-on:amrecaptcha-expired-callback.window', 1343 'amRecaptchaModel.expiredCallback($event, $el)' 1344 ); 1345 } 1346 }; 1347 })(window.amRecaptchaModel = window.amRecaptchaModel || {}); 1348 1349 window.amRecaptchaLoadCallback = function () { 1350 window.dispatchEvent(new CustomEvent('amcaptcha-script-loaded')); 1351 } 1352 </script>
1352 1353 1354 1355 <!--suppress HtmlUnknownTarget --> 1356 <!-- BV | Magento Extension 9.1.7 --> 1357
1357<script> 1358 window.addEventListener('init-external-scripts', () => { 1359 const bvScript = document.createElement('script'); 1360 bvScript.src = '//apps.bazaarvoice.com/deployments/incstores/main_site/production/en_US/bv.js'; 1361 bvScript.type = 'text/javascript'; 1362 bvScript.async = true; 1363 document.head.append(bvScript); 1364 }, {once: true, passive: true}); 1365 </script>
vendor: 1 bytes, line 1365
1365
1366<script> 1367 function initSocialLoginPost() { 1368 return { 1369 submitForm(form) { 1370 event.preventDefault(); 1371 var loginRefererElement = document.getElementById("sociallogin-login-referer"); 1372 var value = loginRefererElement.value; 1373 fetch(form.action, { 1374 headers: { 1375 contentType: "application/json;charset=utf-8", 1376 }, 1377 body: new URLSearchParams({ 1378 form_key: hyva.getFormKey(), 1379 'refress-redirect-url':value 1380 }), 1381 method: "POST", 1382 mode: "cors", 1383 credentials: "include", 1384 }).then(response => { 1385 if (response.redirected) { 1386 window.location.href = response.url; 1387 } else { 1388 window.dispatchMessages("warning", "Post request failed", 5000); 1389 } 1390 }) 1391 } 1392 } 1393 } 1394</script>
1394 1395<form style="display:none;" class="form" x-data="initSocialLoginPost()" @submit="submitForm($el)" 1396 action="https://www.flooringinc.com/sociallogin/account/loginPost/" 1397 method="post" 1398 id="sociallogin-login-form" 1399> 1400 <input id="sociallogin-login-referer" name="refress-redirect-url" type="hidden" value="" /> 1401 <input id="sociallogin-login-submit" type="submit" value="sociallogin" style="font-size:0"/> 1402</form> 1403 1404<style> 1405 .pr-cookie-setting-bar-overlay, 1406 .pr-cookie-setting-bar-container { 1407 z-index: 999999999999999; 1408 } 1409</style> 1410
1411<script> 1412 'use strict'; 1413 var prCookieSettingBar = { 1414 config: {"categories":[{"key":"necessary","is_essential":true,"is_pre_checked":false,"name":"Strictly necessary cookies","description":"These cookies are essential for you to browse our store and use its features, such as accessing secure areas of the website. Cookies that allow holding your cart items, cookies that keep you logged-in and cookies that save your customized preferences are an example of strictly necessary cookies. These cookies are essential to a website's functionality and cannot be disabled by users.","sort_order":0,"details":[{"name":"First party","is_third_party":false,"cookies":[{"name":"pr-cookie-notice-status","category_key":"necessary","type":"first","typeLabel":"1st Party","domain":"","domainLabel":"www.flooringinc.com","duration":0,"durationLabel":"Session","description":"Stores close status of cookie notice."},{"name":"user_allowed_save_cookie","category_key":"necessary","type":"first","typeLabel":"1st Party","domain":"","domainLabel":"www.flooringinc.com","duration":31536000,"durationLabel":"365 days","description":"Stores built-in cookie consent per website."},{"name":"guest-view","category_key":"necessary","type":"first","typeLabel":"1st Party","domain":"","domainLabel":"www.flooringinc.com","duration":0,"durationLabel":"Session","description":"Stores the Order ID that guest shoppers use to retrieve their order status. Guest orders view. Used in \u201cOrders and Returns\u201d widgets."},{"name":"login_redirect","category_key":"necessary","type":"first","typeLabel":"1st Party","domain":"","domainLabel":"www.flooringinc.com","duration":0,"durationLabel":"Session","description":"Preserves the destination page the customer was loading before being directed to log in."},{"name":"mage-messages","category_key":"necessary","type":"first","typeLabel":"1st Party","domain":"","domainLabel":"www.flooringinc.com","duration":31536000,"durationLabel":"365 days","description":"Tracks error messages and other notifications that are shown to the user, such as the cookie consent message, and various error messages. The message is deleted from the cookie after it is shown to the shopper."},{"name":"section_data_ids","category_key":"necessary","type":"first","typeLabel":"1st Party","domain":"","domainLabel":"www.flooringinc.com","duration":0,"durationLabel":"Session","description":"Stores customer-specific information related to shopper-initiated actions such as display wish list, checkout information, etc."},{"name":"store","category_key":"necessary","type":"first","typeLabel":"1st Party","domain":"","domainLabel":"www.flooringinc.com","duration":31536000,"durationLabel":"365 days","description":"Tracks the specific store view \/ locale selected by the shopper."},{"name":"amz_auth_err","category_key":"necessary","type":"first","typeLabel":"1st Party","domain":"","domainLabel":"www.flooringinc.com","duration":31536000,"durationLabel":"365 days","description":"Used if Enable Login with Amazon is enabled. Value 1 indicates an authorization error."},{"name":"amz_auth_logout","category_key":"necessary","type":"first","typeLabel":"1st Party","domain":"","domainLabel":"www.flooringinc.com","duration":86400,"durationLabel":"1 day","description":"Used if Enable Login with Amazon is enabled. Value 1 indicates that the user should be logged out."},{"name":"mage-cache-sessid","category_key":"necessary","type":"first","typeLabel":"1st Party","domain":"","domainLabel":"www.flooringinc.com","duration":0,"durationLabel":"Session","description":"The value of this cookie triggers the cleanup of local cache storage. When the cookie is removed by the backend application, the Admin cleans up local storage, and sets the cookie value to true."},{"name":"mage-cache-storage","category_key":"necessary","type":"first","typeLabel":"1st Party","domain":"","domainLabel":"www.flooringinc.com","duration":0,"durationLabel":"Session","description":"Local storage of visitor-specific content that enables ecommerce functions."},{"name":"stf","category_key":"necessary","type":"first","typeLabel":"1st Party","domain":"","domainLabel":"www.flooringinc.com","duration":0,"durationLabel":"Session","description":"Records the time messages are sent by the SendFriend (Email a Friend) module."},{"name":"recently_viewed_product","category_key":"necessary","type":"first","typeLabel":"1st Party","domain":"","domainLabel":"www.flooringinc.com","duration":86400,"durationLabel":"1 day","description":"Stores product IDs of recently viewed products for easy navigation."},{"name":"recently_viewed_product_previous","category_key":"necessary","type":"first","typeLabel":"1st Party","domain":"","domainLabel":"www.flooringinc.com","duration":86400,"durationLabel":"1 day","description":"Stores product IDs of recently previously viewed products for easy navigation."},{"name":"mage-translation-storage","category_key":"necessary","type":"first","typeLabel":"1st Party","domain":"","domainLabel":"www.flooringinc.com","duration":86400,"durationLabel":"1 day","description":"Stores translated content when requested by the shopper. Used when Translation Strategy is configured as \"Dictionary (Translation on Storefront side)\"."},{"name":"mage-translation-file-version","category_key":"necessary","type":"first","typeLabel":"1st Party","domain":"","domainLabel":"www.flooringinc.com","duration":86400,"durationLabel":"1 day","description":"Tracks the version of translations in local storage. Used when Translation Strategy is configured as Dictionary (Translation on Storefront side)."},{"name":"product_data_storage","category_key":"necessary","type":"first","typeLabel":"1st Party","domain":"","domainLabel":"www.flooringinc.com","duration":86400,"durationLabel":"1 day","description":"Stores configuration for product data related to Recently Viewed \/ Compared Products."},{"name":"recently_compared_product","category_key":"necessary","type":"first","typeLabel":"1st Party","domain":"","domainLabel":"www.flooringinc.com","duration":86400,"durationLabel":"1 day","description":"Stores product IDs of recently compared products."},{"name":"recently_compared_product_previous","category_key":"necessary","type":"first","typeLabel":"1st Party","domain":"","domainLabel":"www.flooringinc.com","duration":86400,"durationLabel":"1 day","description":"Stores product IDs of previously compared products for easy navigation."},{"name":"mage-cache-storage-section-invalidation","category_key":"necessary","type":"first","typeLabel":"1st Party","domain":"","domainLabel":"www.flooringinc.com","duration":86400,"durationLabel":"1 day","description":"Forces local storage of specific content sections that should be invalidated."},{"name":"mg_dnt","category_key":"necessary","type":"first","typeLabel":"1st Party","domain":"","domainLabel":"www.flooringinc.com","duration":0,"durationLabel":"Session","description":"Used to restrict Adobe Commerce data collection functionality if the user has opted out of tracking."},{"name":"last_visited_store","category_key":"necessary","type":"first","typeLabel":"1st Party","domain":"","domainLabel":"www.flooringinc.com","duration":0,"durationLabel":"Session","description":"last_visited_store"},{"name":"pr-gpc-notification-shown","category_key":"necessary","type":"first","typeLabel":"1st Party","domain":"","domainLabel":"www.flooringinc.com","duration":0,"durationLabel":"Session","description":"Stores whether the GPC opt-out notification was shown to and closed by the user."},{"name":"pr-gpc-signal-handled","category_key":"necessary","type":"first","typeLabel":"1st Party","domain":"","domainLabel":"www.flooringinc.com","duration":0,"durationLabel":"Session","description":"Stores whether the Global Privacy Control (GPC) signal has been detected on the front end and the associated handling logic has been executed for the current user."},{"name":"pr-cookie-consent","category_key":"necessary","type":"first","typeLabel":"1st Party","domain":"","domainLabel":"www.flooringinc.com","duration":365,"durationLabel":"less than an hour","description":"Keeps your cookie consent."},{"name":"pr-cookie-consent-id","category_key":"necessary","type":"first","typeLabel":"1st Party","domain":"","domainLabel":"www.flooringinc.com","duration":365,"durationLabel":"less than an hour","description":"Keeps your cookie consent id."},{"name":"form_key","category_key":"necessary","type":"first","typeLabel":"1st Party","domain":"","domainLabel":"www.flooringinc.com","duration":3600,"durationLabel":"1 hour","description":"A security measure that appends a random string to all form submissions to protect the data from Cross-Site Request Forgery (CSRF)."},{"name":"X-Magento-Vary","category_key":"necessary","type":"first","typeLabel":"1st Party","domain":"","domainLabel":"www.flooringinc.com","duration":3600,"durationLabel":"1 hour","description":"Configuration setting that improves performance when using Varnish static content caching."},{"name":"private_content_version","category_key":"necessary","type":"first","typeLabel":"1st Party","domain":"","domainLabel":"www.flooringinc.com","duration":31536000,"durationLabel":"365 days","description":"Appends a random, unique number and time to pages with customer content to prevent them from being cached on the server."},{"name":"persistent_shopping_cart","category_key":"necessary","type":"first","typeLabel":"1st Party","domain":"","domainLabel":"www.flooringinc.com","duration":31536000,"durationLabel":"365 days","description":"Stores the key (ID) of persistent cart to make it possible to restore the cart for an anonymous shopper."},{"name":"mage-banners-cache-storage","category_key":"necessary","type":"first","typeLabel":"1st Party","domain":"","domainLabel":"www.flooringinc.com","duration":3600,"durationLabel":"1 hour","description":"Stores banner content locally to improve performance."}]}],"show_details":false},{"key":"preferences","is_essential":false,"is_pre_checked":false,"name":"Preferences cookies","description":"Preferences cookies are also known as \u201cfunctionality cookies\u201d. These cookies allow a website to remember choices you have made in the past, like what language you prefer, your favourite search f
1414ilters, or what your user name and password are so you can automatically log in.","sort_order":0,"details":[],"show_details":false},{"key":"statistics","is_essential":false,"is_pre_checked":false,"name":"Statistics cookies","description":"Statistics cookies are also known as \u201cperformance cookies\u201d. These cookies collect information about how you use a website, like which pages you visited and which links you clicked on. None of this information can be used to identify you. It is all aggregated and, therefore, anonymized. Their sole purpose is to improve website functions. This includes cookies from third-party analytics services, such as visitor analytics, heatmaps and social media analytics.","sort_order":0,"details":[{"name":"First party","is_third_party":false,"cookies":[{"name":"_ga","category_key":"statistics","type":"first","typeLabel":"1st Party","domain":"","domainLabel":"www.flooringinc.com","duration":63072000,"durationLabel":"730 days","description":"Used to distinguish users."},{"name":"_ga_*","category_key":"statistics","type":"first","typeLabel":"1st Party","domain":"","domainLabel":"www.flooringinc.com","duration":63072000,"durationLabel":"730 days","description":"Used to persist session state."},{"name":"_gid","category_key":"statistics","type":"first","typeLabel":"1st Party","domain":"","domainLabel":"www.flooringinc.com","duration":86400,"durationLabel":"1 day","description":"Used to distinguish users."},{"name":"_gat","category_key":"statistics","type":"first","typeLabel":"1st Party","domain":"","domainLabel":"www.flooringinc.com","duration":86400,"durationLabel":"1 day","description":"Used to throttle request rate."},{"name":"_dc_gtm_*","category_key":"statistics","type":"first","typeLabel":"1st Party","domain":"","domainLabel":"www.flooringinc.com","duration":60,"durationLabel":"less than an hour","description":"Used to throttle request rate."},{"name":"_clck","category_key":"statistics","type":"first","typeLabel":"1st Party","domain":"","domainLabel":"www.flooringinc.com","duration":0,"durationLabel":"Session","description":"Persists the Microsoft Clarity User ID and preferences, unique to that site is attributed to the same user ID."},{"name":"_clsk","category_key":"statistics","type":"first","typeLabel":"1st Party","domain":"","domainLabel":"www.flooringinc.com","duration":0,"durationLabel":"Session","description":"Connects multiple page views by a user into a single Microsoft Clarity session recording."},{"name":"add_to_cart","category_key":"statistics","type":"first","typeLabel":"1st Party","domain":"","domainLabel":"www.flooringinc.com","duration":3600,"durationLabel":"1 hour","description":"Used by Google Tag Manager. Captures the product SKU, name, price and quantity removed from the cart, and makes the information available for future integration by third-party scripts."},{"name":"remove_from_cart","category_key":"statistics","type":"first","typeLabel":"1st Party","domain":"","domainLabel":"www.flooringinc.com","duration":3600,"durationLabel":"1 hour","description":"Used by Google Tag Manager. Captures the product SKU, name, price and quantity added to the cart, and makes the information available for future integration by third-party scripts."}]},{"name":"","is_third_party":true,"cookies":[{"name":"CLID","category_key":"statistics","type":"third","typeLabel":"3rd Party","domain":"","domainLabel":"","duration":31536000,"durationLabel":"365 days","description":"Identifies the first time Microsoft Clarity saw the current user on any site using the service"},{"name":"MR","category_key":"statistics","type":"third","typeLabel":"3rd Party","domain":"","domainLabel":"","duration":31536000,"durationLabel":"365 days","description":"Used by Microsoft to track users for analytics purposes."},{"name":"MUID","category_key":"statistics","type":"third","typeLabel":"3rd Party","domain":"","domainLabel":"","duration":31536000,"durationLabel":"365 days","description":"Identifies unique web browsers visiting Microsoft sites. These cookies are used for advertising, site analytics, and other operational purposes."}]}],"show_details":false},{"key":"marketing","is_essential":false,"is_pre_checked":false,"name":"Marketing cookies","description":"The
1414se cookies track your online activity to help advertisers deliver more relevant advertising or to limit how many times you see an ad. These cookies can share that information with other organizations or advertisers. These are persistent cookies and almost always of third-party provenance.","sort_order":0,"details":[],"show_details":false}],"displayStyle":"left_bar","canShowCookieDetails":true,"overview":{"title":"Privacy and Cookies","text":"<p>A cookie is information stored on your computer by a website you visit. Cookies provide a way for the site to recognize you and keep track of your preferences. Ecommerce websites place cookies on visitors' browsers to retain login credentials, identify customers, and provide a customized shopping experience.<\/p>\r\n<p>We respect the privacy of individuals and recognize the importance of personal data entrusted to us by our customers. Any website visitor may choose not to allow some types of cookies. Click on cookie category headings and cookie details to find out more and change our default settings. However, blocking some types of cookies may impact your website experience and prevent you from using all the features on our store.<\/p>"},"consentPreferences":{"header":"Manage Consent Preferences","essential_category_status":"Always Active","cookie_details_link":"Cookie Details"},"design":{"textColor":"inherit","backgroundColor":"inherit"},"acceptButtonConfig":{"label":"Accept All","text_color":null,"text_color_on_hover":null,"background_color":null,"background_color_on_hover":null},"declineButtonConfig":{"enabled":true,"label":"Decline All","text_color":null,"text_color_on_hover":null,"background_color":null,"background_color_on_hover":null},"confirmButtonConfig":{"label":"Confirm My Choices","text_color":null,"text_color_on_hover":null,"background_color":null,"background_color_on_hover":null},"cookieDetailsIsOpen":false}, 1415 show: function () {}, 1416 hide: function () {}, 1417 syncCategoriesDataWithConsent: function () { 1418 this.config.categories = this.config.categories.map(category => { 1419 category.is_allowed = prCookieConsentApi.isAllowedCategory(category.key); 1420 return category; 1421 }); 1422 }, 1423 allowAll: function () { 1424 prCookieConsentApi.consent.allowAllCategories(); 1425 this.syncCategoriesDataWithConsent(); 1426 window.prCookieSettingBar.hide(); 1427 }, 1428 declineAll: function () { 1429 prCookieConsentApi.consent.declineAll(); 1430 this.syncCategoriesDataWithConsent(); 1431 window.prCookieSettingBar.hide(); 1432 }, 1433 confirm: function () { 1434 var allowedCategories = [...prCookieConsentApi.config.essentialCategoryKeys]; 1435 this.config.categories.forEach((category) => { 1436 if (allowedCategories.includes(category.key) || !category.is_allowed) { 1437 return; 1438 } 1439 1440 allowedCategories.push(category.key); 1441 }); 1442 1443 prCookieConsentApi.consent.set(allowedCategories); 1444 this.syncCategoriesDataWithConsent(); 1445 window.prCookieSettingBar.hide(); 1446 } 1447 }; 1448</script>
1448 1449 1450<div x-data="{...hyva.modal(), init() { 1451 window.prCookieSettingBar.show = this.show.bind(this, 'pr-cookie-setting-bar', event); 1452 window.prCookieSettingBar.hide = this.hide.bind(this); 1453 }}" x-init="init()"> 1454 <div x-cloak x-bind="overlay('pr-cookie-setting-bar')" 1455 x-spread="overlay('pr-cookie-setting-bar')" 1456 class="fixed inset-0 bg-black bg-opacity-50 z-50 pr-cookie-setting-bar-overlay"> 1457 <div class="fixed flex justify-center items-center text-left z-40 pr-cookie-setting-bar-container inset-0"> 1458 <div x-ref="pr-cookie-setting-bar" role="dialog" aria-modal="true" 1459 class="inline-block bg-white shadow-xl rounded-lg p-10 max-h-screen overflow-auto overscroll-y-contain pr-cookie-setting-bar rounded-none px-0 py-0 fixed top-0 bottom-0 left-0 w-[400px] max-w-full"> 1460 <div class="pr-cookie-setting-bar-wrap text-[13px] px-4 pt-2 pb-4 relative" 1461 id="pr-cookie-setting-bar" 1462 :class="config.cookieDetailsIsOpen && 'h-screen overflow-hidden'" 1463 x-data="prCookieSettingBar" 1464 x-init="syncCategoriesDataWithConsent()" 1465> 1466 <button @click="hide" class="ml-auto -mt-2 -mr-4 block top-2 right-2 p-2"> 1467 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" class="w-4 h-4" width="24" height="24" role="img"> 1468 <path fill-rule="evenodd" d="M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z" clip-rule="evenodd"/> 1469<title>x</title></svg> 1470 </button> 1471 <h3 class="font-bold text-xl leading-normal mb-3" x-text="config.overview.title"></h3> 1472 <div class="pr-cookie-description" x-html="config.overview.text"></div> 1473 <div class="pr-actions-buttons flex flex-wrap items-center justify-center py-4 mb-6 border-container border-b"> 1474 <button type="button" class="action btn btn-primary m-2" x-text="config.acceptButtonConfig.label" @click="allowAll();"></button> 1475 <button type="button" class="action btn btn-secondary m-2" x-text="config.declineButtonConfig.label" @click="declineAll()"></button> 1476 </div> 1477 <h3 class="pr-cookie-manage-title font-bold text-xl mb-0" x-text="config.consentPreferences.header"></h3> 1478 <ul class="message-system-list mt-8"> 1479 <template x-for="category in config.categories"> 1480 <li class="mt-0 mb-4"> 1481 <div class="accordion-title"> 1482 <div class="pr-cookie-option flex justify-between pb-2 mt-8 text-sm"> 1483 <strong class="option-label mr-4" x-text="category.name"></strong> 1484 <template x-if="category.is_essential"> 1485 <strong class="option-status whitespace-nowrap text-green-700" x-text="config.consentPreferences.essential_category_status"></strong> 1486 </template> 1487 <template x-if="! category.is_essential"> 1488 <div class="pr-cookie-switch"> 1489 <label class="switch-label" aria-label="Switch"> 1490 <input type="checkbox" 1491 class="sr-only" 1492 x-model="category.is_allowed" 1493 x-bind:name="category.key" 1494 > 1495 <span class="switch-area flex items-center w-11 h-6 rounded-3xl border border-container cursor-pointer transition-all" 1496 :class="category.is_allowed ? 'bg-green-500 border-green-700' : 'bg-gray-200 border-gray-300'" 1497 > 1498 <span class="switch-nob block w-5 h-5 rounded-full transition-all" 1499 :class="category.is_allowed ? 'bg-white ml-auto mr-[2px]' : 'bg-gray-500 mr-auto ml-[2px]'" 1500 ></span> 1501 </span> 1502 </label> 1503 </div> 1504 </template> 1505 </div> 1506 <div class="first-details" x-data="{ isOpen: false }"> 1507 <div class="pr-cookie-category-description text-gray-700 mb-4" x-text="category.description"></div> 1508 <template x-if="config.canShowCookieDetails"> 1509 <div> 1510 <div class="lvl1">
1511 <span class="pr-cookie-details text-blue-700 cursor-pointer underline hover:no-underline" 1512 x-on:click="isOpen = true; config.cookieDetailsIsOpen = isOpen" 1513 x-text="config.consentPreferences.cookie_details_link" 1514 x-bind:data-category-key="category.key"></span> 1515 </div> 1516 <div class="second-details absolute bg-white px-4 pt-2 pb-4 inset-0 h-full" 1517 x-show="isOpen" 1518 > 1519 <div class="pr-cookie-view flex flex-col h-full"> 1520 <template x-if="isOpen"> 1521 <button @click="hide" class="ml-auto -mt-2 -mr-2 block top-2 right-2 p-2"> 1522 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" class="w-4 h-4" width="24" height="24" role="img"> 1523 <path fill-rule="evenodd" d="M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z" clip-rule="evenodd"/> 1524<title>x</title></svg> 1525 </button> 1526 </template> 1527 <div class="flex justify-between items-center text-sm mb-2"> 1528 <button class="pr-cookie-details-hide px-3 -ml-3 mr-3 flex items-center cursor-pointer hover:text-blue-800" 1529 x-show="isOpen" 1530 x-on:click="isOpen = false; config.cookieDetailsIsOpen = isOpen"> 1531 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" class="w-3 h-3 mr-2 flex-shrink-0" width="24" height="24" role="img"> 1532 <path fill-rule="evenodd" d="M9.707 16.707a1 1 0 01-1.414 0l-6-6a1 1 0 010-1.414l6-6a1 1 0 011.414 1.414L5.414 9H17a1 1 0 110 2H5.414l4.293 4.293a1 1 0 010 1.414z" clip-rule="evenodd"/> 1533<title>arrow-left</title></svg> 1534 Back 1535 </button> 1536 <strong class="option-label" x-text="category.name"></strong> 1537 </div> 1538 <div class="pr-cookies-list h-full px-4 -mx-4 mb-3 overflow-auto"> 1539 <h3 class="pr-cookie-view-title mb-2 font-bold text-base">Cookies List</h3> 1540 <template x-if="category.details.length > 0"> 1541 <template x-for="group in category.details"> 1542 <div class="pr-cookie-item text-xs py-2 border-container border-b"> 1543 <h4 class="pr-cookie-details-title font-semibold mb-1" x-text="group.name"></h4> 1544 <details class="pr-cookie-details-info"> 1545 <summary class="cursor-pointer text-blue-600 hover:text-blue-500"> 1546 <h5 class="inline-block font-semibold"> 1547 View Cookies 1548 </h5> 1549 </summary> 1550 <div class="pr-cookie-group-wrp"> 1551 <template x-for="cookie in group.cookies"> 1552 <div class="pr-cookie-group mt-1 mb-4 p-4 bg-gray-100 rounded"> 1553 <div class="pr-cookie-group-row mb-2 flex"> 1554 <sp
1554an class="w-24 flex-shrink-0 mr-4">Name</span> 1555 <span class="truncate" x-text="cookie.name"></span> 1556 </div> 1557 <div class="pr-cookie-group-row mb-2 flex"> 1558 <span class="w-24 flex-shrink-0 mr-4">Domain</span> 1559 <span class="truncate" x-text="cookie.domainLabel"></span> 1560 </div> 1561 <div class="pr-cookie-group-row mb-2 flex"> 1562 <span class="w-24 flex-shrink-0 mr-4">Duration</span> 1563 <span x-text="cookie.durationLabel"></span> 1564 </div> 1565 <div class="pr-cookie-group-row mb-2 flex"> 1566 <span class="w-24 flex-shrink-0 mr-4">Type</span> 1567 <span x-text="cookie.typeLabel"></span> 1568 </div> 1569 <div class="pr-cookie-group-row mb-2 flex"> 1570 <span class="w-24 flex-shrink-0 mr-4">Category</span> 1571 <span x-text="cookie.category_key"></span> 1572 </div> 1573 <div class="pr-cookie-group-row flex"> 1574 <span class="w-24 flex-shrink-0 mr-4">Description</span> 1575 <span x-text="cookie.description"></span> 1576 </div> 1577 </div> 1578 </template> 1579 </div> 1580 </details> 1581 </div> 1582 </template> 1583 </template> 1584 <template x-if="category.details.length === 0"> 1585 <p>There are no cookies.</p> 1586 </template> 1587 </div> 1588 1589 <template x-if="isOpen"> 1590 <div> 1591 <button class="action btn btn-primary" 1592 :style="`color: ${config.confirmButtonConfig.text_color}; background-color: ${config.confirmButtonConfig.background_color}; border-color: ${config.confirmButtonConfig.background_color}`" 1593 x-text="config.confirmButtonConfig.label" 1594 @click="prCookieSettingBar.confirm()"> 1595 </button> 1596 </div> 1597 </template> 1598 </div> 1599 </div> 1600 </div> 1601 </template> 1602 </div> 1603 </div> 1604 </li> 1605 </template> 1606 <button class="action btn btn-primary" 1607 :style="`color: ${config.confirmButtonConfig.text_color}; background-color: ${config.confirmButtonConfig.background_color}; border-color: ${config.confirmButtonConfig.background_color}`" 1608 x-text="config.confirmButtonConfig.label" 1609 @click="prCookieSettingBar.confirm()"> 1610 </button> 1611 </ul> 1612</div> 1613 </div> 1614 </div> 1615 </div> 1616</div>
1617<script type="text/javascript" nonce="YjZ2ZWQxdzRxcTd4ZGJzcGk4OGs3aXlybTNkOWF6ODk="> 1618 (() => { 1619 const updateCookieConsentConfig = () => { 1620 const categoryMap = {}; 1621 Object.entries(prCookieConsentApi.config.cookieToCategoryMapping).forEach(([cookieName, categoryName]) => { 1622 if (! categoryMap[categoryName]) { 1623 categoryMap[categoryName] = []; 1624 } 1625 categoryMap[categoryName].push(cookieName); 1626 }); 1627 1628 Object.entries(categoryMap).forEach(([category, cookies]) => { 1629 const existingList = window.cookie_consent_config[category] || []; 1630 window.cookie_consent_config[category] = Array.from(new Set(existingList.concat(cookies))); 1631 }); 1632 1633 let cookieCategories = ["necessary","preferences","statistics","marketing"]; 1634 window.cookie_consent_groups = {}; 1635 cookieCategories.forEach((category) => { 1636 window.cookie_consent_groups[category] = prCookieConsentApi.isAllowedCategory(category); 1637 }); 1638 } 1639 1640 const updateConsent = () => { 1641 window.cookie_consent_groups = window.cookie_consent_groups || {} 1642 Object.keys(window.cookie_consent_groups).forEach(categoryKey => { 1643 window.cookie_consent_groups[categoryKey] = prCookieConsentApi.isAllowedCategory(categoryKey); 1644 }); 1645 window.dispatchEvent(new CustomEvent('user-allowed-save-cookie')); 1646 } 1647 1648 document.addEventListener('pr-cookie-consent-api:configured', () => { 1649 updateCookieConsentConfig(); 1650 prCookieConsentApi.consent.addCallback(updateConsent); 1651 }); 1652 1653 if (prCookieConsentApi.isConfigured) { 1654 updateCookieConsentConfig(); 1655 prCookieConsentApi.consent.addCallback(updateConsent); 1656 } 1657 })(); 1658</script>
1658 1659<div id="prgdpr-consentpopups-container" 1660 x-data="prDataPrivacyConsentPopupsLoadInit()" 1661 @private-content-loaded.window="receiveCustomerData($event.detail.data)" 1662></div>
1663<script> 1664 function prDataPrivacyConsentPopupsLoadInit() { 1665 return { 1666 receiveCustomerData: function (data) { 1667 if (! data.hasOwnProperty('data_privacy')) { 1668 return; 1669 } 1670 1671 if (data.data_privacy.countNotifies !== 0 || data.data_privacy.countPopups !== 0) { 1672 this.loadPopups(); 1673 } 1674 }, 1675 loadPopups: function () { 1676 fetch('https://www.flooringinc.com/data-privacy/consentpopups/load/') 1677 .then((response) => { 1678 if (! response.ok) { 1679 throw new Error('Network response was not ok'); 1680 } 1681 1682 return response.json(); 1683 }) 1684 .then(data => this.$el.innerHTML = data.html) 1685 .catch(error => console.warn(error)); 1686 } 1687 } 1688 } 1689 1690 function prDataPrivacyConsentPopupsInit(popups, notifies) { 1691 return { 1692 popups: popups, 1693 notifies: notifies, 1694 data: null, 1695 isShowModal: true, 1696 init: function () { 1697 for (popup of this.popups) { 1698 popup.isShowModal = true; 1699 } 1700 1701 for (notify of this.notifies) { 1702 notify.isShowModal = true; 1703 } 1704 }, 1705 closeModal(popup) { 1706 popup.isShowModal = false; 1707 }, 1708 sendRequest: function (url, consent) { 1709 if (consent.cms_page) { 1710 consent.checkboxLabel = 'I agree'; 1711 } 1712 1713 fetch(url, { 1714 method: 'POST', 1715 headers: {'X-Requested-With': 'XMLHttpRequest'}, 1716 body: JSON.stringify({'consent': consent}) 1717 }); 1718 }, 1719 print: function (popup) { 1720 let printWindow = window.open('', 'Print', 'height=600,width=800'); 1721 printWindow.document.write( 1722 `<html><head><title>${popup.cms_page.title}</title></head><body>${popup.cms_page.content}</body></html` 1723 ); 1724 printWindow.document.close(); 1725 printWindow.focus(); 1726 printWindow.print(); 1727 printWindow.onafterprint = function () { 1728 printWindow.close(); 1729 }; 1730 1731 return true; 1732 } 1733 } 1734 } 1735</script>
1735 1736
1737<script nonce="YjZ2ZWQxdzRxcTd4ZGJzcGk4OGs3aXlybTNkOWF6ODk="> 1738 (() => { 1739 const updateConsents = () => { 1740 if (! Array.isArray(prCookieConsentApi.consent.get()) || prCookieConsentApi.consent.get().length > 0) { 1741 prCookieConsentApi.consent.declineAll(); 1742 } 1743 } 1744 1745 prGlobalPrivacyControlApi.signalHandlers.addHandler(updateConsents); 1746 })(); 1747</script>
1747 1748<input name="form_key" type="hidden" value="azuXBYKQfItoxoot" /> 1749
1749<script> 1750 window.amRecaptchaModel = window.amRecaptchaModel || {}; 1751 </script>
1751 1752<div class="page-wrapper"><div class="container hidden"> 1753 <div class="pt-2 pb-2 flex flex-row items-end justify-end"> 1754 <div class="pl-3"> 1755 <a href="https://www.flooringinc.com/knowledge-base/" class="hover:underline"> 1756 FAQ</a> 1757 </div> 1758 </div> 1759</div> 1760<header class="page-header"><div class="panel wrapper"><div class="header_top flex justify-between items-center" x-data="notificationAjaxCall()" x-init="initNotificationFunc()"> 1761 <div class="header_left_notification text-size14 font-normal" x-html="left_notification_html"></div> 1762 <div class="header_middle_notification flex"> 1763 <div data-content-type="html" data-appearance="default" data-element="main" data-decoded="true"><div class="flex items-center"><a href="#" class="flex items-center gap-2"><svg xmlns="http://www.w3.org/2000/svg" width="29" height="20" viewBox="0 0 29 20" fill="none"> 1764<path d="M18.125 0V9.09091H0V0H18.125ZM19.9375 0H29V9.09091H19.9375V0ZM10.875 20V10.9091H29V20H10.875ZM0 20V10.9091H9.0625V20H0Z" fill="#15324C"/> 1765</svg> 500+ Million Sqft Covered</a></div> 1766 1767<div class="flex items-center"><a href="https://www.flooringinc.com/reviews" class="flex items-center gap-2"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none"> 1768<path d="M8.99984 0.666504L11.5748 5.88317L17.3332 6.72484L13.1665 10.7832L14.1498 16.5165L8.99984 13.8082L3.84984 16.5165L4.83317 10.7832L0.666504 6.72484L6.42484 5.88317L8.99984 0.666504Z" fill="#15324C" stroke="#15324C" stroke-linecap="round" stroke-linejoin="round"/> 1769</svg> 125K+ Verified Reviews</a></div> 1770 1771<div class="flex items-center"><a href="/price-match" class="flex items-center gap-2"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20" fill="none"> 1772<path d="M17.1582 11.1748L11.1832 17.1498C11.0284 17.3048 10.8446 17.4277 10.6422 17.5116C10.4399 17.5955 10.223 17.6386 10.004 17.6386C9.78498 17.6386 9.5681 17.5955 9.36577 17.5116C9.16344 17.4277 8.97963 17.3048 8.82484 17.1498L1.6665 9.99984V1.6665H9.99984L17.1582 8.82484C17.4686 9.13711 17.6428 9.55953 17.6428 9.99984C17.6428 10.4401 17.4686 10.8626 17.1582 11.1748Z" fill="#15324C"/> 1773<path d="M5.83317 5.83317H5.8415M17.1582 11.1748L11.1832 17.1498C11.0284 17.3048 10.8446 17.4277 10.6422 17.5116C10.4399 17.5955 10.223 17.6386 10.004 17.6386C9.78498 17.6386 9.5681 17.5955 9.36577 17.5116C9.16344 17.4277 8.97963 17.3048 8.82484 17.1498L1.6665 9.99984V1.6665H9.99984L17.1582 8.82484C17.4686 9.13711 17.6428 9.55953 17.6428 9.99984C17.6428 10.4401 17.4686 10.8626 17.1582 11.1748Z" stroke="#15324C" stroke-linecap="round" stroke-linejoin="round"/> 1774<circle cx="5" cy="5" r="1" fill="white"/> 1775</svg> Price Match Guarantee</a></div> 1776 1777<div class="flex items-center"><a href="/moneybackguarantee" class="flex items-center gap-2"> 1778<svg xmlns="http://www.w3.org/2000/svg" width="14" height="18" viewBox="0 0 14 18" fill="none"> 1779<path d="M7 0.75V18.4499M11.1667 3.75H4.91667C4.14312 3.75 3.40125 4.02656 2.85427 4.51884C2.30729 5.01113 2 5.67881 2 6.375C2 7.07119 2.30729 7.73887 2.85427 8.23116C3.40125 8.72344 4.14312 9 4.91667 9H9.08333C9.85688 9 10.5987 9.27656 11.1457 9.76885C11.6927 10.2611 12 10.9288 12 11.625C12 12.3212 11.6927 12.9889 11.1457 13.4812C10.5987 13.9734 9.85688 14.25 9.08333 14.25H2" stroke="#15324C" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"/> 1780</svg> Money Back Guarantee</a></div> 1781</div> </div> 1782 <div class="header_right_notifications font-normal"> 1783 <style>#html-body [data-pb-style=GSTQRKU]{justify-content:flex-start;display:flex;flex-direction:column;background-position:left top;background-size:cover;background-repeat:no-repeat;background-attachment:scroll}</style><div data-content-type="row" data-appearance="contained" data-element="main"><div data-enable-parallax="0" data-parallax-speed="0.5" data-background-images="{}" data-background-type="image" data-video-loop="true" data-video-play-only-visible="true" data-video-lazy-load="true" data-video-fallback-src="" data-element="inner" data-pb-style="GSTQRKU"><div data-content-type="text" data-appearance="default" data-element="main"><ul> 1784<li><a href="/contact">Contact Us</a></li> 1785<li><a href="/sales/guest/form">Track Order</a></li> 1786</ul></div></div></div> </div> 1787</div> 1788
1789<script> 1790 function notificationAjaxCall() { 1791 return { 1792 availability_notification: '', 1793 left_notification_html: '', 1794 right_notification_html: '', 1795 initNotificationFunc: function () { 1796 fetch(BASE_URL+'notifications/index/show', { 1797 method: "GET", 1798 headers: { 'Content-Type': 'application/json' }, 1799 }) 1800 .then(response => { 1801 if (! response.ok) console.warn('GET request failed'); 1802 return response.json(); 1803 }) 1804 .then(data => { 1805 if (data) { 1806 this.availability_notification = data.availability_notification; 1807 this.left_notification_html = data.left_notification_html; 1808 this.right_notification_html = data.right_notification_html; 1809 } 1810 }); 1811 } 1812 } 1813 } 1814</script>
1814</div><div class="header content">
1814<script> 1815 function initQuoteCartDrawer() { 1816 return { 1817 open: false, 1818 cartData: {}, 1819 getQuoteCartData(data) { 1820 if (data.quotecart) { 1821 this.cartData = data.quotecart 1822 this.setCartItems(); 1823 } 1824 }, 1825 cartItems: [], 1826 setCartItems() { 1827 this.cartItems = this.cartData && this.cartData.items.sort(function(a,b) { return a.item_id - b.item_id }) || {} 1828 }, 1829 deleteItemFromCart(itemId) { 1830 var formKey = document.querySelector('input[name=form_key]').value; 1831 fetch(BASE_URL+"amasty_quote/sidebar/removeItem/", { 1832 "headers": { 1833 "content-type": "application/x-www-form-urlencoded; charset=UTF-8", 1834 }, 1835 "body": "form_key="+ formKey + "&item_id="+itemId, 1836 "method": "POST", 1837 "mode": "cors", 1838 "credentials": "include" 1839 }).then(function (response) { 1840 if (response.redirected) { 1841 window.location.href = response.url; 1842 } else if (response.ok) { 1843 return response.json(); 1844 } else { 1845 typeof window.dispatchMessages !== "undefined" && window.dispatchMessages( 1846 [{ 1847 type: "warning", 1848 text: "Could not remove item from quote." 1849 }], 5000 1850 ); 1851 } 1852 }).then(function (response) { 1853 typeof window.dispatchMessages !== "undefined" && window.dispatchMessages( 1854 [{ 1855 type: response.success ? "success" : "error", 1856 text: response.success 1857 ? "You removed the item." 1858 : response.error_message 1859 }], 5000 1860 ); 1861 var reloadCustomerDataEvent = new CustomEvent("reload-customer-section-data"); 1862 window.dispatchEvent(reloadCustomerDataEvent); 1863 }); 1864 } 1865 } 1866 } 1867</script>
1867 1868<section id="cart-quote-drawer" 1869 x-data="initQuoteCartDrawer()" 1870 @private-content-loaded.window="getQuoteCartData(event.detail.data)" 1871 @toggle-quote-cart.window="open=true;" 1872 @keydown.window.escape="open=false" 1873> 1874 <template x-if="cartData && cartData.summary_count"> 1875 <div role="dialog" 1876 aria-labelledby="cart-drawer-title" 1877 aria-modal="true" 1878 @click.away="open = false" 1879 class="fixed inset-y-0 right-0 z-30 flex max-w-full"> 1880 <div class="backdrop" 1881 x-show="open" 1882 x-transition:enter="ease-in-out duration-500" 1883 x-transition:enter-start="opacity-0" 1884 x-transition:enter-end="opacity-100" 1885 x-transition:leave="ease-in-out duration-500" 1886 x-transition:leave-start="opacity-100" 1887 x-transition:leave-end="opacity-0" 1888 @click="open = false" 1889 aria-label="Close panel"></div> 1890 <div class="relative w-screen max-w-md shadow-2xl" 1891 x-show="open" 1892 x-transition:enter="transform transition ease-in-out duration-500 sm:duration-700" 1893 x-transition:enter-start="translate-x-full" 1894 x-transition:enter-end="translate-x-0" 1895 x-transition:leave="transform transition ease-in-out duration-500 sm:duration-700" 1896 x-transition:leave-start="translate-x-0" 1897 x-transition:leave-end="translate-x-full" 1898 > 1899 <div 1900 x-show="open" 1901 x-transition:enter="ease-in-out duration-500" 1902 x-transition:enter-start="opacity-0" 1903 x-transition:enter-end="opacity-100" 1904 x-transition:leave="ease-in-out duration-500" 1905 x-transition:leave-start="opacity-100" 1906 x-transition:leave-end="opacity-0" class="absolute top-0 right-0 flex mr-3 mt-2"> 1907 <button @click="open = false" aria-label="Close panel" 1908 class="p-2 text-gray-300 transition duration-150 ease-in-out hover:text-black"> 1909 <svg class="w-6 h-6" fill="none" viewBox="0 0 24 24" stroke="currentColor"> 1910 <path stroke-linecap="round" stroke-linejoin="round" 1911 stroke-width="2" d="M6 18L18 6M6 6l12 12"> 1912 </path> 1913 </svg> 1914 </button> 1915 </div> 1916 <div class="flex flex-col h-full py-6 space-y-6 bg-white shadow-xl"> 1917 <header class="px-4 sm:px-6"> 1918 <div id="cart-drawer-title" class="text-lg font-medium leading-7 text-gray-900"> 1919 My Quote Cart </div> 1920 </header> 1921 <div class="relative grid gap-6 px-4 py-6 overflow-y-auto bg-white border-b 1922 sm:gap-8 sm:px-6 border-container"> 1923 <template x-for="item in cartItems"> 1924 <div class="flex items-start p-3 -m-3 space-x-4 transition duration-150 1925 ease-in-out rounded-lg hover:bg-gray-100"> 1926 <a :href="item.product_url" class="w-1/4"> 1927 <img 1928 :src="item.product_image.src" 1929 :width="item.product_image.width" 1930 :height="item.product_image.height" 1931 loading="lazy" 1932 /> 1933 </a> 1934 <div class="w-3/4 relative"> 1935 <div> 1936 <div class="text-xl"> 1937 <a :href="item.product_url" class="hover:underline"> 1938 <span x-html="item.qty"></span> x <span x-html="item.product_name"></span> 1939 </a> 1940 </div> 1941 <div class="text-sm"><span x-html="item.product_sku"></div> 1942 </div> 1943 <template x-for="option in item.options"> 1944 <div class="pt-2"> 1945 <p class="font-semibold" x-text="option.label + ':'"></p> 1946 <p class="text-secondary" x-html="option.value"></p> 1947 </div> 1948 </template> 1949 <div><span x-html="item.product_price"></span></div> 1950 <div class="pt-4"> 1951 <a :href="item.configure_url" 1952 x-show="item.product_type !== 'grouped'" 1953 class="inline-flex p-2 mr-2 btn btn-primary"> 1954 <svg fill="none" viewBox="0 0 24 24" stroke="currentColor" 1955 size="16" class="w-5 h-5"> 1956 <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" 1957 d="M15.232 5.232l3.536 3.536m-2.036-5.036a2.5 2.5 0 113.536 1958 3.536L6.5 21.036H3v-3.572L16.732 3.732z"> 1959 </path> 1960 </svg> 1961 </a> 1962 <button class="inline-flex p-2 btn btn-primary" 1963 @click="deleteItemFromCart(item.item_id)" 1964 > 1965 <svg fill="none" viewBox="0 0 24 24" stroke="currentColor" 1966 size="16" class="w-5 h-5"> 1967 <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" 1968 d="M19 7l-.867 12.142A2 2 0 0116.138 21H7.862a2 2 0 1969 01-1.995-1.858L5 7m5 4v6m4-6v6m1-10V4a1 1 0 00-1-1h-4a1 1 1970 0 00-1 1v3M4 7h16"> 1971 </path> 1972 </svg> 1973 </button> 1974 </div> 1975 </div> 1976 </div> 1977 </template> 1978 </div> 1979 <div class="relative grid gap-6 px-4 py-6 bg-white sm:gap-8 sm:px-6"> 1980 <div class="w-full p-3 -m-3 space-x-4 transition duration-150 ease-in-out rounded-lg 1981 hover:bg-gray-100">
1982 <span>Cart Subtotal:</span> 1983 <span class="text-gray-900 font-bold" x-text="hyva.formatPrice(cartData.subtotalAmount)"></span> 1984 </div> 1985 <div class="w-full"> 1986 <a href="https://www.flooringinc.com/amasty_quote/cart/" 1987 class="btn btn-secondary justify-center"> 1988 View and Edit Cart </a> 1989 </div> 1990 </div> 1991 </div> 1992 </div> 1993 </div> 1994 </template> 1995</section> 1996<div class="widget block block-static-block"> 1997 <style>#html-body [data-pb-style=J86NFKS]{justify-content:flex-start;display:flex;flex-direction:column;background-position:left top;background-size:cover;background-repeat:no-repeat;background-attachment:scroll}</style><div data-content-type="row" data-appearance="full-bleed" data-enable-parallax="0" data-parallax-speed="0.5" data-background-images="{}" data-background-type="image" data-video-loop="true" data-video-play-only-visible="true" data-video-lazy-load="true" data-video-fallback-src="" data-element="main" data-pb-style="J86NFKS"><div data-content-type="html" data-appearance="default" data-element="main" data-decoded="true"><div x-data="globalNotificationAjaxCall()" x-init="initGlobalNotificationFunc()"> 1998 <div class="notification4 pt-2 pb-2 text-center text-size13 font-normal text-white bg-custom-green" style="display:none" x-html="global_notification_text"></div> 1999</div> 2000
2001<script> 2002function globalNotificationAjaxCall() { 2003 return { 2004 global_notification_text: '', 2005 initGlobalNotificationFunc: function () { 2006 fetch(BASE_URL+'notifications/index/GlobalNotification?full_action_name=cms_page_view&cat_prod_id=', { 2007 method: "GET", 2008 headers: { 'Content-Type': 'application/json' }, 2009 }) 2010 .then(response => { 2011 if (! response.ok) console.warn('GET request failed'); 2012 return response.json(); 2013 }) 2014 .then(data => { 2015 if (data) { 2016 if (data.notification_text !='') { 2017 document.querySelector('.notification4.bg-custom-green').style.display = 'block'; 2018 this.global_notification_text = data.notification_text; 2019 } 2020 } 2021 }); 2022 } 2023 } 2024} 2025</script>
2025</div></div></div> 2026</div>
2026<script> 2027 function initHeader () { 2028 return { 2029 searchOpen: false, 2030 cart: {}, 2031 quoteCart: {}, 2032 activeCartType: 'cart', 2033 getData(data) { 2034 if (data.cart) { 2035 this.cart = data.cart; 2036 // this.cart.summary_count=this.cart.items.length; 2037 } 2038 if (data.quotecart) { 2039 this.quoteCart = data.quotecart; 2040 } 2041 if (data.active_cart_icon) { 2042 this.activeCartType = data.active_cart_icon; 2043 } 2044 } 2045 } 2046 } 2047 function initCompareHeader() { 2048 return { 2049 compareProducts: null, 2050 itemCount: 0, 2051 receiveCompareData(data) { 2052 if (data['compare-products']) { 2053 this.compareProducts = data['compare-products']; 2054 this.itemCount = this.compareProducts.count; 2055 } 2056 } 2057 } 2058 } 2059</script>
2059 2060 2061<div id="header" 2062 class="relative z-30 w-full bg-white" 2063 x-data="initHeader()" 2064 @keydown.window.escape="searchOpen = false;" 2065 @private-content-loaded.window="getData(event.detail.data)" 2066> 2067 <div class="content flex flex-wrap items-center justify-between w-full pt-4 pb-4 mx-auto mt-0"> 2068 <!--Logo--> 2069 <div class="logo relative z-20"> 2070 <div class="order-1 sm:order-2 lg:order-1 w-full pb-2 sm:w-auto sm:pb-0"> 2071 <a class="flex items-center text-xl font-medium tracking-wide text-gray-800 2072 no-underline hover:no-underline font-title" 2073 href="https://www.flooringinc.com/" 2074 title="Flooring Inc. The Flooring Superstore" 2075 aria-label="store logo"> 2076 <picture><source type="image/webp" srcset="https://www.flooringinc.com/media/logo/stores/1/logo.webp"><img src="https://www.flooringinc.com/media/logo/stores/1/logo.jpg" title="Flooring Inc. The Flooring Superstore" alt="Flooring Inc. The Flooring Superstore" fetchpriority="high" width="266" height="31" /></picture> 2077 </a> 2078</div> 2079 </div> 2080 2081 <!--Main Navigation--> 2082 <div x-data="initMenuMobile_6ab67d17cd4a9()" 2083 class="z-50 order-2 sm:order-1 lg:order-2 navigation xl:hidden" 2084> 2085 <!-- mobile --> 2086 <div @load.window="setActiveMenu($root)" 2087 class="mobile-menu bg-lightblue" 2088 :class="{'h-screen fixed top-0 left-0 w-full' : open}" 2089 @toggle-mobile-menu.window="open = !open" 2090 @keydown.window.escape="open=false" 2091 > 2092 <div class="flex items-baseline justify-between ml-0 menu-icon"> 2093 <div class="flex justify-end w-full"> 2094 <a @click="$dispatch('toggle-mobile-menu')" 2095 class="flex items-center justify-center cursor-pointer" 2096 :class="{ 'ml-auto': open }"> 2097 <span class="close-icon px-5 py-2 text-size12 font-normal text-custom-blue rounded-md absolute" :class="{ 'hidden' : !open, 'block': open }">CLOSE</span> 2098 <picture class="menu_icon -mt-0 mr-2 block"><source type="image/webp" srcset="https://www.flooringinc.com/static/version1789462004/frontend/Dcw/hyvadesktop/en_US/images/menu-icon.webp"><img class="menu_icon -mt-0 mr-2 block" :class="{ 'block' : !open, 'hidden': open }" src="https://www.flooringinc.com/static/version1789462004/frontend/Dcw/hyvadesktop/en_US/images/menu-icon.png" width="25" height="17" alt="menu-icon"></picture> 2099 </a> 2100 </div> 2101 </div> 2102 <div class="menu-overlay hidden" :class="{ 'hidden' : !open }" @click="$dispatch('toggle-mobile-menu')"></div> 2103 <nav 2104 class="hidden w-full h-full duration-150 ease-in-out transform transition-display pt-5 pr-5 pl-12" 2105 :class="{ 'hidden' : !open }" 2106 > 2107 <span class="menu-label text-size28 font-medium text-black pt-1 pb-4" :class="{ 'hidden' : !open, 'block': open }">Menu</span> 2108 <div class="nav-in overflow-y-auto overflow-x-hidden h-5/6"> 2109 <div class="level-0"> 2110 <span class="flex items-center transition-transform duration-150 ease-in-out transform mb-3"> 2111 <a class="flex items-center w-full cursor-pointer level-0 text-size24 font-medium text-black no-underline" 2112 @click="mobilePanelActiveId = 2113 mobilePanelActiveId === 'category-node-1826' ? 2114 0 : 'category-node-1826'" 2115 title="Flooring By Category"> 2116 Flooring By Category </a> 2117 <a class="absolute right-0 cursor-pointer menu_arw1" :class="{ 2118 'active' : mobilePanelActiveId, 2119 '' : !mobilePanelActiveId 2120 }" 2121 @click="mobilePanelActiveId = 2122 mobilePanelActiveId === 'category-node-1826' ? 2123 0 : 'category-node-1826'" 2124 > 2125 <picture><source type="image/webp" srcset="https://www.flooringinc.com/static/version1789462004/frontend/Dcw/hyvadesktop/en_US/images/menu-arw.webp"><img src="https://www.flooringinc.com/static/version1789462004/frontend/Dcw/hyvadesktop/en_US/images/menu-arw.png" width="17" height="10" alt="menu-arw"></picture> 2126 </a> 2127 </span> 2128 <div 2129 class="w-full h-full transition-transform duration-200 ease-in-out block transform" 2130 :class="{ 2131 'block' : mobilePanelActiveId !== 'category-node-1826', 2132 'hidden' : mobilePanelActiveId === 'category-node-1826', 2133 }" 2134 > 2135 2136 <li class="imgcat list-none relative" x-data="{ show: false }" > 2137 <a 2138 @click="show = !show" 2139 title="Rubber Flooring" 2140 class="flex items-center w-full cursor-pointer text-size18 font-normal text-black mb-4 mob-width-adjust" 2141 >
2142 <span> 2143 Rubber Flooring </span> 2144 </a> 2145 2146 <picture class="absolute menu_arw"><source type="image/webp" srcset="https://www.flooringinc.com/static/version1789462004/frontend/Dcw/hyvadesktop/en_US/images/menu-arw.webp"><img src="https://www.flooringinc.com/static/version1789462004/frontend/Dcw/hyvadesktop/en_US/images/menu-arw.png" width="13" height="8" alt="menu-arw" @click="show = !show" class="absolute menu_arw" x-bind:class="show ? 'active' : ''"></picture> 2147 <ul class="z-10 w-full" x-show="show"> 2148 <li class="level-2"> 2149 <a href="https://www.flooringinc.com/shop/rubber-flooring/all-rubber-flooring.html" 2150 title="All Rubber Flooring" 2151 class="level-2 pl-5 flex items-center w-full cursor-pointer text-size16 font-normal text-black mb-4"> 2152 All Rubber Flooring</a> 2153 </li> 2154 <li class="level-2"> 2155 <a href="https://www.flooringinc.com/shop/rubber-flooring/rubber-rolls.html" 2156 title="Rubber Flooring Rolls" 2157 class="level-2 pl-5 flex items-center w-full cursor-pointer text-size16 font-normal text-black mb-4"> 2158 Rubber Flooring Rolls</a> 2159 </li> 2160 <li class="level-2"> 2161 <a href="https://www.flooringinc.com/shop/rubber-flooring/rubber-tiles.html" 2162 title="Rubber Floor Tiles" 2163 class="level-2 pl-5 flex items-center w-full cursor-pointer text-size16 font-normal text-black mb-4"> 2164 Rubber Floor Tiles</a> 2165 </li> 2166 <li class="level-2"> 2167 <a href="https://www.flooringinc.com/shop/rubber-flooring/rubber-mats.html" 2168 title="Rubber Mats" 2169 class="level-2 pl-5 flex items-center w-full cursor-pointer text-size16 font-normal text-black mb-4"> 2170 Rubber Mats</a> 2171 </li> 2172 <li class="level-2"> 2173 <a href="https://www.flooringinc.com/shop/rubber-flooring/playground-flooring.html" 2174 title="Playground Flooring" 2175 class="level-2 pl-5 flex items-center w-full cursor-pointer text-size16 font-normal text-black mb-4"> 2176 Playground Flooring</a> 2177 </li> 2178 <li class="level-2"> 2179 <a href="https://www.flooringinc.com/shop/rubber-flooring/outdoor-rubber-flooring.html" 2180 title="Outdoor Rubber Flooring" 2181 class="level-2 pl-5 flex items-center w-full cursor-pointer text-size16 font-normal text-black mb-4"> 2182 Outdoor Rubber Flooring</a> 2183 </li> 2184 </ul> 2185 <a class="text-size16 font-normal text-black underline pl-5 mt-2 mb-6 inline-block" href="https://www.flooringinc.com/shop/rubber-flooring.html" x-show="show">View All</a> 2186 2187 2188 2189 <li class="imgcat list-none relative" x-data="{ show: false }" > 2190 <a 2191 @click="show = !show" 2192 title="Garage Flooring" 2193 class="flex items-center w-full cursor-pointer text-size18 font-normal text-black mb-4 mob-width-adjust" 2194 >
2195 <span> 2196 Garage Flooring </span> 2197 </a> 2198 2199 <picture class="absolute menu_arw"><source type="image/webp" srcset="https://www.flooringinc.com/static/version1789462004/frontend/Dcw/hyvadesktop/en_US/images/menu-arw.webp"><img src="https://www.flooringinc.com/static/version1789462004/frontend/Dcw/hyvadesktop/en_US/images/menu-arw.png" width="13" height="8" alt="menu-arw" @click="show = !show" class="absolute menu_arw" x-bind:class="show ? 'active' : ''"></picture> 2200 <ul class="z-10 w-full" x-show="show"> 2201 <li class="level-2"> 2202 <a href="https://www.flooringinc.com/shop/garage-flooring/all-garage-flooring.html" 2203 title="All Garage Flooring" 2204 class="level-2 pl-5 flex items-center w-full cursor-pointer text-size16 font-normal text-black mb-4"> 2205 All Garage Flooring</a> 2206 </li> 2207 <li class="level-2"> 2208 <a href="https://www.flooringinc.com/shop/garage-flooring/garage-rolls.html" 2209 title="Garage Flooring Rolls" 2210 class="level-2 pl-5 flex items-center w-full cursor-pointer text-size16 font-normal text-black mb-4"> 2211 Garage Flooring Rolls</a> 2212 </li> 2213 <li class="level-2"> 2214 <a href="https://www.flooringinc.com/shop/garage-flooring/garage-tiles.html" 2215 title="Garage Floor Tiles" 2216 class="level-2 pl-5 flex items-center w-full cursor-pointer text-size16 font-normal text-black mb-4"> 2217 Garage Floor Tiles</a> 2218 </li> 2219 <li class="level-2"> 2220 <a href="https://www.flooringinc.com/shop/garage-flooring/garage-gym-flooring.html" 2221 title="Garage Gym Flooring" 2222 class="level-2 pl-5 flex items-center w-full cursor-pointer text-size16 font-normal text-black mb-4"> 2223 Garage Gym Flooring</a> 2224 </li> 2225 <li class="level-2"> 2226 <a href="https://www.flooringinc.com/shop/garage-flooring/coatings-epoxy.html" 2227 title="Garage Floor Epoxy" 2228 class="level-2 pl-5 flex items-center w-full cursor-pointer text-size16 font-normal text-black mb-4"> 2229 Garage Floor Epoxy</a> 2230 </li> 2231 <li class="level-2"> 2232 <a href="https://www.flooringinc.com/shop/garage-flooring/trailer-flooring.html" 2233 title="Trailer Flooring" 2234 class="level-2 pl-5 flex items-center w-full cursor-pointer text-size16 font-normal text-black mb-4"> 2235 Trailer Flooring</a> 2236 </li> 2237 </ul> 2238 <a class="text-size16 font-normal text-black underline pl-5 mt-2 mb-6 inline-block" href="https://www.flooringinc.com/shop/garage-flooring.html" x-show="show">View All</a> 2239 2240 2241 2242 <li class="imgcat list-none relative" x-data="{ show: false }" > 2243 <a 2244 @click="show = !show" 2245 title="Dance Flooring" 2246 class="flex items-center w-full cursor-pointer text-size18 font-normal text-black mb-4 mob-width-adjust" 2247 >
2248 <span> 2249 Dance Flooring </span> 2250 </a> 2251 2252 <picture class="absolute menu_arw"><source type="image/webp" srcset="https://www.flooringinc.com/static/version1789462004/frontend/Dcw/hyvadesktop/en_US/images/menu-arw.webp"><img src="https://www.flooringinc.com/static/version1789462004/frontend/Dcw/hyvadesktop/en_US/images/menu-arw.png" width="13" height="8" alt="menu-arw" @click="show = !show" class="absolute menu_arw" x-bind:class="show ? 'active' : ''"></picture> 2253 <ul class="z-10 w-full" x-show="show"> 2254 <li class="level-2"> 2255 <a href="https://www.flooringinc.com/shop/dance-flooring/marley-flooring.html" 2256 title="Marley Floor Rolls" 2257 class="level-2 pl-5 flex items-center w-full cursor-pointer text-size16 font-normal text-black mb-4"> 2258 Marley Floor Rolls</a> 2259 </li> 2260 <li class="level-2"> 2261 <a href="https://www.flooringinc.com/shop/dance-flooring/dance-floor-tiles.html" 2262 title="Dance Floor Tiles" 2263 class="level-2 pl-5 flex items-center w-full cursor-pointer text-size16 font-normal text-black mb-4"> 2264 Dance Floor Tiles</a> 2265 </li> 2266 <li class="level-2"> 2267 <a href="https://www.flooringinc.com/shop/dance-flooring/portable-dance-floor-kits.html" 2268 title="Portable Dance Floors & Kits" 2269 class="level-2 pl-5 flex items-center w-full cursor-pointer text-size16 font-normal text-black mb-4"> 2270 Portable Dance Floors & Kits</a> 2271 </li> 2272 <li class="level-2"> 2273 <a href="https://www.flooringinc.com/shop/dance-flooring/subflooring.html" 2274 title="Subflooring" 2275 class="level-2 pl-5 flex items-center w-full cursor-pointer text-size16 font-normal text-black mb-4"> 2276 Subflooring</a> 2277 </li> 2278 <li class="level-2"> 2279 <a href="https://www.flooringinc.com/shop/dance-flooring/adhesives-cleaners-accessories.html" 2280 title="Adhesives, Cleaners & Accessories" 2281 class="level-2 pl-5 flex items-center w-full cursor-pointer text-size16 font-normal text-black mb-4"> 2282 Adhesives, Cleaners & Accessories</a> 2283 </li> 2284 <li class="level-2"> 2285 <a href="https://www.flooringinc.com/shop/dance-flooring/all-dance-flooring.html" 2286 title="All Dance Flooring" 2287 class="level-2 pl-5 flex items-center w-full cursor-pointer text-size16 font-normal text-black mb-4"> 2288 All Dance Flooring</a> 2289 </li> 2290 </ul> 2291 <a class="text-size16 font-normal text-black underline pl-5 mt-2 mb-6 inline-block" href="https://www.flooringinc.com/shop/dance-flooring.html" x-show="show">View All</a> 2292 2293 2294 2295 <li class="imgcat list-none relative" x-data="{ show: false }" > 2296 <a 2297 @click="show = !show" 2298 title="Foam Flooring" 2299 class="flex items-center w-full cursor-pointer text-size18 font-normal text-black mb-4 mob-width-adjust" 2300 >
2301 <span> 2302 Foam Flooring </span> 2303 </a> 2304 2305 <picture class="absolute menu_arw"><source type="image/webp" srcset="https://www.flooringinc.com/static/version1789462004/frontend/Dcw/hyvadesktop/en_US/images/menu-arw.webp"><img src="https://www.flooringinc.com/static/version1789462004/frontend/Dcw/hyvadesktop/en_US/images/menu-arw.png" width="13" height="8" alt="menu-arw" @click="show = !show" class="absolute menu_arw" x-bind:class="show ? 'active' : ''"></picture> 2306 <ul class="z-10 w-full" x-show="show"> 2307 <li class="level-2"> 2308 <a href="https://www.flooringinc.com/shop/foam-flooring/foam-tiles.html" 2309 title="Foam Floor Tiles" 2310 class="level-2 pl-5 flex items-center w-full cursor-pointer text-size16 font-normal text-black mb-4"> 2311 Foam Floor Tiles</a> 2312 </li> 2313 <li class="level-2"> 2314 <a href="https://www.flooringinc.com/shop/foam-flooring/kids-baby-play-mats.html" 2315 title="Kids & Baby Play Mats" 2316 class="level-2 pl-5 flex items-center w-full cursor-pointer text-size16 font-normal text-black mb-4"> 2317 Kids & Baby Play Mats</a> 2318 </li> 2319 <li class="level-2"> 2320 <a href="https://www.flooringinc.com/shop/foam-flooring/gymnastic-folding-mats.html" 2321 title="Gymnastics Mats " 2322 class="level-2 pl-5 flex items-center w-full cursor-pointer text-size16 font-normal text-black mb-4"> 2323 Gymnastics Mats </a> 2324 </li> 2325 <li class="level-2"> 2326 <a href="https://www.flooringinc.com/shop/foam-flooring/wrestling-mats.html" 2327 title="Wrestling Mats" 2328 class="level-2 pl-5 flex items-center w-full cursor-pointer text-size16 font-normal text-black mb-4"> 2329 Wrestling Mats</a> 2330 </li> 2331 <li class="level-2"> 2332 <a href="https://www.flooringinc.com/shop/foam-flooring/martial-arts-mats.html" 2333 title="Martial Arts Mats " 2334 class="level-2 pl-5 flex items-center w-full cursor-pointer text-size16 font-normal text-black mb-4"> 2335 Martial Arts Mats </a> 2336 </li> 2337 <li class="level-2"> 2338 <a href="https://www.flooringinc.com/shop/foam-flooring/trade-show-flooring.html" 2339 title="Trade Show Flooring" 2340 class="level-2 pl-5 flex items-center w-full cursor-pointer text-size16 font-normal text-black mb-4"> 2341 Trade Show Flooring</a> 2342 </li> 2343 </ul> 2344 <a class="text-size16 font-normal text-black underline pl-5 mt-2 mb-6 inline-block" href="https://www.flooringinc.com/shop/foam-flooring.html" x-show="show">View All</a> 2345 2346 2347 2348 <li class="imgcat list-none relative" x-data="{ show: false }" > 2349 <a 2350 @click="show = !show" 2351 title="Outdoor Flooring" 2352 class="flex items-center w-full cursor-pointer text-size18 font-normal text-black mb-4 mob-width-adjust" 2353 >
2354 <span> 2355 Outdoor Flooring </span> 2356 </a> 2357 2358 <picture class="absolute menu_arw"><source type="image/webp" srcset="https://www.flooringinc.com/static/version1789462004/frontend/Dcw/hyvadesktop/en_US/images/menu-arw.webp"><img src="https://www.flooringinc.com/static/version1789462004/frontend/Dcw/hyvadesktop/en_US/images/menu-arw.png" width="13" height="8" alt="menu-arw" @click="show = !show" class="absolute menu_arw" x-bind:class="show ? 'active' : ''"></picture> 2359 <ul class="z-10 w-full" x-show="show"> 2360 <li class="level-2"> 2361 <a href="https://www.flooringinc.com/shop/outdoor-flooring/playground-flooring.html" 2362 title="Playground Flooring" 2363 class="level-2 pl-5 flex items-center w-full cursor-pointer text-size16 font-normal text-black mb-4"> 2364 Playground Flooring</a> 2365 </li> 2366 <li class="level-2"> 2367 <a href="https://www.flooringinc.com/shop/outdoor-flooring/sport-and-court-flooring.html" 2368 title="Sports Flooring & Court Tiles" 2369 class="level-2 pl-5 flex items-center w-full cursor-pointer text-size16 font-normal text-black mb-4"> 2370 Sports Flooring & Court Tiles</a> 2371 </li> 2372 <li class="level-2"> 2373 <a href="https://www.flooringinc.com/shop/outdoor-flooring/artificial-grass.html" 2374 title="Turf & Artificial Grass" 2375 class="level-2 pl-5 flex items-center w-full cursor-pointer text-size16 font-normal text-black mb-4"> 2376 Turf & Artificial Grass</a> 2377 </li> 2378 <li class="level-2"> 2379 <a href="https://www.flooringinc.com/shop/outdoor-flooring/composite-decking.html" 2380 title="Composite Decking" 2381 class="level-2 pl-5 flex items-center w-full cursor-pointer text-size16 font-normal text-black mb-4"> 2382 Composite Decking</a> 2383 </li> 2384 <li class="level-2"> 2385 <a href="https://www.flooringinc.com/shop/outdoor-flooring/rooftop-deck-flooring.html" 2386 title="Rooftop Deck Flooring" 2387 class="level-2 pl-5 flex items-center w-full cursor-pointer text-size16 font-normal text-black mb-4"> 2388 Rooftop Deck Flooring</a> 2389 </li> 2390 <li class="level-2"> 2391 <a href="https://www.flooringinc.com/shop/outdoor-flooring/drainage-tiles.html" 2392 title="Drainage Tile & Mats" 2393 class="level-2 pl-5 flex items-center w-full cursor-pointer text-size16 font-normal text-black mb-4"> 2394 Drainage Tile & Mats</a> 2395 </li> 2396 </ul> 2397 <a class="text-size16 font-normal text-black underline pl-5 mt-2 mb-6 inline-block" href="https://www.flooringinc.com/shop/outdoor-flooring.html" x-show="show">View All</a> 2398 2399 2400 2401 <li class="imgcat list-none relative" x-data="{ show: false }" > 2402 <a 2403 @click="show = !show" 2404 title="Turf & Artificial Grass" 2405 class="flex items-center w-full cursor-pointer text-size18 font-normal text-black mb-4 mob-width-adjust" 2406 >
2407 <span> 2408 Turf & Artificial Grass </span> 2409 </a> 2410 2411 <picture class="absolute menu_arw"><source type="image/webp" srcset="https://www.flooringinc.com/static/version1789462004/frontend/Dcw/hyvadesktop/en_US/images/menu-arw.webp"><img src="https://www.flooringinc.com/static/version1789462004/frontend/Dcw/hyvadesktop/en_US/images/menu-arw.png" width="13" height="8" alt="menu-arw" @click="show = !show" class="absolute menu_arw" x-bind:class="show ? 'active' : ''"></picture> 2412 <ul class="z-10 w-full" x-show="show"> 2413 <li class="level-2"> 2414 <a href="https://www.flooringinc.com/shop/artificial-grass/sport-field-turf.html" 2415 title="Sport & Gym Turf" 2416 class="level-2 pl-5 flex items-center w-full cursor-pointer text-size16 font-normal text-black mb-4"> 2417 Sport & Gym Turf</a> 2418 </li> 2419 <li class="level-2"> 2420 <a href="https://www.flooringinc.com/shop/artificial-grass/landscape-turf.html" 2421 title="Landscape Turf" 2422 class="level-2 pl-5 flex items-center w-full cursor-pointer text-size16 font-normal text-black mb-4"> 2423 Landscape Turf</a> 2424 </li> 2425 <li class="level-2"> 2426 <a href="https://www.flooringinc.com/shop/artificial-grass/pet-turf.html" 2427 title="Pet Turf" 2428 class="level-2 pl-5 flex items-center w-full cursor-pointer text-size16 font-normal text-black mb-4"> 2429 Pet Turf</a> 2430 </li> 2431 <li class="level-2"> 2432 <a href="https://www.flooringinc.com/shop/artificial-grass/putting-greens.html" 2433 title="Golf & Putting Green Turf" 2434 class="level-2 pl-5 flex items-center w-full cursor-pointer text-size16 font-normal text-black mb-4"> 2435 Golf & Putting Green Turf</a> 2436 </li> 2437 <li class="level-2"> 2438 <a href="https://www.flooringinc.com/shop/artificial-grass/turf-accessories.html" 2439 title="Turf Accessories" 2440 class="level-2 pl-5 flex items-center w-full cursor-pointer text-size16 font-normal text-black mb-4"> 2441 Turf Accessories</a> 2442 </li> 2443 <li class="level-2"> 2444 <a href="https://www.flooringinc.com/shop/artificial-grass/all-artificial-grass.html" 2445 title="All Turf & Artificial Grass" 2446 class="level-2 pl-5 flex items-center w-full cursor-pointer text-size16 font-normal text-black mb-4"> 2447 All Turf & Artificial Grass</a> 2448 </li> 2449 </ul> 2450 <a class="text-size16 font-normal text-black underline pl-5 mt-2 mb-6 inline-block" href="https://www.flooringinc.com/shop/artificial-grass.html" x-show="show">View All</a> 2451 2452 2453 2454 <li class="imgcat list-none relative" x-data="{ show: false }" > 2455 <a 2456 @click="show = !show" 2457 title="Carpet Tiles & Rolls" 2458 class="flex items-center w-full cursor-pointer text-size18 font-normal text-black mb-4 mob-width-adjust" 2459 >
2460 <span> 2461 Carpet Tiles & Rolls </span> 2462 </a> 2463 2464 <picture class="absolute menu_arw"><source type="image/webp" srcset="https://www.flooringinc.com/static/version1789462004/frontend/Dcw/hyvadesktop/en_US/images/menu-arw.webp"><img src="https://www.flooringinc.com/static/version1789462004/frontend/Dcw/hyvadesktop/en_US/images/menu-arw.png" width="13" height="8" alt="menu-arw" @click="show = !show" class="absolute menu_arw" x-bind:class="show ? 'active' : ''"></picture> 2465 <ul class="z-10 w-full" x-show="show"> 2466 <li class="level-2"> 2467 <a href="https://www.flooringinc.com/shop/carpet/carpet-tiles.html" 2468 title="Carpet Tiles" 2469 class="level-2 pl-5 flex items-center w-full cursor-pointer text-size16 font-normal text-black mb-4"> 2470 Carpet Tiles</a> 2471 </li> 2472 <li class="level-2"> 2473 <a href="https://www.flooringinc.com/shop/carpet/carpet-rolls.html" 2474 title="Carpet Rolls" 2475 class="level-2 pl-5 flex items-center w-full cursor-pointer text-size16 font-normal text-black mb-4"> 2476 Carpet Rolls</a> 2477 </li> 2478 <li class="level-2"> 2479 <a href="https://www.flooringinc.com/shop/carpet/home-theater-carpet.html" 2480 title="Home Theater Carpet" 2481 class="level-2 pl-5 flex items-center w-full cursor-pointer text-size16 font-normal text-black mb-4"> 2482 Home Theater Carpet</a> 2483 </li> 2484 <li class="level-2"> 2485 <a href="https://www.flooringinc.com/shop/carpet/peel-stick-carpet.html" 2486 title="Peel and Stick Carpet Tiles" 2487 class="level-2 pl-5 flex items-center w-full cursor-pointer text-size16 font-normal text-black mb-4"> 2488 Peel and Stick Carpet Tiles</a> 2489 </li> 2490 <li class="level-2"> 2491 <a href="https://www.flooringinc.com/shop/carpet/outdoor-carpet.html" 2492 title="Outdoor Carpet" 2493 class="level-2 pl-5 flex items-center w-full cursor-pointer text-size16 font-normal text-black mb-4"> 2494 Outdoor Carpet</a> 2495 </li> 2496 <li class="level-2"> 2497 <a href="https://www.flooringinc.com/shop/carpet/waterproof-carpet.html" 2498 title="Waterproof Carpet" 2499 class="level-2 pl-5 flex items-center w-full cursor-pointer text-size16 font-normal text-black mb-4"> 2500 Waterproof Carpet</a> 2501 </li> 2502 </ul> 2503 <a class="text-size16 font-normal text-black underline pl-5 mt-2 mb-6 inline-block" href="https://www.flooringinc.com/shop/carpet.html" x-show="show">View All</a> 2504 2505 2506 2507 <li class="imgcat list-none relative" x-data="{ show: false }" > 2508 <a 2509 @click="show = !show" 2510 title="Vinyl Flooring" 2511 class="flex items-center w-full cursor-pointer text-size18 font-normal text-black mb-4 mob-width-adjust" 2512 >
2513 <span> 2514 Vinyl Flooring </span> 2515 </a> 2516 2517 <picture class="absolute menu_arw"><source type="image/webp" srcset="https://www.flooringinc.com/static/version1789462004/frontend/Dcw/hyvadesktop/en_US/images/menu-arw.webp"><img src="https://www.flooringinc.com/static/version1789462004/frontend/Dcw/hyvadesktop/en_US/images/menu-arw.png" width="13" height="8" alt="menu-arw" @click="show = !show" class="absolute menu_arw" x-bind:class="show ? 'active' : ''"></picture> 2518 <ul class="z-10 w-full" x-show="show"> 2519 <li class="level-2"> 2520 <a href="https://www.flooringinc.com/shop/vinyl/vinyl-sheet.html" 2521 title="Vinyl Sheet Flooring" 2522 class="level-2 pl-5 flex items-center w-full cursor-pointer text-size16 font-normal text-black mb-4"> 2523 Vinyl Sheet Flooring</a> 2524 </li> 2525 <li class="level-2"> 2526 <a href="https://www.flooringinc.com/shop/vinyl/vinyl-tiles-planks.html" 2527 title="Vinyl Tiles & Planks" 2528 class="level-2 pl-5 flex items-center w-full cursor-pointer text-size16 font-normal text-black mb-4"> 2529 Vinyl Tiles & Planks</a> 2530 </li> 2531 <li class="level-2"> 2532 <a href="https://www.flooringinc.com/shop/vinyl/waterproof-vinyl.html" 2533 title="Waterproof Vinyl Flooring" 2534 class="level-2 pl-5 flex items-center w-full cursor-pointer text-size16 font-normal text-black mb-4"> 2535 Waterproof Vinyl Flooring</a> 2536 </li> 2537 <li class="level-2"> 2538 <a href="https://www.flooringinc.com/shop/vinyl/rigid-core-vinyl.html" 2539 title="Rigid Core Vinyl Flooring" 2540 class="level-2 pl-5 flex items-center w-full cursor-pointer text-size16 font-normal text-black mb-4"> 2541 Rigid Core Vinyl Flooring</a> 2542 </li> 2543 <li class="level-2"> 2544 <a href="https://www.flooringinc.com/shop/vinyl/commercial-vinyl.html" 2545 title="Commercial Vinyl Flooring" 2546 class="level-2 pl-5 flex items-center w-full cursor-pointer text-size16 font-normal text-black mb-4"> 2547 Commercial Vinyl Flooring</a> 2548 </li> 2549 </ul> 2550 2551 2552 2553 <li class="imgcat list-none relative" x-data="{ show: false }" > 2554 <a 2555 @click="show = !show" 2556 title="Wood & Laminate Flooring" 2557 class="flex items-center w-full cursor-pointer text-size18 font-normal text-black mb-4 mob-width-adjust" 2558 >
2559 <span> 2560 Wood & Laminate Flooring </span> 2561 </a> 2562 2563 <picture class="absolute menu_arw"><source type="image/webp" srcset="https://www.flooringinc.com/static/version1789462004/frontend/Dcw/hyvadesktop/en_US/images/menu-arw.webp"><img src="https://www.flooringinc.com/static/version1789462004/frontend/Dcw/hyvadesktop/en_US/images/menu-arw.png" width="13" height="8" alt="menu-arw" @click="show = !show" class="absolute menu_arw" x-bind:class="show ? 'active' : ''"></picture> 2564 <ul class="z-10 w-full" x-show="show"> 2565 <li class="level-2"> 2566 <a href="https://www.flooringinc.com/shop/wood-laminate/waterproof-laminate.html" 2567 title="Waterproof Laminate Flooring" 2568 class="level-2 pl-5 flex items-center w-full cursor-pointer text-size16 font-normal text-black mb-4"> 2569 Waterproof Laminate Flooring</a> 2570 </li> 2571 <li class="level-2"> 2572 <a href="https://www.flooringinc.com/shop/wood-laminate/laminate.html" 2573 title="Laminate Flooring" 2574 class="level-2 pl-5 flex items-center w-full cursor-pointer text-size16 font-normal text-black mb-4"> 2575 Laminate Flooring</a> 2576 </li> 2577 <li class="level-2"> 2578 <a href="https://www.flooringinc.com/shop/wood-laminate/hardwood.html" 2579 title="Engineered Hardwood Flooring" 2580 class="level-2 pl-5 flex items-center w-full cursor-pointer text-size16 font-normal text-black mb-4"> 2581 Engineered Hardwood Flooring</a> 2582 </li> 2583 <li class="level-2"> 2584 <a href="https://www.flooringinc.com/shop/wood-laminate/oak.html" 2585 title="Oak Wood Flooring" 2586 class="level-2 pl-5 flex items-center w-full cursor-pointer text-size16 font-normal text-black mb-4"> 2587 Oak Wood Flooring</a> 2588 </li> 2589 <li class="level-2"> 2590 <a href="https://www.flooringinc.com/shop/wood-laminate/commercial-wood-laminate.html" 2591 title="Commercial Wood & Laminate" 2592 class="level-2 pl-5 flex items-center w-full cursor-pointer text-size16 font-normal text-black mb-4"> 2593 Commercial Wood & Laminate</a> 2594 </li> 2595 </ul> 2596 2597 2598 2599 <li class="imgcat list-none relative" x-data="{ show: false }" > 2600 <a 2601 @click="show = !show" 2602 title="Commercial Flooring" 2603 class="flex items-center w-full cursor-pointer text-size18 font-normal text-black mb-4 mob-width-adjust" 2604 >
2605 <span> 2606 Commercial Flooring </span> 2607 </a> 2608 2609 <picture class="absolute menu_arw"><source type="image/webp" srcset="https://www.flooringinc.com/static/version1789462004/frontend/Dcw/hyvadesktop/en_US/images/menu-arw.webp"><img src="https://www.flooringinc.com/static/version1789462004/frontend/Dcw/hyvadesktop/en_US/images/menu-arw.png" width="13" height="8" alt="menu-arw" @click="show = !show" class="absolute menu_arw" x-bind:class="show ? 'active' : ''"></picture> 2610 <ul class="z-10 w-full" x-show="show"> 2611 <li class="level-2"> 2612 <a href="https://www.flooringinc.com/shop/commercial-flooring/commercial-rubber-flooring.html" 2613 title="Commercial Rubber Flooring" 2614 class="level-2 pl-5 flex items-center w-full cursor-pointer text-size16 font-normal text-black mb-4"> 2615 Commercial Rubber Flooring</a> 2616 </li> 2617 <li class="level-2"> 2618 <a href="https://www.flooringinc.com/shop/commercial-flooring/commercial-garage-flooring.html" 2619 title="Commercial Garage Flooring" 2620 class="level-2 pl-5 flex items-center w-full cursor-pointer text-size16 font-normal text-black mb-4"> 2621 Commercial Garage Flooring</a> 2622 </li> 2623 <li class="level-2"> 2624 <a href="https://www.flooringinc.com/shop/commercial-flooring/commercial-carpet.html" 2625 title="Commercial Carpet Tiles" 2626 class="level-2 pl-5 flex items-center w-full cursor-pointer text-size16 font-normal text-black mb-4"> 2627 Commercial Carpet Tiles</a> 2628 </li> 2629 <li class="level-2"> 2630 <a href="https://www.flooringinc.com/shop/commercial-flooring/commercial-vinyl.html" 2631 title="Commercial Vinyl Flooring" 2632 class="level-2 pl-5 flex items-center w-full cursor-pointer text-size16 font-normal text-black mb-4"> 2633 Commercial Vinyl Flooring</a> 2634 </li> 2635 <li class="level-2"> 2636 <a href="https://www.flooringinc.com/shop/commercial-flooring/commercial-wood-laminate.html" 2637 title="Commercial Wood & Laminate Flooring" 2638 class="level-2 pl-5 flex items-center w-full cursor-pointer text-size16 font-normal text-black mb-4"> 2639 Commercial Wood & Laminate Flooring</a> 2640 </li> 2641 <li class="level-2"> 2642 <a href="https://www.flooringinc.com/shop/commercial-flooring/gym-floor-covers-protection.html" 2643 title="Gym Floor Covers | Floor Protection" 2644 class="level-2 pl-5 flex items-center w-full cursor-pointer text-size16 font-normal text-black mb-4"> 2645 Gym Floor Covers | Floor Protection</a> 2646 </li> 2647 </ul> 2648 <a class="text-size16 font-normal text-black underline pl-5 mt-2 mb-6 inline-block" href="https://www.flooringinc.com/shop/commercial-flooring.html" x-show="show">View All</a> 2649 2650 2651 2652 <li class="imgcat list-none relative" x-data="{ show: false }" > 2653 <a 2654 @click="show = !show" 2655 title="Floors by Activity" 2656 class="flex items-center w-full cursor-pointer text-size18 font-normal text-black mb-4 mob-width-adjust" 2657 >
2658 <span> 2659 Floors by Activity </span> 2660 </a> 2661 2662 <picture class="absolute menu_arw"><source type="image/webp" srcset="https://www.flooringinc.com/static/version1789462004/frontend/Dcw/hyvadesktop/en_US/images/menu-arw.webp"><img src="https://www.flooringinc.com/static/version1789462004/frontend/Dcw/hyvadesktop/en_US/images/menu-arw.png" width="13" height="8" alt="menu-arw" @click="show = !show" class="absolute menu_arw" x-bind:class="show ? 'active' : ''"></picture> 2663 <ul class="z-10 w-full" x-show="show"> 2664 <li class="level-2"> 2665 <a href="https://www.flooringinc.com/shop/shop-by-activity/fitness-flooring.html" 2666 title="Fitness Flooring" 2667 class="level-2 pl-5 flex items-center w-full cursor-pointer text-size16 font-normal text-black mb-4"> 2668 Fitness Flooring</a> 2669 </li> 2670 <li class="level-2"> 2671 <a href="https://www.flooringinc.com/shop/shop-by-activity/dance-marley-flooring.html" 2672 title="Dance Flooring | Marley Floor" 2673 class="level-2 pl-5 flex items-center w-full cursor-pointer text-size16 font-normal text-black mb-4"> 2674 Dance Flooring | Marley Floor</a> 2675 </li> 2676 <li class="level-2"> 2677 <a href="https://www.flooringinc.com/shop/shop-by-activity/sport-and-court-flooring.html" 2678 title="Sport & Court Flooring" 2679 class="level-2 pl-5 flex items-center w-full cursor-pointer text-size16 font-normal text-black mb-4"> 2680 Sport & Court Flooring</a> 2681 </li> 2682 <li class="level-2"> 2683 <a href="https://www.flooringinc.com/shop/shop-by-activity/martial-arts-flooring.html" 2684 title="Martial Arts Mats " 2685 class="level-2 pl-5 flex items-center w-full cursor-pointer text-size16 font-normal text-black mb-4"> 2686 Martial Arts Mats </a> 2687 </li> 2688 <li class="level-2"> 2689 <a href="https://www.flooringinc.com/shop/shop-by-activity/cheer-mats.html" 2690 title="Cheer Mats" 2691 class="level-2 pl-5 flex items-center w-full cursor-pointer text-size16 font-normal text-black mb-4"> 2692 Cheer Mats</a> 2693 </li> 2694 <li class="level-2"> 2695 <a href="https://www.flooringinc.com/shop/shop-by-activity/wrestling-mats.html" 2696 title="Wrestling Mats" 2697 class="level-2 pl-5 flex items-center w-full cursor-pointer text-size16 font-normal text-black mb-4"> 2698 Wrestling Mats</a> 2699 </li> 2700 </ul> 2701 <a class="text-size16 font-normal text-black underline pl-5 mt-2 mb-6 inline-block" href="https://www.flooringinc.com/shop/shop-by-activity.html" x-show="show">View All</a> 2702 2703 2704 2705 <li class="imgcat list-none relative" x-data="{ show: false }" > 2706 <a 2707 @click="show = !show" 2708 title="Floors by Space" 2709 class="flex items-center w-full cursor-pointer text-size18 font-normal text-black mb-4 mob-width-adjust" 2710 >
2711 <span> 2712 Floors by Space </span> 2713 </a> 2714 2715 <picture class="absolute menu_arw"><source type="image/webp" srcset="https://www.flooringinc.com/static/version1789462004/frontend/Dcw/hyvadesktop/en_US/images/menu-arw.webp"><img src="https://www.flooringinc.com/static/version1789462004/frontend/Dcw/hyvadesktop/en_US/images/menu-arw.png" width="13" height="8" alt="menu-arw" @click="show = !show" class="absolute menu_arw" x-bind:class="show ? 'active' : ''"></picture> 2716 <ul class="z-10 w-full" x-show="show"> 2717 <li class="level-2"> 2718 <a href="https://www.flooringinc.com/shop/shop-by-space/kitchen-flooring.html" 2719 title="Kitchen Flooring" 2720 class="level-2 pl-5 flex items-center w-full cursor-pointer text-size16 font-normal text-black mb-4"> 2721 Kitchen Flooring</a> 2722 </li> 2723 <li class="level-2"> 2724 <a href="https://www.flooringinc.com/shop/shop-by-space/bathroom-flooring.html" 2725 title="Bathroom Flooring" 2726 class="level-2 pl-5 flex items-center w-full cursor-pointer text-size16 font-normal text-black mb-4"> 2727 Bathroom Flooring</a> 2728 </li> 2729 <li class="level-2"> 2730 <a href="https://www.flooringinc.com/shop/shop-by-space/commercial-flooring.html" 2731 title="Commercial Flooring" 2732 class="level-2 pl-5 flex items-center w-full cursor-pointer text-size16 font-normal text-black mb-4"> 2733 Commercial Flooring</a> 2734 </li> 2735 <li class="level-2"> 2736 <a href="https://www.flooringinc.com/shop/shop-by-space/gym-flooring.html" 2737 title="Gym Flooring" 2738 class="level-2 pl-5 flex items-center w-full cursor-pointer text-size16 font-normal text-black mb-4"> 2739 Gym Flooring</a> 2740 </li> 2741 <li class="level-2"> 2742 <a href="https://www.flooringinc.com/shop/shop-by-space/garage-flooring.html" 2743 title="Garage Flooring" 2744 class="level-2 pl-5 flex items-center w-full cursor-pointer text-size16 font-normal text-black mb-4"> 2745 Garage Flooring</a> 2746 </li> 2747 <li class="level-2"> 2748 <a href="https://www.flooringinc.com/shop/shop-by-space/outdoor-flooring.html" 2749 title="Outdoor Flooring" 2750 class="level-2 pl-5 flex items-center w-full cursor-pointer text-size16 font-normal text-black mb-4"> 2751 Outdoor Flooring</a> 2752 </li> 2753 </ul> 2754 <a class="text-size16 font-normal text-black underline pl-5 mt-2 mb-6 inline-block" href="https://www.flooringinc.com/shop/shop-by-space.html" x-show="show">View All</a> 2755 2756 2757 2758 <li class="imgcat list-none relative" x-data="{ show: false }" > 2759 <a 2760 @click="show = !show" 2761 title="Underlayment & Flooring Accessories" 2762 class="flex items-center w-full cursor-pointer text-size18 font-normal text-black mb-4 mob-width-adjust" 2763 >
2764 <span> 2765 Underlayment & Flooring Accessories </span> 2766 </a> 2767 2768 <picture class="absolute menu_arw"><source type="image/webp" srcset="https://www.flooringinc.com/static/version1789462004/frontend/Dcw/hyvadesktop/en_US/images/menu-arw.webp"><img src="https://www.flooringinc.com/static/version1789462004/frontend/Dcw/hyvadesktop/en_US/images/menu-arw.png" width="13" height="8" alt="menu-arw" @click="show = !show" class="absolute menu_arw" x-bind:class="show ? 'active' : ''"></picture> 2769 <ul class="z-10 w-full" x-show="show"> 2770 <li class="level-2"> 2771 <a href="https://www.flooringinc.com/shop/installation-care/adhesives-glue.html" 2772 title="Flooring Adhesives & Glue" 2773 class="level-2 pl-5 flex items-center w-full cursor-pointer text-size16 font-normal text-black mb-4"> 2774 Flooring Adhesives & Glue</a> 2775 </li> 2776 <li class="level-2"> 2777 <a href="https://www.flooringinc.com/shop/installation-care/tape.html" 2778 title="Floor and Mat Tape" 2779 class="level-2 pl-5 flex items-center w-full cursor-pointer text-size16 font-normal text-black mb-4"> 2780 Floor and Mat Tape</a> 2781 </li> 2782 <li class="level-2"> 2783 <a href="https://www.flooringinc.com/shop/installation-care/accessories.html" 2784 title="Installation Accessories" 2785 class="level-2 pl-5 flex items-center w-full cursor-pointer text-size16 font-normal text-black mb-4"> 2786 Installation Accessories</a> 2787 </li> 2788 <li class="level-2"> 2789 <a href="https://www.flooringinc.com/shop/installation-care/trims-moldings.html" 2790 title="Floor Trims & Moldings" 2791 class="level-2 pl-5 flex items-center w-full cursor-pointer text-size16 font-normal text-black mb-4"> 2792 Floor Trims & Moldings</a> 2793 </li> 2794 <li class="level-2"> 2795 <a href="https://www.flooringinc.com/shop/installation-care/underlayment.html" 2796 title="Flooring Underlayment" 2797 class="level-2 pl-5 flex items-center w-full cursor-pointer text-size16 font-normal text-black mb-4"> 2798 Flooring Underlayment</a> 2799 </li> 2800 <li class="level-2"> 2801 <a href="https://www.flooringinc.com/shop/installation-care/cleaners.html" 2802 title="Flooring Cleaners" 2803 class="level-2 pl-5 flex items-center w-full cursor-pointer text-size16 font-normal text-black mb-4"> 2804 Flooring Cleaners</a> 2805 </li> 2806 </ul> 2807 <a class="text-size16 font-normal text-black underline pl-5 mt-2 mb-6 inline-block" href="https://www.flooringinc.com/shop/installation-care.html" x-show="show">View All</a> 2808 2809 2810 2811 <li class="imgcat list-none relative" x-data="{ show: false }" > 2812 <a 2813 @click="show = !show" 2814 title="Specials" 2815 class="flex items-center w-full cursor-pointer text-size18 font-normal text-black mb-4 mob-width-adjust" 2816 >
2817 <span> 2818 Specials </span> 2819 </a> 2820 2821 <picture class="absolute menu_arw"><source type="image/webp" srcset="https://www.flooringinc.com/static/version1789462004/frontend/Dcw/hyvadesktop/en_US/images/menu-arw.webp"><img src="https://www.flooringinc.com/static/version1789462004/frontend/Dcw/hyvadesktop/en_US/images/menu-arw.png" width="13" height="8" alt="menu-arw" @click="show = !show" class="absolute menu_arw" x-bind:class="show ? 'active' : ''"></picture> 2822 <ul class="z-10 w-full" x-show="show"> 2823 <li class="level-2"> 2824 <a href="https://www.flooringinc.com/shop/specials/hot-buys.html" 2825 title="Flooring Deals" 2826 class="level-2 pl-5 flex items-center w-full cursor-pointer text-size16 font-normal text-black mb-4"> 2827 Flooring Deals</a> 2828 </li> 2829 <li class="level-2"> 2830 <a href="https://www.flooringinc.com/shop/specials/made-in-usa.html" 2831 title="American Made" 2832 class="level-2 pl-5 flex items-center w-full cursor-pointer text-size16 font-normal text-black mb-4"> 2833 American Made</a> 2834 </li> 2835 <li class="level-2"> 2836 <a href="https://www.flooringinc.com/shop/specials/quick-ship.html" 2837 title="Quick Ship" 2838 class="level-2 pl-5 flex items-center w-full cursor-pointer text-size16 font-normal text-black mb-4"> 2839 Quick Ship</a> 2840 </li> 2841 <li class="level-2"> 2842 <a href="https://www.flooringinc.com/shop/specials/new-arrivals.html" 2843 title="New Arrivals" 2844 class="level-2 pl-5 flex items-center w-full cursor-pointer text-size16 font-normal text-black mb-4"> 2845 New Arrivals</a> 2846 </li> 2847 </ul> 2848 2849 2850 </div> 2851 2852 2853 </div> 2854 <div class="menu_static_links"> 2855 <style>#html-body [data-pb-style=QGH21I8]{justify-content:flex-start;display:flex;flex-direction:column;background-position:left top;background-size:cover;background-repeat:no-repeat;background-attachment:scroll}</style><div data-content-type="row" data-appearance="contained" data-element="main"><div data-enable-parallax="0" data-parallax-speed="0.5" data-background-images="{}" data-background-type="image" data-video-loop="true" data-video-play-only-visible="true" data-video-lazy-load="true" data-video-fallback-src="" data-element="inner" data-pb-style="QGH21I8"><div data-content-type="text" data-appearance="default" data-element="main"><ul> 2856<li><a tabindex="0" href="/shop-by-category/specials/hot-buys.html">Sale</a></li> 2857<li><a tabindex="0" href="/blog">Get Inspired & How To</a></li> 2858</ul></div></div></div> </div> 2859 </div> 2860 </nav> 2861 </div> 2862</div>
2863<script> 2864 'use strict'; 2865 2866 const initMenuMobile_6ab67d17cd4a9 = () => { 2867 return { 2868 mobilePanelActiveId: null, 2869 open: false, 2870 setActiveMenu(menuNode) { 2871 Array.from(menuNode.querySelectorAll('a')).filter(link => { 2872 return link.href === window.location.href.split('?')[0]; 2873 }).map(item => { 2874 item.classList.add('underline'); 2875 item.closest('div.level-0') && 2876 item.closest('div.level-0').querySelector('a.level-0').classList.add('underline'); 2877 }); 2878 } 2879 } 2880 } 2881 2882 window.addEventListener("scroll", function() { 2883 successMsgSticky2(); 2884 }); 2885 2886 // sticky header 2887 function successMsgSticky2() { 2888 if (window.innerWidth < 767) { 2889 var headerHeight = document.querySelector('.page-header .panel.wrapper').offsetHeight; 2890 var headerMainHeight = document.getElementById('header').offsetHeight; 2891 var scrollTop = window.scrollY; 2892 2893 if (scrollTop >= headerHeight) { 2894 document.body.classList.add('scroll-reached-hHgt'); 2895 document.body.style.paddingTop = headerMainHeight + 'px'; 2896 } else { 2897 document.body.classList.remove('scroll-reached-hHgt'); 2898 document.body.style.paddingTop = '0'; 2899 } 2900 } 2901 } 2902 2903 window.addEventListener("load", function() { 2904 successMsgSticky2(); 2905 }); 2906</script>
2906 2907<div x-data="initMenuDesktop_6ab67d17d86df()" 2908 class="z-20 order-2 sm:order-1 lg:order-2 navigation hidden xl:flex desktop__menu" 2909> 2910 <!-- desktop --> 2911 <div @load.window="setActiveMenu($root)" 2912 class="justify-between items-center mx-auto w-full max-w-7xl pl-2" 2913 > 2914 <nav 2915 class="flex flex-wrap" 2916 > 2917 <div class="level-0 flex py-2 items-center border-transparent transition transition-colors duration-500 group megamenu_items" :class="{ 'block' : open}" 2918 @mouseover.stop="hoverTopPosition = $event.currentTarget.offsetTop + $event.currentTarget.getBoundingClientRect().height" 2919 @mouseenter="desktopMegaMenuShow = true" @mouseleave="desktopMegaMenuShow = false" 2920 x-data="{ desktopMegaMenuShow: false }" 2921 > 2922 <!-- <a href="https://www.flooringinc.com/shop.html" --> 2923 <a 2924 @focus="hoverTopPosition = $event.currentTarget.parentNode.offsetTop + $event.currentTarget.parentNode.getBoundingClientRect().height" 2925 title="Flooring By Category" 2926 class="level-0 block p-2 text-base font-medium text-black whitespace-nowrap cursor-pointer megamenu_items_link"> 2927 <span>Flooring By Category</span> 2928 <span class="inline items-center releat"> 2929 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" class="w-5 h-5 inline" width="25" height="25" role="img"> 2930 <path fill-rule="evenodd" d="M5.293 7.293a1 1 0 011.414 0L10 10.586l3.293-3.293a1 1 0 111.414 1.414l-4 4a1 1 0 01-1.414 0l-4-4a1 1 0 010-1.414z" clip-rule="evenodd"/> 2931<title>chevron-down</title></svg> 2932 </span> 2933 </a> 2934 <template x-if="desktopMegaMenuShow"> 2935 <div class="absolute left-0 right-0 top-full z-10 -mt-3 w-3/4 mx-auto bg-white opacity-0 transition-opacity ease-out pointer-events-none group-hover:opacity-100 focus-within:opacity-100 group-hover:pointer-events-auto megamenu" 2936 style="display:none;" 2937 :style="`margin-top: 0; top: ${hoverTopPosition}px;`" 2938 > 2939 <div class="flex justify-between mt-0 mb-0 sub-megamenu"> 2940 <div class="mx-auto w-full"> 2941 <ul class="grid flex-1 w-full gap-y-0 gap-x-0 py-4 px-5 relative"> 2942 2943 <li :class="{ 'active': show }" class="level-1 level1 display-first" x-data="{ show: true }" 2944 x-on:click="show = true; removeDisplayFirst()" @click.away="show = false" 2945 > 2946 <a 2947 title="Rubber Flooring" 2948 class="level-1 w-1/4 py-1/5 px-6 text-size13 block text-sm rounded text-darkblack relative" 2949 2950 > 2951 Rubber Flooring 2952 <span class="inline items-center rotate-180 absolute"> 2953 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" class="w-5 h-5 inline" width="25" height="25" role="img"> 2954 <path fill-rule="evenodd" d="M5.293 7.293a1 1 0 011.414 0L10 10.586l3.293-3.293a1 1 0 111.414 1.414l-4 4a1 1 0 01-1.414 0l-4-4a1 1 0 010-1.414z" clip-rule="evenodd"/> 2955<title>chevron-down</title></svg> 2956 </span> 2957 </a> 2958 2959 <div class="2xl:block w-1/4 mega-menu-rightBlock absolute top-0 right-0" x-show="show"> 2960 <style>#html-body [data-pb-style=IIM6H46]{justify-content:flex-start;display:flex;flex-direction:column;background-position:left top;background-size:cover;background-repeat:no-repeat;background-attachment:scroll}#html-body [data-pb-style=U0GMW4D]{border-style:none}#html-body [data-pb-style=CSIHBUF],#html-body [data-pb-style=HQMCF2E]{max-width:100%;height:auto}#html-body [data-pb-style=D3FJGJ6]{background-position:left top;background-size:cover;background-repeat:no-repeat;background-attachment:scroll;align-self:stretch}#html-body [data-pb-style=RR2V2I7]{display:flex;width:100%}#html-body [data-pb-style=PYIYA0A]{justify-content:flex-start;display:flex;flex-direction:column;background-position:left top;background-size:cover;background-repeat:no-repeat;background-attachment:scroll;width:100%;align-self:stretch}#html-body [data-pb-style=P1TMDVT]{text-align:left}#html-body [data-pb-style=F6SSOOO]{display:inline-block}#html-body [data-pb-style=K11XLVI]{text-align:center}@media only screen and (max-width: 768px) { #html-body [data-pb-style=U0GMW4D]{border-style:none} }</style><div class="mega_menu_banner" data-content-type="row" data-appearance="full-bleed" data-enable-parallax="0" data-parallax-speed="0.5" data-background-images="{}" data-background-type="image" data-video-loop="true" data-video-play-only-visible="true" data-video-lazy-load="true" data-video-fallback-src="" data-element="main" data-pb-style="IIM6H46"><figure data-content-type="image" data-appearance="full-width" data-element="main" data-pb-style="U0GMW4D"><a href="/next-day-rubber-rolls-14003.html" target="" data-link-type="default" title="" data-element="link"><picture class="pagebuilder-mobile-hidden"><source type="image/webp" srcset="https://www.flooringinc.com/media/wysiwyg/powered-by-rfi-image.webp"><img class="pagebuilder-mobile-hidden" src="https://www.flooringinc.com/media/wysiwyg/powered-by-rfi-image.jpg" alt="" title="" width="" height="" loading="lazy" data-element="desktop_image" data-pb-style="HQMCF2E" loading="lazy"></picture><picture class="pagebuilder-mobile-only"><source type="image/webp" srcset="https://www.flooringinc.com/media/wysiwyg/powered-by-rfi-image.webp"><img class="pagebuilder-mobile-only" src="https://www.flooringinc.com/media/wysiwyg/powered-by-rfi-image.jpg" alt="" title="" width="" height="" loading="lazy" data-element="mobile_image" data-pb-style="CSIHBUF" loading="lazy"></picture></a></figure><div class="pagebuilder-column-group" data-background-images="{}" data-content-type="column-group" data-appearance="default" data-grid-size="12" data-element="main" data-pb-style="D3FJGJ6"><div class="pagebuilder-column-line" data-content-type="column-line" data-element="main" data-pb-style="RR2V2I7"><div class="pagebuilder-column" data-content-type="column" data-appearance="full-height" data-background-images="{}" data-element="main" data-pb-style="PYIYA0A"><div class="text-size14 font-medium text-custom-black text-left pt-5 pb-1" data-content-type="text" data-appearance="default" data-element="main"><p>Powered By <picture><source type="image/webp" srcset="https://www.flooringinc.com/media/wysiwyg/website-logo-powerd-by-color-rfi.webp"><img src="https://www.flooringinc.com/media/wysiwyg/website-logo-powerd-by-color-rfi.png" alt="" width="87" height="15"></picture></p></div><div class="text-size18 text-custom-black font-bold text-left pt-2 pb-4" data-content-type="text" data-appearance="default" data-element="main"><h2><span style="font-size: 18px;">Premium Rubber Solutions</span></h2></div><div data-content-type="buttons" data-appearance="inline" data-same-width="false" data-element="main" data-pb-style="P1TMDVT" class="free__Shipping__btn"><div data-content-type="button-item" data-appearance="default" data-element="main" data-pb-style="F6SSOOO"><a class="pagebuilder-button-primary" href="/next-day-rubber-rolls-14003.html" target="" data-link-type="default" data-element="link" data-pb-style="K11XLVI"><span data-element="link_text">SHOP NOW</span></a></div></div></div></div></div></div> </div> 2961 2962 <ul class="z-10 w-1/2 absolute top-0 level2 flex flex-wrap pt-3 megamenu-extrablock" x-show="show">
2963 <span class="block w-full text-size28 font-medium no-underline text-darkblack pb-2">Rubber Flooring</span> 2964 2965 <li class="level-2 w-4/12 pr-6 pb-6"> 2966 <a href="https://www.flooringinc.com/shop/rubber-flooring/all-rubber-flooring.html" 2967 title="All Rubber Flooring" 2968 class="level-2 block"> 2969 <picture class="menucatimg rounded w-full mb-2"><source type="image/webp" srcset="https://www.flooringinc.com//media/catalog/category/all_rubber_main.webp"><img class="menucatimg rounded w-full mb-2" src="https://www.flooringinc.com//media/catalog/category/all_rubber_main.jpg" alt="All Rubber Flooring" title="All Rubber Flooring" /></picture> 2970 2971 <span class="block text-sm font-medium no-underline text-darkblack pr-4">All Rubber Flooring</span></a> 2972 </li> 2973 2974 <li class="level-2 w-4/12 pr-6 pb-6"> 2975 <a href="https://www.flooringinc.com/shop/rubber-flooring/rubber-rolls.html" 2976 title="Rubber Flooring Rolls" 2977 class="level-2 block"> 2978 <picture class="menucatimg rounded w-full mb-2"><source type="image/webp" srcset="https://www.flooringinc.com//media/catalog/category/rubber_rolls_category_main_1_.webp"><img class="menucatimg rounded w-full mb-2" src="https://www.flooringinc.com//media/catalog/category/rubber_rolls_category_main_1_.jpg" alt="Rubber Flooring Rolls" title="Rubber Flooring Rolls" /></picture> 2979 2980 <span class="block text-sm font-medium no-underline text-darkblack pr-4">Rubber Flooring Rolls</span></a> 2981 </li> 2982 2983 <li class="level-2 w-4/12 pr-6 pb-6"> 2984 <a href="https://www.flooringinc.com/shop/rubber-flooring/rubber-tiles.html" 2985 title="Rubber Floor Tiles" 2986 class="level-2 block"> 2987 <picture class="menucatimg rounded w-full mb-2"><source type="image/webp" srcset="https://www.flooringinc.com//media/catalog/category/rubbertiles-main-category_1.webp"><img class="menucatimg rounded w-full mb-2" src="https://www.flooringinc.com//media/catalog/category/rubbertiles-main-category_1.jpg" alt="Rubber Floor Tiles" title="Rubber Floor Tiles" /></picture> 2988
2989 <span class="block text-sm font-medium no-underline text-darkblack pr-4">Rubber Floor Tiles</span></a> 2990 </li> 2991 2992 <li class="level-2 w-4/12 pr-6 pb-6"> 2993 <a href="https://www.flooringinc.com/shop/rubber-flooring/rubber-mats.html" 2994 title="Rubber Mats" 2995 class="level-2 block"> 2996 <picture class="menucatimg rounded w-full mb-2"><source type="image/webp" srcset="https://www.flooringinc.com//media/catalog/category/rubbermats-main-category_1.webp"><img class="menucatimg rounded w-full mb-2" src="https://www.flooringinc.com//media/catalog/category/rubbermats-main-category_1.jpg" alt="Rubber Mats" title="Rubber Mats" /></picture> 2997 2998 <span class="block text-sm font-medium no-underline text-darkblack pr-4">Rubber Mats</span></a> 2999 </li> 3000 3001 <li class="level-2 w-4/12 pr-6 pb-6"> 3002 <a href="https://www.flooringinc.com/shop/rubber-flooring/playground-flooring.html" 3003 title="Playground Flooring" 3004 class="level-2 block"> 3005 <picture class="menucatimg rounded w-full mb-2"><source type="image/webp" srcset="https://www.flooringinc.com//media/catalog/category/Playground_Flooring_Category.webp"><img class="menucatimg rounded w-full mb-2" src="https://www.flooringinc.com//media/catalog/category/Playground_Flooring_Category.jpg" alt="Playground Flooring" title="Playground Flooring" /></picture> 3006 3007 <span class="block text-sm font-medium no-underline text-darkblack pr-4">Playground Flooring</span></a> 3008 </li> 3009 3010 <li class="level-2 w-4/12 pr-6 pb-6"> 3011 <a href="https://www.flooringinc.com/shop/rubber-flooring/outdoor-rubber-flooring.html" 3012 title="Outdoor Rubber Flooring" 3013 class="level-2 block"> 3014 <picture class="menucatimg rounded w-full mb-2"><source type="image/webp" srcset="https://www.flooringinc.com//media/catalog/category/fi_rubber_flooring_outdoor_rubber_flooing_1.webp"><img class="menucatimg rounded w-full mb-2" src="https://www.flooringinc.com//media/catalog/category/fi_rubber_flooring_outdoor_rubber_flooing_1.jpg" alt="Outdoor Rubber Flooring" title="Outdoor Rubber Flooring" /></picture> 3015
3016 <span class="block text-sm font-medium no-underline text-darkblack pr-4">Outdoor Rubber Flooring</span></a> 3017 </li> 3018 3019 3020 <a class="view-all mt-2 underline-imp text-size12 font-medium text-darkblack absolute" style="top:410px;" href="https://www.flooringinc.com/shop/rubber-flooring.html" >View All</a> 3021 3022 3023 </ul> 3024 </li> 3025 3026 3027 3028 <li :class="{ 'active': show }" class="level-1 level1 " x-data="{ show: false }" 3029 x-on:click="show = true; removeDisplayFirst()" @click.away="show = false" 3030 > 3031 <a 3032 title="Garage Flooring" 3033 class="level-1 w-1/4 py-1/5 px-6 text-size13 block text-sm rounded text-darkblack relative" 3034 3035 > 3036 Garage Flooring 3037 <span class="inline items-center rotate-180 absolute"> 3038 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" class="w-5 h-5 inline" width="25" height="25" role="img"> 3039 <path fill-rule="evenodd" d="M5.293 7.293a1 1 0 011.414 0L10 10.586l3.293-3.293a1 1 0 111.414 1.414l-4 4a1 1 0 01-1.414 0l-4-4a1 1 0 010-1.414z" clip-rule="evenodd"/> 3040<title>chevron-down</title></svg> 3041 </span> 3042 </a> 3043 3044 <div class="2xl:block w-1/4 mega-menu-rightBlock absolute top-0 right-0" x-show="show"> 3045 <style>#html-body [data-pb-style=H2Q94UM]{justify-content:flex-start;display:flex;flex-direction:column;background-position:left top;background-size:cover;background-repeat:no-repeat;background-attachment:scroll}#html-body [data-pb-style=C5CAQFQ]{border-style:none}#html-body [data-pb-style=FY780K4],#html-body [data-pb-style=P2NDU5I]{max-width:100%;height:auto}#html-body [data-pb-style=RFW0BPB]{background-position:left top;background-size:cover;background-repeat:no-repeat;background-attachment:scroll;align-self:stretch}#html-body [data-pb-style=MX73IJ8]{display:flex;width:100%}#html-body [data-pb-style=YYPRLU8]{justify-content:flex-start;display:flex;flex-direction:column;background-position:left top;background-size:cover;background-repeat:no-repeat;background-attachment:scroll;width:100%;align-self:stretch}#html-body [data-pb-style=TU662D2]{text-align:left}#html-body [data-pb-style=EXLNMTV]{display:inline-block}#html-body [data-pb-style=N31DM3P]{text-align:center}@media only screen and (max-width: 768px) { #html-body [data-pb-style=C5CAQFQ]{border-style:none} }</style><div class="mega_menu_banner" data-content-type="row" data-appearance="full-bleed" data-enable-parallax="0" data-parallax-speed="0.5" data-background-images="{}" data-background-type="image" data-video-loop="true" data-video-play-only-visible="true" data-video-lazy-load="true" data-video-fallback-src="" data-element="main" data-pb-style="H2Q94UM"><figure data-content-type="image" data-appearance="full-width" data-element="main" data-pb-style="C5CAQFQ"><a href="https://www.flooringinc.com/shop/flex-nitro-tiles-8985.html" target="" data-link-type="default" title="" data-element="link"><picture class="pagebuilder-mobile-hidden"><source type="image/webp" srcset="https://www.flooringinc.com/media/wysiwyg/nav-nitro-flex.webp"><img class="pagebuilder-mobile-hidden" src="https://www.flooringinc.com/media/wysiwyg/nav-nitro-flex.jpg" alt="" title="" width="" height="" loading="lazy" data-element="desktop_image" data-pb-style="FY780K4" loading="lazy"></picture><picture class="pagebuilder-mobile-only"><source type="image/webp" srcset="https://www.flooringinc.com/media/wysiwyg/nav-nitro-flex.webp"><img class="pagebuilder-mobile-only" src="https://www.flooringinc.com/media/wysiwyg/nav-nitro-flex.jpg" alt="" title="" width="" height="" loading="lazy" data-element="mobile_image" data-pb-style="P2NDU5I" loading="lazy"></picture></a></figure><div class="pagebuilder-column-group" data-background-images="{}" data-content-type="column-group" data-appearance="default" data-grid-size="12" data-element="main" data-pb-style="RFW0BPB"><div class="pagebuilder-column-line" data-content-type="column-line" data-element="main" data-pb-style="MX73IJ8"><div class="pagebuilder-column" data-content-type="column" data-appearance="full-height" data-background-images="{}" data-element="main" data-pb-style="YYPRLU8"><div data-content-type="buttons" data-appearance="inline" data-same-width="false" data-element="main" data-pb-style="TU662D2" class="free__Shipping__btn"><div data-content-type="button-item" data-appearance="default" data-element="main" data-pb-style="EXLNMTV"><a class="pagebuilder-button-primary" href="https://www.flooringinc.com/shop/flex-nitro-tiles-8985.html" target="" data-link-type="default" data-element="link" data-pb-style="N31DM3P"><span data-element="link_text">SHOP NOW</span></a></div></div></div></div></div></div> </div> 3046 3047 <ul class="z-10 w-1/2 absolute top-0 level2 flex flex-wrap pt-3 megamenu-extrablock" x-show="show">
3048 <span class="block w-full text-size28 font-medium no-underline text-darkblack pb-2">Garage Flooring</span> 3049 3050 <li class="level-2 w-4/12 pr-6 pb-6"> 3051 <a href="https://www.flooringinc.com/shop/garage-flooring/all-garage-flooring.html" 3052 title="All Garage Flooring" 3053 class="level-2 block"> 3054 <picture class="menucatimg rounded w-full mb-2"><source type="image/webp" srcset="https://www.flooringinc.com//media/catalog/category/All_Garage_Flooring.webp"><img class="menucatimg rounded w-full mb-2" src="https://www.flooringinc.com//media/catalog/category/All_Garage_Flooring.jpg" alt="All Garage Flooring" title="All Garage Flooring" /></picture> 3055 3056 <span class="block text-sm font-medium no-underline text-darkblack pr-4">All Garage Flooring</span></a> 3057 </li> 3058 3059 <li class="level-2 w-4/12 pr-6 pb-6"> 3060 <a href="https://www.flooringinc.com/shop/garage-flooring/garage-rolls.html" 3061 title="Garage Flooring Rolls" 3062 class="level-2 block"> 3063 <picture class="menucatimg rounded w-full mb-2"><source type="image/webp" srcset="https://www.flooringinc.com//media/catalog/category/garagerools-main-category_1.webp"><img class="menucatimg rounded w-full mb-2" src="https://www.flooringinc.com//media/catalog/category/garagerools-main-category_1.jpg" alt="Garage Flooring Rolls" title="Garage Flooring Rolls" /></picture> 3064 3065 <span class="block text-sm font-medium no-underline text-darkblack pr-4">Garage Flooring Rolls</span></a> 3066 </li> 3067 3068 <li class="level-2 w-4/12 pr-6 pb-6"> 3069 <a href="https://www.flooringinc.com/shop/garage-flooring/garage-tiles.html" 3070 title="Garage Floor Tiles" 3071 class="level-2 block"> 3072 <picture class="menucatimg rounded w-full mb-2"><source type="image/webp" srcset="https://www.flooringinc.com//media/catalog/category/garagetiles-main-category_1.webp"><img class="menucatimg rounded w-full mb-2" src="https://www.flooringinc.com//media/catalog/category/garagetiles-main-category_1.jpg" alt="Garage Floor Tiles" title="Garage Floor Tiles" /></picture> 3073
3074 <span class="block text-sm font-medium no-underline text-darkblack pr-4">Garage Floor Tiles</span></a> 3075 </li> 3076 3077 <li class="level-2 w-4/12 pr-6 pb-6"> 3078 <a href="https://www.flooringinc.com/shop/garage-flooring/garage-gym-flooring.html" 3079 title="Garage Gym Flooring" 3080 class="level-2 block"> 3081 <picture class="menucatimg rounded w-full mb-2"><source type="image/webp" srcset="https://www.flooringinc.com//media/catalog/category/fi_garage_flooring_garage_gym_flooring_1.webp"><img class="menucatimg rounded w-full mb-2" src="https://www.flooringinc.com//media/catalog/category/fi_garage_flooring_garage_gym_flooring_1.jpg" alt="Garage Gym Flooring" title="Garage Gym Flooring" /></picture> 3082 3083 <span class="block text-sm font-medium no-underline text-darkblack pr-4">Garage Gym Flooring</span></a> 3084 </li> 3085 3086 <li class="level-2 w-4/12 pr-6 pb-6"> 3087 <a href="https://www.flooringinc.com/shop/garage-flooring/coatings-epoxy.html" 3088 title="Garage Floor Epoxy" 3089 class="level-2 block"> 3090 <picture class="menucatimg rounded w-full mb-2"><source type="image/webp" srcset="https://www.flooringinc.com//media/catalog/category/fi_garage_flooring_coatings_epoxy_1_1.webp"><img class="menucatimg rounded w-full mb-2" src="https://www.flooringinc.com//media/catalog/category/fi_garage_flooring_coatings_epoxy_1_1.jpg" alt="Garage Floor Epoxy" title="Garage Floor Epoxy" /></picture> 3091 3092 <span class="block text-sm font-medium no-underline text-darkblack pr-4">Garage Floor Epoxy</span></a> 3093 </li> 3094 3095 <li class="level-2 w-4/12 pr-6 pb-6"> 3096 <a href="https://www.flooringinc.com/shop/garage-flooring/trailer-flooring.html" 3097 title="Trailer Flooring" 3098 class="level-2 block"> 3099 <picture class="menucatimg rounded w-full mb-2"><source type="image/webp" srcset="https://www.flooringinc.com//media/catalog/category/fi_garage_flooring_trailer_flooring_1.webp"><img class="menucatimg rounded w-full mb-2" src="https://www.flooringinc.com//media/catalog/category/fi_garage_flooring_trailer_flooring_1.jpg" alt="Trailer Flooring" title="Trailer Flooring" /></picture> 3100
3101 <span class="block text-sm font-medium no-underline text-darkblack pr-4">Trailer Flooring</span></a> 3102 </li> 3103 3104 3105 <a class="view-all mt-2 underline-imp text-size12 font-medium text-darkblack absolute" style="top:410px;" href="https://www.flooringinc.com/shop/garage-flooring.html" >View All</a> 3106 3107 3108 </ul> 3109 </li> 3110 3111 3112 3113 <li :class="{ 'active': show }" class="level-1 level1 " x-data="{ show: false }" 3114 x-on:click="show = true; removeDisplayFirst()" @click.away="show = false" 3115 > 3116 <a 3117 title="Dance Flooring" 3118 class="level-1 w-1/4 py-1/5 px-6 text-size13 block text-sm rounded text-darkblack relative" 3119 3120 > 3121 Dance Flooring 3122 <span class="inline items-center rotate-180 absolute"> 3123 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" class="w-5 h-5 inline" width="25" height="25" role="img"> 3124 <path fill-rule="evenodd" d="M5.293 7.293a1 1 0 011.414 0L10 10.586l3.293-3.293a1 1 0 111.414 1.414l-4 4a1 1 0 01-1.414 0l-4-4a1 1 0 010-1.414z" clip-rule="evenodd"/> 3125<title>chevron-down</title></svg> 3126 </span> 3127 </a> 3128 3129 <div class="2xl:block w-1/4 mega-menu-rightBlock absolute top-0 right-0" x-show="show"> 3130 <style>#html-body [data-pb-style=DE1KPIK]{justify-content:flex-start;display:flex;flex-direction:column;background-position:left top;background-size:cover;background-repeat:no-repeat;background-attachment:scroll}#html-body [data-pb-style=I9PHOLE]{border-style:none}#html-body [data-pb-style=PGOIAVD],#html-body [data-pb-style=XRTA8XP]{max-width:100%;height:auto}@media only screen and (max-width: 768px) { #html-body [data-pb-style=I9PHOLE]{border-style:none} }</style><div class="mega_menu_banner" data-content-type="row" data-appearance="full-bleed" data-enable-parallax="0" data-parallax-speed="0.5" data-background-images="{}" data-background-type="image" data-video-loop="true" data-video-play-only-visible="true" data-video-lazy-load="true" data-video-fallback-src="" data-element="main" data-pb-style="DE1KPIK"><figure data-content-type="image" data-appearance="full-width" data-element="main" data-pb-style="I9PHOLE"><a href="https://www.flooringinc.com/shop/prostep-dance-floor-rolls-9876.html" target="" data-link-type="default" title="" data-element="link"><picture class="pagebuilder-mobile-hidden"><source type="image/webp" srcset="https://www.flooringinc.com/media/wysiwyg/by-brand-ad.webp"><img class="pagebuilder-mobile-hidden" src="https://www.flooringinc.com/media/wysiwyg/by-brand-ad.jpg" alt="" title="" width="" height="" loading="lazy" data-element="desktop_image" data-pb-style="XRTA8XP" loading="lazy"></picture><picture class="pagebuilder-mobile-only"><source type="image/webp" srcset="https://www.flooringinc.com/media/wysiwyg/by-brand-ad.webp"><img class="pagebuilder-mobile-only" src="https://www.flooringinc.com/media/wysiwyg/by-brand-ad.jpg" alt="" title="" width="" height="" loading="lazy" data-element="mobile_image" data-pb-style="PGOIAVD" loading="lazy"></picture></a></figure></div> </div> 3131 3132 <ul class="z-10 w-1/2 absolute top-0 level2 flex flex-wrap pt-3 megamenu-extrablock" x-show="show">
3133 <span class="block w-full text-size28 font-medium no-underline text-darkblack pb-2">Dance Flooring</span> 3134 3135 <li class="level-2 w-4/12 pr-6 pb-6"> 3136 <a href="https://www.flooringinc.com/shop/dance-flooring/marley-flooring.html" 3137 title="Marley Floor Rolls" 3138 class="level-2 block"> 3139 <picture class="menucatimg rounded w-full mb-2"><source type="image/webp" srcset="https://www.flooringinc.com//media/catalog/category/Marley_Dance_Floor_Rolls_Category_1.webp"><img class="menucatimg rounded w-full mb-2" src="https://www.flooringinc.com//media/catalog/category/Marley_Dance_Floor_Rolls_Category_1.jpg" alt="Marley Floor Rolls" title="Marley Floor Rolls" /></picture> 3140 3141 <span class="block text-sm font-medium no-underline text-darkblack pr-4">Marley Floor Rolls</span></a> 3142 </li> 3143 3144 <li class="level-2 w-4/12 pr-6 pb-6"> 3145 <a href="https://www.flooringinc.com/shop/dance-flooring/dance-floor-tiles.html" 3146 title="Dance Floor Tiles" 3147 class="level-2 block"> 3148 <picture class="menucatimg rounded w-full mb-2"><source type="image/webp" srcset="https://www.flooringinc.com//media/catalog/category/Dance_Floor_Tiles_Category_1.webp"><img class="menucatimg rounded w-full mb-2" src="https://www.flooringinc.com//media/catalog/category/Dance_Floor_Tiles_Category_1.jpg" alt="Dance Floor Tiles" title="Dance Floor Tiles" /></picture> 3149 3150 <span class="block text-sm font-medium no-underline text-darkblack pr-4">Dance Floor Tiles</span></a> 3151 </li> 3152 3153 <li class="level-2 w-4/12 pr-6 pb-6"> 3154 <a href="https://www.flooringinc.com/shop/dance-flooring/portable-dance-floor-kits.html" 3155 title="Portable Dance Floors & Kits" 3156 class="level-2 block"> 3157 <picture class="menucatimg rounded w-full mb-2"><source type="image/webp" srcset="https://www.flooringinc.com//media/catalog/category/Portable_Dance_Floor_Kits_Category_1.webp"><img class="menucatimg rounded w-full mb-2" src="https://www.flooringinc.com//media/catalog/category/Portable_Dance_Floor_Kits_Category_1.jpg" alt="Portable Dance Floors & Kits" title="Portable Dance Floors & Kits" /></picture> 3158
3159 <span class="block text-sm font-medium no-underline text-darkblack pr-4">Portable Dance Floors & Kits</span></a> 3160 </li> 3161 3162 <li class="level-2 w-4/12 pr-6 pb-6"> 3163 <a href="https://www.flooringinc.com/shop/dance-flooring/subflooring.html" 3164 title="Subflooring" 3165 class="level-2 block"> 3166 <picture class="menucatimg rounded w-full mb-2"><source type="image/webp" srcset="https://www.flooringinc.com//media/catalog/category/Dance_Subflooring_Category_1_1.webp"><img class="menucatimg rounded w-full mb-2" src="https://www.flooringinc.com//media/catalog/category/Dance_Subflooring_Category_1_1.jpg" alt="Subflooring" title="Subflooring" /></picture> 3167 3168 <span class="block text-sm font-medium no-underline text-darkblack pr-4">Subflooring</span></a> 3169 </li> 3170 3171 <li class="level-2 w-4/12 pr-6 pb-6"> 3172 <a href="https://www.flooringinc.com/shop/dance-flooring/adhesives-cleaners-accessories.html" 3173 title="Adhesives, Cleaners & Accessories" 3174 class="level-2 block"> 3175 <picture class="menucatimg rounded w-full mb-2"><source type="image/webp" srcset="https://www.flooringinc.com//media/catalog/category/Dance_Floor_Accessories.webp"><img class="menucatimg rounded w-full mb-2" src="https://www.flooringinc.com//media/catalog/category/Dance_Floor_Accessories.jpg" alt="Adhesives, Cleaners & Accessories" title="Adhesives, Cleaners & Accessories" /></picture> 3176 3177 <span class="block text-sm font-medium no-underline text-darkblack pr-4">Adhesives, Cleaners & Accessories</span></a> 3178 </li> 3179 3180 <li class="level-2 w-4/12 pr-6 pb-6"> 3181 <a href="https://www.flooringinc.com/shop/dance-flooring/all-dance-flooring.html" 3182 title="All Dance Flooring" 3183 class="level-2 block"> 3184 <picture class="menucatimg rounded w-full mb-2"><source type="image/webp" srcset="https://www.flooringinc.com//media/catalog/category/All_Dance_Flooring_Category.webp"><img class="menucatimg rounded w-full mb-2" src="https://www.flooringinc.com//media/catalog/category/All_Dance_Flooring_Category.jpg" alt="All Dance Flooring" title="All Dance Flooring" /></picture> 3185
3186 <span class="block text-sm font-medium no-underline text-darkblack pr-4">All Dance Flooring</span></a> 3187 </li> 3188 3189 3190 <a class="view-all mt-2 underline-imp text-size12 font-medium text-darkblack absolute" style="top:410px;" href="https://www.flooringinc.com/shop/dance-flooring.html" >View All</a> 3191 3192 3193 </ul> 3194 </li> 3195 3196 3197 3198 <li :class="{ 'active': show }" class="level-1 level1 " x-data="{ show: false }" 3199 x-on:click="show = true; removeDisplayFirst()" @click.away="show = false" 3200 > 3201 <a 3202 title="Foam Flooring" 3203 class="level-1 w-1/4 py-1/5 px-6 text-size13 block text-sm rounded text-darkblack relative" 3204 3205 > 3206 Foam Flooring 3207 <span class="inline items-center rotate-180 absolute"> 3208 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" class="w-5 h-5 inline" width="25" height="25" role="img"> 3209 <path fill-rule="evenodd" d="M5.293 7.293a1 1 0 011.414 0L10 10.586l3.293-3.293a1 1 0 111.414 1.414l-4 4a1 1 0 01-1.414 0l-4-4a1 1 0 010-1.414z" clip-rule="evenodd"/> 3210<title>chevron-down</title></svg> 3211 </span> 3212 </a> 3213 3214 <div class="2xl:block w-1/4 mega-menu-rightBlock absolute top-0 right-0" x-show="show"> 3215 <style>#html-body [data-pb-style=V4QEB1B]{justify-content:flex-start;display:flex;flex-direction:column;background-position:left top;background-size:cover;background-repeat:no-repeat;background-attachment:scroll}#html-body [data-pb-style=RATJYYQ]{border-style:none}#html-body [data-pb-style=C8AYEH6],#html-body [data-pb-style=K3BTVRB]{max-width:100%;height:auto}#html-body [data-pb-style=C9LYQAD]{background-position:left top;background-size:cover;background-repeat:no-repeat;background-attachment:scroll;align-self:stretch}#html-body [data-pb-style=WFJJ3YQ]{display:flex;width:100%}#html-body [data-pb-style=IJTR1TW]{justify-content:flex-start;display:flex;flex-direction:column;background-position:left top;background-size:cover;background-repeat:no-repeat;background-attachment:scroll;width:100%;align-self:stretch}#html-body [data-pb-style=UUFOJKP]{text-align:left}#html-body [data-pb-style=LCUDGB3]{display:inline-block}#html-body [data-pb-style=E91VWL4]{text-align:center}@media only screen and (max-width: 768px) { #html-body [data-pb-style=RATJYYQ]{border-style:none} }</style><div class="mega_menu_banner" data-content-type="row" data-appearance="full-bleed" data-enable-parallax="0" data-parallax-speed="0.5" data-background-images="{}" data-background-type="image" data-video-loop="true" data-video-play-only-visible="true" data-video-lazy-load="true" data-video-fallback-src="" data-element="main" data-pb-style="V4QEB1B"><figure data-content-type="image" data-appearance="full-width" data-element="main" data-pb-style="RATJYYQ"><a href="/shop/foam-flooring.html" target="" data-link-type="default" title="" data-element="link"><picture class="pagebuilder-mobile-hidden"><source type="image/webp" srcset="https://www.flooringinc.com/media/wysiwyg/powered-by-ft-image.webp"><img class="pagebuilder-mobile-hidden" src="https://www.flooringinc.com/media/wysiwyg/powered-by-ft-image.jpg" alt="" title="" width="" height="" loading="lazy" data-element="desktop_image" data-pb-style="K3BTVRB" loading="lazy"></picture><picture class="pagebuilder-mobile-only"><source type="image/webp" srcset="https://www.flooringinc.com/media/wysiwyg/powered-by-ft-image.webp"><img class="pagebuilder-mobile-only" src="https://www.flooringinc.com/media/wysiwyg/powered-by-ft-image.jpg" alt="" title="" width="" height="" loading="lazy" data-element="mobile_image" data-pb-style="C8AYEH6" loading="lazy"></picture></a></figure><div class="pagebuilder-column-group" data-background-images="{}" data-content-type="column-group" data-appearance="default" data-grid-size="12" data-element="main" data-pb-style="C9LYQAD"><div class="pagebuilder-column-line" data-content-type="column-line" data-element="main" data-pb-style="WFJJ3YQ"><div class="pagebuilder-column" data-content-type="column" data-appearance="full-height" data-background-images="{}" data-element="main" data-pb-style="IJTR1TW"><div class="text-size14 font-medium text-custom-black text-left pt-5 pb-1" data-content-type="text" data-appearance="default" data-element="main"><p>Powered By <picture><source type="image/webp" srcset="https://www.flooringinc.com/media/wysiwyg/6000x2556_FT.webp"><img src="https://www.flooringinc.com/media/wysiwyg/6000x2556_FT.png" alt="" width="100" height="26"></picture></p></div><div class="text-size18 text-custom-black font-bold text-left pt-2 pb-4" data-content-type="text" data-appearance="default" data-element="main"><h2><span style="font-size: 18px;">Elite Sports Surfaces</span></h2></div><div data-content-type="buttons" data-appearance="inline" data-same-width="false" data-element="main" data-pb-style="UUFOJKP" class="free__Shipping__btn"><div data-content-type="button-item" data-appearance="default" data-element="main" data-pb-style="LCUDGB3"><a class="pagebuilder-button-primary" href="/shop/foam-flooring.html" target="" data-link-type="default" data-element="link" data-pb-style="E91VWL4"><span data-element="link_text">SHOP NOW</span></a></div></div></div></div></div></div> </div> 3216 3217 <ul class="z-10 w-1/2 absolute top-0 level2 flex flex-wrap pt-3 megamenu-extrablock" x-show="show">
3218 <span class="block w-full text-size28 font-medium no-underline text-darkblack pb-2">Foam Flooring</span> 3219 3220 <li class="level-2 w-4/12 pr-6 pb-6"> 3221 <a href="https://www.flooringinc.com/shop/foam-flooring/foam-tiles.html" 3222 title="Foam Floor Tiles" 3223 class="level-2 block"> 3224 <picture class="menucatimg rounded w-full mb-2"><source type="image/webp" srcset="https://www.flooringinc.com//media/catalog/category/foamtiles-main-category_1.webp"><img class="menucatimg rounded w-full mb-2" src="https://www.flooringinc.com//media/catalog/category/foamtiles-main-category_1.jpg" alt="Foam Floor Tiles" title="Foam Floor Tiles" /></picture> 3225 3226 <span class="block text-sm font-medium no-underline text-darkblack pr-4">Foam Floor Tiles</span></a> 3227 </li> 3228 3229 <li class="level-2 w-4/12 pr-6 pb-6"> 3230 <a href="https://www.flooringinc.com/shop/foam-flooring/kids-baby-play-mats.html" 3231 title="Kids & Baby Play Mats" 3232 class="level-2 block"> 3233 <picture class="menucatimg rounded w-full mb-2"><source type="image/webp" srcset="https://www.flooringinc.com//media/catalog/category/Kids_Baby_Play_Mats.webp"><img class="menucatimg rounded w-full mb-2" src="https://www.flooringinc.com//media/catalog/category/Kids_Baby_Play_Mats.jpg" alt="Kids & Baby Play Mats" title="Kids & Baby Play Mats" /></picture> 3234 3235 <span class="block text-sm font-medium no-underline text-darkblack pr-4">Kids & Baby Play Mats</span></a> 3236 </li> 3237 3238 <li class="level-2 w-4/12 pr-6 pb-6"> 3239 <a href="https://www.flooringinc.com/shop/foam-flooring/gymnastic-folding-mats.html" 3240 title="Gymnastics Mats " 3241 class="level-2 block"> 3242 <picture class="menucatimg rounded w-full mb-2"><source type="image/webp" srcset="https://www.flooringinc.com//media/catalog/category/Gymnastics_Mat_Category_1.webp"><img class="menucatimg rounded w-full mb-2" src="https://www.flooringinc.com//media/catalog/category/Gymnastics_Mat_Category_1.jpg" alt="Gymnastics Mats " title="Gymnastics Mats " /></picture> 3243
3244 <span class="block text-sm font-medium no-underline text-darkblack pr-4">Gymnastics Mats </span></a> 3245 </li> 3246 3247 <li class="level-2 w-4/12 pr-6 pb-6"> 3248 <a href="https://www.flooringinc.com/shop/foam-flooring/wrestling-mats.html" 3249 title="Wrestling Mats" 3250 class="level-2 block"> 3251 <picture class="menucatimg rounded w-full mb-2"><source type="image/webp" srcset="https://www.flooringinc.com//media/catalog/category/Wrestling_Mats_Category_2.webp"><img class="menucatimg rounded w-full mb-2" src="https://www.flooringinc.com//media/catalog/category/Wrestling_Mats_Category_2.jpg" alt="Wrestling Mats" title="Wrestling Mats" /></picture> 3252 3253 <span class="block text-sm font-medium no-underline text-darkblack pr-4">Wrestling Mats</span></a> 3254 </li> 3255 3256 <li class="level-2 w-4/12 pr-6 pb-6"> 3257 <a href="https://www.flooringinc.com/shop/foam-flooring/martial-arts-mats.html" 3258 title="Martial Arts Mats " 3259 class="level-2 block"> 3260 <picture class="menucatimg rounded w-full mb-2"><source type="image/webp" srcset="https://www.flooringinc.com//media/catalog/category/Martial_Arts_Mats_Category_1_.webp"><img class="menucatimg rounded w-full mb-2" src="https://www.flooringinc.com//media/catalog/category/Martial_Arts_Mats_Category_1_.jpg" alt="Martial Arts Mats " title="Martial Arts Mats " /></picture> 3261 3262 <span class="block text-sm font-medium no-underline text-darkblack pr-4">Martial Arts Mats </span></a> 3263 </li> 3264 3265 <li class="level-2 w-4/12 pr-6 pb-6"> 3266 <a href="https://www.flooringinc.com/shop/foam-flooring/trade-show-flooring.html" 3267 title="Trade Show Flooring" 3268 class="level-2 block"> 3269 <picture class="menucatimg rounded w-full mb-2"><source type="image/webp" srcset="https://www.flooringinc.com//media/catalog/category/Trade_Show_Flooring.webp"><img class="menucatimg rounded w-full mb-2" src="https://www.flooringinc.com//media/catalog/category/Trade_Show_Flooring.jpg" alt="Trade Show Flooring" title="Trade Show Flooring" /></picture> 3270
3271 <span class="block text-sm font-medium no-underline text-darkblack pr-4">Trade Show Flooring</span></a> 3272 </li> 3273 3274 3275 <a class="view-all mt-2 underline-imp text-size12 font-medium text-darkblack absolute" style="top:410px;" href="https://www.flooringinc.com/shop/foam-flooring.html" >View All</a> 3276 3277 3278 </ul> 3279 </li> 3280 3281 3282 3283 <li :class="{ 'active': show }" class="level-1 level1 " x-data="{ show: false }" 3284 x-on:click="show = true; removeDisplayFirst()" @click.away="show = false" 3285 > 3286 <a 3287 title="Outdoor Flooring" 3288 class="level-1 w-1/4 py-1/5 px-6 text-size13 block text-sm rounded text-darkblack relative" 3289 3290 > 3291 Outdoor Flooring 3292 <span class="inline items-center rotate-180 absolute"> 3293 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" class="w-5 h-5 inline" width="25" height="25" role="img"> 3294 <path fill-rule="evenodd" d="M5.293 7.293a1 1 0 011.414 0L10 10.586l3.293-3.293a1 1 0 111.414 1.414l-4 4a1 1 0 01-1.414 0l-4-4a1 1 0 010-1.414z" clip-rule="evenodd"/> 3295<title>chevron-down</title></svg> 3296 </span> 3297 </a> 3298 3299 <div class="2xl:block w-1/4 mega-menu-rightBlock absolute top-0 right-0" x-show="show"> 3300 <style>#html-body [data-pb-style=ALQ4JPY]{justify-content:flex-start;display:flex;flex-direction:column;background-position:left top;background-size:cover;background-repeat:no-repeat;background-attachment:scroll}#html-body [data-pb-style=TAKV2W6]{border-style:none}#html-body [data-pb-style=HFLT9TD],#html-body [data-pb-style=Q8I554G]{max-width:100%;height:auto}#html-body [data-pb-style=FM097SK]{background-position:left top;background-size:cover;background-repeat:no-repeat;background-attachment:scroll;align-self:stretch}#html-body [data-pb-style=P04UNTQ]{display:flex;width:100%}#html-body [data-pb-style=DWKW6WK]{justify-content:flex-start;display:flex;flex-direction:column;background-position:left top;background-size:cover;background-repeat:no-repeat;background-attachment:scroll;width:100%;align-self:stretch}#html-body [data-pb-style=UW72WSA]{text-align:left}#html-body [data-pb-style=GY38RBS]{display:inline-block}#html-body [data-pb-style=W6R7Y9S]{text-align:center}@media only screen and (max-width: 768px) { #html-body [data-pb-style=TAKV2W6]{border-style:none} }</style><div class="mega_menu_banner" data-content-type="row" data-appearance="full-bleed" data-enable-parallax="0" data-parallax-speed="0.5" data-background-images="{}" data-background-type="image" data-video-loop="true" data-video-play-only-visible="true" data-video-lazy-load="true" data-video-fallback-src="" data-element="main" data-pb-style="ALQ4JPY"><figure data-content-type="image" data-appearance="full-width" data-element="main" data-pb-style="TAKV2W6"><a href="/helios-deck-tiles-13850.html" target="" data-link-type="default" title="" data-element="link"><picture class="pagebuilder-mobile-hidden"><source type="image/webp" srcset="https://www.flooringinc.com/media/wysiwyg/outdoor-flooring-image.
3300webp"><img class="pagebuilder-mobile-hidden" src="https://www.flooringinc.com/media/wysiwyg/outdoor-flooring-image.jpg" alt="" title="" width="" height="" loading="lazy" data-element="desktop_image" data-pb-style="Q8I554G" loading="lazy"></picture><picture class="pagebuilder-mobile-only"><source type="image/webp" srcset="https://www.flooringinc.com/media/wysiwyg/outdoor-flooring-image.webp"><img class="pagebuilder-mobile-only" src="https://www.flooringinc.com/media/wysiwyg/outdoor-flooring-image.jpg" alt="" title="" width="" height="" loading="lazy" data-element="mobile_image" data-pb-style="HFLT9TD" loading="lazy"></picture></a></figure><div class="pagebuilder-column-group" data-background-images="{}" data-content-type="column-group" data-appearance="default" data-grid-size="12" data-element="main" data-pb-style="FM097SK"><div class="pagebuilder-column-line" data-content-type="column-line" data-element="main" data-pb-style="P04UNTQ"><div class="pagebuilder-column" data-content-type="column" data-appearance="full-height" data-background-images="{}" data-element="main" data-pb-style="DWKW6WK"><div class="text-size14 font-medium text-custom-black text-left pt-5" data-content-type="text" data-appearance="default" data-element="main"><p><picture><source type="image/webp" srcset="https://www.flooringinc.com/media/wysiwyg/Helios_Color.webp"><img src="https://www.flooringinc.com/media/wysiwyg/Helios_Color.png" alt="" width="100" height="33"></picture></p></div><div class="text-size18 text-custom-black font-bold text-left pt-1 pb-5" data-content-type="text" data-appearance="default" data-element="main"><h2><span style="font-size: 18px;">Helios Deck Tiles</span></h2></div><div data-content-type="buttons" data-appearance="inline" data-same-width="false" data-element="main" data-pb-style="UW72WSA" class="free__Shipping__btn"><div data-content-type="button-item" data-appearance="default" data-element="main" data-pb-style="GY38RBS"><a class="pagebuilder-button-primary" href="/helios-deck-tiles-13850.html" target="" data-link-type="default" data-element="link" data-pb-style="W6R7Y9S"><span data-element="link_text">SHOP NOW</span></a></div></div></div></div></div></div> </div> 3301 3302 <ul class="z-10 w-1/2 absolute top-0 level2 flex flex-wrap pt-3 megamenu-extrablock" x-show="show"> 3303 <span class="block w-full text-size28 font-medium no-underline text-darkblack pb-2">Outdoor Flooring</span> 3304 3305 <li class="level-2 w-4/12 pr-6 pb-6"> 3306 <a href="https://www.flooringinc.com/shop/outdoor-flooring/playground-flooring.html" 3307 title="Playground Flooring" 3308 class="level-2 block"> 3309 <picture class="menucatimg rounded w-full mb-2"><source type="image/webp" srcset="https://www.flooringinc.com//media/catalog/category/Playground_Flooring_Category_1.webp"><img class="menucatimg rounded w-full mb-2" src="https://www.flooringinc.com//media/catalog/category/Playground_Flooring_Category_1.jpg" alt="Playground Flooring" title="Playground Flooring" /></picture> 3310 3311 <span class="block text-sm font-medium no-underline text-darkblack pr-4">Playground Flooring</span></a> 3312 </li> 3313 3314 <li class="level-2 w-4/12 pr-6 pb-6"> 3315 <a href="https://www.flooringinc.com/shop/outdoor-flooring/sport-and-court-flooring.html" 3316 title="Sports Flooring & Court Tiles" 3317 class="level-2 block"> 3318 <picture class="menucatimg rounded w-full mb-2"><source type="image/webp" srcset="https://www.flooringinc.com//media/catalog/category/court-main-category_1.webp"><img class="menucatimg rounded w-full mb-2" src="https://www.flooringinc.com//media/catalog/category/court-main-category_1.jpg" alt="Sports Flooring & Court Tiles" title="Sports Flooring & Court Tiles" /></picture> 3319
3320 <span class="block text-sm font-medium no-underline text-darkblack pr-4">Sports Flooring & Court Tiles</span></a> 3321 </li> 3322 3323 <li class="level-2 w-4/12 pr-6 pb-6"> 3324 <a href="https://www.flooringinc.com/shop/outdoor-flooring/artificial-grass.html" 3325 title="Turf & Artificial Grass" 3326 class="level-2 block"> 3327 <picture class="menucatimg rounded w-full mb-2"><source type="image/webp" srcset="https://www.flooringinc.com//media/catalog/category/fi_outdoor_flooring_artifical_grass_1.webp"><img class="menucatimg rounded w-full mb-2" src="https://www.flooringinc.com//media/catalog/category/fi_outdoor_flooring_artifical_grass_1.jpg" alt="Turf & Artificial Grass" title="Turf & Artificial Grass" /></picture> 3328 3329 <span class="block text-sm font-medium no-underline text-darkblack pr-4">Turf & Artificial Grass</span></a> 3330 </li> 3331 3332 <li class="level-2 w-4/12 pr-6 pb-6"> 3333 <a href="https://www.flooringinc.com/shop/outdoor-flooring/composite-decking.html" 3334 title="Composite Decking" 3335 class="level-2 block"> 3336 <picture class="menucatimg rounded w-full mb-2"><source type="image/webp" srcset="https://www.flooringinc.com//media/catalog/category/Composite_Decking_Category.webp"><img class="menucatimg rounded w-full mb-2" src="https://www.flooringinc.com//media/catalog/category/Composite_Decking_Category.jpg" alt="Composite Decking" title="Composite Decking" /></picture> 3337 3338 <span class="block text-sm font-medium no-underline text-darkblack pr-4">Composite Decking</span></a> 3339 </li> 3340 3341 <li class="level-2 w-4/12 pr-6 pb-6"> 3342 <a href="https://www.flooringinc.com/shop/outdoor-flooring/rooftop-deck-flooring.html" 3343 title="Rooftop Deck Flooring" 3344 class="level-2 block"> 3345 <picture class="menucatimg rounded w-full mb-2"><source type="image/webp" srcset="https://www.flooringinc.com//media/catalog/category/Rooftop_Deck_Flooring_Category_1.webp"><img class="menucatimg rounded w-full mb-2" src="https://www.flooringinc.com//media/catalog/category/Rooftop_Deck_Flooring_Category_1.jpg" alt="Rooftop Deck Flooring" title="Rooftop Deck Flooring" /></picture> 3346
3347 <span class="block text-sm font-medium no-underline text-darkblack pr-4">Rooftop Deck Flooring</span></a> 3348 </li> 3349 3350 <li class="level-2 w-4/12 pr-6 pb-6"> 3351 <a href="https://www.flooringinc.com/shop/outdoor-flooring/drainage-tiles.html" 3352 title="Drainage Tile & Mats" 3353 class="level-2 block"> 3354 <picture class="menucatimg rounded w-full mb-2"><source type="image/webp" srcset="https://www.flooringinc.com//media/catalog/category/Drainage_Tiles_Category_01.webp"><img class="menucatimg rounded w-full mb-2" src="https://www.flooringinc.com//media/catalog/category/Drainage_Tiles_Category_01.jpg" alt="Drainage Tile & Mats" title="Drainage Tile & Mats" /></picture> 3355 3356 <span class="block text-sm font-medium no-underline text-darkblack pr-4">Drainage Tile & Mats</span></a> 3357 </li> 3358 3359 3360 <a class="view-all mt-2 underline-imp text-size12 font-medium text-darkblack absolute" style="top:410px;" href="https://www.flooringinc.com/shop/outdoor-flooring.html" >View All</a> 3361 3362 3363 </ul> 3364 </li> 3365 3366 3367 3368 <li :class="{ 'active': show }" class="level-1 level1 " x-data="{ show: false }" 3369 x-on:click="show = true; removeDisplayFirst()" @click.away="show = false" 3370 > 3371 <a 3372 title="Turf & Artificial Grass" 3373 class="level-1 w-1/4 py-1/5 px-6 text-size13 block text-sm rounded text-darkblack relative" 3374 3375 > 3376 Turf & Artificial Grass 3377 <span class="inline items-center rotate-180 absolute"> 3378 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" class="w-5 h-5 inline" width="25" height="25" role="img"> 3379 <path fill-rule="evenodd" d="M5.293 7.293a1 1 0 011.414 0L10 10.586l3.293-3.293a1 1 0 111.414 1.414l-4 4a1 1 0 01-1.414 0l-4-4a1 1 0 010-1.414z" clip-rule="evenodd"/> 3380<title>chevron-down</title></svg> 3381 </span> 3382 </a> 3383 3384 <ul class="z-10 w-1/2 absolute top-0 level2 flex flex-wrap pt-3 megamenu-extrablock" x-show="show">
3385 <span class="block w-full text-size28 font-medium no-underline text-darkblack pb-2">Turf & Artificial Grass</span> 3386 3387 <li class="level-2 w-4/12 pr-6 pb-6"> 3388 <a href="https://www.flooringinc.com/shop/artificial-grass/sport-field-turf.html" 3389 title="Sport & Gym Turf" 3390 class="level-2 block"> 3391 <picture class="menucatimg rounded w-full mb-2"><source type="image/webp" srcset="https://www.flooringinc.com//media/catalog/category/10079_0_1_3_.webp"><img class="menucatimg rounded w-full mb-2" src="https://www.flooringinc.com//media/catalog/category/10079_0_1_3_.jpg" alt="Sport & Gym Turf" title="Sport & Gym Turf" /></picture> 3392 3393 <span class="block text-sm font-medium no-underline text-darkblack pr-4">Sport & Gym Turf</span></a> 3394 </li> 3395 3396 <li class="level-2 w-4/12 pr-6 pb-6"> 3397 <a href="https://www.flooringinc.com/shop/artificial-grass/landscape-turf.html" 3398 title="Landscape Turf" 3399 class="level-2 block"> 3400 <picture class="menucatimg rounded w-full mb-2"><source type="image/webp" srcset="https://www.flooringinc.com//media/catalog/category/fi_artifical_grass_landscape_turf_2.webp"><img class="menucatimg rounded w-full mb-2" src="https://www.flooringinc.com//media/catalog/category/fi_artifical_grass_landscape_turf_2.jpg" alt="Landscape Turf" title="Landscape Turf" /></picture> 3401 3402 <span class="block text-sm font-medium no-underline text-darkblack pr-4">Landscape Turf</span></a> 3403 </li> 3404 3405 <li class="level-2 w-4/12 pr-6 pb-6"> 3406 <a href="https://www.flooringinc.com/shop/artificial-grass/pet-turf.html" 3407 title="Pet Turf" 3408 class="level-2 block"> 3409 <picture class="menucatimg rounded w-full mb-2"><source type="image/webp" srcset="https://www.flooringinc.com//media/catalog/category/fi_artifical_grass_pet_turf_3.webp"><img class="menucatimg rounded w-full mb-2" src="https://www.flooringinc.com//media/catalog/category/fi_artifical_grass_pet_turf_3.jpg" alt="Pet Turf" title="Pet Turf" /></picture> 3410
3411 <span class="block text-sm font-medium no-underline text-darkblack pr-4">Pet Turf</span></a> 3412 </li> 3413 3414 <li class="level-2 w-4/12 pr-6 pb-6"> 3415 <a href="https://www.flooringinc.com/shop/artificial-grass/putting-greens.html" 3416 title="Golf & Putting Green Turf" 3417 class="level-2 block"> 3418 <picture class="menucatimg rounded w-full mb-2"><source type="image/webp" srcset="https://www.flooringinc.com//media/catalog/category/fi_artifical_grass_putting_greens_1.webp"><img class="menucatimg rounded w-full mb-2" src="https://www.flooringinc.com//media/catalog/category/fi_artifical_grass_putting_greens_1.jpg" alt="Golf & Putting Green Turf" title="Golf & Putting Green Turf" /></picture> 3419 3420 <span class="block text-sm font-medium no-underline text-darkblack pr-4">Golf & Putting Green Turf</span></a> 3421 </li> 3422 3423 <li class="level-2 w-4/12 pr-6 pb-6"> 3424 <a href="https://www.flooringinc.com/shop/artificial-grass/turf-accessories.html" 3425 title="Turf Accessories" 3426 class="level-2 block"> 3427 <picture class="menucatimg rounded w-full mb-2"><source type="image/webp" srcset="https://www.flooringinc.com//media/catalog/category/Untitled_design_1_.webp"><img class="menucatimg rounded w-full mb-2" src="https://www.flooringinc.com//media/catalog/category/Untitled_design_1_.png" alt="Turf Accessories" title="Turf Accessories" /></picture> 3428 3429 <span class="block text-sm font-medium no-underline text-darkblack pr-4">Turf Accessories</span></a> 3430 </li> 3431 3432 <li class="level-2 w-4/12 pr-6 pb-6"> 3433 <a href="https://www.flooringinc.com/shop/artificial-grass/all-artificial-grass.html" 3434 title="All Turf & Artificial Grass" 3435 class="level-2 block"> 3436 <picture class="menucatimg rounded w-full mb-2"><source type="image/webp" srcset="https://www.flooringinc.com//media/catalog/category/All_Artificial_Grass2_1.webp"><img class="menucatimg rounded w-full mb-2" src="https://www.flooringinc.com//media/catalog/category/All_Artificial_Grass2_1.jpg" alt="All Turf & Artificial Grass" title="All Turf & Artificial Grass" /></picture> 3437
3438 <span class="block text-sm font-medium no-underline text-darkblack pr-4">All Turf & Artificial Grass</span></a> 3439 </li> 3440 3441 3442 <a class="view-all mt-2 underline-imp text-size12 font-medium text-darkblack absolute" style="top:410px;" href="https://www.flooringinc.com/shop/artificial-grass.html" >View All</a> 3443 3444 3445 </ul> 3446 </li> 3447 3448 3449 3450 <li :class="{ 'active': show }" class="level-1 level1 " x-data="{ show: false }" 3451 x-on:click="show = true; removeDisplayFirst()" @click.away="show = false" 3452 > 3453 <a 3454 title="Carpet Tiles & Rolls" 3455 class="level-1 w-1/4 py-1/5 px-6 text-size13 block text-sm rounded text-darkblack relative" 3456 3457 > 3458 Carpet Tiles & Rolls 3459 <span class="inline items-center rotate-180 absolute"> 3460 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" class="w-5 h-5 inline" width="25" height="25" role="img"> 3461 <path fill-rule="evenodd" d="M5.293 7.293a1 1 0 011.414 0L10 10.586l3.293-3.293a1 1 0 111.414 1.414l-4 4a1 1 0 01-1.414 0l-4-4a1 1 0 010-1.414z" clip-rule="evenodd"/> 3462<title>chevron-down</title></svg> 3463 </span> 3464 </a> 3465 3466 <ul class="z-10 w-1/2 absolute top-0 level2 flex flex-wrap pt-3 megamenu-extrablock" x-show="show"> 3467 <span class="block w-full text-size28 font-medium no-underline text-darkblack pb-2">Carpet Tiles & Rolls</span> 3468 3469 <li class="level-2 w-4/12 pr-6 pb-6"> 3470 <a href="https://www.flooringinc.com/shop/carpet/carpet-tiles.html" 3471 title="Carpet Tiles" 3472 class="level-2 block"> 3473 <picture class="menucatimg rounded w-full mb-2"><source type="image/webp" srcset="https://www.flooringinc.com//media/catalog/category/Carpet_Tiles_Category_01.webp"><img class="menucatimg rounded w-full mb-2" src="https://www.flooringinc.com//media/catalog/category/Carpet_Tiles_Category_01.jpg" alt="Carpet Tiles" title="Carpet Tiles" /></picture> 3474
3475 <span class="block text-sm font-medium no-underline text-darkblack pr-4">Carpet Tiles</span></a> 3476 </li> 3477 3478 <li class="level-2 w-4/12 pr-6 pb-6"> 3479 <a href="https://www.flooringinc.com/shop/carpet/carpet-rolls.html" 3480 title="Carpet Rolls" 3481 class="level-2 block"> 3482 <picture class="menucatimg rounded w-full mb-2"><source type="image/webp" srcset="https://www.flooringinc.com//media/catalog/category/fi_carpet_carpet_rolls_3.webp"><img class="menucatimg rounded w-full mb-2" src="https://www.flooringinc.com//media/catalog/category/fi_carpet_carpet_rolls_3.jpg" alt="Carpet Rolls" title="Carpet Rolls" /></picture> 3483 3484 <span class="block text-sm font-medium no-underline text-darkblack pr-4">Carpet Rolls</span></a> 3485 </li> 3486 3487 <li class="level-2 w-4/12 pr-6 pb-6"> 3488 <a href="https://www.flooringinc.com/shop/carpet/home-theater-carpet.html" 3489 title="Home Theater Carpet" 3490 class="level-2 block"> 3491 <picture class="menucatimg rounded w-full mb-2"><source type="image/webp" srcset="https://www.flooringinc.com//media/catalog/category/Home_Theater_Carpet_Category.webp"><img class="menucatimg rounded w-full mb-2" src="https://www.flooringinc.com//media/catalog/category/Home_Theater_Carpet_Category.jpg" alt="Home Theater Carpet" title="Home Theater Carpet" /></picture> 3492 3493 <span class="block text-sm font-medium no-underline text-darkblack pr-4">Home Theater Carpet</span></a> 3494 </li> 3495 3496 <li class="level-2 w-4/12 pr-6 pb-6"> 3497 <a href="https://www.flooringinc.com/shop/carpet/peel-stick-carpet.html" 3498 title="Peel and Stick Carpet Tiles" 3499 class="level-2 block"> 3500 <picture class="menucatimg rounded w-full mb-2"><source type="image/webp" srcset="https://www.flooringinc.com//media/catalog/category/fi_carpet_peel_stick_carpet_3.webp"><img class="menucatimg rounded w-full mb-2" src="https://www.flooringinc.com//media/catalog/category/fi_carpet_peel_stick_carpet_3.jpg" alt="Peel and Stick Carpet Tiles" title="Peel and Stick Carpet Tiles" /></picture> 3501
3502 <span class="block text-sm font-medium no-underline text-darkblack pr-4">Peel and Stick Carpet Tiles</span></a> 3503 </li> 3504 3505 <li class="level-2 w-4/12 pr-6 pb-6"> 3506 <a href="https://www.flooringinc.com/shop/carpet/outdoor-carpet.html" 3507 title="Outdoor Carpet" 3508 class="level-2 block"> 3509 <picture class="menucatimg rounded w-full mb-2"><source type="image/webp" srcset="https://www.flooringinc.com//media/catalog/category/fi_carpet_outdoor_carpet_3.webp"><img class="menucatimg rounded w-full mb-2" src="https://www.flooringinc.com//media/catalog/category/fi_carpet_outdoor_carpet_3.jpg" alt="Outdoor Carpet" title="Outdoor Carpet" /></picture> 3510 3511 <span class="block text-sm font-medium no-underline text-darkblack pr-4">Outdoor Carpet</span></a> 3512 </li> 3513 3514 <li class="level-2 w-4/12 pr-6 pb-6"> 3515 <a href="https://www.flooringinc.com/shop/carpet/waterproof-carpet.html" 3516 title="Waterproof Carpet" 3517 class="level-2 block"> 3518 <picture class="menucatimg rounded w-full mb-2"><source type="image/webp" srcset="https://www.flooringinc.com//media/catalog/category/fi_carpet_waterproof_carpet_3.webp"><img class="menucatimg rounded w-full mb-2" src="https://www.flooringinc.com//media/catalog/category/fi_carpet_waterproof_carpet_3.jpg" alt="Waterproof Carpet" title="Waterproof Carpet" /></picture> 3519 3520 <span class="block text-sm font-medium no-underline text-darkblack pr-4">Waterproof Carpet</span></a> 3521 </li> 3522 3523 3524 <a class="view-all mt-2 underline-imp text-size12 font-medium text-darkblack absolute" style="top:410px;" href="https://www.flooringinc.com/shop/carpet.html" >View All</a> 3525 3526 3527 </ul> 3528 </li> 3529 3530 3531 3532 <li :class="{ 'active': show }" class="level-1 level1 " x-data="{ show: false }" 3533 x-on:click="show = true; removeDisplayFirst()" @click.away="show = false" 3534 > 3535 <a 3536 title="Vinyl Flooring" 3537 class="level-1 w-1/4 py-1/5 px-6 text-size13 block text-sm rounded text-darkblack relative" 3538 3539 > 3540 Vinyl Flooring 3541 <sp
3541an class="inline items-center rotate-180 absolute"> 3542 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" class="w-5 h-5 inline" width="25" height="25" role="img"> 3543 <path fill-rule="evenodd" d="M5.293 7.293a1 1 0 011.414 0L10 10.586l3.293-3.293a1 1 0 111.414 1.414l-4 4a1 1 0 01-1.414 0l-4-4a1 1 0 010-1.414z" clip-rule="evenodd"/> 3544<title>chevron-down</title></svg> 3545 </span> 3546 </a> 3547 3548 <div class="2xl:block w-1/4 mega-menu-rightBlock absolute top-0 right-0" x-show="show"> 3549 <style>#html-body [data-pb-style=EM115TO]{justify-content:flex-start;display:flex;flex-direction:column;background-position:left top;background-size:cover;background-repeat:no-repeat;background-attachment:scroll}#html-body [data-pb-style=IKTB4TW]{border-style:none}#html-body [data-pb-style=GIF1L08],#html-body [data-pb-style=XQRKPTA]{max-width:100%;height:auto}#html-body [data-pb-style=L8H5BBD]{background-position:left top;background-size:cover;background-repeat:no-repeat;background-attachment:scroll;align-self:stretch}#html-body [data-pb-style=R47C5CN]{display:flex;width:100%}#html-body [data-pb-style=KQ2WCHQ]{justify-content:flex-start;display:flex;flex-direction:column;background-position:left top;background-size:cover;background-repeat:no-repeat;background-attachment:scroll;width:100%;align-self:stretch}#html-body [data-pb-style=DKAF2SH]{text-align:left}#html-body [data-pb-style=PYFOHXW]{display:inline-block}#html-body [data-pb-style=PNB90JW]{text-align:center}@media only screen and (max-width: 768px) { #html-body [data-pb-style=IKTB4TW]{border-style:none} }</style><div class="mega_menu_banner" data-content-type="row" data-appearance="full-bleed" data-enable-parallax="0" data-parallax-speed="0.5" data-background-images="{}" data-background-type="image" data-video-loop="true" data-video-play-only-visible="true" data-video-lazy-load="true" data-video-fallback-src="" data-element="main" data-pb-style="EM115TO"><figure data-content-type="image" data-appearance="full-width" data-element="main" data-pb-style="IKTB4TW"><a href="/tritoncore-pro-7-rigid-core-vinyl-planks-12596.html" target="" data-link-type="default" title="" data-element="link"><picture class="pagebuilder-mobile-hidden"><source type="image/webp" srcset="https://www.flooringinc.com/media/wysiwyg/vinyl-ad-5.webp"><img class="pagebuilder-mobile-hidden" src="https://www.flooringinc.com/media/wysiwyg/vinyl-ad-5.jpg" alt="" title="" width="" height="" loading="lazy" data-element="desktop_image" data-pb-style="XQRKPTA" loading="lazy"></picture><picture class="pagebuilder-mobile-only"><source type="image/webp" srcset="https://www.flooringinc.com/media/wysiwyg/vinyl-ad-5.webp"><img class="pagebuilder-mobile-only" src="https://www.flooringinc.com/media/wysiwyg/vinyl-ad-5.jpg" alt="" title="" width="" height="" loading="lazy" data-element="mobile_image" data-pb-style="GIF1L08" loading="lazy"></picture></a></figure><div class="pagebuilder-column-group" data-background-images="{}" data-content-type="column-group" data-appearance="default" data-grid-size="12" data-element="main" data-pb-style="L8H5BBD"><div class="pagebuilder-column-line" data-content-type="column-line" data-element="main" data-pb-style="R47C5CN"><div class="pagebuilder-column" data-content-type="column" data-appearance="full-height" data-background-images="{}" data-element="main" data-pb-style="KQ2WCHQ"><div class="text-size18 text-custom-black font-bold text-left pt-5 pb-1" data-content-type="text" data-appearance="default" data-element="main"><h2><span style="font-size: 18px;">TritonCore Pro 7"</span><br><span style="font-size: 18px;">Rigid Core Vinyl Planks</span></h2></div><div class="text-size14 font-medium text-custom-black text-left pt-1 pb-3" data-content-type="text" data-appearance="default" data-element="main"><p>Functional beauty for busy households.</p></div><div data-content-type="buttons" data-appearance="inline" data-same-width="false" data-element="main" data-pb-style="DKAF2SH" class="free__Shipping__btn"><div data-content-type="button-item" data-appearance="default" data-element="main" data-pb-style="PYFOHXW"><a class="pagebuilder-button-primary" href="/tritoncore-pro-7-rigid-core-vinyl-planks-12596.html" target="" data-link-type="default" data-element="link" data-pb-style="PNB90JW"><span data-element="link_text">SHOP NOW</span></a></div></div></div></div></div></div> </div> 3550 3551 <ul class="z-10 w-1/2 absolute top-0 level2 flex flex-wrap pt-3 megamenu-extrablock" x-show="show">
3552 <span class="block w-full text-size28 font-medium no-underline text-darkblack pb-2">Vinyl Flooring</span> 3553 3554 <li class="level-2 w-4/12 pr-6 pb-6"> 3555 <a href="https://www.flooringinc.com/shop/vinyl/vinyl-sheet.html" 3556 title="Vinyl Sheet Flooring" 3557 class="level-2 block"> 3558 <picture class="menucatimg rounded w-full mb-2"><source type="image/webp" srcset="https://www.flooringinc.com//media/catalog/category/fi_vinyl_vinyl_sheet_3.webp"><img class="menucatimg rounded w-full mb-2" src="https://www.flooringinc.com//media/catalog/category/fi_vinyl_vinyl_sheet_3.jpg" alt="Vinyl Sheet Flooring" title="Vinyl Sheet Flooring" /></picture> 3559 3560 <span class="block text-sm font-medium no-underline text-darkblack pr-4">Vinyl Sheet Flooring</span></a> 3561 </li> 3562 3563 <li class="level-2 w-4/12 pr-6 pb-6"> 3564 <a href="https://www.flooringinc.com/shop/vinyl/vinyl-tiles-planks.html" 3565 title="Vinyl Tiles & Planks" 3566 class="level-2 block"> 3567 <picture class="menucatimg rounded w-full mb-2"><source type="image/webp" srcset="https://www.flooringinc.com//media/catalog/category/main-category-vinyl.webp"><img class="menucatimg rounded w-full mb-2" src="https://www.flooringinc.com//media/catalog/category/main-category-vinyl.jpg" alt="Vinyl Tiles & Planks" title="Vinyl Tiles & Planks" /></picture> 3568 3569 <span class="block text-sm font-medium no-underline text-darkblack pr-4">Vinyl Tiles & Planks</span></a> 3570 </li> 3571 3572 <li class="level-2 w-4/12 pr-6 pb-6"> 3573 <a href="https://www.flooringinc.com/shop/vinyl/waterproof-vinyl.html" 3574 title="Waterproof Vinyl Flooring" 3575 class="level-2 block"> 3576 <picture class="menucatimg rounded w-full mb-2"><source type="image/webp" srcset="https://www.flooringinc.com//media/catalog/category/fi_vinyl_waterproof_vinyl_1.webp"><img class="menucatimg rounded w-full mb-2" src="https://www.flooringinc.com//media/catalog/category/fi_vinyl_waterproof_vinyl_1.jpg" alt="Waterproof Vinyl Flooring" title="Waterproof Vinyl Flooring" /></picture> 3577
3578 <span class="block text-sm font-medium no-underline text-darkblack pr-4">Waterproof Vinyl Flooring</span></a> 3579 </li> 3580 3581 <li class="level-2 w-4/12 pr-6 pb-6"> 3582 <a href="https://www.flooringinc.com/shop/vinyl/rigid-core-vinyl.html" 3583 title="Rigid Core Vinyl Flooring" 3584 class="level-2 block"> 3585 <picture class="menucatimg rounded w-full mb-2"><source type="image/webp" srcset="https://www.flooringinc.com//media/catalog/category/fi_vinyl_rigid_core_vinyl_1.webp"><img class="menucatimg rounded w-full mb-2" src="https://www.flooringinc.com//media/catalog/category/fi_vinyl_rigid_core_vinyl_1.jpg" alt="Rigid Core Vinyl Flooring" title="Rigid Core Vinyl Flooring" /></picture> 3586 3587 <span class="block text-sm font-medium no-underline text-darkblack pr-4">Rigid Core Vinyl Flooring</span></a> 3588 </li> 3589 3590 <li class="level-2 w-4/12 pr-6 pb-6"> 3591 <a href="https://www.flooringinc.com/shop/vinyl/commercial-vinyl.html" 3592 title="Commercial Vinyl Flooring" 3593 class="level-2 block"> 3594 <picture class="menucatimg rounded w-full mb-2"><source type="image/webp" srcset="https://www.flooringinc.com//media/catalog/category/fi_vinyl_commercial_vinyl_1.webp"><img class="menucatimg rounded w-full mb-2" src="https://www.flooringinc.com//media/catalog/category/fi_vinyl_commercial_vinyl_1.jpg" alt="Commercial Vinyl Flooring" title="Commercial Vinyl Flooring" /></picture> 3595 3596 <span class="block text-sm font-medium no-underline text-darkblack pr-4">Commercial Vinyl Flooring</span></a> 3597 </li> 3598 3599 3600 <a class="view-all mt-2 underline-imp text-size12 font-medium text-darkblack absolute" style="top:410px;" href="https://www.flooringinc.com/shop/vinyl.html" >View All</a> 3601 3602 3603 </ul> 3604 </li> 3605 3606 3607 3608 <li :class="{ 'active': show }" class="level-1 level1 " x-data="{ show: false }" 3609 x-on:click="show = true; removeDisplayFirst()" @click.away="show = false" 3610 > 3611 <a 3612 title="Wood & Laminate Flooring" 3613 class="level-1 w-1/4 py-1/5 px-6 text-size13 block text-sm rounded text-darkblack relative" 3614 3615 > 3616 Wood & Laminate Flooring 3617 <sp
3617an class="inline items-center rotate-180 absolute"> 3618 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" class="w-5 h-5 inline" width="25" height="25" role="img"> 3619 <path fill-rule="evenodd" d="M5.293 7.293a1 1 0 011.414 0L10 10.586l3.293-3.293a1 1 0 111.414 1.414l-4 4a1 1 0 01-1.414 0l-4-4a1 1 0 010-1.414z" clip-rule="evenodd"/> 3620<title>chevron-down</title></svg> 3621 </span> 3622 </a> 3623 3624 <ul class="z-10 w-1/2 absolute top-0 level2 flex flex-wrap pt-3 megamenu-extrablock" x-show="show"> 3625 <span class="block w-full text-size28 font-medium no-underline text-darkblack pb-2">Wood & Laminate Flooring</span> 3626 3627 <li class="level-2 w-4/12 pr-6 pb-6"> 3628 <a href="https://www.flooringinc.com/shop/wood-laminate/waterproof-laminate.html" 3629 title="Waterproof Laminate Flooring" 3630 class="level-2 block"> 3631 <picture class="menucatimg rounded w-full mb-2"><source type="image/webp" srcset="https://www.flooringinc.com//media/catalog/category/fi_wood_laminate_waterproof_laminate_1.webp"><img class="menucatimg rounded w-full mb-2" src="https://www.flooringinc.com//media/catalog/category/fi_wood_laminate_waterproof_laminate_1.jpg" alt="Waterproof Laminate Flooring" title="Waterproof Laminate Flooring" /></picture> 3632 3633 <span class="block text-sm font-medium no-underline text-darkblack pr-4">Waterproof Laminate Flooring</span></a> 3634 </li> 3635 3636 <li class="level-2 w-4/12 pr-6 pb-6"> 3637 <a href="https://www.flooringinc.com/shop/wood-laminate/laminate.html" 3638 title="Laminate Flooring" 3639 class="level-2 block"> 3640 <picture class="menucatimg rounded w-full mb-2"><source type="image/webp" srcset="https://www.flooringinc.com//media/catalog/category/fi_wood_laminate_laminate_1.webp"><img class="menucatimg rounded w-full mb-2" src="https://www.flooringinc.com//media/catalog/category/fi_wood_laminate_laminate_1.jpg" alt="Laminate Flooring" title="Laminate Flooring" /></picture> 3641 3642 <span class="block text-sm font-medium no-underline text-darkblack pr-4">Laminate Flooring</span></a> 3643 </li> 3644 3645 <li class="level-2 w-4/12 pr-6 pb-6"> 3646 <a href="https://www.flooringinc.com/shop/wood-laminate/hardwood.html" 3647 title="Engineered Hardwood Flooring" 3648 class="level-2 block"> 3649 <picture class="menucatimg rounded w-full mb-2"><source type="image/webp" srcset="https://www.flooringinc.com//media/catalog/category/fi_wood_laminate_hardwood_1.webp"><img class="menucatimg rounded w-full mb-2" src="https://www.flooringinc.com//media/catalog/category/fi_wood_laminate_hardwood_1.jpg" alt="Engineered Hardwood Flooring" title="Engineered Hardwood Flooring" /></picture> 3650
3651 <span class="block text-sm font-medium no-underline text-darkblack pr-4">Engineered Hardwood Flooring</span></a> 3652 </li> 3653 3654 <li class="level-2 w-4/12 pr-6 pb-6"> 3655 <a href="https://www.flooringinc.com/shop/wood-laminate/oak.html" 3656 title="Oak Wood Flooring" 3657 class="level-2 block"> 3658 <picture class="menucatimg rounded w-full mb-2"><source type="image/webp" srcset="https://www.flooringinc.com//media/catalog/category/fi_wood_laminate_oak_1.webp"><img class="menucatimg rounded w-full mb-2" src="https://www.flooringinc.com//media/catalog/category/fi_wood_laminate_oak_1.jpg" alt="Oak Wood Flooring" title="Oak Wood Flooring" /></picture> 3659 3660 <span class="block text-sm font-medium no-underline text-darkblack pr-4">Oak Wood Flooring</span></a> 3661 </li> 3662 3663 <li class="level-2 w-4/12 pr-6 pb-6"> 3664 <a href="https://www.flooringinc.com/shop/wood-laminate/commercial-wood-laminate.html" 3665 title="Commercial Wood & Laminate" 3666 class="level-2 block"> 3667 <picture class="menucatimg rounded w-full mb-2"><source type="image/webp" srcset="https://www.flooringinc.com//media/catalog/category/fi_wood_laminate_commercial_wood_laminate_1.webp"><img class="menucatimg rounded w-full mb-2" src="https://www.flooringinc.com//media/catalog/category/fi_wood_laminate_commercial_wood_laminate_1.jpg" alt="Commercial Wood & Laminate" title="Commercial Wood & Laminate" /></picture> 3668 3669 <span class="block text-sm font-medium no-underline text-darkblack pr-4">Commercial Wood & Laminate</span></a> 3670 </li> 3671 3672 3673 <a class="view-all mt-2 underline-imp text-size12 font-medium text-darkblack absolute" style="top:410px;" href="https://www.flooringinc.com/shop/wood-laminate.html" >View All</a> 3674 3675 3676 </ul> 3677 </li> 3678 3679 3680 3681 <li :class="{ 'active': show }" class="level-1 level1 " x-data="{ show: false }" 3682 x-on:click="show = true; removeDisplayFirst()" @click.away="show = false" 3683 > 3684 <a 3685 title="Commercial Flooring" 3686 class="level-1 w-1/4 py-1/5 px-6 text-size13 block text-sm rounded text-darkblack relative" 3687 3688 > 3689 Commercial Flooring 3690 <sp
3690an class="inline items-center rotate-180 absolute"> 3691 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" class="w-5 h-5 inline" width="25" height="25" role="img"> 3692 <path fill-rule="evenodd" d="M5.293 7.293a1 1 0 011.414 0L10 10.586l3.293-3.293a1 1 0 111.414 1.414l-4 4a1 1 0 01-1.414 0l-4-4a1 1 0 010-1.414z" clip-rule="evenodd"/> 3693<title>chevron-down</title></svg> 3694 </span> 3695 </a> 3696 3697 <div class="2xl:block w-1/4 mega-menu-rightBlock absolute top-0 right-0" x-show="show"> 3698 <style>#html-body [data-pb-style=O02YD59]{justify-content:flex-start;display:flex;flex-direction:column;background-position:left top;background-size:cover;background-repeat:no-repeat;background-attachment:scroll}#html-body [data-pb-style=OOE2A60]{border-style:none}#html-body [data-pb-style=GIBTE8V],#html-body [data-pb-style=I3MEDCP]{max-width:100%;height:auto}#html-body [data-pb-style=YUV11TT]{background-position:left top;background-size:cover;background-repeat:no-repeat;background-attachment:scroll;align-self:stretch}#html-body [data-pb-style=BOTYRR2]{display:flex;width:100%}#html-body [data-pb-style=Y56PEM0]{justify-content:flex-start;display:flex;flex-direction:column;background-position:left top;background-size:cover;background-repeat:no-repeat;background-attachment:scroll;width:100%;align-self:stretch}#html-body [data-pb-style=AAF7UJB]{text-align:left}#html-body [data-pb-style=MN0A9R6]{display:inline-block}#html-body [data-pb-style=GVKGSEM]{text-align:center}@media only screen and (max-width: 768px) { #html-body [data-pb-style=OOE2A60]{border-style:none} }</style><div class="mega_menu_banner" data-content-type="row" data-appearance="full-bleed" data-enable-parallax="0" data-parallax-speed="0.5" data-background-images="{}" data-background-type="image" data-video-loop="true" data-video-play-only-visible="true" data-video-lazy-load="true" data-video-fallback-src="" data-element="main" data-pb-style="O02YD59"><figure data-content-type="image" data-appearance="full-width" data-element="main" data-pb-style="OOE2A60"><a href="/shaw-intellect-carpet-tile-9127.html" target="" data-link-type="default" title="" data-element="link"><picture class="pagebuilder-mobile-hidden"><source type="image/webp" srcset="https://www.flooringinc.com/media/wysiwyg/commercial-ad-image.webp"><img class="pagebuilder-mobile-hidden" src="https://www.flooringinc.com/media/wysiwyg/commercial-ad-image.jpg" alt="" title="" width="" height="" loading="lazy" data-element="desktop_image" data-pb-style="I3MEDCP" loading="lazy"></picture><picture class="pagebuilder-mobile-only"><source type="image/webp" srcset="https://www.flooringinc.com/media/wysiwyg/commercial-ad-image.webp"><img class="pagebuilder-mobile-only" src="https://www.flooringinc.com/media/wysiwyg/commercial-ad-image.jpg" alt="" title="" width="" height="" loading="lazy" data-element="mobile_image" data-pb-style="GIBTE8V" loading="lazy"></picture></a></figure><div class="pagebuilder-column-group" data-background-images="{}" data-content-type="column-group" data-appearance="default" data-grid-size="12" data-element="main" data-pb-style="YUV11TT"><div class="pagebuilder-column-line" data-content-type="column-line" data-element="main" data-pb-style="BOTYRR2"><div class="pagebuilder-column" data-content-type="column" data-appearance="full-height" data-background-images="{}" data-element="main" data-pb-style="Y56PEM0"><div class="text-size14 font-medium text-custom-black text-left pt-5" data-content-type="text" data-appearance="default" data-element="main"><p><picture><source type="image/webp" srcset="https://www.flooringinc.com/media/wysiwyg/shaw-logo-copy.webp"><img style="width: 100px;" src="https://www.flooringinc.com/media/wysiwyg/shaw-logo-copy.png" alt="" width="100"></picture></p></div><div class="text-size18 text-custom-black font-bold text-left pt-1 pb-5" data-content-type="text" data-appearance="default" data-element="main"><h2><span style="font-size: 18px;">Shaw Intellect<br>Carpet Tile</span></h2></div><div data-content-type="buttons" data-appearance="inline" data-same-width="false" data-element="main" data-pb-style="AAF7UJB" class="free__Shipping__btn"><div data-content-type="button-item" data-appearance="default" data-element="main" data-pb-style="MN0A9R6"><a class="pagebuilder-button-primary" href="/shaw-intellect-carpet-tile-9127.html" target="" data-link-type="default" data-element="link" data-pb-style="GVKGSEM"><span data-element="link_text">SHOP NOW</span></a></div></div></div></div></div></div> </div> 3699 3700 <ul class="z-10 w-1/2 absolute top-0 level2 flex flex-wrap pt-3 megamenu-extrablock" x-show="show">
3701 <span class="block w-full text-size28 font-medium no-underline text-darkblack pb-2">Commercial Flooring</span> 3702 3703 <li class="level-2 w-4/12 pr-6 pb-6"> 3704 <a href="https://www.flooringinc.com/shop/commercial-flooring/commercial-rubber-flooring.html" 3705 title="Commercial Rubber Flooring" 3706 class="level-2 block"> 3707 <picture class="menucatimg rounded w-full mb-2"><source type="image/webp" srcset="https://www.flooringinc.com//media/catalog/category/main-category-commercial-rubber.webp"><img class="menucatimg rounded w-full mb-2" src="https://www.flooringinc.com//media/catalog/category/main-category-commercial-rubber.jpg" alt="Commercial Rubber Flooring" title="Commercial Rubber Flooring" /></picture> 3708 3709 <span class="block text-sm font-medium no-underline text-darkblack pr-4">Commercial Rubber Flooring</span></a> 3710 </li> 3711 3712 <li class="level-2 w-4/12 pr-6 pb-6"> 3713 <a href="https://www.flooringinc.com/shop/commercial-flooring/commercial-garage-flooring.html" 3714 title="Commercial Garage Flooring" 3715 class="level-2 block"> 3716 <picture class="menucatimg rounded w-full mb-2"><source type="image/webp" srcset="https://www.flooringinc.com//media/catalog/category/fi_commercial_flooring_commercial_garage_flooring_1.webp"><img class="menucatimg rounded w-full mb-2" src="https://www.flooringinc.com//media/catalog/category/fi_commercial_flooring_commercial_garage_flooring_1.jpg" alt="Commercial Garage Flooring" title="Commercial Garage Flooring" /></picture> 3717 3718 <span class="block text-sm font-medium no-underline text-darkblack pr-4">Commercial Garage Flooring</span></a> 3719 </li> 3720 3721 <li class="level-2 w-4/12 pr-6 pb-6"> 3722 <a href="https://www.flooringinc.com/shop/commercial-flooring/commercial-carpet.html" 3723 title="Commercial Carpet Tiles" 3724 class="level-2 block"> 3725 <picture class="menucatimg rounded w-full mb-2"><source type="image/webp" srcset="https://www.flooringinc.com//media/catalog/category/fi_commercial_flooring_commercial_carpet_1.webp"><img class="menucatimg rounded w-full mb-2" src="https://www.flooringinc.com//media/catalog/category/fi_commercial_flooring_commercial_carpet_1.jpg" alt="Commercial Carpet Tiles" title="Commercial Carpet Tiles" /></picture> 3726
3727 <span class="block text-sm font-medium no-underline text-darkblack pr-4">Commercial Carpet Tiles</span></a> 3728 </li> 3729 3730 <li class="level-2 w-4/12 pr-6 pb-6"> 3731 <a href="https://www.flooringinc.com/shop/commercial-flooring/commercial-vinyl.html" 3732 title="Commercial Vinyl Flooring" 3733 class="level-2 block"> 3734 <picture class="menucatimg rounded w-full mb-2"><source type="image/webp" srcset="https://www.flooringinc.com//media/catalog/category/fi_commercial_flooring_commercial_vinyl_1.webp"><img class="menucatimg rounded w-full mb-2" src="https://www.flooringinc.com//media/catalog/category/fi_commercial_flooring_commercial_vinyl_1.jpg" alt="Commercial Vinyl Flooring" title="Commercial Vinyl Flooring" /></picture> 3735 3736 <span class="block text-sm font-medium no-underline text-darkblack pr-4">Commercial Vinyl Flooring</span></a> 3737 </li> 3738 3739 <li class="level-2 w-4/12 pr-6 pb-6"> 3740 <a href="https://www.flooringinc.com/shop/commercial-flooring/commercial-wood-laminate.html" 3741 title="Commercial Wood & Laminate Flooring" 3742 class="level-2 block"> 3743 <picture class="menucatimg rounded w-full mb-2"><source type="image/webp" srcset="https://www.flooringinc.com//media/catalog/category/fi_commercial_flooring_commercial_wood_laminate_1.webp"><img class="menucatimg rounded w-full mb-2" src="https://www.flooringinc.com//media/catalog/category/fi_commercial_flooring_commercial_wood_laminate_1.jpg" alt="Commercial Wood & Laminate Flooring" title="Commercial Wood & Laminate Flooring" /></picture> 3744 3745 <span class="block text-sm font-medium no-underline text-darkblack pr-4">Commercial Wood & Laminate Flooring</span></a> 3746 </li> 3747 3748 <li class="level-2 w-4/12 pr-6 pb-6"> 3749 <a href="https://www.flooringinc.com/shop/commercial-flooring/gym-floor-covers-protection.html" 3750 title="Gym Floor Covers | Floor Protection" 3751 class="level-2 block"> 3752 <picture class="menucatimg rounded w-full mb-2"><source type="image/webp" srcset="https://www.flooringinc.com//media/catalog/category/Gym_Floor_Covers_Category.webp"><img class="menucatimg rounded w-full mb-2" src="https://www.flooringinc.com//media/catalog/category/Gym_Floor_Covers_Category.jpg" alt="Gym Floor Covers | Floor Protection" title="Gym Floor Covers | Floor Protection" /></picture> 3753
3754 <span class="block text-sm font-medium no-underline text-darkblack pr-4">Gym Floor Covers | Floor Protection</span></a> 3755 </li> 3756 3757 3758 <a class="view-all mt-2 underline-imp text-size12 font-medium text-darkblack absolute" style="top:410px;" href="https://www.flooringinc.com/shop/commercial-flooring.html" >View All</a> 3759 3760 3761 </ul> 3762 </li> 3763 3764 3765 3766 <li :class="{ 'active': show }" class="level-1 level1 " x-data="{ show: false }" 3767 x-on:click="show = true; removeDisplayFirst()" @click.away="show = false" 3768 > 3769 <a 3770 title="Floors by Activity" 3771 class="level-1 w-1/4 py-1/5 px-6 text-size13 block text-sm rounded text-darkblack relative" 3772 3773 > 3774 Floors by Activity 3775 <span class="inline items-center rotate-180 absolute"> 3776 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" class="w-5 h-5 inline" width="25" height="25" role="img"> 3777 <path fill-rule="evenodd" d="M5.293 7.293a1 1 0 011.414 0L10 10.586l3.293-3.293a1 1 0 111.414 1.414l-4 4a1 1 0 01-1.414 0l-4-4a1 1 0 010-1.414z" clip-rule="evenodd"/> 3778<title>chevron-down</title></svg> 3779 </span> 3780 </a> 3781 3782 <div class="2xl:block w-1/4 mega-menu-rightBlock absolute top-0 right-0" x-show="show"> 3783 <style>#html-body [data-pb-style=KFA34BQ]{justify-content:flex-start;display:flex;flex-direction:column;background-position:left top;background-size:cover;background-repeat:no-repeat;background-attachment:scroll}#html-body [data-pb-style=SWIWRMK]{border-style:none}#html-body [data-pb-style=CW1JEO7],#html-body [data-pb-style=YR16OUN]{max-width:100%;height:auto}#html-body [data-pb-style=JE5OVK0]{background-position:left top;background-size:cover;background-repeat:no-repeat;background-attachment:scroll;align-self:stretch}#html-body [data-pb-style=KFIHXY2]{display:flex;width:100%}#html-body [data-pb-style=PAOFWTU]{justify-content:flex-start;display:flex;flex-direction:column;background-position:left top;background-size:cover;background-repeat:no-repeat;background-attachment:scroll;width:100%;align-self:stretch}#html-body [data-pb-style=GGMYAMB]{text-align:left}#html-body [data-pb-style=H9XX0T5]{display:inline-block}#html-body [data-pb-style=VQK95N0]{text-align:center}@media only screen and (max-width: 768px) { #html-body [data-pb-style=SWIWRMK]{border-style:none} }</style><div class="mega_menu_banner" data-content-type="row" data-appearance="full-bleed" data-enable-parallax="0" data-parallax-speed="0.5" data-background-images="{}" data-background-type="image" data-video-loop="true" data-video-play-only-visible="true" data-video-lazy-load="true" data-video-fallback-src="" data-element="main" data-pb-style="KFA34BQ"><figure data-content-type="image" data-appearance="full-width" data-element="main" data-pb-style="SWIWRMK"><a href="/progame-sports-tiles-13636.html" target="" data-link-type="default" title="" data-element="link"><picture class="pagebuilder-mobile-hidden"><source type="image/webp" srcset="https://www.flooringinc.com/media/wysiwyg/by-activity-ad-image.webp"><img class="pagebuilder-mobile-hidden" src="https://www.flooringinc.com/media/wysiwyg/by-activity-ad-image.jpg" alt="" title="" width="" height="" loading="lazy" data-element="desktop_image" data-pb-style="CW1JEO7" loading="lazy"></picture><picture class="pagebuilder-mobile-only"><source type="image/webp" srcset="https://www.flooringinc.com/media/wysiwyg/by-activity-ad-image.webp"><img class="pagebuilder-mobile-only" src="https://www.flooringinc.com/media/wysiwyg/by-activity-ad-image.jpg" alt="" title="" width="" height="" loading="lazy" data-element="mobile_image" data-pb-style="YR16OUN" loading="lazy"></picture></a></figure><div class="pagebuilder-column-group" data-background-images="{}" data-content-type="column-group" data-appearance="default" data-grid-size="12" data-element="main" data-pb-style="JE5OVK0"><div class="pagebuilder-column-line" data-content-type="column-line" data-element="main" data-pb-style="KFIHXY2"><div class="pagebuilder-column" data-content-type="column" data-appearance="full-height" data-background-images="{}" data-element="main" data-pb-style="PAOFWTU"><div class="text-size14 font-medium text-custom-black text-left pt-5" data-content-type="text" data-appearance="default" data-element="main"><p><picture><source type="image/webp" srcset="https://www.flooringinc.com/media/wysiwyg/Progame_Color.webp"><img id="BEVL1A7" style="width: 100px; height: 33px;" src="https://www.flooringinc.com/media/wysiwyg/Progame_Color.png" alt="" width="100" height="17"></picture></p></div><div class="text-size18 text-custom-black font-bold text-left pt-1 pb-5" data-content-type="text" data-appearance="default" data-element="main"><h2><span style="font-size: 18px;">ProGame Sports Tiles</span></h2></div><div data-content-type="buttons" data-appearance="inline" data-same-width="false" data-element="main" data-pb-style="GGMYAMB" class="free__Shipping__btn"><div data-content-type="button-item" data-appearance="default" data-element="main" data-pb-style="H9XX0T5"><a class="pagebuilder-button-primary" href="/progame-sports-tiles-13636.html" target="" data-link-type="default" data-element="link" data-pb-style="VQK95N0"><span data-element="link_text">SHOP NOW</span></a></div></div></div></div></div></div> </div> 3784 3785 <ul class="z-10 w-1/2 absolute top-0 level2 flex flex-wrap pt-3 megamenu-extrablock" x-show="show">
3786 <span class="block w-full text-size28 font-medium no-underline text-darkblack pb-2">Floors by Activity</span> 3787 3788 <li class="level-2 w-4/12 pr-6 pb-6"> 3789 <a href="https://www.flooringinc.com/shop/shop-by-activity/fitness-flooring.html" 3790 title="Fitness Flooring" 3791 class="level-2 block"> 3792 <picture class="menucatimg rounded w-full mb-2"><source type="image/webp" srcset="https://www.flooringinc.com//media/catalog/category/fi_shop_by_activity_fitness_flooring_1.webp"><img class="menucatimg rounded w-full mb-2" src="https://www.flooringinc.com//media/catalog/category/fi_shop_by_activity_fitness_flooring_1.jpg" alt="Fitness Flooring" title="Fitness Flooring" /></picture> 3793 3794 <span class="block text-sm font-medium no-underline text-darkblack pr-4">Fitness Flooring</span></a> 3795 </li> 3796 3797 <li class="level-2 w-4/12 pr-6 pb-6"> 3798 <a href="https://www.flooringinc.com/shop/shop-by-activity/dance-marley-flooring.html" 3799 title="Dance Flooring | Marley Floor" 3800 class="level-2 block"> 3801 <picture class="menucatimg rounded w-full mb-2"><source type="image/webp" srcset="https://www.flooringinc.com//media/catalog/category/dance-main-category.webp"><img class="menucatimg rounded w-full mb-2" src="https://www.flooringinc.com//media/catalog/category/dance-main-category.jpg" alt="Dance Flooring | Marley Floor" title="Dance Flooring | Marley Floor" /></picture> 3802 3803 <span class="block text-sm font-medium no-underline text-darkblack pr-4">Dance Flooring | Marley Floor</span></a> 3804 </li> 3805 3806 <li class="level-2 w-4/12 pr-6 pb-6"> 3807 <a href="https://www.flooringinc.com/shop/shop-by-activity/sport-and-court-flooring.html" 3808 title="Sport & Court Flooring" 3809 class="level-2 block"> 3810 <picture class="menucatimg rounded w-full mb-2"><source type="image/webp" srcset="https://www.flooringinc.com//media/catalog/category/Sport_Court_Category.webp"><img class="menucatimg rounded w-full mb-2" src="https://www.flooringinc.com//media/catalog/category/Sport_Court_Category.jpg" alt="Sport & Court Flooring" title="Sport & Court Flooring" /></picture> 3811
3812 <span class="block text-sm font-medium no-underline text-darkblack pr-4">Sport & Court Flooring</span></a> 3813 </li> 3814 3815 <li class="level-2 w-4/12 pr-6 pb-6"> 3816 <a href="https://www.flooringinc.com/shop/shop-by-activity/martial-arts-flooring.html" 3817 title="Martial Arts Mats " 3818 class="level-2 block"> 3819 <picture class="menucatimg rounded w-full mb-2"><source type="image/webp" srcset="https://www.flooringinc.com//media/catalog/category/fi_shop_by_activity_martial_arts_flooring_1.webp"><img class="menucatimg rounded w-full mb-2" src="https://www.flooringinc.com//media/catalog/category/fi_shop_by_activity_martial_arts_flooring_1.jpg" alt="Martial Arts Mats " title="Martial Arts Mats " /></picture> 3820 3821 <span class="block text-sm font-medium no-underline text-darkblack pr-4">Martial Arts Mats </span></a> 3822 </li> 3823 3824 <li class="level-2 w-4/12 pr-6 pb-6"> 3825 <a href="https://www.flooringinc.com/shop/shop-by-activity/cheer-mats.html" 3826 title="Cheer Mats" 3827 class="level-2 block"> 3828 <picture class="menucatimg rounded w-full mb-2"><source type="image/webp" srcset="https://www.flooringinc.com//media/catalog/category/Cheer_Mats_Category.webp"><img class="menucatimg rounded w-full mb-2" src="https://www.flooringinc.com//media/catalog/category/Cheer_Mats_Category.jpg" alt="Cheer Mats" title="Cheer Mats" /></picture> 3829 3830 <span class="block text-sm font-medium no-underline text-darkblack pr-4">Cheer Mats</span></a> 3831 </li> 3832 3833 <li class="level-2 w-4/12 pr-6 pb-6"> 3834 <a href="https://www.flooringinc.com/shop/shop-by-activity/wrestling-mats.html" 3835 title="Wrestling Mats" 3836 class="level-2 block"> 3837 <picture class="menucatimg rounded w-full mb-2"><source type="image/webp" srcset="https://www.flooringinc.com//media/catalog/category/Wrestling_Mats_Category_1.webp"><img class="menucatimg rounded w-full mb-2" src="https://www.flooringinc.com//media/catalog/category/Wrestling_Mats_Category_1.jpg" alt="Wrestling Mats" title="Wrestling Mats" /></picture> 3838
3839 <span class="block text-sm font-medium no-underline text-darkblack pr-4">Wrestling Mats</span></a> 3840 </li> 3841 3842 3843 <a class="view-all mt-2 underline-imp text-size12 font-medium text-darkblack absolute" style="top:410px;" href="https://www.flooringinc.com/shop/shop-by-activity.html" >View All</a> 3844 3845 3846 </ul> 3847 </li> 3848 3849 3850 3851 <li :class="{ 'active': show }" class="level-1 level1 " x-data="{ show: false }" 3852 x-on:click="show = true; removeDisplayFirst()" @click.away="show = false" 3853 > 3854 <a 3855 title="Floors by Space" 3856 class="level-1 w-1/4 py-1/5 px-6 text-size13 block text-sm rounded text-darkblack relative" 3857 3858 > 3859 Floors by Space 3860 <span class="inline items-center rotate-180 absolute"> 3861 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" class="w-5 h-5 inline" width="25" height="25" role="img"> 3862 <path fill-rule="evenodd" d="M5.293 7.293a1 1 0 011.414 0L10 10.586l3.293-3.293a1 1 0 111.414 1.414l-4 4a1 1 0 01-1.414 0l-4-4a1 1 0 010-1.414z" clip-rule="evenodd"/> 3863<title>chevron-down</title></svg> 3864 </span> 3865 </a> 3866 3867 <ul class="z-10 w-1/2 absolute top-0 level2 flex flex-wrap pt-3 megamenu-extrablock" x-show="show"> 3868 <span class="block w-full text-size28 font-medium no-underline text-darkblack pb-2">Floors by Space</span> 3869 3870 <li class="level-2 w-4/12 pr-6 pb-6"> 3871 <a href="https://www.flooringinc.com/shop/shop-by-space/kitchen-flooring.html" 3872 title="Kitchen Flooring" 3873 class="level-2 block"> 3874 <picture class="menucatimg rounded w-full mb-2"><source type="image/webp" srcset="https://www.flooringinc.com//media/catalog/category/kitchen-main-category.webp"><img class="menucatimg rounded w-full mb-2" src="https://www.flooringinc.com//media/catalog/category/kitchen-main-category.jpg" alt="Kitchen Flooring" title="Kitchen Flooring" /></picture> 3875 3876 <span class="block text-sm font-medium no-underline text-darkblack pr-4">Kitchen Flooring</span></a> 3877 </li> 3878 3879 <li class="level-2 w-4/12 pr-6 pb-6"> 3880 <a href="https://www.flooringinc.com/shop/shop-by-space/bathroom-flooring.html" 3881 title="Bathroom Flooring" 3882 class="level-2 block"> 3883 <picture class="menucatimg rounded w-full mb-2"><source type="image/webp" srcset="https://www.flooringinc.com//media/catalog/category/bathroom-main-category.webp"><img class="menucatimg rounded w-full mb-2" src="https://www.flooringinc.com//media/catalog/category/bathroom-main-category.jpg" alt="Bathroom Flooring" title="Bathroom Flooring" /></picture> 3884
3885 <span class="block text-sm font-medium no-underline text-darkblack pr-4">Bathroom Flooring</span></a> 3886 </li> 3887 3888 <li class="level-2 w-4/12 pr-6 pb-6"> 3889 <a href="https://www.flooringinc.com/shop/shop-by-space/commercial-flooring.html" 3890 title="Commercial Flooring" 3891 class="level-2 block"> 3892 <picture class="menucatimg rounded w-full mb-2"><source type="image/webp" srcset="https://www.flooringinc.com//media/catalog/category/fi_shop_by_space_commercial_flooring_1.webp"><img class="menucatimg rounded w-full mb-2" src="https://www.flooringinc.com//media/catalog/category/fi_shop_by_space_commercial_flooring_1.jpg" alt="Commercial Flooring" title="Commercial Flooring" /></picture> 3893 3894 <span class="block text-sm font-medium no-underline text-darkblack pr-4">Commercial Flooring</span></a> 3895 </li> 3896 3897 <li class="level-2 w-4/12 pr-6 pb-6"> 3898 <a href="https://www.flooringinc.com/shop/shop-by-space/gym-flooring.html" 3899 title="Gym Flooring" 3900 class="level-2 block"> 3901 <picture class="menucatimg rounded w-full mb-2"><source type="image/webp" srcset="https://www.flooringinc.com//media/catalog/category/gym-main-category_1.webp"><img class="menucatimg rounded w-full mb-2" src="https://www.flooringinc.com//media/catalog/category/gym-main-category_1.jpg" alt="Gym Flooring" title="Gym Flooring" /></picture> 3902 3903 <span class="block text-sm font-medium no-underline text-darkblack pr-4">Gym Flooring</span></a> 3904 </li> 3905 3906 <li class="level-2 w-4/12 pr-6 pb-6"> 3907 <a href="https://www.flooringinc.com/shop/shop-by-space/garage-flooring.html" 3908 title="Garage Flooring" 3909 class="level-2 block"> 3910 <picture class="menucatimg rounded w-full mb-2"><source type="image/webp" srcset="https://www.flooringinc.com//media/catalog/category/fi_shop_by_space_garage_flooring_1.webp"><img class="menucatimg rounded w-full mb-2" src="https://www.flooringinc.com//media/catalog/category/fi_shop_by_space_garage_flooring_1.jpg" alt="Garage Flooring" title="Garage Flooring" /></picture> 3911
3912 <span class="block text-sm font-medium no-underline text-darkblack pr-4">Garage Flooring</span></a> 3913 </li> 3914 3915 <li class="level-2 w-4/12 pr-6 pb-6"> 3916 <a href="https://www.flooringinc.com/shop/shop-by-space/outdoor-flooring.html" 3917 title="Outdoor Flooring" 3918 class="level-2 block"> 3919 <picture class="menucatimg rounded w-full mb-2"><source type="image/webp" srcset="https://www.flooringinc.com//media/catalog/category/fi_shop_by_space_outdoor_flooring_1.webp"><img class="menucatimg rounded w-full mb-2" src="https://www.flooringinc.com//media/catalog/category/fi_shop_by_space_outdoor_flooring_1.jpg" alt="Outdoor Flooring" title="Outdoor Flooring" /></picture> 3920 3921 <span class="block text-sm font-medium no-underline text-darkblack pr-4">Outdoor Flooring</span></a> 3922 </li> 3923 3924 3925 <a class="view-all mt-2 underline-imp text-size12 font-medium text-darkblack absolute" style="top:410px;" href="https://www.flooringinc.com/shop/shop-by-space.html" >View All</a> 3926 3927 3928 </ul> 3929 </li> 3930 3931 3932 3933 <li :class="{ 'active': show }" class="level-1 level1 " x-data="{ show: false }" 3934 x-on:click="show = true; removeDisplayFirst()" @click.away="show = false" 3935 > 3936 <a 3937 title="Underlayment & Flooring Accessories" 3938 class="level-1 w-1/4 py-1/5 px-6 text-size13 block text-sm rounded text-darkblack relative" 3939 3940 > 3941 Underlayment & Flooring Accessories 3942 <span class="inline items-center rotate-180 absolute"> 3943 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" class="w-5 h-5 inline" width="25" height="25" role="img"> 3944 <path fill-rule="evenodd" d="M5.293 7.293a1 1 0 011.414 0L10 10.586l3.293-3.293a1 1 0 111.414 1.414l-4 4a1 1 0 01-1.414 0l-4-4a1 1 0 010-1.414z" clip-rule="evenodd"/> 3945<title>chevron-down</title></svg> 3946 </span> 3947 </a> 3948 3949 <div class="2xl:block w-1/4 mega-menu-rightBlock absolute top-0 right-0" x-show="show"> 3950 <style>#html-body [data-pb-style=LTPNQ8C]{justify-content:flex-start;display:flex;flex-direction:column;background-position:left top;background-size:cover;background-repeat:no-repeat;background-attachment:scroll}#html-body [data-pb-style=R2I2333]{border-style:none}#html-body [data-pb-style=K97631E],#html-body [data-pb-style=WX0AV4C]{max-width:100%;height:auto}@media only screen and (max-width: 768px) { #html-body [data-pb-style=R2I2333]{border-style:none} }</style><div class="mega_menu_banner" data-content-type="row" data-appearance="full-bleed" data-enable-parallax="0" data-parallax-speed="0.5" data-background-images="{}" data-background-type="image" data-video-loop="true" data-video-play-only-visible="true" data-video-lazy-load="true" data-video-fallback-src="" data-element="main" data-pb-style="LTPNQ8C"><figure data-content-type="image" data-appearance="full-width" data-element="main" data-pb-style="R2I2333"><a href="https://www.flooringinc.com/pro-advantage" target="" data-link-type="page" title="" data-element="link"><picture class="pagebuilder-mobile-hidden"><source type="image/webp" srcset="https://www.flooringinc.com/media/wysiwyg/nav-pro-adv-2-ad.webp"><img class="pagebuilder-mobile-hidden" src="https://www.flooringinc.com/media/wysiwyg/nav-pro-adv-2-ad.jpg" alt="" title="" width="" height="" loading="lazy" data-element="desktop_image" data-pb-style="WX0AV4C" loading="lazy"></picture><picture class="pagebuilder-mobile-only"><source type="image/webp" srcset="https://www.flooringinc.com/media/wysiwyg/nav-pro-adv-2-ad.webp"><img class="pagebuilder-mobile-only" src="https://www.flooringinc.com/media/wysiwyg/nav-pro-adv-2-ad.jpg" alt="" title="" width="" height="" loading="lazy" data-element="mobile_image" data-pb-style="K97631E" loading="lazy"></picture></a></figure></div> </div> 3951 3952 <ul class="z-10 w-1/2 absolute top-0 level2 flex flex-wrap pt-3 megamenu-extrablock" x-show="show">
3953 <span class="block w-full text-size28 font-medium no-underline text-darkblack pb-2">Underlayment & Flooring Accessories</span> 3954 3955 <li class="level-2 w-4/12 pr-6 pb-6"> 3956 <a href="https://www.flooringinc.com/shop/installation-care/adhesives-glue.html" 3957 title="Flooring Adhesives & Glue" 3958 class="level-2 block"> 3959 <picture class="menucatimg rounded w-full mb-2"><source type="image/webp" srcset="https://www.flooringinc.com//media/catalog/category/fi_installation_care_adhesives_glue_1.webp"><img class="menucatimg rounded w-full mb-2" src="https://www.flooringinc.com//media/catalog/category/fi_installation_care_adhesives_glue_1.jpg" alt="Flooring Adhesives & Glue" title="Flooring Adhesives & Glue" /></picture> 3960 3961 <span class="block text-sm font-medium no-underline text-darkblack pr-4">Flooring Adhesives & Glue</span></a> 3962 </li> 3963 3964 <li class="level-2 w-4/12 pr-6 pb-6"> 3965 <a href="https://www.flooringinc.com/shop/installation-care/tape.html" 3966 title="Floor and Mat Tape" 3967 class="level-2 block"> 3968 <picture class="menucatimg rounded w-full mb-2"><source type="image/webp" srcset="https://www.flooringinc.com//media/catalog/category/fi_installation_care_tape_1.webp"><img class="menucatimg rounded w-full mb-2" src="https://www.flooringinc.com//media/catalog/category/fi_installation_care_tape_1.jpg" alt="Floor and Mat Tape" title="Floor and Mat Tape" /></picture> 3969 3970 <span class="block text-sm font-medium no-underline text-darkblack pr-4">Floor and Mat Tape</span></a> 3971 </li> 3972 3973 <li class="level-2 w-4/12 pr-6 pb-6"> 3974 <a href="https://www.flooringinc.com/shop/installation-care/accessories.html" 3975 title="Installation Accessories" 3976 class="level-2 block"> 3977 <picture class="menucatimg rounded w-full mb-2"><source type="image/webp" srcset="https://www.flooringinc.com//media/catalog/category/fi_installation_care_accessories_1.webp"><img class="menucatimg rounded w-full mb-2" src="https://www.flooringinc.com//media/catalog/category/fi_installation_care_accessories_1.jpg" alt="Installation Accessories" title="Installation Accessories" /></picture> 3978
3979 <span class="block text-sm font-medium no-underline text-darkblack pr-4">Installation Accessories</span></a> 3980 </li> 3981 3982 <li class="level-2 w-4/12 pr-6 pb-6"> 3983 <a href="https://www.flooringinc.com/shop/installation-care/trims-moldings.html" 3984 title="Floor Trims & Moldings" 3985 class="level-2 block"> 3986 <picture class="menucatimg rounded w-full mb-2"><source type="image/webp" srcset="https://www.flooringinc.com//media/catalog/category/fi_installation_care_trims_moldings_1.webp"><img class="menucatimg rounded w-full mb-2" src="https://www.flooringinc.com//media/catalog/category/fi_installation_care_trims_moldings_1.jpg" alt="Floor Trims & Moldings" title="Floor Trims & Moldings" /></picture> 3987 3988 <span class="block text-sm font-medium no-underline text-darkblack pr-4">Floor Trims & Moldings</span></a> 3989 </li> 3990 3991 <li class="level-2 w-4/12 pr-6 pb-6"> 3992 <a href="https://www.flooringinc.com/shop/installation-care/underlayment.html" 3993 title="Flooring Underlayment" 3994 class="level-2 block"> 3995 <picture class="menucatimg rounded w-full mb-2"><source type="image/webp" srcset="https://www.flooringinc.com//media/catalog/category/fi_installation_care_underlayment_1.webp"><img class="menucatimg rounded w-full mb-2" src="https://www.flooringinc.com//media/catalog/category/fi_installation_care_underlayment_1.jpg" alt="Flooring Underlayment" title="Flooring Underlayment" /></picture> 3996 3997 <span class="block text-sm font-medium no-underline text-darkblack pr-4">Flooring Underlayment</span></a> 3998 </li> 3999 4000 <li class="level-2 w-4/12 pr-6 pb-6"> 4001 <a href="https://www.flooringinc.com/shop/installation-care/cleaners.html" 4002 title="Flooring Cleaners" 4003 class="level-2 block"> 4004 <picture class="menucatimg rounded w-full mb-2"><source type="image/webp" srcset="https://www.flooringinc.com//media/catalog/category/fi_installation_care_cleaners_1.webp"><img class="menucatimg rounded w-full mb-2" src="https://www.flooringinc.com//media/catalog/category/fi_installation_care_cleaners_1.jpg" alt="Flooring Cleaners" title="Flooring Cleaners" /></picture> 4005
4006 <span class="block text-sm font-medium no-underline text-darkblack pr-4">Flooring Cleaners</span></a> 4007 </li> 4008 4009 4010 <a class="view-all mt-2 underline-imp text-size12 font-medium text-darkblack absolute" style="top:410px;" href="https://www.flooringinc.com/shop/installation-care.html" >View All</a> 4011 4012 4013 </ul> 4014 </li> 4015 4016 4017 4018 <li :class="{ 'active': show }" class="level-1 level1 " x-data="{ show: false }" 4019 x-on:click="show = true; removeDisplayFirst()" @click.away="show = false" 4020 > 4021 <a 4022 title="Specials" 4023 class="level-1 w-1/4 py-1/5 px-6 text-size13 block text-sm rounded text-darkblack relative" 4024 4025 > 4026 Specials 4027 <span class="inline items-center rotate-180 absolute"> 4028 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" class="w-5 h-5 inline" width="25" height="25" role="img"> 4029 <path fill-rule="evenodd" d="M5.293 7.293a1 1 0 011.414 0L10 10.586l3.293-3.293a1 1 0 111.414 1.414l-4 4a1 1 0 01-1.414 0l-4-4a1 1 0 010-1.414z" clip-rule="evenodd"/> 4030<title>chevron-down</title></svg> 4031 </span> 4032 </a> 4033 4034 <ul class="z-10 w-1/2 absolute top-0 level2 flex flex-wrap pt-3 megamenu-extrablock" x-show="show"> 4035 <span class="block w-full text-size28 font-medium no-underline text-darkblack pb-2">Specials</span> 4036 4037 <li class="level-2 w-4/12 pr-6 pb-6"> 4038 <a href="https://www.flooringinc.com/shop/specials/hot-buys.html" 4039 title="Flooring Deals" 4040 class="level-2 block"> 4041 <picture class="menucatimg rounded w-full mb-2"><source type="image/webp" srcset="https://www.flooringinc.com//media/catalog/category/Hot_Buys_2.webp"><img class="menucatimg rounded w-full mb-2" src="https://www.flooringinc.com//media/catalog/category/Hot_Buys_2.jpg" alt="Flooring Deals" title="Flooring Deals" /></picture> 4042 4043 <span class="block text-sm font-medium no-underline text-darkblack pr-4">Flooring Deals</span></a> 4044 </li> 4045 4046 <li class="level-2 w-4/12 pr-6 pb-6"> 4047 <a href="https://www.flooringinc.com/shop/specials/made-in-usa.html" 4048 title="American Made" 4049 class="level-2 block"> 4050 <picture class="menucatimg rounded w-full mb-2"><source type="image/webp" srcset="https://www.flooringinc.com//media/catalog/category/Made_in_the_USA_2_1.webp"><img class="menucatimg rounded w-full mb-2" src="https://www.flooringinc.com//media/catalog/category/Made_in_the_USA_2_1.jpg" alt="American Made" title="American Made" /></picture> 4051
4052 <span class="block text-sm font-medium no-underline text-darkblack pr-4">American Made</span></a> 4053 </li> 4054 4055 <li class="level-2 w-4/12 pr-6 pb-6"> 4056 <a href="https://www.flooringinc.com/shop/specials/quick-ship.html" 4057 title="Quick Ship" 4058 class="level-2 block"> 4059 <picture class="menucatimg rounded w-full mb-2"><source type="image/webp" srcset="https://www.flooringinc.com//media/catalog/category/Quick_Ship_1.webp"><img class="menucatimg rounded w-full mb-2" src="https://www.flooringinc.com//media/catalog/category/Quick_Ship_1.jpg" alt="Quick Ship" title="Quick Ship" /></picture> 4060 4061 <span class="block text-sm font-medium no-underline text-darkblack pr-4">Quick Ship</span></a> 4062 </li> 4063 4064 <li class="level-2 w-4/12 pr-6 pb-6"> 4065 <a href="https://www.flooringinc.com/shop/specials/new-arrivals.html" 4066 title="New Arrivals" 4067 class="level-2 block"> 4068 <picture class="menucatimg rounded w-full mb-2"><source type="image/webp" srcset="https://www.flooringinc.com//media/catalog/category/New_Arrivals_1_1.webp"><img class="menucatimg rounded w-full mb-2" src="https://www.flooringinc.com//media/catalog/category/New_Arrivals_1_1.jpg" alt="New Arrivals" title="New Arrivals" /></picture> 4069 4070 <span class="block text-sm font-medium no-underline text-darkblack pr-4">New Arrivals</span></a> 4071 </li> 4072 4073 4074 <a class="view-all mt-2 underline-imp text-size12 font-medium text-darkblack absolute" style="top:410px;" href="https://www.flooringinc.com/shop/specials.html" >View All</a> 4075 4076 4077 </ul> 4078 </li> 4079 4080 4081 4082 4083 <!--<a class="view-all main-cats mt-2 underline px-6 text-size12 font-medium text-darkblack" href="https://www.flooringinc.com/all-categories.html" >View All</a>-->
4083 4084 4085 </ul> 4086 </div> 4087 4088 </div> 4089 </div> 4090 </template> 4091 </div> 4092 <div class="menu_static_links"> 4093 <style>#html-body [data-pb-style=QGH21I8]{justify-content:flex-start;display:flex;flex-direction:column;background-position:left top;background-size:cover;background-repeat:no-repeat;background-attachment:scroll}</style><div data-content-type="row" data-appearance="contained" data-element="main"><div data-enable-parallax="0" data-parallax-speed="0.5" data-background-images="{}" data-background-type="image" data-video-loop="true" data-video-play-only-visible="true" data-video-lazy-load="true" data-video-fallback-src="" data-element="inner" data-pb-style="QGH21I8"><div data-content-type="text" data-appearance="default" data-element="main"><ul> 4094<li><a tabindex="0" href="/shop-by-category/specials/hot-buys.html">Sale</a></li> 4095<li><a tabindex="0" href="/blog">Get Inspired & How To</a></li> 4096</ul></div></div></div> </div> 4097 </nav> 4098 </div> 4099 4100</div>
4101<script> 4102 'use strict'; 4103 4104 const initMenuDesktop_6ab67d17d86df = () => { 4105 return { 4106 hoverTopPosition: '100%', 4107 setActiveMenu(menuNode) { 4108 Array.from(menuNode.querySelectorAll('a')).filter(link => { 4109 return link.href === window.location.href.split('?')[0]; 4110 }).map(item => { 4111 if (!item.classList.contains('level-0')) { 4112 item.classList.add('underline'); 4113 } 4114 item.closest('div.level-0') && 4115 item.closest('div.level-0').classList.add('border-secondary'); 4116 }); 4117 } 4118 } 4119 } 4120</script>
vendor: 1 bytes, line 4120
4120
4121<script> 4122 // Function to remove 'display-first' class from other list items 4123 function removeDisplayFirst() { 4124 var listItems = document.querySelectorAll('.level1'); 4125 listItems.forEach(function(item) { 4126 if (item.id !== this.id) { 4127 item.classList.remove('display-first'); 4128 } 4129 }); 4130 } 4131</script>
4131 4132 <!--Search--> 4133 <div class="w-full" 4134 id="search-content" 4135 :class="{ 'block': searchOpen}" 4136 @click.outside="searchOpen = false" 4137 > 4138 4139<div class="py-0 px-0 pl-5 mx-auto text-black" x-data="initMirasvitSearch()" @click.away="closeSearch"> 4140 <form class="form minisearch relative" id="search_mini_form" action="https://www.flooringinc.com/catalogsearch/result/" method="get" autocomplete="off"> 4141 <label class="hidden" for="search" data-role="minisearch-label"> 4142 <span>Search</span> 4143 </label> 4144 <input id="search" x-ref="searchInput" type="search" name="q" value="" placeholder="Find it here…" maxlength="128" class="w-full px-5 py-0 text-sm leading-normal transition appearance-none rounded-md 4145 focus:outline-none focus:border-transparent font-normal" x-on:keyup.debounce.300="doSearch($refs.searchInput.value)" x-on:click.debounce.150="openSearch" x-on:keydown.debounce.100="startSearch($refs.searchInput.value)"/> 4146 <button class="action search absolute">btn</button> 4147 </form> 4148 4149 <div x-cloak x-show="isOpen" id="mirasvitSearchResults" class="search_box transition appearance-none absolute"> 4150 <div class="flex flex-row justify-center items-center w-full h-full fixed select-none z-50" 4151 style="left: 50%;top: 50%;transform: translateX(-50%) translateY(-50%);background: rgba(255,255,255,0.7);" 4152 x-show="isLoading" 4153 x-transition:enter="ease-out duration-200" 4154 x-transition:enter-start="opacity-0" 4155 x-transition:enter-end="opacity-100" 4156 x-transition:leave="ease-in duration-200" 4157 x-transition:leave-start="opacity-100" 4158 x-transition:leave-end="opacity-0"> 4159 <!-- By Sam Herbert (@sherb), for everyone. More @ http://goo.gl/7AJzbL --> 4160<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 57 57" stroke="currentColor" class="text-primary" width="57" height="57" role="img"> 4161 <g fill="none" fill-rule="evenodd"> 4162 <g transform="translate(1 1)" stroke-width="2"> 4163 <circle cx="5" cy="50" r="5"> 4164 <animate attributeName="cy" begin="0s" dur="2.2s" values="50;5;50;50" calcMode="linear" repeatCount="indefinite"/> 4165 <animate attributeName="cx" begin="0s" dur="2.2s" values="5;27;49;5" calcMode="linear" repeatCount="indefinite"/> 4166 </circle> 4167 <circle cx="27" cy="5" r="5"> 4168 <animate attributeName="cy" begin="0s" dur="2.2s" from="5" to="5" values="5;50;50;5" calcMode="linear" repeatCount="indefinite"/> 4169 <animate attributeName="cx" begin="0s" dur="2.2s" from="27" to="27" values="27;49;5;27" calcMode="linear" repeatCount="indefinite"/> 4170 </circle> 4171 <circle cx="49" cy="50" r="5"> 4172 <animate attributeName="cy" begin="0s" dur="2.2s" values="50;50;5;50" calcMode="linear" repeatCount="indefinite"/> 4173 <animate attributeName="cx" from="49" to="49" begin="0s" dur="2.2s" values="49;5;27;49" calcMode="linear" repeatCount="indefinite"/> 4174 </circle> 4175 </g> 4176 </g> 4177<title>loader</title></svg> 4178 <div class="ml-10 text-primary text-xl"> 4179 Loading... </div> 4180</div> 4181 4182 <template x-if="hotSearch"> 4183 <div class="hotSearch"> 4184 <p class="text-lg leading-normal transition appearance-none text-grey-800 lg:text-xl border-b border-100 p-2 flex"> 4185 Hot Searches </p> 4186 <div class="my-3 flex flex-wrap"> 4187 </div> 4188 </div> 4189 </template> 4190 4191 <template x-if="searchResults"> 4192 <div class="search_box_content w-full flex flex-wrap "> 4193 <div class="search_box_left relative"> 4194 <p class="product_title text-size20 font-medium text-black"> 4195 Top Results <template x-if="searchProducts != ''"> 4196 <small class="text-size16 font-medium text-black hidden">(<span x-html="searchProductsTotal"></span>)</small> 4197 </template> 4198 </p> 4199 <div class="viewAll absolute right-0"> 4200 <div> 4201 <a x-bind:href="numberResultsUrl"> 4202 <p class="text-size14 font-normal text-black underline number-results" x-html="numberResults"></p> 4203 </a> 4204 </div> 4205 </div> 4206 <div class="search_box_left_content lg:grid-cols-6"> 4207 <template x-for="item in searchProducts"> 4208 <div class="search_products flex"> 4209 <a x-bind:href="`${item.url}`" class=""> 4210 <div class="w-full product-image"> 4211 <img x-bind:src="`${item.imageUrl}`" width="275" height="182" class="w-full"/> 4212 </div> 4213 </a> 4214 <div class="w-full product-content"> 4215 <a x-bind:href="`${item.url}`" class=""><h4 class="product-name text-size14 font-medium text-black" x-html="item.name"></h4></a> 4216 <template x-if="item.rating > 0"> 4217 <div class="ratings flex item-center"> 4218 <div x-html="item.rating"></div>(<span x-html="item.reviews"></span>) 4219 </div> 4220 </template> 4221 <template x-if="item.orderFreeSample > 0"> 4222 <div x-cloak x-data="{showModal: false, htmlContent: '',pid: item.proId }"> 4223 <button type="button" class="order-sample-link text-size14 font-medium text-blacck mb-1" x-on:click="showModal = true,fetchHtmlContent(pid)">Order Free Sample</button> 4224 <div class="modal order-free-sample-popup z-50" x-show="showModal"> 4225 <div class="modal-overlay" x-on:click="showModal = false"></div> 4226 <button class="closemodal" type="button" x-on:click="showModal = false">Close X</button> 4227 <div class="modal-content"> 4228 <div x-html="htmlContent" :class="'htmlcontent' + item.proId"></div> 4229 </div> 4230 </div> 4231 </div> 4232 </template> 4233 <!-- <p class="mt-2 text-gray-600 text-xs truncate" x-html="item.description"></p> --> 4234 <template x-if="item.colorCount > 0"> 4235 <p class="text-size13 font-normal text-black truncate"> 4236 Available in <span x-html="item.colorCount"></span> colors 4237 </p> 4238 </template> 4239 <!--<div class="truncate-content"> 4240 <p class="text-size13 font-normal text-black truncate" x-html="item.dealOfTheMonth"></p> 4241 <p class="text-size13 font-normal text-black truncate" x-html="item.freeShipping"></p> 4242 <p class="text-size13 font-normal text-black truncate" x-html="item.shipNextDay"></p> 4243 </div>--> 4244 <div class="price_container flex item-center justify-between">
4245 <span class="text-size14 font-semibold text-black" x-html="item.price"></span> 4246 </div> 4247 </div> 4248 4249 </div> 4250 </template> 4251 <template x-if="searchProducts == ''"> 4252 <p>No results found.</p> 4253 </template> 4254 </div> 4255 </div> 4256 <div class="results-rightside"> 4257 <template x-if="searchCategories != ''"> 4258 <div class="mb-6 category-rest"> 4259 <p class="categorie-title text-size20 font-medium text-black pb-2"> 4260 In Categories <small class="text-size16 font-medium text-black hidden">(<span x-html="searchCategoriesTotal"></span>)</small> 4261 </p> 4262 <div class="catgry-list"> 4263 <template x-for="category in searchCategories"> 4264 <a x-bind:href="`${category.url}`"> 4265 <div class="text-size14 font-normal text-black"> 4266 <span class="text-size14 font-normal text-black cursor-pointer" x-html="category.name.split('>').pop().trim()"></span> 4267 </div> 4268 </a> 4269 </template> 4270 </div> 4271 </div> 4272 </template> 4273 4274 <!-- <template x-if="searchPages != ''"> 4275 <div class="mb-6"> 4276 <p class="text-lg leading-normal transition appearance-none text-grey-800 lg:text-xl border-b border-100 p-2 flex"> 4277 Pages <small class="text-size16 font-medium text-black">(<span x-html="searchPagesTotal"></span>)</small> 4278 </p> 4279 <div class="px-2"> 4280 <template x-for="page in searchPages"> 4281 <a x-bind:href="`${page.url}`"> 4282 <div class="my-2 flex flex-wrap"> 4283 <span class="text-size14 font-normal text-black cursor-pointer" x-html="page.name"></span> 4284 </div> 4285 </a> 4286 </template> 4287 </div> 4288 </div> 4289 </template> --> 4290 4291 <template x-if="searchPosts != ''"> 4292 <div class="search_box_right"> 4293 <p class="blog-title text-size20 font-medium text-black"> 4294 In Blogs <!-- <small class="<//?= $titleNumberCSS ?>">(<span x-html="searchPostsTotal"></span>)</small> --> 4295 </p> 4296 <div class="search_box_right_content"> 4297 <template x-for="item in searchPosts"> 4298 <div> 4299 <a x-bind:href="`${item.url}`" class="blog-items block"> 4300 <div> 4301 <span class="blog-name text-size14 font-normal text-black" x-html="item.name"></span> 4302 </div> 4303 </a> 4304 <span class="item_description text-size14 font-normal text-black opacity-50 mb-4 block" x-html="item.description"></span> 4305 </div> 4306 </template> 4307 </div> 4308 </div> 4309 </template> 4310 </div> 4311 4312 </div> 4313 </template> 4314 4315 <template x-if="noResults"> 4316 <div class="p-2 text-size20 font-medium text-black overflow-hidden"> 4317 <p class="text-lg leading-normal transition appearance-none text-grey-800 lg:text-xl" x-html="noResultsText"></p> 4318 </div> 4319 </template> 4320 </div> 4321</div> 4322
4323<script> 4324 function initMirasvitSearch() { 4325 return { 4326 //initialize Variables 4327 hotSearch: false, 4328 searchResults: false, 4329 noResults: false, 4330 isLoading: false, 4331 isOpen: false, 4332 blockConfig: {"query":"","priceFormat":{"pattern":"$%s","precision":2,"requiredPrecision":2,"decimalSymbol":".","groupSymbol":",","groupLength":3,"integerRequired":false},"minSearchLength":3,"url":"https:\/\/www.flooringinc.com\/searchautocomplete\/ajax\/suggest\/","storeId":"1","delay":100,"isAjaxCartButton":false,"isShowCartButton":false,"isShowImage":true,"isShowPrice":true,"isShowSku":false,"isShowRating":true,"isShowDescription":true,"isShowStockStatus":false,"layout":"in-page","popularTitle":"Popular Suggestions","popularSearches":[],"isTypeaheadEnabled":false,"typeaheadUrl":"https:\/\/www.flooringinc.com\/searchautocomplete\/ajax\/typeahead\/","minSuggestLength":2,"currency":"USD","limit":24,"customerGroupId":0,"filterPosition":"filters_sidebar"}, 4333 xhttp: false, 4334 noResultsText: '', 4335 numberResults: '', 4336 numberResultsUrl: '', 4337 searchProductsTotal: '', 4338 searchCategoriesTotal: '', 4339 searchPagesTotal: '', 4340 4341 searchProducts: [], 4342 searchCategories: [], 4343 searchPages: [], 4344 searchPosts: [], 4345 4346 searchMap: { 4347 'magento_cms_page': 'Pages', 4348 'magento_catalog_category': 'Categories', 4349 'magento_catalog_product': 'Products', 4350 'magefan_blog_post': 'Posts' 4351 }, 4352 4353 hotSearchClickEvent: function (ev) { 4354 var hotSearchClick = event.currentTarget.innerText; 4355 document.getElementById("search").value = hotSearchClick; 4356 4357 this.doSearch(hotSearchClick); 4358 }, 4359 4360 openSearch: function () { 4361 //this.isOpen = true; 4362 searchValue = document.getElementById("search").value.length; 4363 4364 if (searchValue >= this.blockConfig.minSearchLength) { 4365 this.hideHotSearch(); 4366 } else { 4367 this.showHotSearch(); 4368 this.hideSearchResults(); 4369 } 4370 }, 4371 4372 startSearch: function (e) { 4373 if (e) { 4374 //this.isOpen = true; 4375 } 4376 }, 4377 4378 getSearchresult: function () { 4379 this.isOpen = true; 4380 }, 4381 4382 closeSearch: function () { 4383 this.isOpen = false; 4384 }, 4385 4386 showHotSearch: function () { 4387 this.hotSearch = true; 4388 }, 4389 4390 hideHotSearch: function () { 4391 this.hotSearch = false; 4392 4393 }, 4394 4395 showSearchResults: function () { 4396 this.searchResults = true; 4397 // this.isOpen = true; 4398 }, 4399 4400 hideSearchResults: function () { 4401 this.searchResults = false; 4402 // this.isOpen = false; 4403 }, 4404 4405 showNoResults: function () { 4406 this.noResults = true; 4407 }, 4408 4409 hideNoResults: function () { 4410 this.noResults = false; 4411 }, 4412 4413 setNoResultsText(text) { 4414 if (!text) { 4415 return; 4416 } 4417 console.log(text); 4418 this.noResultsText = text; 4419 this.isOpen = true; 4420 }, 4421 4422 setNumberResults(text) { 4423 this.numberResults = text; 4424 }, 4425 4426 setNumberResultsUrl(text) { 4427 this.numberResultsUrl = text; 4428 }, 4429 4430 resetSearchData: function () { 4431 // Reinitialize Variables to avoid wrong search results. 4432 this.searchPages = []; 4433 this.searchPagesTotal = 0; 4434 this.searchCategories = []; 4435 this.searchCategoriesTotal = 0; 4436 this.searchProducts = []; 4437 this.searchProductsTotal = 0; 4438 }, 4439 4440 doSearch: function (query) { 4441 this.isOpen = false;
4442 var self = this; 4443 // Min search length 4444 if (query.length < this.blockConfig.minSearchLength) { 4445 this.showHotSearch(); 4446 this.isLoading = false; 4447 this.hideSearchResults(); 4448 this.hideNoResults(); 4449 4450 return; 4451 } else { 4452 this.hideHotSearch(); 4453 this.isLoading = true; 4454 this.showSearchResults(); 4455 this.hideNoResults(); 4456 } 4457 4458 // AJAX for searchautocomplete/ajax/suggest/ 4459 if (this.xhttp) { 4460 try { 4461 this.xhttp.abort(); 4462 } catch { 4463 4464 } 4465 } 4466 this.xhttp = new XMLHttpRequest(); 4467 var xhttp = this.xhttp; 4468 4469 var queryEncoded = encodeURIComponent(query); 4470 var url = this.blockConfig.url.replace(/\/$/, "") + "/?q=" + queryEncoded + "&store_id=" + this.blockConfig.storeId + "&cat=false"; 4471 4472 xhttp.open("GET", url, true); 4473 xhttp.setRequestHeader("Content-Type", "application/json"); 4474 4475 xhttp.onreadystatechange = function () { 4476 if (this.readyState === 4 && this.status === 200) { 4477 4478 4479 // Response from ajax call in JSON. 4480 var response = JSON.parse(this.responseText); 4481 console.log(response); 4482 self.resetSearchData(); 4483 4484 // Product Search Results 4485 for (index in response.indexes) { 4486 4487 if (response.indexes[index].items.length > 0) { 4488 self.getSearchresult(); 4489 var res = response.indexes[index]; 4490 var map = null; 4491 4492 if (self.searchMap[res.identifier]) { 4493 map = self.searchMap[res.identifier]; 4494 self['search' + map] = res.items; 4495 self['search' + map + 'Total'] = res.totalItems; 4496 } 4497 } 4498 } 4499 4500 // Extract totalItems from response.textAll and format if > 999 4501 let textAll = response.textAll; 4502 if (response.textAll) { 4503 // Remove the â symbol (or any trailing characters you'd like to remove) 4504 textAll = textAll.replace(/â$/, '').trim(); 4505 // Find number within textAll using regex 4506 let totalItemsMatch = textAll.match(/\d+/); // Extracts the first number found 4507 if (totalItemsMatch) { 4508 let totalItemsFromTextAll = parseInt(totalItemsMatch[0], 10); 4509 if (totalItemsFromTextAll > 999) { 4510 // Format with comma if > 999 4511 textAll = textAll.replace(totalItemsMatch[0], totalItemsFromTextAll.toLocaleString()); 4512 } 4513 } 4514 console.log("Formatted textAll:", textAll); 4515 self.setNumberResults(textAll); // Update the UI with the formatted textAll 4516 } 4517 4518 self.isLoading = false; 4519 self.hideNoResults(); 4520 self.setNumberResults(textAll); 4521 self.setNumberResultsUrl(response.urlAll); 4522 4523 if (response.noResults) {console.log(response.textEmpty); 4524 self.showNoResults(); 4525 self.setNoResultsText(response.textEmpty); 4526 self.hideSearchResults(); 4527 4528 } 4529 }else{ 4530 this.isOpen = false; 4531 } 4532 }; 4533 4534 xhttp.send(); 4535 } 4536 } 4537 } 4538</script>
4538 </div> 4539 4540 <div class="flex items-center order-3"> 4541 <!--Compare Icon--> 4542 <a id="compare-link" 4543 class="relative invisible inline-block mx-1 no-underline sm:ml-3 hover:text-black" 4544 :class="{ 'invisible': !(itemCount > 0) }" 4545 href="https://www.flooringinc.com/catalog/product_compare/index/" 4546 title="Compare Products" 4547 x-data="initCompareHeader()" 4548 @private-content-loaded.window="receiveCompareData($event.detail.data)" 4549 > 4550 <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-8 h-8 md:h-6 md:w-6 hover:text-black" width="25" height="25" role="img"> 4551 <path stroke-linecap="round" stroke-linejoin="round" d="M3 6l3 1m0 0l-3 9a5.002 5.002 0 006.001 0M6 7l3 9M6 7l6-2m6 2l3-1m-3 1l-3 9a5.002 5.002 0 006.001 0M18 7l3 9m-3-9l-6-2m0-2v2m0 16V5m0 16H9m3 0h3"/> 4552<title>scale</title></svg> 4553 4554 <span class="sr-only label"> 4555 Compare Products </span> 4556 4557 <span class="absolute top-0 right-0 h-5 px-2 py-1 -mt-5 -mr-4 text-xs font-semibold 4558 leading-none text-center text-white uppercase transform -translate-x-1 4559 translate-y-1/2 bg-yellow-500 rounded-full" 4560 > 4561 <span x-text="itemCount"></span> 4562 <span x-show="itemCount === 1" class="sr-only"> 4563 item </span> 4564 <span x-show="itemCount > 1" class="sr-only"> 4565 items </span> 4566 </span> 4567 </a> 4568 4569 <!--Search Icon--> 4570 <button id="menu-search-icon" 4571 class="inline-block ml-1 no-underline sm:ml-3 hover:text-black hidden" 4572 @click.prevent=" 4573 searchOpen = !searchOpen; 4574 $nextTick(function () { document.querySelector('#search').select(); }); 4575 " 4576 > 4577 <span class="sr-only label"> 4578 Search </span> 4579 4580 <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-8 h-8 md:h-6 md:w-6 hover:text-black" width="25" height="25" role="img"> 4581 <path stroke-linecap="round" stroke-linejoin="round" d="M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"/> 4582<title>search</title></svg> 4583 </button> 4584 4585 <!--Customer Icon & Dropdown--> 4586
4586<script> 4587"use strict"; 4588 4589function initComponent() { 4590 return { 4591 cart: false, 4592 customer: false, 4593 receiveCustomerData(data) { 4594 if (data.cart) { 4595 this.cart = data.cart; 4596 } 4597 if (data.customer) { 4598 this.customer = data.customer; 4599 } 4600 } 4601 } 4602} 4603</script>
4603 4604 4605 4606<div x-data="{ open: false }" class="relative inline-block acc-dropdown"> 4607 <div class="arrow-cus"> 4608 <a 4609 href="https://www.flooringinc.com/customer/account/" 4610 id="customer-menu" 4611 class="block hover:text-black " 4612 @click.prevent="$dispatch('popup-register', 4613 { open: true,openRegister : false,openLogin : true,openCreate :true, 4614 openButtonLogin :true, 4615 openButtonRegister :false, 4616 })" 4617 :aria-expanded="open ? 'true' : 'false'" 4618 aria-label="My Account" 4619 > 4620 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="currentColor" 4621 class="w-8 h-8 md:h-6 md:w-6" aria-hidden="true"> 4622 <circle fill="none" cx="12" cy="7" r="3"></circle> 4623 <path d="M12 2C9.243 2 7 4.243 7 7s2.243 5 5 5 5-2.243 5-5S14.757 2 12 2zM12 10c-1.654 4624 0-3-1.346-3-3s1.346-3 3-3 3 1.346 3 3S13.654 10 12 10zM21 21v-1c0-3.859-3.141-7-7-7h-4c-3.86 4625 0-7 3.141-7 7v1h2v-1c0-2.757 2.243-5 5-5h4c2.757 0 5 2.243 5 5v1H21z"> 4626 </path> 4627 </svg> 4628 4629 </a> 4630 </div> 4631 <nav class="absolute right-0 z-20 hidden w-40 pt-3 pb-4 mt-2 -mr-4 pl-4 pr-4 overflow-auto origin-top-right rounded-sm 4632 shadow-lg sm:w-48 lg:mt-3 bg-container-lighter" 4633 :class="{ 'hidden' : !open }" 4634 @click.outside="open = false" 4635 x-cloak x-show="open" 4636 aria-labelledby="customer-menu" 4637 > 4638 4639<a class="block px-4 py-2 lg:px-5 lg:py-2 hover:bg-gray-100" 4640 onclick="hyva.setCookie && hyva.setCookie( 4641 'login_redirect', 4642 window.location.href, 4643 1 4644 )" 4645 href="https://www.flooringinc.com/customer/account/index/"> 4646 Sign In </a> 4647<a class="block px-4 py-2 lg:px-5 lg:py-2 hover:bg-gray-100" 4648 href="https://www.flooringinc.com/customer/account/create/" 4649 title="" 4650 > 4651 Create an Account </a> 4652 </nav> 4653</div> 4654 <!--Quote Cart Icon (show when activeCartType is 'quote' and quote has items)--> 4655 <template x-if="activeCartType === 'quote' && quoteCart.summary_count"> 4656 <a id="menu-cart-quote-icon" 4657 class="relative inline-block ml-1 no-underline sm:ml-3 hover:text-black pl-3" 4658 :class="{ 4659 'hidden': !(activeCartType === 'quote' && quoteCart.summary_count), 4660 'block': activeCartType === 'quote' && quoteCart.summary_count }" 4661 href="https://www.flooringinc.com/amasty_quote/cart/" 4662 > 4663 <span class="checkout-icon"> 4664 <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-8 h-8 md:h-6 md:w-6 hover:text-black" width="25" height="25" role="img"> 4665 <path stroke-linecap="round" stroke-linejoin="round" d="M3 3h2l.4 2M7 13h10l4-8H5.4M7 13L5.4 5M7 13l-2.293 2.293c-.63.63-.184 1.707.707 1.707H17m0 0a2 2 0 100 4 2 2 0 000-4zm-8 2a2 2 0 11-4 0 2 2 0 014 0z"/> 4666<title>shopping-cart</title></svg> 4667 </span> 4668 <span x-text="quoteCart.summary_count" 4669 class="absolute top-0 right-0 h-5 px-2 py-1 -mt-5 -mr-4 text-xs font-semibold 4670 leading-none text-center text-white uppercase transform -translate-x-1 4671 translate-y-1/2 rounded-full bg-primary" 4672 :class="{ 4673 'hidden': !quoteCart.summary_count, 4674 'block': quoteCart.summary_count }" 4675 ></span> 4676 </a> 4677 </template> 4678 <!--Regular Cart Icon (show when activeCartType is 'cart' or when quote mode but quote empty - always show an icon)-->
4678 4679 <a id="menu-cart-icon" 4680 x-show="activeCartType === 'cart' || (activeCartType === 'quote' && !quoteCart.summary_count)" 4681 @click.prevent.stop="$dispatch('toggle-cart',{});" class="relative inline-block ml-6 no-underline hover:text-black" 4682 href="https://www.flooringinc.com/checkout/cart/index/" 4683 > 4684 <span class="sr-only label"> 4685 Cart </span> 4686 4687 <span class="cart-icon"> 4688 <img src="https://www.flooringinc.com/static/version1789462004/frontend/Dcw/hyvadesktop/en_US/images/cart-icon.svg" alt="cart-icon" width="24" height="24"> 4689 <picture class="icon"><source type="image/webp" srcset="https://www.flooringinc.com/static/version1789462004/frontend/Dcw/hyvadesktop/en_US/images/arrow.webp"><img src="https://www.flooringinc.com/static/version1789462004/frontend/Dcw/hyvadesktop/en_US/images/arrow.png" alt="arrow" width="8" height="6" class="icon"></picture> 4690 </span> 4691 4692 <span x-text="cart.summary_count" 4693 class="absolute top-0 right-0 h-5 px-2 py-1 -mt-5 -mr-4 text-xs font-semibold 4694 leading-none text-center text-white uppercase transform -translate-x-1 4695 translate-y-1/2 rounded-full bg-primary" 4696 :class="{ 4697 'hidden': !cart.summary_count, 4698 'block': cart.summary_count }" 4699 ></span> 4700 </a> 4701 4702 </div> 4703 </div> 4704
4705 <!--Cart Drawer--> 4706
4706<script> 4707 function initCartDrawer() { 4708 return { 4709 open: false, 4710 isLoading: false, 4711 cart: {}, 4712 maxItemsToDisplay: 10, 4713 itemsCount: 0, 4714 totalCartAmount: 0, 4715 getData(data) { 4716 if (data.cart) { 4717 this.cart = data.cart; 4718 this.itemsCount = data.cart.items && data.cart.items.length || 0; 4719 this.totalCartAmount = this.cart.summary_count; 4720 //this.cart.summary_count = this.itemsCount; 4721 this.setCartItems(); 4722 } 4723 this.isLoading = false; 4724 }, 4725 cartItems: [], 4726 getItemCountTitle() { 4727 return hyva.strf('(%0 of %1)', this.maxItemsToDisplay, this.totalCartAmount) 4728 }, 4729 setCartItems() { 4730 if(this.cart.items){ 4731 this.cartItems = this.cart.items && this.cart.items.sort((a, b) => b.item_id - a.item_id) || []; 4732 } else { 4733 this.cartItems = []; 4734 } 4735 if (this.maxItemsToDisplay > 0) { 4736 this.cartItems = this.cartItems.slice(0, parseInt(this.maxItemsToDisplay, 10)); 4737 } 4738 getCustomerData(['customer'], function(data) { 4739 if(data.messages.messages[0]){ 4740 var messagesType = data.messages.messages[0].type; 4741 var messagesText = data.messages.messages[0].text; 4742 if(messagesType === "success"){ 4743 dispatchMessages([ 4744 { 4745 type: messagesType, 4746 text: messagesText 4747 } 4748 ]); 4749 this.openCartDrawer(); 4750 } else { 4751 dispatchMessages([ 4752 { 4753 type: messagesType, 4754 text: messagesText 4755 } 4756 ]); 4757 } 4758 } 4759 window.dispatchEvent(new CustomEvent('amcart-loading-stop')); 4760 }); 4761 4762 if(document.querySelectorAll('.btn_cart')) { 4763 var addtocartnew = document.querySelectorAll('.btn_cart'); 4764 4765 addtocartnew.forEach(addtocartnew => { 4766 addtocartnew.addEventListener('click', () => { 4767 setTimeout(() => { 4768 }, 2500); 4769 }); 4770 }); 4771 } 4772 if(document.getElementById('product-addtocart-button')) { 4773 var addtocartnew2 = document.getElementById('product-addtocart-button'); 4774 4775 addtocartnew2.addEventListener('click', () => { 4776 setTimeout(() => { 4777 }, 2500); 4778 }); 4779 } 4780 4781 4782 }, 4783 deleteItemFromCart(itemId) { 4784 this.isLoading = true; 4785 4786 const formKey = hyva.getFormKey(); 4787 const postUrl = BASE_URL + 'amasty_quote/quote/removeFromMinicart'; 4788 fetch(postUrl, { 4789 "headers": { 4790 "content-type": "application/x-www-form-urlencoded; charset=UTF-8", 4791 }, 4792 "body": "form_key=" + formKey + "&item_id=" + itemId, 4793 "method": "POST", 4794 "mode": "cors", 4795 "credentials": "include" 4796 }).then(response => { 4797 window.location.href = window.location.pathname; // Reload the page after item remove 4798 if (response.redirected) { 4799 window.location.href = response.url; 4800 } else if (response.ok) { 4801 return response.json(); 4802 } else { 4803 window.dispatchMessages && window.dispatchMessages([{ 4804 type: 'warning',
4805 text: 'Could\u0020not\u0020remove\u0020item\u0020from\u0020quote.' 4806 }]); 4807 this.isLoading = false; 4808 } 4809 }).then(result => { 4810 window.dispatchMessages && window.dispatchMessages([{ 4811 type: result.success ? 'success' : 'error', 4812 text: result.success 4813 ? 'You\u0020removed\u0020the\u0020item.' 4814 : result.error_message 4815 }], result.success ? 5000 : 0) 4816 window.dispatchEvent(new CustomEvent('reload-customer-section-data')); 4817 }); 4818 }, 4819 toggleCartDrawer(event) { 4820 if (event.detail && event.detail.isOpen !== undefined) { 4821 if (event.detail.isOpen) { 4822 this.openCartDrawer() 4823 } else { 4824 this.open = false 4825 this.$refs && this.$refs.cartDialogContent && hyva.releaseFocus(this.$refs.cartDialogContent) 4826 } 4827 } else { 4828 this.openCartDrawer() 4829 } 4830 }, 4831 openCartDrawer() { 4832 this.open = true; 4833 this.$nextTick(() => { 4834 this.$refs && this.$refs.cartDialogContent && hyva.trapFocus(this.$refs.cartDialogContent) 4835 }) 4836 }, 4837 closeCartDrawer() { 4838 this.$dispatch('toggle-cart', { isOpen: false }) 4839 } 4840 } 4841 } 4842 function getCustomerData(sections, callback) { 4843 fetch('/customer/section/load/?sections=') 4844 .then(response => response.json()) 4845 .then(data => callback(data)) 4846 .catch(error => console.error('Error fetching customer data:', error)); 4847 } 4848</script>
4848 4849<section x-cloak 4850 x-show="cart" 4851 id="cart-drawer" 4852 x-data="initCartDrawer()" 4853 @private-content-loaded.window="getData($event.detail.data)" 4854 @toggle-cart.window="toggleCartDrawer($event)" 4855 @keydown.window.escape="closeCartDrawer" 4856> 4857 <div role="dialog" 4858 aria-labelledby="cart-drawer-title" 4859 aria-modal="true" 4860 @click.outside="open=false" 4861 class="fixed inset-y-0 right-0 z-30 flex max-w-full"> 4862 <div class="backdrop" 4863 x-show="open" 4864 x-transition:enter="ease-in-out duration-500" 4865 x-transition:enter-start="opacity-0" 4866 x-transition:enter-end="opacity-100" 4867 x-transition:leave="ease-in-out duration-500" 4868 x-transition:leave-start="opacity-100" 4869 x-transition:leave-end="opacity-0" 4870 role="button" 4871 @click="closeCartDrawer" 4872 aria-label="Close minicart"></div> 4873 <div class="relative w-screen max-w-md shadow-2xl" 4874 x-show="open" 4875 x-transition:enter="transform transition ease-in-out duration-500 sm:duration-700" 4876 x-transition:enter-start="translate-x-full" 4877 x-transition:enter-end="translate-x-0" 4878 x-transition:leave="transform transition ease-in-out duration-500 sm:duration-700" 4879 x-transition:leave-start="translate-x-0" 4880 x-transition:leave-end="translate-x-full" 4881 > 4882 <div 4883 x-show="open" 4884 x-transition:enter="ease-in-out duration-500" 4885 x-transition:enter-start="opacity-0" 4886 x-transition:enter-end="opacity-100" 4887 x-transition:leave="ease-in-out duration-500" 4888 x-transition:leave-start="opacity-100" 4889 x-transition:leave-end="opacity-0" class="absolute top-0 right-0 flex pr-6 pt-19"> 4890 <button @click="open=false" aria-label="Close panel" 4891 class="p-0 text-black transition duration-150 ease-in-out hover:text-black"> 4892 <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" width="24" height="24" role="img"> 4893 <path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12"/> 4894<title>x</title></svg> 4895 </button> 4896 </div> 4897 <div class="flex flex-col h-full bg-lightblue"> 4898 4899 <header class="px-4 pt-19 pb-6"> 4900 <h2 id="cart-drawer-title" class="text-size18 font-medium text-black"> 4901 <template x-if="!itemsCount"> 4902 <div>My Cart</div></template> 4903<template x-if="itemsCount"> 4904 <div class="minicart-item-count"><span class="minicart-total-cart-amount" x-html="totalCartAmount"></span> <span x-show="totalCartAmount > 1">items</span><span x-show="totalCartAmount == 1">item</span> in cart</div> 4905</template> 4906 <span class="items-total text-xs text-black" 4907 x-show="maxItemsToDisplay && maxItemsToDisplay < itemsCount" 4908 x-text="getItemCountTitle()"> 4909 </span> 4910 </h2> 4911 </header> 4912 4913 4914<template x-if="!itemsCount"> 4915 <div class="relative px-4 py-6 border-bs sm:px-6 border-container"> 4916 Cart is empty </div> 4917 </template> 4918 <div class="relative grid overflow-y-auto overflow-x-hidden bg-lightblue cart-items"> 4919 <template x-for="item in cartItems"> 4920 <div class="flex items-start cart-item px-4 pt-5 pb-6 transition duration-150 4921 ease-in-out"> 4922 <template x-if="!item.product_has_url"> 4923 <a :href="item.product_url" class="w-1/4 pr-6 image"> 4924 <img 4925 :src="item.product_image.src" 4926 :width="item.product_image.width" 4927 :height="item.product_image.height" 4928 loading="lazy" 4929 /> 4930 </a> 4931 </template> 4932 <template x-if="item.product_has_url == 1"> 4933 <a :href="item.product_url" class="w-1/4 pr-6 image"> 4934 <img 4935 :src="item.product_image.src" 4936 :width="item.product_image.width" 4937 :height="item.product_image.height" 4938 loading="lazy" 4939 /> 4940 </a> 4941 </template> 4942 <div class="w-3/4"> 4943 <div> 4944 <template x-if="!item.product_has_url"> 4945 <a :href="item.product_url" class="prosku"> 4946 <p><span class="product-title text-size16 font-semibold text-darkblack" x-html="item.product_name"></span></p> 4947 </a> 4948 </template> 4949 <template x-if="item.product_has_url == 1"> 4950 <a :href="item.product_url" class="prosku"> 4951 <p><span class="product-title text-size16 font-semibold text-darkblack" x-html="item.product_name"></span></p> 4952 </a> 4953 </template> 4954 </div> 4955 <template x-for="option in item.options"> 4956 <div class="flex pt-2 pb-1 item-options w-full" 4957 x-show="option.label !== '' && !['Weight', 'Configurable Product SKU', 'Configurable Product Name', 'Configurable Product Category', 'Main Configurable Product Image Url', 'Main Configurable Product Image', 'Configurable Product Image', 'Color Display Name'].includes(option.label)"> 4958 <div class="flex w-full"> 4959 <p class="text-size14 font-medium text-black" x-show="option.label == 'Custom Length' || option.label == 'Roll Width' || option.label == 'Roll Length'" x-text="option.label + ':'"></p> 4960 <template x-if="!item.product_has_url"> 4961 <a :href="item.product_url" 4962 x-show="item.product_type !== 'grouped' && option.label != 'Configurable Product Image'" 4963 class="inline-flex"><p class="pl-1 text-size14 font-normal text-black" x-html="option.value"></p></a> 4964 </template> 4965 <template x-if="item.product_has_url == 1"> 4966 <a :href="item.product_url" 4967 x-show="item.product_type !== 'grouped' && option.label != 'Configurable Product Image'" 4968 class="inline-flex"><p class="pl-1 text-size14 font-normal text-black" x-html="option.value"></p></a> 4969 </template> 4970 </div> 4971 </div> 4972 </template> 4973 <p class="pb-4 pt-1"><span x-html="item.product_price" class="text-size20 font-bold text-custom-blue pricebox"></span></p> 4974 <div class="text-xl flex qty-fields items-center"> 4975 <p><span class="qty text-size14 font-semibold text-darkblack mr-1">QTY</span><span x-html="item.qty" class="qty-label text-center text-size16 font-semibold text-darkblack inline-block"></span></p> 4976 <div class="ml-auto"> 4977 <button 4978 @click="deleteItemFromCart(item.item_id)" 4979 > 4980 <picture><source type="image/webp" srcset="https://www.flooringinc.com/static/version1789462004/frontend/Dcw/hyvadesktop/en_US/images/Delete.webp"><img src="https://www.flooringinc.com/static/version1789462004/frontend/Dcw/hyvadesktop/en_US/images/Delete.png" alt="Delete" width="12" height="16"></picture> 4981 </button> 4982 </div> 4983 </div> 4984 4985 </div> 4986 </div> 4987 </template> 4988 </div> 4989<template x-if="itemsCount"> 4990 4991 <div class="relative bg-lightblue grid pt-3 pb-4"> 4992 <div class="w-full transition duration-150 ease-in-out sub-total"> 4993 <p class="text-darkgray text-size16 font-normal flex items-center pb-2">Subtotal: <span x-html="cart.subtotal" class="font-bold text-size22 text-custom-blue"></span></p> 4994 </div> 4995 4996 <div class="w-full transition duration-150 ease-in-out 4997 chekout-btn"> 4998 <a href="https://www.flooringinc.com/checkout/cart/" 4999 class="no-underline block relative font-medium text-size16 text-custom-white bg-custom-blue"> 5000 Proceed to Cart </a> 5001 </div> 5002 </div> 5003</template> 5004 </div> 5005 </div> 5006 <div class="flex flex-row justify-center items-center w-full h-full fixed select-none z-50" 5007 style="left: 50%;top: 50%;transform: translateX(-50%) translateY(-50%);background: rgba(255,255,255,0.7);" 5008 x-show="isLoading" 5009 x-transition:enter="ease-out duration-200" 5010 x-transition:enter-start="opacity-0" 5011 x-transition:enter-end="opacity-100" 5012 x-transition:leave="ease-in duration-200" 5013 x-transition:leave-start="opacity-100" 5014 x-transition:leave-end="opacity-0"> 5015 <!-- By Sam Herbert (@sherb), for everyone. More @ http://goo.gl/7AJzbL --> 5016<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 57 57" stroke="currentColor" class="text-primary" width="57" height="57" role="img"> 5017 <g fill="none" fill-rule="evenodd"> 5018 <g transform="translate(1 1)" stroke-width="2"> 5019 <circle cx="5" cy="50" r="5">
5020 <animate attributeName="cy" begin="0s" dur="2.2s" values="50;5;50;50" calcMode="linear" repeatCount="indefinite"/> 5021 <animate attributeName="cx" begin="0s" dur="2.2s" values="5;27;49;5" calcMode="linear" repeatCount="indefinite"/> 5022 </circle> 5023 <circle cx="27" cy="5" r="5"> 5024 <animate attributeName="cy" begin="0s" dur="2.2s" from="5" to="5" values="5;50;50;5" calcMode="linear" repeatCount="indefinite"/> 5025 <animate attributeName="cx" begin="0s" dur="2.2s" from="27" to="27" values="27;49;5;27" calcMode="linear" repeatCount="indefinite"/> 5026 </circle> 5027 <circle cx="49" cy="50" r="5"> 5028 <animate attributeName="cy" begin="0s" dur="2.2s" values="50;50;5;50" calcMode="linear" repeatCount="indefinite"/> 5029 <animate attributeName="cx" from="49" to="49" begin="0s" dur="2.2s" values="49;5;27;49" calcMode="linear" repeatCount="indefinite"/> 5030 </circle> 5031 </g> 5032 </g> 5033<title>loader</title></svg> 5034 <div class="ml-10 text-primary text-xl"> 5035 Loading... </div> 5036</div> 5037 </div> 5038 </template> 5039</section> 5040 5041 <!--Authentication Pop-Up--> 5042
5042<script> 5043 function initAuthentication() { 5044 return { 5045 open: false, 5046 forceAuthentication: false, 5047 checkoutUrl: 'https://www.flooringinc.com/checkout/index/', 5048 errors: 0, 5049 hasCaptchaToken: 0, 5050 displayErrorMessage: false, 5051 errorMessages: [], 5052 setErrorMessages: function setErrorMessages(messages) { 5053 this.errorMessages = [messages]; 5054 this.displayErrorMessage = this.errorMessages.length; 5055 }, 5056 submitForm: function () { 5057 // Do not rename $form, the variable is expected to be declared in the recaptcha output 5058 const $form = document.querySelector('#login-form-new'); 5059 5060 if (this.errors === 0) { 5061 this.dispatchLoginRequest($form); 5062 } 5063 }, 5064 onPrivateContentLoaded: function (data) { 5065 const isLoggedIn = data.customer && data.customer.firstname; 5066 if (data.cart && !isLoggedIn) { 5067 this.forceAuthentication = !data.cart.isGuestCheckoutAllowed; 5068 } 5069 }, 5070 redirectIfAuthenticated: function (event) { 5071 if (event.detail && event.detail.url) { 5072 this.checkoutUrl = event.detail.url; 5073 } 5074 if (!this.forceAuthentication) { 5075 window.location.href = this.checkoutUrl; 5076 } 5077 }, 5078 dispatchLoginRequest: function(form) { 5079 this.isLoading = true; 5080 const username = this.$refs['customer-email'].value; 5081 const password = this.$refs['customer-password'].value; 5082 const formKey = hyva.getFormKey(); 5083 const bodyFields = { 5084 'username': username, 5085 'password': password, 5086 'formKey': formKey 5087 }; 5088 const fieldName = 'g\u002Drecaptcha\u002Dresponse'; 5089 const recaptchaField = fieldName && form[fieldName]; 5090 if (recaptchaField) { 5091 bodyFields[fieldName] = recaptchaField.value; 5092 } 5093 fetch('https://www.flooringinc.com/customer/ajax/login/', { 5094 method: 'POST', 5095 headers: { 5096 'Content-Type': 'application/json', 5097 'X-Requested-With': 'XMLHttpRequest' 5098 }, 5099 body: JSON.stringify(bodyFields) 5100 } 5101 ).then(response => { 5102 return response.json() 5103 } 5104 ).then(data=> { 5105 this.isLoading = false; 5106 if (data.errors) { 5107 dispatchMessages([{ 5108 type: 'error', 5109 text: data.message 5110 }], 5000); 5111 this.errors = 1; 5112 this.hasCaptchaToken = 0; 5113 } else { 5114 window.location.href = this.checkoutUrl; 5115 } 5116 }); 5117 } 5118 } 5119 } 5120</script>
5120 5121<section id="authentication-popup" 5122 x-data="initAuthentication()" 5123 @private-content-loaded.window="onPrivateContentLoaded($event.detail.data)" 5124 @toggle-authentication.window="open = forceAuthentication; redirectIfAuthenticated(event)" 5125 @keydown.window.escape="open = false" 5126> 5127 <div role="dialog" 5128 aria-modal="true" 5129 @click.outside="open = false" 5130 class="inset-y-0 right-0 z-30 flex max-w-full" 5131 :class="{'fixed': open }" x-cloak x-show="open" 5132 > 5133 <div class="relative w-screen max-w-md pt-16 bg-container-lighter" 5134 x-show="open" 5135 x-cloak="" 5136 x-transition:enter="transform transition ease-in-out duration-500 sm:duration-700" 5137 x-transition:enter-start="translate-x-full" 5138 x-transition:enter-end="translate-x-0" 5139 x-transition:leave="transform transition ease-in-out duration-500 sm:duration-700" 5140 x-transition:leave-start="translate-x-0" 5141 x-transition:leave-end="translate-x-full" 5142 > 5143 <div 5144 x-show="open" 5145 x-cloak="" 5146 x-transition:enter="ease-in-out duration-500" 5147 x-transition:enter-start="opacity-0" 5148 x-transition:enter-end="opacity-100" 5149 x-transition:leave="ease-in-out duration-500" 5150 x-transition:leave-start="opacity-100" 5151 x-transition:leave-end="opacity-0" class="absolute top-0 right-0 flex p-2 mt-2"> 5152 <button @click="open = false;" aria-label="Close panel" 5153 class="p-2 text-gray-300 transition duration-150 ease-in-out hover:text-black"> 5154 <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" width="24" height="24" role="img"> 5155 <path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12"/> 5156<title>x</title></svg> 5157 </button> 5158 </div> 5159 <div class="flex flex-col h-full py-6 space-y-6 bg-white shadow-xl overflow-y-auto"> 5160 <div class="block-customer-login bg-container border border-container mx-4 p-4 shadow-sm"> 5161 <p id="authenticate-customer-login" class="text-lg leading-7 text-gray-900"> 5162 <strong class="font-medium">Checkout using your account</strong> 5163 </p> 5164 5165 <form class="form form-login" 5166 method="post" 5167 @submit.prevent="submitForm();" 5168 id="login-form-new" 5169 > 5170 <div class="fieldset login"> 5171 <div class="field email required"> 5172 <label class="label" for="form-login-username" form="login-form" > 5173 <span>Email Address</span> 5174 </label> 5175 <div class="control"> 5176 <input name="username" 5177 id="form-login-username" 5178 x-ref="customer-email" 5179 @change="errors = 0" 5180 type="email" 5181 required 5182 class="form-input input-text" 5183 > 5184 </div> 5185 </div> 5186 <div class="field password required"> 5187 <label for="form-login-password" class="label" form="login-form"> 5188 <span>Password</span> 5189 </label> 5190 <div class="control"> 5191 <input name="password" 5192 id="form-login-password" 5193 type="password" 5194 class="form-input input-text" 5195 required 5196 x-ref="customer-password" 5197 @change="errors = 0" 5198 > 5199 </div> 5200 </div> 5201 5202 <input name="context" type="hidden" value="checkout" /> 5203 <div class="actions-toolbar flex justify-between pt-6 pb-2 items-center"> 5204 <button type="submit" class="inline-flex btn btn-primary disabled:opacity-75" 5205 > 5206 Sign In </button> 5207 <a href="https://www.flooringinc.com/customer/account/forgotpassword/" 5208 > 5209 Forgot Your Password? </a> 5210 </div> 5211 5212 </div> 5213 </form> 5214 </div> 5215 <div class="mx-4"> 5216 </div> 5217 <div class="block-new-customer bg-container border border-container mx-4 p-4 shadow-sm">
5218 <p id="authenticate-new-customer" class="text-lg mb-2 leading-7 text-gray-900"> 5219 <strong class="font-medium">Checkout as a new customer</strong> 5220 </p> 5221 5222 <div class="block-content"> 5223 <p class="mb-1"> 5224 Creating an account has many benefits: </p> 5225 <ul class="list-disc pl-5"> 5226 <li> See order and shipping status</li> 5227 <li> Track order history</li> 5228 <li> Check out faster</li> 5229 </ul> 5230 <div class="actions-toolbar flex justify-between mt-6 mb-2 items-center"> 5231 <a href="https://www.flooringinc.com/customer/account/create/" 5232 class="inline-flex btn btn-primary"> 5233 Create an Account </a> 5234 </div> 5235 </div> 5236 </div> 5237 </div> 5238 </div> 5239 </div> 5240</section> 5241 5242 <!--Cart Quote Drawer--> 5243
5243<script> 5244 function initQuoteCartDrawer() { 5245 return { 5246 open: false, 5247 cartData: {}, 5248 getQuoteCartData(data) { 5249 if (data.quotecart) { 5250 this.cartData = data.quotecart 5251 this.setCartItems(); 5252 } 5253 }, 5254 cartItems: [], 5255 setCartItems() { 5256 this.cartItems = this.cartData && this.cartData.items.sort(function(a,b) { return a.item_id - b.item_id }) || {} 5257 }, 5258 deleteItemFromCart(itemId) { 5259 var formKey = document.querySelector('input[name=form_key]').value; 5260 fetch(BASE_URL+"amasty_quote/sidebar/removeItem/", { 5261 "headers": { 5262 "content-type": "application/x-www-form-urlencoded; charset=UTF-8", 5263 }, 5264 "body": "form_key="+ formKey + "&item_id="+itemId, 5265 "method": "POST", 5266 "mode": "cors", 5267 "credentials": "include" 5268 }).then(function (response) { 5269 if (response.redirected) { 5270 window.location.href = response.url; 5271 } else if (response.ok) { 5272 return response.json(); 5273 } else { 5274 typeof window.dispatchMessages !== "undefined" && window.dispatchMessages( 5275 [{ 5276 type: "warning", 5277 text: "Could not remove item from quote." 5278 }], 5000 5279 ); 5280 } 5281 }).then(function (response) { 5282 typeof window.dispatchMessages !== "undefined" && window.dispatchMessages( 5283 [{ 5284 type: response.success ? "success" : "error", 5285 text: response.success 5286 ? "You removed the item." 5287 : response.error_message 5288 }], 5000 5289 ); 5290 var reloadCustomerDataEvent = new CustomEvent("reload-customer-section-data"); 5291 window.dispatchEvent(reloadCustomerDataEvent); 5292 }); 5293 } 5294 } 5295 } 5296</script>
5296 5297<section id="cart-quote-drawer" 5298 x-data="initQuoteCartDrawer()" 5299 @private-content-loaded.window="getQuoteCartData(event.detail.data)" 5300 @toggle-quote-cart.window="open=true;" 5301 @keydown.window.escape="open=false" 5302> 5303 <template x-if="cartData && cartData.summary_count"> 5304 <div role="dialog" 5305 aria-labelledby="cart-drawer-title" 5306 aria-modal="true" 5307 @click.away="open = false" 5308 class="fixed inset-y-0 right-0 z-30 flex max-w-full"> 5309 <div class="backdrop" 5310 x-show="open" 5311 x-transition:enter="ease-in-out duration-500" 5312 x-transition:enter-start="opacity-0" 5313 x-transition:enter-end="opacity-100" 5314 x-transition:leave="ease-in-out duration-500" 5315 x-transition:leave-start="opacity-100" 5316 x-transition:leave-end="opacity-0" 5317 @click="open = false" 5318 aria-label="Close panel"></div> 5319 <div class="relative w-screen max-w-md shadow-2xl" 5320 x-show="open" 5321 x-transition:enter="transform transition ease-in-out duration-500 sm:duration-700" 5322 x-transition:enter-start="translate-x-full" 5323 x-transition:enter-end="translate-x-0" 5324 x-transition:leave="transform transition ease-in-out duration-500 sm:duration-700" 5325 x-transition:leave-start="translate-x-0" 5326 x-transition:leave-end="translate-x-full" 5327 > 5328 <div 5329 x-show="open" 5330 x-transition:enter="ease-in-out duration-500" 5331 x-transition:enter-start="opacity-0" 5332 x-transition:enter-end="opacity-100" 5333 x-transition:leave="ease-in-out duration-500" 5334 x-transition:leave-start="opacity-100" 5335 x-transition:leave-end="opacity-0" class="absolute top-0 right-0 flex mr-3 mt-2"> 5336 <button @click="open = false" aria-label="Close panel" 5337 class="p-2 text-gray-300 transition duration-150 ease-in-out hover:text-black"> 5338 <svg class="w-6 h-6" fill="none" viewBox="0 0 24 24" stroke="currentColor"> 5339 <path stroke-linecap="round" stroke-linejoin="round" 5340 stroke-width="2" d="M6 18L18 6M6 6l12 12"> 5341 </path> 5342 </svg> 5343 </button> 5344 </div> 5345 <div class="flex flex-col h-full py-6 space-y-6 bg-white shadow-xl"> 5346 <header class="px-4 sm:px-6"> 5347 <div id="cart-drawer-title" class="text-lg font-medium leading-7 text-gray-900"> 5348 My Quote Cart </div> 5349 </header> 5350 <div class="relative grid gap-6 px-4 py-6 overflow-y-auto bg-white border-b 5351 sm:gap-8 sm:px-6 border-container"> 5352 <template x-for="item in cartItems"> 5353 <div class="flex items-start p-3 -m-3 space-x-4 transition duration-150 5354 ease-in-out rounded-lg hover:bg-gray-100"> 5355 <a :href="item.product_url" class="w-1/4"> 5356 <img 5357 :src="item.product_image.src" 5358 :width="item.product_image.width" 5359 :height="item.product_image.height" 5360 loading="lazy" 5361 /> 5362 </a> 5363 <div class="w-3/4 relative"> 5364 <div> 5365 <div class="text-xl"> 5366 <a :href="item.product_url" class="hover:underline"> 5367 <span x-html="item.qty"></span> x <span x-html="item.product_name"></span> 5368 </a> 5369 </div> 5370 <div class="text-sm"><span x-html="item.product_sku"></div> 5371 </div> 5372 <template x-for="option in item.options"> 5373 <div class="pt-2"> 5374 <p class="font-semibold" x-text="option.label + ':'"></p> 5375 <p class="text-secondary" x-html="option.value"></p> 5376 </div> 5377 </template> 5378 <div><span x-html="item.product_price"></span></div> 5379 <div class="pt-4"> 5380 <a :href="item.configure_url" 5381 x-show="item.product_type !== 'grouped'" 5382 class="inline-flex p-2 mr-2 btn btn-primary"> 5383 <svg fill="none" viewBox="0 0 24 24" stroke="currentColor" 5384 size="16" class="w-5 h-5"> 5385 <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" 5386 d="M15.232 5.232l3.536 3.536m-2.036-5.036a2.5 2.5 0 113.536 5387 3.536L6.5 21.036H3v-3.572L16.732 3.732z"> 5388 </path> 5389 </svg> 5390 </a> 5391 <button class="inline-flex p-2 btn btn-primary" 5392 @click="deleteItemFromCart(item.item_id)" 5393 > 5394 <svg fill="none" viewBox="0 0 24 24" stroke="currentColor" 5395 size="16" class="w-5 h-5"> 5396 <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" 5397 d="M19 7l-.867 12.142A2 2 0 0116.138 21H7.862a2 2 0 5398 01-1.995-1.858L5 7m5 4v6m4-6v6m1-10V4a1 1 0 00-1-1h-4a1 1 5399 0 00-1 1v3M4 7h16"> 5400 </path> 5401 </svg> 5402 </button> 5403 </div> 5404 </div> 5405 </div> 5406 </template> 5407 </div> 5408 <div class="relative grid gap-6 px-4 py-6 bg-white sm:gap-8 sm:px-6"> 5409 <div class="w-full p-3 -m-3 space-x-4 transition duration-150 ease-in-out rounded-lg 5410 hover:bg-gray-100">
5411 <span>Cart Subtotal:</span> 5412 <span class="text-gray-900 font-bold" x-text="hyva.formatPrice(cartData.subtotalAmount)"></span> 5413 </div> 5414 <div class="w-full"> 5415 <a href="https://www.flooringinc.com/amasty_quote/cart/" 5416 class="btn btn-secondary justify-center"> 5417 View and Edit Cart </a> 5418 </div> 5419 </div> 5420 </div> 5421 </div> 5422 </div> 5423 </template> 5424</section> 5425 5426</div> 5427 5428<div x-data="initKlaviyoCustomerTracking()" 5429 @private-content-loaded.window="sendCustomerDataToKlaviyo(event.detail.data)"></div> 5430
5430<script> 5431 function initKlaviyoCustomerTracking() { 5432 return { 5433 sendCustomerDataToKlaviyo(data) { 5434 window.addEventListener('init-external-scripts', () => { 5435 const _learnq = window._learnq || []; 5436 const customer = data.customer; 5437 var resource = document.createElement('script'); 5438 resource.async = "true"; 5439 resource.src = "https://static.klaviyo.com/onsite/js/klaviyo.js?company_id=WAwVDg"; 5440 var script = document.getElementsByTagName('script')[0]; 5441 script.parentNode.insertBefore(resource, script); 5442 5443 if (customer && customer.email) { 5444 script.addEventListener('load', function() { 5445 _learnq.push(['identify', { 5446 $email: customer.email, 5447 $first_name: customer.firstname ? customer.firstname : '', 5448 $last_name: customer.lastname ? customer.lastname : '' 5449 }]); 5450 }); 5451 } 5452 }, {once: true, passive: true}); 5453 } 5454 } 5455 } 5456 </script>
5456 5457<a class="action skip sr-only contentarea" 5458 href="#contentarea"> 5459 <span> 5460 Skip to Content </span> 5461</a> 5462<div class="widget block block-static-block"> 5463 <div data-content-type="html" data-appearance="default" data-element="main" data-decoded="true"><div class="notification5 text-center text-size13 font-normal text-white bg-[#15324C]"> 5464 <style>#html-body [data-pb-style=LJM3NLA]{justify-content:flex-start;display:flex;flex-direction:column;background-position:left top;background-size:cover;background-repeat:no-repeat;background-attachment:scroll}</style><div data-content-type="row" data-appearance="contained" data-element="main"><div data-enable-parallax="0" data-parallax-speed="0.5" data-background-images="{}" data-background-type="image" data-video-loop="true" data-video-play-only-visible="true" data-video-lazy-load="true" data-video-fallback-src="" data-element="inner" data-pb-style="LJM3NLA"><div data-content-type="html" data-appearance="default" data-element="main" data-decoded="true"><center> 5465<p style="font-size: medium;">ð Fall Flooring Refresh - Save Up To 35% Off - Sale Ends Sunday 9/27 </p> 5466 5467</center> 5468</div></div></div></div></div></div> 5469</header><div class="top-container"><nav class="breadcrumbs order-2 w-full" aria-label="Breadcrumb"> 5470 <div class="breadcrumbs-in py-8"> 5471 <ol class="items list-reset rounded flex flex-wrap text-grey text-sm"> 5472 <li class="item flex home"> 5473 <a href="https://www.flooringinc.com/" 5474 class="no-underline text-sm font-normal" 5475 title="Go to Home Page" 5476 >Home</a> 5477 </li> 5478 <li class="item flex cms_page"> 5479 <span aria-hidden="true" class="separator text-primary-lighter px-2 text-sm font-normal">/</span> 5480 <a href="" 5481 class="text-sm font-semibold current" 5482 aria-current="page" 5483 >about</a> 5484 </li> 5485 </ol> 5486 </div> 5487</nav> 5488</div><main id="maincontent" class="page-main-full-width"><div id="contentarea" tabindex="-1"></div> 5489<div class="page messages">
5489<script> 5490 function initMessages() { 5491 "use strict"; 5492 return { 5493 messages: window.mageMessages || [], 5494 isEmpty() { 5495 return this.messages.reduce( 5496 function (isEmpty, message) { 5497 return isEmpty && message === undefined 5498 }, true 5499 ) 5500 }, 5501 removeMessage(messageIndex) { 5502 this.messages[messageIndex] = undefined; 5503 }, 5504 addMessages(messages, hideAfter) { 5505 messages.map((message) => { 5506 /* Code to avoid multiple messages on the page */ 5507 5508 if (message.text.includes("A customer with the same email address already exists")) { 5509 message.text = 'A customer with the same email address already exists in an associated website. If you would like to upgrade your account to a Pro Account - please <a href='+BASE_URL+'contact>contact customer service</a>.'; 5510 } 5511 if(this.messages!="") { 5512 this.messages=[]; 5513 } 5514 this.messages = this.messages.concat(message); 5515 if (hideAfter) { 5516 this.setHideTimeOut(this.messages.length -1, hideAfter); 5517 } 5518 }); 5519 }, 5520 setHideTimeOut(messageIndex, hideAfter) { 5521 setTimeout((messageIndex) => { 5522 this.removeMessage(messageIndex); 5523 }, hideAfter, messageIndex); 5524 }, 5525 eventListeners: { 5526 ['@messages-loaded.window']() { 5527 this.addMessages(event.detail.messages, event.detail.hideAfter) 5528 }, 5529 ['@private-content-loaded.window'](event) { 5530 const data = event.detail.data; 5531 if ( 5532 data.messages && 5533 data.messages.messages && 5534 data.messages.messages.length 5535 ) { 5536 this.addMessages(data.messages.messages); 5537 } 5538 }, 5539 ['@clear-messages.window']() { 5540 this.messages = []; 5541 } 5542 } 5543 } 5544 } 5545</script>
5545 5546<section id="messages" 5547 x-data="initMessages()" 5548 x-bind="eventListeners" 5549> 5550 <template x-if="!isEmpty()"> 5551 <div class="w-full"> 5552 <div role="alert" class="messages container"> 5553 <template x-for="(message, index) in messages" :key="index"> 5554 <div> 5555 <template x-if="message"> 5556 <div class="message" :class="message.type" 5557 :ui-id="'message-' + message.type" 5558 > 5559 <span x-html="message.text"></span> 5560 <a href="#" class="close cursor-pointer" title="close" 5561 @click.prevent="removeMessage(index)"> 5562 <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" class="text-white" width="18" height="18" role="img"> 5563 <path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12"/> 5564<title>x</title></svg> 5565 </a> 5566 </div> 5567 </template> 5568 </div> 5569 </template> 5570 </div> 5571 </div> 5572 </template> 5573</section></div><div class="widget block block-static-block"> 5574 <style>#html-body [data-pb-style=UYH2DF7]{justify-content:flex-start;display:flex;flex-direction:column;background-position:left top;background-size:cover;background-repeat:no-repeat;background-attachment:scroll}</style><div class="notification2 bg-custom-blue" data-content-type="row" data-appearance="full-bleed" data-enable-parallax="0" data-parallax-speed="0.5" data-background-images="{}" data-background-type="image" data-video-loop="true" data-video-play-only-visible="true" data-video-lazy-load="true" data-video-fallback-src="" data-element="main" data-pb-style="UYH2DF7"><div data-content-type="html" data-appearance="default" data-element="main" data-decoded="true"></div></div></div> 5575<div class="widget block block-static-block"> 5576 <style>#html-body [data-pb-style=A9GJREG]{justify-content:flex-start;display:flex;flex-direction:column;background-position:left top;background-size:cover;background-repeat:no-repeat;background-attachment:scroll}</style><div data-content-type="row" data-appearance="contained" data-element="main"><div data-enable-parallax="0" data-parallax-speed="0.5" data-background-images="{}" data-background-type="image" data-video-loop="true" data-video-play-only-visible="true" data-video-lazy-load="true" data-video-fallback-src="" data-element="inner" data-pb-style="A9GJREG"><div data-content-type="html" data-appearance="default" data-element="main" data-decoded="true"></div></div></div></div> 5577<div class="columns"><div class="column main">
5577<script> 5578 5579 5580</script>
vendor: 2 bytes, line 5580
5580
5581<script> 5582 function samplesubmit(mainproduct,inputValue,productids,colors,spidsColors,confproname,confproid,childproids) { 5583 this.isLoading = true; 5584 const formKey = hyva.getFormKey(); 5585 const postUrl = BASE_URL + 'sampleproduct/Sample/Products/'; 5586 fetch(postUrl, { 5587 "headers": { 5588 "content-type": "application/x-www-form-urlencoded; charset=UTF-8", 5589 }, 5590 "body": "form_key=" + formKey + "&action_type=" + inputValue+ "&pids=" + productids+ "&colors=" + colors+ "&spidsColors=" + spidsColors+ "&confproname=" + confproname+ "&confproid=" + confproid +"&childproid=" + childproids, 5591 "method": "POST", 5592 "mode": "cors", 5593 "credentials": "include" 5594 }).then(response => { 5595 //this.isLoading = false; 5596 //window.dispatchEvent(new CustomEvent('reload-customer-section-data')); 5597 //fetchHtmlContent(mainproduct); 5598 if (! response.ok) console.warn('GET request failed'); 5599 return response.json(); 5600 }).then(result => { 5601 this.isLoading = false; 5602 window.dispatchEvent(new CustomEvent('reload-customer-section-data')); 5603 fetchHtmlContent(mainproduct,result.is_sample_added); 5604 }); 5605 } 5606 </script>
5606 5607
5607<script> 5608 function fetchHtmlContent(pid,is_sample_added) { 5609 console.log('Fetching HTML content for PID:', pid); 5610 const formKey = hyva.getFormKey(); 5611 const randomString = Math.random().toString(36).substring(2, 15); 5612 const postUrl = BASE_URL + 'sampleproduct/sample/popup/?pid='+pid; 5613 fetch(postUrl) 5614 .then(response => response.text()) 5615 .then(html => { 5616 console.log('Response received:', html); 5617 let myDivelements = document.getElementsByClassName('htmlcontent'+pid); 5618 var numberofelements=myDivelements.length; 5619 for(var i=0;i<numberofelements;++i){ 5620 myDivelements[i].innerHTML = html; 5621 } 5622 if(is_sample_added == 1 ){ //&& window.innerWidth <= 767 5623 document.querySelector(".order-free-sample-popup .closemodal").dispatchEvent(new Event('click')); 5624 document.querySelector("#menu-cart-icon").dispatchEvent(new Event('click')); 5625 } 5626 }) 5627 .catch(error => { 5628 console.error(error); 5629 }); 5630 } 5631</script>
5631 5632
5632<script> 5633 if (window.require) { 5634 require(['jquery', 'domReady!'], function($){ 5635 if ($('.mfblogunveil').length) { 5636 require(['Magefan_Blog/js/lib/mfblogunveil'], function(){ 5637 $('.mfblogunveil').mfblogunveil(); 5638 }); 5639 } 5640 }); 5641 } else { 5642 /* e.g. hyva theme */ 5643 document.addEventListener("DOMContentLoaded", function(){ 5644 var items = document.getElementsByClassName('mfblogunveil'); 5645 var el, url; 5646 if (items.length) { 5647 for (var i=0; i<items.length;i++) { 5648 el = items[i]; 5649 url = el.getAttribute('data-original'); 5650 if (!url) { 5651 continue; 5652 } 5653 if ('IMG' == el.tagName) { 5654 el.src = url; 5655 } else { 5656 el.style.backgroundImage = "url('" + url + "')"; 5657 } 5658 } 5659 } 5660 }); 5661 } 5662 </script>
5662 5663 5664<style>#html-body [data-pb-style=DT6EOSD],#html-body [data-pb-style=WP98EE8]{background-position:left top;background-size:cover;background-repeat:no-repeat;background-attachment:scroll}#html-body [data-pb-style=DT6EOSD]{justify-content:flex-start;display:flex;flex-direction:column;background-color:#fff5e7}#html-body [data-pb-style=WP98EE8]{align-self:stretch}#html-body [data-pb-style=XSAQQ83]{display:flex;width:100%}#html-body [data-pb-style=FI0NX2U],#html-body [data-pb-style=MUQEWL9]{justify-content:center;display:flex;flex-direction:column;background-position:left top;background-size:cover;background-repeat:no-repeat;background-attachment:scroll;width:50%;align-self:stretch}#html-body [data-pb-style=FI0NX2U]{justify-content:flex-start}#html-body [data-pb-style=R172XJ8]{border-style:none}#html-body [data-pb-style=I68ND63],#html-body [data-pb-style=MUT4PYM]{max-width:100%;height:auto}#html-body [data-pb-style=UJR4HOV]{background-position:left top;background-size:cover;background-repeat:no-repeat;background-attachment:scroll;align-self:stretch}#html-body [data-pb-style=I1AHCYW]{display:flex;width:100%}#html-body [data-pb-style=T934HII]{justify-content:flex-start;display:flex;flex-direction:column;background-position:left top;background-size:cover;background-repeat:no-repeat;background-attachment:scroll;width:25%;align-self:stretch}#html-body [data-pb-style=YQE81DT]{border-style:none}#html-body [data-pb-style=FF4FQGC],#html-body [data-pb-style=G7B5KUG]{max-width:100%;height:auto}#html-body [data-pb-style=NM9XOJF]{justify-content:flex-start;display:flex;flex-direction:column;background-position:left top;background-size:cover;background-repeat:no-repeat;background-attachment:scroll;width:25%;align-self:stretch}#html-body [data-pb-style=YGHQQ24]{border-style:none}#html-body [data-pb-style=KKF4FMN],#html-body [data-pb-style=W4FVSF0]{max-width:100%;height:auto}#html-body [data-pb-style=JWTO5Y6]{justify-content:flex-start;display:flex;flex-direction:column;background-position:left top;background-size:cover;background-repeat:no-repeat;background-attachment:scroll;width:25%;align-self:stretch}#html-body [data-pb-style=WKSUQQG]{border-style:none}#html-body [data-pb-style=SPA8TC2],#html-body [data-pb-style=TI5M8DY]{max-width:100%;height:auto}#html-body [data-pb-style=JSJYA9S]{justify-content:flex-start;display:flex;flex-direction:column;background-position:left top;background-size:cover;background-repeat:no-repeat;background-attachment:scroll;width:25%;align-self:stretch}#html-body [data-pb-style=C7M1A1R]{border-style:none}#html-body [data-pb-style=KJCB0D8],#html-body [data-pb-style=U2L9M8P]{max-width:100%;height:auto}#html-body [data-pb-style=HBPO0YL]{justify-content:flex-start;display:flex;flex-direction:column;background-position:left top;background-size:cover;background-repeat:no-repeat;background-attachment:scroll}#html-body [data-pb-style=XUPT306]{text-align:center}#html-body [data-pb-style=UYKU8DH]{background-position:left top;background-size:cover;background-repeat:no-repeat;background-attachment:scroll;align-self:stretch}#html-body [data-pb-style=S2MPR9P]{display:flex;width:100%}#html-body [data-pb-style=VMICSI0]{justify-content:flex-start;display:flex;flex-direction:column;background-position:left top;background-size:cover;background-repeat:no-repeat;background-attachment:scroll;width:33.3333%;align-self:stretch}#html-body [data-pb-style=X9XQ2FX]{border-style:none}#html-body [data-pb-style=GMQX6LS],#html-body [data-pb-style=PKRTL7S]{max-width:100%;height:auto}#html-body [data-pb-style=BA5N6AF]{justify-content:flex-start;display:flex;flex-direction:column;background-position:left top;background-size:cover;background-repeat:no-repeat;background-attachment:scroll;width:33.3333%;align-self:stretch}#html-body [data-pb-style=YU3BBRU]{border-style:none}#html-body [data-pb-style=ATTNYHN],#html-body [data-pb-style=DYM2A6L]{max-width:100%;height:auto}#html-body [data-pb-style=JGCOIMD]{justify-content:flex-start;display:flex;flex-direction:column;background-position:left top;background-size:cover;background-repeat:no-repeat;background-attachment:scroll;width:33.3333%;align-self:stretch}#html-body [data-pb-style=FQCN03W]{border-style:none}#html-body [data-pb-style=UW4PC07],#html-body [data-pb-style=V3T4823]{max-width:100%;height:auto}#html-body [data-pb-style=AEY978T]{display:flex;width:100%}#html-body [data-pb-style=GOUQAWU]{justify-content:flex-start;display:flex;flex-direction:column;background-position:left top;background-size:cover;background-repeat:no-repeat;background-attachment:scroll;width:33.3333%;align-self:stretch}#html-body [data-pb-style=TCFY4NB]{border-style:none}#html-body [data-pb-style=H831F5D],#html-body [data-pb-style=OV6K24B]{max-width:100%;height:auto}#html-body [data-pb-style=KP53YUI]{justify-content:flex-start;display:flex;flex-direction:column;background-position:left top;background-size:cover;background-repeat:no-repeat;background-attachment:scroll;width:33.3333%;align-self:stretch}#html-body [data-pb-style=TSBFL8V]{border-style:none}#html-body [data-pb-style=S4BFJYX],#html-body [data-pb-style=UR9O0W6]{max-width:100%;height:auto}#html-body [data-pb-style=OT2LSGQ]{justify-content:flex-start;display:flex;flex-direction:column;background-position:left top;background-size:cover;background-repeat:no-repeat;background-attachment:scroll;width:33.3333%;align-self:stretch}#html-body [data-pb-style=QW6EJ22]{border-style:none}#html-body [data-pb-style=SIUPP55],#html-body [data-pb-style=VOGVQJN]{max-width:100%;height:auto}#html-body [data-pb-style=G2IF4X1]{background-position:left top;background-size:cover;background-repeat:no-repeat;background-attachment:scroll;align-self:stretch}
5664#html-body [data-pb-style=DSOITFT]{display:flex;width:100%}#html-body [data-pb-style=ONWWSXJ]{justify-content:flex-start;display:flex;flex-direction:column;background-position:left top;background-size:cover;background-repeat:no-repeat;background-attachment:scroll;width:33.3333%;align-self:stretch}#html-body [data-pb-style=QJV3VQD]{border-style:none}#html-body [data-pb-style=D66GLJ1],#html-body [data-pb-style=TNPHTRI]{max-width:100%;height:auto}#html-body [data-pb-style=CGHGMDE],#html-body [data-pb-style=HUY5RVO]{justify-content:flex-start;display:flex;flex-direction:column;width:33.3333%;align-self:stretch}#html-body [data-pb-style=BMHON8D],#html-body [data-pb-style=CGHGMDE],#html-body [data-pb-style=HUY5RVO],#html-body [data-pb-style=JGDNA14]{background-position:left top;background-size:cover;background-repeat:no-repeat;background-attachment:scroll}#html-body [data-pb-style=JGDNA14]{justify-content:flex-start;display:flex;flex-direction:column;background-color:#fff5e7}#html-body [data-pb-style=BMHON8D]{align-self:stretch}#html-body [data-pb-style=ML4P8N1]{display:flex;width:100%}#html-body [data-pb-style=XEGPMWR]{justify-content:flex-start;display:flex;flex-direction:column;background-position:left top;background-size:cover;background-repeat:no-repeat;background-attachment:scroll;width:100%;align-self:stretch}#html-body [data-pb-style=OFRGNQF]{text-align:center}#html-body [data-pb-style=QOQCGY4]{justify-content:flex-start;display:flex;flex-direction:column;background-position:left top;background-size:cover;background-repeat:no-repeat;background-attachment:scroll}#html-body [data-pb-style=JBFSIWV]{text-align:center}#html-body [data-pb-style=IGE1DTS]{background-position:left top;background-size:cover;background-repeat:no-repeat;background-attachment:scroll;align-self:stretch}#html-body [data-pb-style=HUFFBHH]{display:flex;width:100%}#html-body [data-pb-style=KXAUWG1]{justify-content:flex-start;display:flex;flex-direction:column;background-position:left top;background-size:cover;background-repeat:no-repeat;background-attachment:scroll;width:25%;align-self:stretch}#html-body [data-pb-style=NT6YXGT]{border-style:none}#html-body [data-pb-style=EXQSATU],#html-body [data-pb-style=GXTNS28]{max-width:100%;height:auto}#html-body [data-pb-style=YK6IEXO]{justify-content:flex-start;display:flex;flex-direction:column;background-position:left top;background-size:cover;background-repeat:no-repeat;background-attachment:scroll;width:25%;align-self:stretch}#html-body [data-pb-style=RDU72V2]{border-style:none}#html-body [data-pb-style=B2AL7RH],#html-body [data-pb-style=PEVU3UT]{max-width:100%;height:auto}#html-body [data-pb-style=YKYBXV5]{justify-content:flex-start;display:flex;flex-direction:column;background-position:left top;background-size:cover;background-repeat:no-repeat;background-attachment:scroll;width:25%;align-self:stretch}#html-body [data-pb-style=FRM7FNS]{border-style:none}#html-body [data-pb-style=G4REC92],#html-body [data-pb-style=SI723FA]{max-width:100%;height:auto}#html-body [data-pb-style=PPSFTY0]{justify-content:flex-start;display:flex;flex-direction:column;background-position:left top;background-size:cover;background-repeat:no-repeat;background-attachment:scroll;width:25%;align-self:stretch}#html-body [data-pb-style=Y1X5X1L]{border-style:none}#html-body [data-pb-style=MQKFQSJ],#html-body [data-pb-style=YSB33E7]{max-width:100%;height:auto}#html-body [data-pb-style=E8T9MG0],#html-body [data-pb-style=X8N6MDH]{background-position:left top;background-size:cover;background-repeat:no-repeat;background-attachment:scroll}#html-body [data-pb-style=E8T9MG0]{justify-content:flex-start;display:flex;flex-direction:column;background-color:#fff5e7}#html-body [data-pb-style=X8N6MDH]{align-self:stretch}#html-body [data-pb-style=P8HRLTT]{display:flex;width:100%}#html-body [data-pb-style=QX8XAJ8]{justify-content:flex-start;display:flex;flex-direction:column;background-position:left top;background-size:cover;background-repeat:no-repeat;background-attachment:scroll;width:100%;align-self:stretch}#html-body [data-pb-style=VBRX1JU]{text-align:center}#html-body [data-pb-style=FY50TNI],#html-body [data-pb-style=N1MXC9B]{background-position:left top;background-size:cover;background-repeat:no-repeat;background-attachment:scroll}#html-body [data-pb-style=N1MXC9B]{justify-content:flex-start;display:flex;flex-direction:column}#html-body [data-pb-style=FY50TNI]{align-self:stretch}#html-body [data-pb-style=P9CEI8D]{display:flex;width:100%}#html-body [data-pb-style=HHY6H5Y]{justify-content:center;display:flex;flex-direction:column;background-position:left top;background-size:cover;background-repeat:no-repeat;background-attachment:scroll;width:50%;align-self:stretch}#html-body [data-pb-style=H3M3UDP]{text-align:center;border-style:none}#html-body [data-pb-style=GRBX0RX],#html-body [data-pb-style=QN05Y33]{max-width:100%;height:auto}#html-body [data-pb-style=BHAMPRV]{justify-content:center;display:flex;flex-direction:column;background-position:left top;background-size:cover;background-repeat:no-repeat;background-attachment:scroll;width:50%;align-self:stretch}#html-body [data-pb-style=V7KC12H]{display:inline-block}#html-body [data-pb-style=BGBXD09]{text-align:center}@media only screen and (max-width: 768px) { #html-body [data-pb-style=C7M1A1R],#html-body [data-pb-style=FQCN03W],#html-body [data-pb-style=FRM7FNS],#html-body [data-pb-style=H3M3UDP],#html-body [data-pb-style=NT6YXGT],#html-body [data-pb-style=QJV3VQD],#html-body [data-pb-style=QW6EJ22],#html-body [data-pb-style=R172XJ8],#html-body [data-pb-style=RDU72V2],#html-body [data-pb-style=TCFY4NB],#html-body [data-pb-style=TSBFL8V],#html-body [data-pb-style=WKSUQQG],#html-body [data-pb-style=X9XQ2FX],#html-body [data-pb-style=Y1X5X1L],#html-body [data-pb-style=YGHQQ24],#html-body [data-pb-style=YQE81DT],#html-body [data-pb-style=YU3BBRU]{border-style:none} }</style><div class="story-banner" data-content-type="row" data-appearance="full-bleed" data-enable-parallax="0" data-parallax-speed="0.5" data-background-images="{}" data-background-type="image" data-video-loop="true" data-video-play-only-visible="true" data-video-lazy-load="true" data-video-fallback-src="" data-element="main" data-pb-style="DT6EOSD"><div class="pagebuilder-column-group story-image" data-background-images="{}" data-content-type="column-group" data-appearance="default" data-grid-size="12" data-element="main" data-pb-style="WP98EE8"><div class="pagebuilder-column-line" data-content-type="column-line" data-element="main" data-pb-style="XSAQQ83"><div class="pagebuilder-column" data-content-type="column" data-appearance="full-height" data-background-images="{}" data-element="main" data-pb-style="MUQEWL9"><h1 data-content-type="heading" data-appearance="default" data-element="main">Our Story</h1><div data-content-type="text" data-appearance="default" data-element="main"><p>We’re not your typical big brand. Our founders—Chuck, Kurt, and Tony—started this business in 2007 as three friends working from a bedroom office, with <strong>one clear goal: to offer the best prices and value in flooring without compromising quality or service.</strong> They saw that finding specialty, high-performance flooring was difficult, confusing, and needlessly expensive. Our mission was to fix that. They recognized a growing demand for Rubber Flooring and launched RubberFlooringInc.com, providing customers with direct access to manufacturers and products that were previously hard to find.</p></div></div><div class="pagebuilder-column" data-content-type="column" data-appearance="full-height" data-background-images="{}" data-element="main" data-pb-style="FI0NX2U"><figure data-content-type="image" data-appearance="full-width" data-element="main" data-pb-style="R172XJ8"><picture class="pagebuilder-mobile-hidden"><source type="image/webp" srcset="https://www.flooringinc.com/media/wysiwyg/aboutuss-banner.webp"><img class="pagebuilder-mobile-hidden" src="https://www.flooringinc.com/media/wysiwyg/aboutuss-banner.png" alt="" title="" width="" height="" fetchpriority="false" data-use-native-image-dimensions="true" data-element="desktop_image" data-pb-style="MUT4PYM"></picture><picture class="pagebuilder-mobile-only"><source type="image/webp" srcset="https://www.flooringinc.com/media/wysiwyg/aboutus-banner-mobile.webp"><img class="pagebuilder-mobile-only" src="https://www.flooringinc.com/media/wysiwyg/aboutus-banner-mobile.png" alt="" title="" width="" height="" fetchpriority="false" data-use-native-image-dimensions="true" data-element="mobile_image" data-pb-style="I68ND63"></picture></figure></div></div></div><div class="pagebuilder-column-group about-brand" data-background-images="{}" data-content-type="column-group" data-appearance="default" data-grid-size="12" data-element="main" data-pb-style="UJR4HOV"><div class="pagebuilder-column-line" data-content-type="column-line" data-element="main" data-pb-style="I1AHCYW"><div class="pagebuilder-column" data-content-type="column" data-appearance="full-height" data-background-images="{}" data-element="main" data-pb-style="T934HII"><figure data-content-type="image" data-appearance="full-width" data-element="main" data-pb-style="YQE81DT"><picture class="pagebuilder-mobile-hidden"><source type="image/webp" srcset="https://www.flooringinc.com/media/wysiwyg/logo_RubberFloroingInc.webp"><img class="pagebuilder-mobile-hidden" src="https://www.flooringinc.com/media/wysiwyg/logo_RubberFloroingInc.png" alt="" title="" width="" height="" fetchpriority="false" data-use-native-image-dimensions="true" data-element="desktop_image" data-pb-style="FF4FQGC"></picture><picture class="pagebuilder-mobile-only"><source type="image/webp" srcset="https://www.flooringinc.com/media/wysiwyg/RubberFloroingInc_mobile.webp"><img class="pagebuilder-mobile-only" src="https://www.flooringinc.com/media/wysiwyg/RubberFloroingInc_mobile.png" alt="" title="" width="" height="" fetchpriority="false" data-use-native-image-dimensions="true" data-element="mobile_image" data-pb-style="G7B5KUG"></picture></figure></div><div class="pagebuilder-column" data-content-type="column" data-appearance="full-height" data-background-images="{}" data-element="main" data-pb-style="NM9XOJF"><figure data-content-type="image" data-appearance="full-width" data-element="main" data-pb-style="YGHQQ24"><picture class="pagebuilder-mobile-hidden"><source type="image/webp" srcset="https://www.flooringinc.com/media/wysiwyg/logo_Garage.webp"><img class="pagebuilder-mobile-hidden" src="https://www.flooringinc.com/media/wysiwyg/logo_Garage.png" alt="" title="" width="" height="" fetchpriority="false" data-use-native-image-dimensions="true" data-element="desktop_image" data-pb-style="W4FVSF0"></picture><picture class="pagebuilder-mobile-only"><source type="image/webp" srcset="https://www.flooringinc.com/media/wysiwyg/logo_Garage_mobile.webp"><img class="pagebuilder-mobile-only" src="https://www.flooringinc.com/media/wysiwyg/logo_Garage_mobile.png" alt="" title="" width="" height="" fetchpriority="false" data-use-native-image-dimensions="true" data-element="mobile_image" data-pb-style="KKF4FMN"></picture></figure></div><div class="pagebuilder-column" data-content-type="column" data-appearance="full-height" data-background-images="{}" data-element="main" data-pb-style="JWTO5Y6"><figure data-content-type="image" data-appearance="full-width" data-element="main" data-pb-style="WKSUQQG"><picture class="pagebuilder-mobile-hidden"><source type="image/webp" srcset="https://www.flooringinc.com/media/wysiwyg/logo_FoamTiles.webp"><img class="pagebuilder-mobile-hidden" src="https://www.flooringinc.com/media/wysiwyg/logo_FoamTiles.png" alt="" title="" width="" height="" fetchpriority="false" data-use-native-image-dimensions="true" data-element="desktop_image" data-pb-style="TI5M8DY"></picture><picture class="pagebuilder-mobile-only"><source type="image/webp" srcset="https://www.flooringinc.com/media/wysiwyg/logo_FoamTiles_mobile.webp"><img class="pagebuilder-mobile-only" src="https://www.flooringinc.com/media/wysiwyg/logo_FoamTiles_mobile.png" alt="" title="" width="" height="" fetchpriority="false" data-use-native-image-dimensions="true" data-element="mobile_image" data-pb-style="SPA8TC2"></picture></figure></div><div class="pagebuilder-column" data-content-type="column" data-appearance="full-height" data-background-images="{}" data-element="main" data-pb-style="JSJYA9S"><figure data-content-type="image" data-appearance="full-width" data-element="main" data-pb-style="C7M1A1R"><picture class="pagebuilder-mobile-hidden"><source type="image/webp" srcset="https://www.flooringinc.com/media/wysiwyg/logo_google.webp"><img class="pagebuilder-mobile-hidden" src="https://www.flooringinc.com/media/wysiwyg/logo_google.png" alt="" title="" width="" height="" fetchpriority="false" data-use-native-image-dimensions="true" data-element="desktop_image" data-pb-style="KJCB0D8"></picture><picture class="pagebuilder-mobile-only"><source type="image/webp" srcset="https://www.flooringinc.com/media/wysiwyg/logo_google_mobile.webp"><img class="pagebuilder-mobile-only" src="https://www.flooringinc.com/media/wysiwyg/logo_google_mobile.png" alt="" title="" width="" height="" fetchpriority="false" data-use-native-image-dimensions="true" data-element="mobile_image" data-pb-style="U2L9M8P"></picture></figure></div></div></div><div data-content-type="text" data-appearance="default" data-element="main"><p>As a small, tight-knit company, we’ve grown into a leading online flooring retailer, but we maintain the energy and dedication of a start-up, on <strong>a mission to help our customers bring their dream spaces to life</strong>. We pride ourselves on providing customers with the <strong>highest level of service and the best products</strong>. From practical DIY flooring options to step-by-step installation instructions and videos, we make it possible for anyone — regardless of experience — to complete their flooring project with confidence.</p> 5665<p>Over the years, we expanded to include GarageFlooringInc.com and FoamTiles.com, eventually merging these brands under FlooringInc.com. Today, we have shipped over 500 million square feet of flooring and offer over 22,000 items across 25 flooring types. Many of our products ship nationwide in under three days, with strategically located warehouses to ensure <strong>fast and reliable delivery</strong>.</p></div></div><div data-content-type="row" data-appearance="contained" data-element="main"><div class="about-make" data-enable-parallax="0" data-parallax-speed="0.5" data-background-images="{}" data-background-type="image" data-video-loop="true" data-video-play-only-visible="true" data-video-lazy-load="true" data-video-fallback-src="" data-element="inner" data-pb-style="HBPO0YL"><h2 data-content-type="heading" data-appearance="default" data-element="main" data-pb-style="XUPT306">What Makes Us Different</h2><div class="pagebuilder-column-group" data-background-images="{}" data-content-type="column-group" data-appearance="default" data-grid-size="12" data-element="main" data-pb-style="UYKU8DH"><div class="pagebuilder-column-line" data-content-type="column-line" data-element="main" data-pb-style="S2MPR9P"><div class="pagebuilder-column" data-content-type="column" data-appearance="full-height" data-background-images="{}" data-element="main" data-pb-style="VMICSI0"><figure data-content-type="image" data-appearance="full-width" data-element="main" data-pb-style="X9XQ2FX"><picture class="pagebuilder-mobile-hidden"><source type="image/webp" srcset="https://www.flooringinc.com/media/wysiwyg/Icon_1.webp"><img class="pagebuilder-mobile-hidden" src="https://www.flooringinc.com/media/wysiwyg/Icon_1.png" alt="" title="" width="" height="" fetchpriority="false" data-use-native-image-dimensions="true" data-element="desktop_image" data-pb-style="GMQX6LS"></picture><picture class="pagebuilder-mobile-only"><source type="image/webp" srcset="https://www.flooringinc.com/media/wysiwyg/Icon_1.webp"><img class="pagebuilder-mobile-only" src="https://www.flooringinc.com/media/wysiwyg/Icon_1.png" alt="" title="" width="" height="" fetchpriority="false" data-use-native-image-dimensions="true" data-element="mobile_image" data-pb-style="PKRTL7S"></picture></figure><div data-content-type="text" data-appearance="default" data-element="main"><h3>T
5665he Best Value in Flooring</h3> 5666<p>We believe flooring should be high-quality and affordable. With competitive pricing and proactive price matching, you can trust you’re getting the best value without having to shop around.</p></div></div><div class="pagebuilder-column" data-content-type="column" data-appearance="full-height" data-background-images="{}" data-element="main" data-pb-style="BA5N6AF"><figure data-content-type="image" data-appearance="full-width" data-element="main" data-pb-style="YU3BBRU"><picture class="pagebuilder-mobile-hidden"><source type="image/webp" srcset="https://www.flooringinc.com/media/wysiwyg/Icon_2.webp"><img class="pagebuilder-mobile-hidden" src="https://www.flooringinc.com/media/wysiwyg/Icon_2.png" alt="" title="" width="" height="" fetchpriority="false" data-use-native-image-dimensions="true" data-element="desktop_image" data-pb-style="DYM2A6L"></picture><picture class="pagebuilder-mobile-only"><source type="image/webp" srcset="https://www.flooringinc.com/media/wysiwyg/Icon_2.webp"><img class="pagebuilder-mobile-only" src="https://www.flooringinc.com/media/wysiwyg/Icon_2.png" alt="" title="" width="" height="" fetchpriority="false" data-use-native-image-dimensions="true" data-element="mobile_image" data-pb-style="ATTNYHN"></picture></figure><div data-content-type="text" data-appearance="default" data-element="main"><h3>The Lowest Prices on Shipping</h3> 5667<p>Because excessive fees just aren’t our thing.</p></div></div><div class="pagebuilder-column" data-content-type="column" data-appearance="full-height" data-background-images="{}" data-element="main" data-pb-style="JGCOIMD"><figure data-content-type="image" data-appearance="full-width" data-element="main" data-pb-style="FQCN03W"><picture class="pagebuilder-mobile-hidden"><source type="image/webp" srcset="https://www.flooringinc.com/media/wysiwyg/Icon_3.webp"><img class="pagebuilder-mobile-hidden" src="https://www.flooringinc.com/media/wysiwyg/Icon_3.png" alt="" title="" width="" height="" fetchpriority="false" data-use-native-image-dimensions="true" data-element="desktop_image" data-pb-style="UW4PC07"></picture><picture class="pagebuilder-mobile-only"><source type="image/webp" srcset="https://www.flooringinc.com/media/wysiwyg/Icon_3.webp"><img class="pagebuilder-mobile-only" src="https://www.flooringinc.com/media/wysiwyg/Icon_3.png" alt="" title="" width="" height="" fetchpriority="false" data-use-native-image-dimensions="true" data-element="mobile_image" data-pb-style="V3T4823"></picture></figure><div data-content-type="text" data-appearance="default" data-element="main"><h3>Fast Lead Times</h3> 5668<p>We get your order to you quickly because we know waiting is never fun.</p></div></div></div><div class="pagebuilder-column-line" data-content-type="column-line" data-element="main" data-pb-style="AEY978T"><div class="pagebuilder-column" data-content-type="column" data-appearance="full-height" data-background-images="{}" data-element="main" data-pb-style="GOUQAWU"><figure data-content-type="image" data-appearance="full-width" data-element="main" data-pb-style="TCFY4NB"><picture class="pagebuilder-mobile-hidden"><source type="image/webp" srcset="https://www.flooringinc.com/media/wysiwyg/Icon_4.webp"><img class="pagebuilder-mobile-hidden" src="https://www.flooringinc.com/media/wysiwyg/Icon_4.png" alt="" title="" width="" height="" fetchpriority="false" data-use-native-image-dimensions="true" data-element="desktop_image" data-pb-style="H831F5D"></picture><picture class="pagebuilder-mobile-only"><source type="image/webp" srcset="https://www.flooringinc.com/media/wysiwyg/Icon_4.webp"><img class="pagebuilder-mobile-only" src="https://www.flooringinc.com/media/wysiwyg/Icon_4.png" alt="" title="" width="" height="" fetchpriority="false" data-use-native-image-dimensions="true" data-element="mobile_image" data-pb-style="OV6K24B"></picture></figure><div data-content-type="text" data-appearance="default" data-element="main"><h3>Largest Selection</h3> 5669<p>From major brands to specialty and custom solutions, our extensive catalog ensures you’ll find the perfect flooring for any project — big or small.</p></div></div><div class="pagebuilder-column" data-content-type="column" data-appearance="full-height" data-background-images="{}" data-element="main" data-pb-style="KP53YUI"><figure data-content-type="image" data-appearance="full-width" data-element="main" data-pb-style="TSBFL8V"><picture class="pagebuilder-mobile-hidden"><source type="image/webp" srcset="https://www.flooringinc.com/media/wysiwyg/Icon_5.webp"><img class="pagebuilder-mobile-hidden" src="https://www.flooringinc.com/media/wysiwyg/Icon_5.png" alt="" title="" width="" height="" fetchpriority="false" data-use-native-image-dimensions="true" data-element="desktop_image" data-pb-style="S4BFJYX"></picture><picture class="pagebuilder-mobile-only"><source type="image/webp" srcset="https://www.flooringinc.com/media/wysiwyg/Icon_5.webp"><img class="pagebuilder-mobile-only" src="https://www.flooringinc.com/media/wysiwyg/Icon_5.png" alt="" title="" width="" height="" fetchpriority="false" data-use-native-image-dimensions="true" data-element="mobile_image" data-pb-style="UR9O0W6"></picture></figure><div data-content-type="text" data-appearance="default" data-element="main"><h3>Peace of Mind Guaranteed</h3> 5670<p>Our 30-day money-back guarantee and free samples allow you to see and feel products before making a purchase, ensuring you can make informed choices with confidence.</p></div></div><div class="pagebuilder-column" data-content-type="column" data-appearance="full-height" data-background-images="{}" data-element="main" data-pb-style="OT2LSGQ"><figure data-content-type="image" data-appearance="full-width" data-element="main" data-pb-style="QW6EJ22"><picture class="pagebuilder-mobile-hidden"><source type="image/webp" srcset="https://www.flooringinc.com/media/wysiwyg/Icon_6.webp"><img class="pagebuilder-mobile-hidden" src="https://www.flooringinc.com/media/wysiwyg/Icon_6.png" alt="" title="" width="" height="" fetchpriority="false" data-use-native-image-dimensions="true" data-element="desktop_image" data-pb-style="VOGVQJN"></picture><picture class="pagebuilder-mobile-only"><source type="image/webp" srcset="https://www.flooringinc.com/media/wysiwyg/Icon_6.webp"><img class="pagebuilder-mobile-only" src="https://www.flooringinc.com/media/wysiwyg/Icon_6.png" alt="" title="" width="" height="" fetchpriority="false" data-use-native-image-dimensions="true" data-element="mobile_image" data-pb-style="SIUPP55"></picture></figure><div data-content-type="text" data-appearance="default" data-element="main"><h3>Expert Support</h3> 5671<p>Our dedicated flooring consultants, available six days a week, provide personalized guidance to help you find the right products for your space.</p></div></div></div></div><div class="pagebuilder-column-group" data-background-images="{}" data-content-type="column-group" data-appearance="default" data-grid-size="12" data-element="main" data-pb-style="G2IF4X1"><div class="pagebuilder-column-line" data-content-type="column-line" data-element="main" data-pb-style="DSOITFT"><div class="pagebuilder-column" data-content-type="column" data-appearance="full-height" data-background-images="{}" data-element="main" data-pb-style="ONWWSXJ"><figure data-content-type="image" data-appearance="full-width" data-element="main" data-pb-style="QJV3VQD"><picture class="pagebuilder-mobile-hidden"><source type="image/webp" srcset="https://www.flooringinc.com/media/wysiwyg/Icon_7.webp"><img class="pagebuilder-mobile-hidden" src="https://www.flooringinc.com/media/wysiwyg/Icon_7.png" alt="" title="" width="" height="" fetchpriority="false" data-use-native-image-dimensions="true" data-element="desktop_image" data-pb-style="D66GLJ1"></picture><picture class="pagebuilder-mobile-only"><source type="image/webp" srcset="https://www.flooringinc.com/media/wysiwyg/Icon_7.webp"><img class="pagebuilder-mobile-only" src="https://www.flooringinc.com/media/wysiwyg/Icon_7.png" alt="" title="" width="" height="" fetchpriority="false" data-use-native-image-dimensions="true" data-element="mobile_image" data-pb-style="TNPHTRI"></picture></figure><div data-content-type="text" data-appearance="default" data-element="main"><h3>Flexible Payments</h3> 5672<p>We offer every major credit card, PayPal, Amazon Pay, Affirm, and split payment options, making it easy to pay your way.</p></div></div><div class="pagebuilder-column no-border" data-content-type="column" data-appearance="full-height" data-background-images="{}" data-element="main" data-pb-style="HUY5RVO"></div><div class="pagebuilder-column no-border" data-content-type="column" data-appearance="full-height" data-background-images="{}" data-element="main" data-pb-style="CGHGMDE"></div></div></div></div></div><div class="about-mission" data-content-type="row" data-appearance="full-bleed" data-enable-parallax="0" data-parallax-speed="0.5" data-background-images="{}" data-background-type="image" data-video-loop="true" data-video-play-only-visible="true" data-video-lazy-load="true" data-video-fallback-src="" data-element="main" data-pb-style="JGDNA14"><div class="pagebuilder-column-group" data-background-images="{}" data-content-type="column-group" data-appearance="default" data-grid-size="12" data-element="main" data-pb-style="BMHON8D"><div class="pagebuilder-column-line" data-content-type="column-line" data-element="main" data-pb-style="ML4P8N1"><div class="pagebuilder-column" data-content-type="column" data-appearance="full-height" data-background-images="{}" data-element="main" data-pb-style="XEGPMWR"><h2 data-content-type="heading" data-appearance="default" data-element="main" data-pb-style="OFRGNQF">Our Mission</h2><div data-content-type="text" data-appearance="default" data-element="main"><p style="text-align: center;">We exist to help you bring your dream space to life—whether it’s a new gym, garage, studio, or business. Our journey began with rubber flooring, and over the years, we’ve expanded to become experts in garage flooring, foam flooring, and dance flooring, along with other specialty performance solutions (including sport and turf options). Our extensive selection provides everything needed to tackle any project, large or small.</p> 5673<p style="text-align: center;">Every floor we sell reflects our founders’ original vision: Deliver the best value, expert guidance, and worry-free experience so every customer can buy with confidence.</p></div></div></div></div></div><div data-content-type="row" data-appearance="contained" data-element="main"><div class="about-trust" data-enable-parallax="0" data-parallax-speed="0.5" data-background-images="{}" data-background-type="image" data-video-loop="true" data-video-play-only-visible="true" data-video-lazy-load="true" data-video-fallback-src="" data-element="inner" data-pb-style="QOQCGY4"><h2 data-content-type="heading" data-appearance="default" data-element="main" data-pb-style="JBFSIWV">Why Customers Trust Us</h2><div class="pagebuilder-column-group" data-background-images="{}" data-content-type="column-group" data-appearance="default" data-grid-size="12" data-element="main" data-pb-style="IGE1DTS"><div class="pagebuilder-column-line" data-content-type="column-line" data-element="main" data-pb-style="HUFFBHH"><div class="pagebuilder-column" data-content-type="column" data-appearance="full-height" data-background-images="{}" data-element="main" data-pb-style="KXAUWG1"><figure data-content-type="image" data-appearance="full-width" data-element="main" data-pb-style="NT6YXGT"><picture class="pagebuilder-mobile-hidden"><source type="image/webp" srcset="https://www.flooringinc.com/media/wysiwyg/Icon_8.webp"><img class="pagebuilder-mobile-hidden" src="https://www.flooringinc.com/media/wysiwyg/Icon_8.png" alt="" title="" width="" height="" fetchpriority="false" data-use-native-image-dimensions="true" data-element="desktop_image" data-pb-style="GXTNS28"></picture><picture class="pagebuilder-mobile-only"><source type="image/webp" srcset="https://www.flooringinc.com/media/wysiwyg/Icon_8.webp"><img class="pagebuilder-mobile-only" src="https://www.flooringinc.com/media/wysiwyg/Icon_8.png" alt="" title="" width="" height="" fetchpriority="false" data-use-native-image-dimensions="true" data-element="mobile_image" data-pb-style="EXQSATU"></picture></figure><h4 data-content-type="heading" data-appearance="default" data-element="main">Proven Experience</h4><div data-content-type="text" data-appearance="default" data-element="main"><p>Over 18 years in business, an A+ BBB rating, and more than 100,000 verified 5-star reviews show we deliver on our promises.</p></div></div><div class="pagebuilder-column" data-content-type="column" data-appearance="full-height" data-background-images="{}" data-element="main" data-pb-style="YK6IEXO"><figure data-content-type="image" data-appearance="full-width" data-element="main" data-pb-style="RDU72V2"><picture class="pagebuilder-mobile-hidden"><source type="image/webp" srcset="https://www.flooringinc.com/media/wysiwyg/Icon_5.webp"><img class="pagebuilder-mobile-hidden" src="https://www.flooringinc.com/media/wysiwyg/Icon_5.png" alt="" title="" width="" height="" fetchpriority="false" data-use-native-image-dimensions="true" data-element="desktop_image" data-pb-style="PEVU3UT"></picture><picture class="pagebuilder-mobile-only"><source type="image/webp" srcset="https://www.flooringinc.com/media/wysiwyg/Icon_5.webp"><img class="pagebuilder-mobile-only" src="https://www.flooringinc.com/media/wysiwyg/Icon_5.png" alt="" title="" width="" height="" fetchpriority="false" data-use-native-image-dimensions="true" data-element="mobile_image" data-pb-style="B2AL7RH"></picture></figure><h4 data-content-type="heading" data-appearance="default" data-element="main">Expertise That Matters</h4><div data-content-type="text" data-appearance="default" data-element="main"><p>Our team knows flooring inside and out, giving you advice tailored to your project.</p></div></div><div class="pagebuilder-column" data-content-type="column" data-appearance="full-height" data-background-images="{}" data-element="main" data-pb-style="YKYBXV5"><figure data-content-type="image" data-appearance="full-width" data-element="main" data-pb-style="FRM7FNS"><picture class="pagebuilder-mobile-hidden"><source type="image/webp" srcset="https://www.flooringinc.com/media/wysiwyg/Icon_1.webp"><img class="pagebuilder-mobile-hidden" src="https://www.flooringinc.com/media/wysiwyg/Icon_1.png" alt="" title="" width="" height="" fetchpriority="false" data-use-native-image-dimensions="true" data-element="desktop_image" data-pb-style="G4REC92"></picture><picture class="pagebuilder-mobile-only"><source type="image/webp" srcset="https://www.flooringinc.com/media/wysiwyg/Icon_1.webp"><img class="pagebuilder-mobile-only" src="https://www.flooringinc.com/media/wysiwyg/Icon_1.png" alt="" title="" width="" height="" fetchpriority="false" data-use-native-image-dimensions="true" data-element="mobile_image" data-pb-style="SI723FA"></picture></figure><h4 data-content-type="heading" data-appearance="default" data-element="main">Customer-First Policies</h4><div data-content-type="text" data-appearance="default" data-element="main"><p>Fast shipping, flexible payment options, and worry-free shopping make your experience seamless.</p></div></div><div class="pagebuilder-column" data-content-type="column" data-appearance="full-height" data-background-images="{}" data-element="main" data-pb-style="PPSFTY0"><figure data-content-type="image" data-appearance="full-width" data-element="main" data-pb-style="Y
56731X5X1L"><picture class="pagebuilder-mobile-hidden"><source type="image/webp" srcset="https://www.flooringinc.com/media/wysiwyg/Icon_9.webp"><img class="pagebuilder-mobile-hidden" src="https://www.flooringinc.com/media/wysiwyg/Icon_9.png" alt="" title="" width="" height="" fetchpriority="false" data-use-native-image-dimensions="true" data-element="desktop_image" data-pb-style="YSB33E7"></picture><picture class="pagebuilder-mobile-only"><source type="image/webp" srcset="https://www.flooringinc.com/media/wysiwyg/Icon_9.webp"><img class="pagebuilder-mobile-only" src="https://www.flooringinc.com/media/wysiwyg/Icon_9.png" alt="" title="" width="" height="" fetchpriority="false" data-use-native-image-dimensions="true" data-element="mobile_image" data-pb-style="MQKFQSJ"></picture></figure><h4 data-content-type="heading" data-appearance="default" data-element="main">Most Extensive Selection</h4><div data-content-type="text" data-appearance="default" data-element="main"><p>Major brands, performance products, and specialty options mean you’ll find exactly what you need.</p></div></div></div></div></div></div><div class="about-promise" data-content-type="row" data-appearance="full-bleed" data-enable-parallax="0" data-parallax-speed="0.5" data-background-images="{}" data-background-type="image" data-video-loop="true" data-video-play-only-visible="true" data-video-lazy-load="true" data-video-fallback-src="" data-element="main" data-pb-style="E8T9MG0"><div class="pagebuilder-column-group" data-background-images="{}" data-content-type="column-group" data-appearance="default" data-grid-size="12" data-element="main" data-pb-style="X8N6MDH"><div class="pagebuilder-column-line" data-content-type="column-line" data-element="main" data-pb-style="P8HRLTT"><div class="pagebuilder-column" data-content-type="column" data-appearance="full-height" data-background-images="{}" data-element="main" data-pb-style="QX8XAJ8"><h2 data-content-type="heading" data-appearance="default" data-element="main" data-pb-style="VBRX1JU">Our Promise</h2><div data-content-type="text" data-appearance="default" data-element="main"><p style="text-align: center;">Flooring Inc. isn’t just a business — it’s a mission brought to life by a dedicated team that cares. We’re proud to remain small and focused, helping customers achieve the best flooring solutions while staying true to the principles our founders instilled: Integrity, Expertise, and Customer Care.</p> 5674<p style="text-align: center;">We are committed to providing the best value in flooring — through competitive pricing, quality products, expert guidance, and a worry-free online shopping experience. Every floor we sell reflects the trust our customers place in us, and it’s a responsibility we take seriously.</p> 5675<p style="text-align: center;">Thank you for letting us help bring your space to life.</p></div></div></div></div></div><div data-content-type="row" data-appearance="contained" data-element="main"><div class="about-team" data-enable-parallax="0" data-parallax-speed="0.5" data-background-images="{}" data-background-type="image" data-video-loop="true" data-video-play-only-visible="true" data-video-lazy-load="true" data-video-fallback-src="" data-element="inner" data-pb-style="N1MXC9B"><div class="pagebuilder-column-group" data-background-images="{}" data-content-type="column-group" data-appearance="default" data-grid-size="12" data-element="main" data-pb-style="FY50TNI"><div class="pagebuilder-column-line" data-content-type="column-line" data-element="main" data-pb-style="P9CEI8D"><div class="pagebuilder-column" data-content-type="column" data-appearance="full-height" data-background-images="{}" data-element="main" data-pb-style="HHY6H5Y"><figure class="m-auto" data-content-type="image" data-appearance="full-width" data-element="main" data-pb-style="H3M3UDP"><picture class="pagebuilder-mobile-hidden"><source type="image/webp" srcset="https://www.flooringinc.com/media/wysiwyg/about_team.webp"><img class="pagebuilder-mobile-hidden" src="https://www.flooringinc.com/media/wysiwyg/about_team.jpg" alt="" title="" width="" height="" fetchpriority="false" data-use-native-image-dimensions="true" data-element="desktop_image" data-pb-style="GRBX0RX"></picture><picture class="pagebuilder-mobile-only"><source type="image/webp" srcset="https://www.flooringinc.com/media/wysiwyg/about_team_mobile.webp"><img class="pagebuilder-mobile-only" src="https://www.flooringinc.com/media/wysiwyg/about_team_mobile.jpg" alt="" title="" width="" height="" fetchpriority="false" data-use-native-image-dimensions="true" data-element="mobile_image" data-pb-style="QN05Y33"></picture></figure></div><div class="pagebuilder-column" data-content-type="column" data-appearance="full-height" data-background-images="{}" data-element="main" data-pb-style="BHAMPRV"><h2 data-content-type="heading" data-appearance="default" data-element="main">Our Team & Culture </h2><div data-content-type="text" data-appearance="default" data-element="main"><p>Flooring Inc. is driven by a creative, collaborative team committed to excellence, whether working in the office or remotely. We foster a close-knit culture centered on shared fun, creativity, and dedication to our customers. This strong team foundation is a key reason for our growth and excellent reputation. Is this the right fit for you? Apply today to join our team!</p></div><div data-content-type="buttons" data-appearance="inline" data-same-width="false" data-element="main"><div data-content-type="button-item" data-appearance="default" data-element="main" data-pb-style="V7KC12H"><a class="pagebuilder-button-primary" href="/careers" target="" data-link-type="default" data-element="link" data-pb-style="BGBXD09"><span data-element="link_text">Apply Today</span></a></div></div></div></div></div></div></div><div data-content-type="html" data-appearance="default" data-element="main" data-decoded="true"><style> 5676@media(min-width: 769px){ 5677.cms-about .breadcrumbs-in { 5678 visibility: hidden; 5679 padding: 0px; 5680} 5681 5682.cms-about #maincontent .columns { 5683 max-width: 100%; 5684 padding: 0px; 5685} 5686 5687.cms-about #maincontent .columns h2 { 5688 font-size: 42px; 5689 line-height: 46.2px; 5690 --tw-text-opacity: 1;
5691 color: rgb(30 30 30 / var(--tw-text-opacity)); 5692 margin-bottom: 2rem; 5693 font-weight: 700; 5694 font-family: 'Inter', sans-serif!important; 5695} 5696 5697.cms-about #maincontent .columns p { 5698 font-size: 18px; 5699 line-height: 25.2px; 5700 --tw-text-opacity: 1; 5701 color: rgb(30 30 30 / var(--tw-text-opacity)); 5702 font-weight: 400; 5703 font-family: 'Inter', sans-serif!important; 5704} 5705 5706.story-banner { 5707 padding-left: 3rem !important; 5708 padding-right: 3rem !important; 5709 padding-top: 70px !important; 5710 padding-bottom: 70px !important; 5711} 5712 5713.story-banner .pagebuilder-column-group > .pagebuilder-column-line { 5714 gap: 100px; 5715} 5716 5717.story-banner .pagebuilder-column-group > .pagebuilder-column-line h1 { 5718 margin-bottom: 40px; 5719 font-size: 54px; 5720 line-height: 59.4px; 5721 --tw-text-opacity: 1; 5722 color: rgb(30 30 30 / var(--tw-text-opacity)); 5723 font-weight: 700; 5724 font-family: 'Inter', sans-serif!important; 5725} 5726 5727.about-brand { 5728 max-width: 85%; 5729 margin: auto; 5730 margin-top: 50px !important; 5731 margin-bottom: 50px !important; 5732} 5733 5734.about-brand .pagebuilder-column-line { 5735 gap: 100px; 5736} 5737 5738.about-brand .pagebuilder-column-line .pagebuilder-column { 5739 justify-content: center !important; 5740} 5741 5742.about-brand + [data-content-type='text'] p { 5743 padding-bottom: 1rem; 5744} 5745 5746.about-make { 5747 margin-top: 100px !important; 5748} 5749 5750.about-make .pagebuilder-column-line { 5751 gap: 40px; 5752} 5753 5754@media(max-width: 1440px){ 5755 .about-make .pagebuilder-column-line { 5756 gap: 30px; 5757 } 5758} 5759 5760.about-make .pagebuilder-column-line .pagebuilder-column { 5761 margin-bottom: 40px; 5762 padding: 20px; 5763} 5764 5765.about-make .pagebuilder-column-line .pagebuilder-column { 5766 border: 1px solid #DDE1E6; 5767} 5768 5769.about-make .pagebuilder-column-line .pagebuilder-column.no-border { 5770 border-width: 0px; 5771} 5772 5773.about-make .pagebuilder-column-line h3 { 5774 padding-top: 20px; 5775 padding-bottom: 10px; 5776 font-size: 24px; 5777 line-height: 26.4px; 5778 --tw-text-opacity: 1; 5779 color: rgb(30 30 30 / var(--tw-text-opacity)); 5780 font-weight: 700; 5781} 5782 5783.about-make .pagebuilder-column-line p { 5784 font-size: 16px !important; 5785 line-height: 24px !important; 5786} 5787 5788.about-mission { 5789 margin-top: 70px !important; 5790} 5791 5792.about-mission p { 5793 padding-bottom: 1.5rem; 5794} 5795 5796.about-mission .pagebuilder-column-line { 5797 padding-left: 3rem; 5798 padding-right: 3rem; 5799 padding-top: 4rem; 5800 padding-bottom: 3rem; 5801} 5802 5803.about-trust { 5804 margin-top: 80px !important; 5805} 5806 5807.about-trust .pagebuilder-column-line { 5808 gap: 40px; 5809} 5810 5811 5812 5813.about-trust .pagebuilder-column-line .pagebuilder-column { 5814 margin-bottom: 40px; 5815 padding: 20px; 5816 border: 1px solid #DDE1E6; 5817} 5818 5819 5820.about-trust .pagebuilder-column-line h4 { 5821 padding-top: 20px; 5822 padding-bottom: 5px; 5823 font-size: 16px; 5824 line-height: 17.6px; 5825 --tw-text-opacity: 1; 5826 color: rgb(30 30 30 / var(--tw-text-opacity)); 5827 font-weight: 700; 5828} 5829 5830.about-trust .pagebuilder-column-line p { 5831 font-size: 16px !important; 5832 line-height: 24px !important; 5833 --tw-text-opacity: 1 !important; 5834 color: rgb(30 30 30 / var(--tw-text-opacity)) !important; 5835 font-weight: 400 !important; 5836} 5837 5838.about-promise { 5839 margin-top: 60px !important; 5840} 5841 5842.about-promise p { 5843 padding-bottom: 1.5rem; 5844} 5845 5846.about-promise .pagebuilder-column-line { 5847 padding-left: 3rem; 5848 padding-right: 3rem; 5849 padding-top: 4rem; 5850 padding-bottom: 3rem; 5851} 5852 5853.about-team h2 { 5854 padding-bottom: 1rem; 5855} 5856 5857.about-team { 5858 margin-top: 100px !important; 5859 margin-bottom: 60px !important; 5860} 5861 5862.about-team [data-content-type='buttons'] { 5863 margin-top: 1.5rem; 5864} 5865 5866.about-team [data-content-type='buttons'] .pagebuilder-button-primary { 5867 height: 42px; 5868 min-width: 273px; 5869 --tw-bg-opacity: 1; 5870 background-color: rgb(255 189 98 / var(--tw-bg-opacity)); 5871 line-height: 41px; 5872 width: 100%; 5873} 5874 5875.about-team [data-content-type='buttons'] .pagebuilder-button-primary span { 5876 font-size: 20px; 5877 --tw-text-opacity: 1; 5878 color: rgb(30 30 30 / var(--tw-text-opacity)); 5879 font-weight: 400; 5880 font-family: 'Inter', sans-serif!important; 5881} 5882 5883.about-team .pagebuilder-column-line { 5884 gap: 100px; 5885} 5886 5887.about-team .pagebuilder-column-line figure { 5888 width: 100%; 5889} 5890 5891.about-team .pagebuilder-column-line figure img { 5892 border-radius: 20px; 5893 width: 100%; 5894} 5895.cms-about [data-content-type=row][data-appearance=contained] { 5896 padding-left: 2.5rem; 5897 padding-right: 2.5rem; 5898} 5899} 5900 5901 5902@media(max-width: 1440px){ 5903 .about-trust .pagebuilder-column-line .pagebuilder-column { 5904 margin-bottom: 30px; 5905 padding: 16px; 5906 } 5907} 5908 5909@media(max-width: 1440px){ 5910 .about-trust .pagebuilder-column-line { 5911 gap: 30px; 5912 } 5913} 5914@media(max-width: 1440px){ 5915 .about-make .pagebuilder-column-line .pagebuilder-column { 5916 margin-bottom: 30px; 5917 padding: 16px; 5918 } 5919} 5920@media(max-width: 1440px){ 5921 .story-banner .pagebuilder-column-group > .pagebuilder-column-line { 5922 gap: 80px; 5923 } 5924} 5925 5926 5927@media only screen and (max-width: 768px) { 5928.cms-about .breadcrumbs-in { 5929 visibility: hidden; 5930 padding: 0px; 5931} 5932 5933.cms-about #maincontent .columns { 5934 max-width: 100%; 5935 padding: 0px; 5936} 5937 5938.cms-about #maincontent .columns h2 { 5939 font-size: 28px; 5940 line-height: 42px; 5941 --tw-text-opacity: 1;
5942 color: rgb(30 30 30 / var(--tw-text-opacity)); 5943 margin-bottom: 1rem; 5944 font-weight: 700; 5945 font-family: 'Inter', sans-serif!important; 5946} 5947 5948.cms-about #maincontent .columns p { 5949 font-size: 18px; 5950 line-height: 25.2px; 5951 --tw-text-opacity: 1; 5952 color: rgb(30 30 30 / var(--tw-text-opacity)); 5953 font-weight: 400; 5954 font-family: 'Inter', sans-serif!important; 5955} 5956 5957.story-banner { 5958 padding-bottom: 1rem; 5959 text-align: center; 5960} 5961 5962.story-banner .pagebuilder-column-group > .pagebuilder-column-line { 5963 gap: 15px; 5964} 5965 5966.story-banner .pagebuilder-column-group > .pagebuilder-column-line h1 { 5967 margin-top: 15px; 5968 font-size: 32px; 5969 line-height: 39px; 5970 --tw-text-opacity: 1; 5971 color: rgb(30 30 30 / var(--tw-text-opacity)); 5972 font-weight: 700; 5973 font-family: 'Inter', sans-serif!important; 5974} 5975 5976.story-banner .pagebuilder-column-group > .pagebuilder-column-line .pagebuilder-column figure { 5977 margin: auto; 5978} 5979 5980.story-banner .story-image .pagebuilder-column:first-child { 5981 order: 2; 5982} 5983 5984.story-banner [data-content-type='text'] { 5985 padding: 1.25rem; 5986} 5987 5988.about-brand { 5989 margin-top: 20px !important; 5990 margin-bottom: 30px !important; 5991} 5992 5993.about-brand .pagebuilder-column-line { 5994 gap: 100px; 5995} 5996 5997.about-brand .pagebuilder-column-line .pagebuilder-column { 5998 justify-content: center !important; 5999} 6000 6001.about-brand + [data-content-type='text'] p { 6002 padding-bottom: 0.75rem; 6003} 6004 6005.about-make { 6006 margin-top: 50px !important; 6007} 6008 6009.about-make .pagebuilder-column-line { 6010 gap: 0px; 6011} 6012 6013.about-make .pagebuilder-column-line .pagebuilder-column { 6014 margin-bottom: 20px; 6015 padding: 5px; 6016 flex-direction: row !important; 6017} 6018 6019.about-make .pagebuilder-column-line .pagebuilder-column figure{ 6020 flex: 0 0 15%; 6021} 6022 6023.about-make .pagebuilder-column-line h3 { 6024 padding-bottom: 7px; 6025 font-size: 20px; 6026 line-height: 22px; 6027 --tw-text-opacity: 1; 6028 color: rgb(30 30 30 / var(--tw-text-opacity)); 6029 font-weight: 700; 6030} 6031 6032.about-make .pagebuilder-column-line p { 6033 font-size: 16px !important; 6034 line-height: 24px !important; 6035} 6036 6037.about-mission { 6038 margin-top: 20px !important; 6039} 6040 6041.about-mission p { 6042 padding-bottom: 1.5rem; 6043} 6044 6045.about-mission .pagebuilder-column-line { 6046 padding-left: 1rem; 6047 padding-right: 1rem; 6048 padding-top: 3rem; 6049 padding-bottom: 2rem; 6050} 6051 6052.about-trust { 6053 margin-top: 60px !important; 6054} 6055 6056.about-trust .pagebuilder-column-line { 6057 gap: 20px; 6058} 6059 6060.about-trust .pagebuilder-column-line .pagebuilder-column { 6061 padding: 16px; 6062 text-align: center; 6063 border: 1px solid #DDE1E6; 6064} 6065 6066.about-trust .pagebuilder-column-line .pagebuilder-column figure { 6067 margin: auto; 6068} 6069 6070.about-trust .pagebuilder-column-line h4 { 6071 padding-top: 20px; 6072 padding-bottom: 5px; 6073 font-size: 16px; 6074 line-height: 17.6px; 6075 --tw-text-opacity: 1; 6076 color: rgb(30 30 30 / var(--tw-text-opacity)); 6077 font-weight: 700; 6078} 6079 6080.about-trust .pagebuilder-column-line p { 6081 font-size: 16px !important; 6082 line-height: 24px !important; 6083 --tw-text-opacity: 1 !important; 6084 color: rgb(30 30 30 / var(--tw-text-opacity)) !important; 6085 font-weight: 400 !important; 6086} 6087 6088.about-promise { 6089 margin-top: 60px !important; 6090} 6091 6092.about-promise p { 6093 padding-bottom: 1.5rem; 6094} 6095 6096.about-promise .pagebuilder-column-line { 6097 padding-left: 1rem; 6098 padding-right: 1rem; 6099 padding-top: 4rem; 6100 padding-bottom: 1rem; 6101} 6102 6103.about-team { 6104 margin-top: 60px !important; 6105 margin-bottom: 40px !important; 6106} 6107 6108.about-team [data-content-type='buttons'] { 6109 margin-top: 1.5rem; 6110} 6111 6112.about-team [data-content-type='buttons'] .pagebuilder-button-primary { 6113 height: 42px; 6114 min-width: 273px; 6115 --tw-bg-opacity: 1; 6116 background-color: rgb(255 189 98 / var(--tw-bg-opacity)); 6117 line-height: 41px; 6118 width: 100%; 6119} 6120 6121figure.about-team [data-content-type='buttons'] .pagebuilder-button-primary img{ 6122 width: 100%; 6123} 6124 6125section#product\.attributes .card.about-team [data-content-type='buttons'] .pagebuilder-button-primary{ 6126 background-color: transparent; 6127 padding: 0; 6128 box-shadow: none; 6129} 6130 6131.customer-account-login #customer-login-container .block.block-new-customer figure.about-team [data-content-type='buttons'] .pagebuilder-button-primary img{ 6132 width: 100%; 6133 height: 227px; 6134 -o-object-fit: cover; 6135 object-fit: cover; 6136 border-radius: 4px; 6137} 6138 6139.about-team [data-content-type='buttons'] .pagebuilder-button-primary span { 6140 font-size: 20px; 6141 --tw-text-opacity: 1;
6142 color: rgb(30 30 30 / var(--tw-text-opacity)); 6143 font-weight: 400; 6144 font-family: 'Inter', sans-serif!important; 6145} 6146 6147.about-team .pagebuilder-column-line { 6148 gap: 35px; 6149 text-align: center; 6150} 6151 6152.about-team .pagebuilder-column-line figure { 6153 width: 100%; 6154} 6155 6156figure.about-team .pagebuilder-column-line figure img{ 6157 width: 100%; 6158} 6159 6160section#product\.attributes .card.about-team .pagebuilder-column-line figure{ 6161 background-color: transparent; 6162 padding: 0; 6163 box-shadow: none; 6164} 6165 6166.customer-account-login #customer-login-container .block.block-new-customer figure.about-team .pagebuilder-column-line figure img{ 6167 width: 100%; 6168 height: 227px; 6169 -o-object-fit: cover; 6170 object-fit: cover; 6171 border-radius: 4px; 6172} 6173 6174.about-team .pagebuilder-column-line figure img { 6175 border-radius: 20px; 6176 width: 100%; 6177} 6178} 6179 6180</style></div>
6180<script nonce="YjZ2ZWQxdzRxcTd4ZGJzcGk4OGs3aXlybTNkOWF6ODk="> 6181 function hasWebP() { 6182 var elem = document.createElement('canvas'); 6183 6184 if (!!(elem.getContext && elem.getContext('2d'))) { 6185 return elem.toDataURL('image/webp').indexOf('data:image/webp') === 0; 6186 } 6187 return false; 6188 } 6189 6190 if (hasWebP()) { 6191 document.body.classList.add("webp"); 6192 } else { 6193 document.body.classList.add("no-webp"); 6194 }</script>
6194<div style="width: 100%; text-align: center; padding-bottom: 7px "><div class="affirm-banner-container" data-page-type="homepage" style="cursor:pointer;" ><a class="affirm-site-modal" x-init="affirmInit()" x-on:click="affirmClick()"><img style="max-width:150px; max-height:100px; " src="https://cdn-assets.affirm.com/images/banners/150x100.png" alt="Affirm buy with monthly payments"> 6195 </a> 6196 </div></div>
6197<script> 6198const triggerDiv = document.querySelector('.btn-trans'); 6199const targetButton = document.querySelector('.affirm-site-modal'); 6200if (triggerDiv && targetButton) { 6201 triggerDiv.addEventListener('click', () => { 6202 targetButton.click(); 6203 }); 6204} else { 6205 console.log('Required elements not found.'); 6206} 6207function affirmClick() { 6208 _affirm_config = { 6209 public_api_key: "5DY9RF1N28DY4Z78", 6210 script: "https://cdn1.affirm.com/js/v2/affirm.js", 6211 locale: "en_US", 6212 country_code: "USA", 6213 }; 6214 6215 (function(m,g,n,d,a,e,h,c){var b=m[n]||{},k=document.createElement(e),p=document.getElementsByTagName(e)[0],l=function(a,b,c){return function(){a[b]._.push([c,arguments])}};b[d]=l(b,d,"set");var f=b[d];b[a]={};b[a]._=[];f._=[];b._=[];b[a][h]=l(b,a,h);b[c]=function(){b._.push([h,arguments])};a=0;for(c="set add save post open empty reset on off trigger ready setProduct".split(" ");a<c.length;a++)f[c[a]]=l(b,d,c[a]);a=0;for(c=["get","token","url","items"];a<c.length;a++)f[c[a]]=function(){};k.async= 6216 !0;k.src=g[e];p.parentNode.insertBefore(k,p);delete g[e];f(g);m[n]=b})(window,_affirm_config,"affirm","checkout","ui","script","ready","jsReady"); 6217 6218} 6219function affirmInit() { 6220 window.addEventListener('init-external-scripts', () => { 6221 affirmClick(); 6222 }, {once: true, passive: true}); 6223} 6224</script>
6224 6225</div></div></main><footer class="page-footer"><div class="footer content"> 6226<style>#html-body [data-pb-style=MQRPJ36],#html-body [data-pb-style=TCILD21]{background-position:left top;background-size:cover;background-repeat:no-repeat;background-attachment:scroll}#html-body [data-pb-style=TCILD21]{justify-content:flex-start;display:flex;flex-direction:column}#html-body [data-pb-style=MQRPJ36]{align-self:stretch}#html-body [data-pb-style=L8W4GF3]{display:flex;width:100%}#html-body [data-pb-style=P3M9UW9]{justify-content:flex-start;display:flex;flex-direction:column;background-position:left top;background-size:cover;background-repeat:no-repeat;background-attachment:scroll;width:66.6667%;align-self:stretch}#html-body [data-pb-style=CJ8VT2Q]{border-style:none}#html-body [data-pb-style=CMMU4DK],#html-body [data-pb-style=SD11GJS]{max-width:100%;height:auto}#html-body [data-pb-style=PQE5PAT]{justify-content:flex-start;display:flex;flex-direction:column;width:33.3333%;align-self:stretch}#html-body [data-pb-style=O5JDDOV],#html-body [data-pb-style=PQE5PAT],#html-body [data-pb-style=S30DD27]{background-position:left top;background-size:cover;background-repeat:no-repeat;background-attachment:scroll}#html-body [data-pb-style=S30DD27]{justify-content:flex-start;display:flex;flex-direction:column}#html-body [data-pb-style=O5JDDOV]{align-self:stretch}#html-body [data-pb-style=E1QMNND]{display:flex;width:100%}#html-body [data-pb-style=AGQGWH8],#html-body [data-pb-style=B6GEF9I]{justify-content:flex-start;display:flex;flex-direction:column;align-self:stretch}#html-body [data-pb-style=B6GEF9I]{background-position:left top;background-size:cover;background-repeat:no-repeat;background-attachment:scroll;width:58.3333%}#html-body [data-pb-style=AGQGWH8]{width:41.6667%}#html-body [data-pb-style=AGQGWH8],#html-body [data-pb-style=AWDS0W8],#html-body [data-pb-style=W8FW3EE]{background-position:left top;background-size:cover;background-repeat:no-repeat;background-attachment:scroll}#html-body [data-pb-style=W8FW3EE]{justify-content:flex-start;display:flex;flex-direction:column}#html-body [data-pb-style=AWDS0W8]{align-self:stretch}#html-body [data-pb-style=PHW76I9]{display:flex;width:100%}#html-body [data-pb-style=HVOCS1N],#html-body [data-pb-style=TPKYLUC]{justify-content:flex-start;display:flex;flex-direction:column;background-position:left top;background-size:cover;background-repeat:no-repeat;background-attachment:scroll;width:50%;align-self:stretch}@media only screen and (max-width: 768px) { #html-body [data-pb-style=CJ8VT2Q]{border-style:none} }</style><div class="footer_top bg-white pb-2" data-content-type="row" data-appearance="full-bleed" data-enable-parallax="0" data-parallax-speed="0.5" data-background-images="{}" data-background-type="image" data-video-loop="true" data-video-play-only-visible="true" data-video-lazy-load="true" data-video-fallback-src="" data-element="main" data-pb-style="TCILD21"><div class="pagebuilder-column-group" data-background-images="{}" data-content-type="column-group" data-appearance="default" data-grid-size="12" data-element="main" data-pb-style="MQRPJ36"><div class="pagebuilder-column-line" data-content-type="column-line" data-element="main" data-pb-style="L8W4GF3"><div class="pagebuilder-column" data-content-type="column" data-appearance="full-height" data-background-images="{}" data-element="main" data-pb-style="P3M9UW9"><figure data-content-type="image" data-appearance="full-width" data-element="main" data-pb-style="CJ8VT2Q"><picture class="pagebuilder-mobile-hidden"><source type="image/webp" srcset="https://www.flooringinc.com/media/wysiwyg/flooring_logo.webp"><img class="pagebuilder-mobile-hidden" src="https://www.flooringinc.com/media/wysiwyg/flooring_logo.png" alt="Logo" title="Logo" width="266" height="80" loading="lazy" data-element="desktop_image" data-pb-style="SD11GJS" loading="lazy"></picture><picture class="pagebuilder-mobile-only"><source type="image/webp" srcset="https://www.flooringinc.com/media/wysiwyg/flooring_logo.webp"><img class="pagebuilder-mobile-only" src="https://www.flooringinc.com/media/wysiwyg/flooring_logo.png" alt="Logo" title="Logo" width="189" height="56" loading="lazy" data-element="mobile_image" data-pb-style="CMMU4DK" loading="lazy"></picture></figure></div><div class="pagebuilder-column" data-content-type="column" data-appearance="full-height" data-background-images="{}" data-element="main" data-pb-style="PQE5PAT"><div data-content-type="text" data-appearance="default" data-element="main"><ul> 6227<li><a tabindex="0" href="https://www.facebook.com/rubberflooringinc" target="_blank" rel="noopener"><picture><source type="image/webp" srcset="https://www.flooringinc.com/media/wysiwyg/footer-icon1.webp"><img id="BTPM32X" style="width: 10px; height: 20px;" src="https://www.flooringinc.com/media/wysiwyg/footer-icon1.png" alt="Facebook" width="10" height="20" loading="lazy" loading="lazy"></picture></a></li> 6228<li><a tabindex="0" href="https://www.instagram.com/flooring_inc/" target="_blank" rel="noopener"><picture><source type="image/webp" srcset="https://www.flooringinc.com/media/wysiwyg/footer-icon2.webp"><img id="PXIY4FF" style="width: 21px; height: 20px;" src="https://www.flooringinc.com/media/wysiwyg/footer-icon2.png" alt="Twitter" width="21" height="20" loading="lazy" loading="lazy"></picture></a></li> 6229<li><a tabindex="0" href="https://www.pinterest.com/flooringinc/" target="_blank" rel="noopener"><picture><source type="image/webp" srcset="https://www.flooringinc.com/media/wysiwyg/footer-icon3.webp">
6229<img style="width: 20px; height: 20px;" src="https://www.flooringinc.com/media/wysiwyg/footer-icon3.png" alt="print" width="20" height="20" loading="lazy" loading="lazy"></picture></a></li> 6230<li><a tabindex="0" href="https://www.youtube.com/user/flooringincvideos" target="_blank" rel="noopener"><picture><source type="image/webp" srcset="https://www.flooringinc.com/media/wysiwyg/youtube-icon.webp"><img id="I49QFU6" style="width: 25px; height: 18px;" src="https://www.flooringinc.com/media/wysiwyg/youtube-icon.png" alt="Youtube" width="25" height="18" loading="lazy" loading="lazy"></picture></a></li> 6231</ul></div></div></div></div></div><div class="footer_middle bg-white pb-2" data-content-type="row" data-appearance="full-bleed" data-enable-parallax="0" data-parallax-speed="0.5" data-background-images="{}" data-background-type="image" data-video-loop="true" data-video-play-only-visible="true" data-video-lazy-load="true" data-video-fallback-src="" data-element="main" data-pb-style="S30DD27"><div class="pagebuilder-column-group footer-wrap" data-background-images="{}" data-content-type="column-group" data-appearance="default" data-grid-size="12" data-element="main" data-pb-style="O5JDDOV"><div class="pagebuilder-column-line" data-content-type="column-line" data-element="main" data-pb-style="E1QMNND"><div class="pagebuilder-column footer_middle_lft" data-content-type="column" data-appearance="full-height" data-background-images="{}" data-element="main" data-pb-style="B6GEF9I"><div data-content-type="block" data-appearance="default" data-element="main"><div class="widget block block-static-block"> 6232 <style>#html-body [data-pb-style=CISRX33],#html-body [data-pb-style=K247IQ3]{background-position:left top;background-size:cover;background-repeat:no-repeat;background-attachment:scroll}#html-body [data-pb-style=K247IQ3]{justify-content:flex-start;display:flex;flex-direction:column}#html-body [data-pb-style=CISRX33]{align-self:stretch}#html-body [data-pb-style=GV5A1RW]{display:flex;width:100%}#html-body [data-pb-style=IE3QT2M],#html-body [data-pb-style=K294VVH],#html-body [data-pb-style=N7Q79IV]{justify-content:flex-start;display:flex;flex-direction:column;background-position:left top;background-size:cover;background-repeat:no-repeat;background-attachment:scroll;width:33.3333%;align-self:stretch}</style><div data-content-type="row" data-appearance="contained" data-element="main"><div data-enable-parallax="0" data-parallax-speed="0.5" data-background-images="{}" data-background-type="image" data-video-loop="true" data-video-play-only-visible="true" data-video-lazy-load="true" data-video-fallback-src="" data-element="inner" data-pb-style="K247IQ3"><div class="pagebuilder-column-group footer_middle_left" data-background-images="{}" data-content-type="column-group" data-appearance="default" data-grid-size="12" data-element="main" data-pb-style="CISRX33"><div class="pagebuilder-column-line" data-content-type="column-line" data-element="main" data-pb-style="GV5A1RW"><div class="pagebuilder-column" data-content-type="column" data-appearance="full-height" data-background-images="{}" data-element="main" data-pb-style="N7Q79IV"><h4 class="text-lg font-medium text-black mb-2" data-content-type="heading" data-appearance="default" data-element="main">Company info</h4><div data-content-type="text" data-appearance="default" data-element="main"><ul> 6233<li style="line-height: 10px;"><a id="T6SH02B" tabindex="0" href="/contact">Contact Us</a></li> 6234<li style="line-height: 10px;"><a tabindex="0" href="/about">About Us</a></li> 6235<li style="line-height: 10px;"><a id="EHRBRCU" tabindex="0" href="/careers">Careers</a></li> 6236<li style="line-height: 10px;"><a tabindex="0" href="/privacy-policy">Privacy Policy</a></li> 6237<li style="line-height: 10px;"><a tabindex="0" href="/affirm">Affirm</a></li> 6238<li style="line-height: 10px;"><a tabindex="0" href="/our-commitment-accessibility">Accessibility</a></li> 6239<li style="line-height: 10px;"><a tabindex="0" href="/terms-and-conditions">Terms & Conditions</a></li> 6240</ul></div></div><div class="pagebuilder-column" data-content-type="column" data-appearance="full-height" data-background-images="{}" data-element="main" data-pb-style="K294VVH"><h4 class="text-lg font-medium text-black mb-2" data-content-type="heading" data-appearance="default" data-element="main">Customer Service</h4><div data-content-type="text" data-appearance="default" data-element="main"><ul> 6241<li><a tabindex="0" href="/shipping-info">Shipping</a></li> 6242<li><a id="ER5IYQ2" tabindex="0" href="/sales/guest/form">Track Order</a></li> 6243<li><a tabindex="0" href="/returns-exchanges">Returns & Exchanges</a></li> 6244<li><a tabindex="0" href="/moneybackguarantee">Money Back Guarantee</a></li> 6245<li id="W8TRHHE"><a tabindex="0" href="/pro-advantage">Pro Advantage</a></li> 6246<li><a href="/dor-sites">Sales & Use Tax</a></li> 6247</ul></div></div><div class="pagebuilder-column" data-content-type="column" data-appearance="full-height" data-background-images="{}" data-element="main" data-pb-style="IE3QT2M"><h4 class="text-lg font-medium text-black mb-2" data-content-type="heading" data-appearance="default" data-element="main">Quick Links</h4><div data-content-type="text" data-appearance="default" data-element="main"><ul> 6248<li><a tabindex="0" href="/knowledge-base">FAQs</a></li> 6249<li><a tabindex="0" href="/sample-request">Samples</a></li> 6250<li><a tabindex="0" href="https://flooringinc.cashstar.com/store/recipient?locale=en-us">Gift Cards</a></li> 6251<li><a href="/promotions-disclaimer">Promotions</a></li> 6252</ul></div></div></div></div></div></div></div> 6253</div></div><div class="pagebuilder-column pl-6 footer_middle_rgt" data-content-type="column" data-appearance="full-height" data-background-images="{}" data-element="main" data-pb-style="AGQGWH8"><div data-content-type="block" data-appearance="default" data-element="main"><div class="widget block block-static-block"> 6254 <style>#html-body [data-pb-style=KSEJOAX]{background-position:left top;background-size:cover;background-repeat:no-repeat;background-attachment:scroll;align-self:stretch}#html-body [data-pb-style=H19I5XA]{display:flex;width:100%}#html-body [data-pb-style=F8YKO2R],#html-body [data-pb-style=L0EMJM5]{justify-content:flex-start;display:flex;flex-direction:column;background-position:left top;background-size:cover;background-repeat:no-repeat;background-attachment:scroll;width:41.6667%;align-self:stretch}#html-body [data-pb-style=L0EMJM5]{width:58.3333%}#html-body [data-pb-style=K1G3B6J]{text-align:right}</style><div class="pagebuilder-column-group footer_middle_right" data-background-images="{}" data-content-type="column-group" data-appearance="default" data-grid-size="12" data-element="main" data-pb-style="KSEJOAX"><div class="pagebuilder-column-line" data-content-type="column-line" data-element="main" data-pb-style="H19I5XA"><div class="pagebuilder-column" data-content-type="column" data-appearance="full-height" data-background-images="{}" data-element="main" data-pb-style="F8YKO2R"><div data-content-type="html" data-appearance="default" data-element="main" data-decoded="true"><div class="w-full"> 6255 <form class="form subscribe" action="https://www.flooringinc.com/newsletter/subscriber/new/" method="post" x-data="initNewsletterForm()" @submit.prevent="submitForm(
6255)" id="newsletter-validate-detail"> 6256 <div class="mb-3 text-sm font-medium tracking-widest text-gray-900 uppercase title-font"> 6257 <h4 class="text-lg font-medium text-black mb-1 capitalize">Get Ready To Be Floored!</h4> 6258 <p calss="sub_heading capitalize">Join our insider's club</p> 6259 </div> 6260 <div class="flex flex-wrap justify-center gap-2 md:justify-start"> 6261 <label for="newsletter-subscribe" class="sr-only"> 6262 Email Address </label> 6263 <input name="email" type="email" required id="newsletter-subscribe" class="form-input inline-flex w-full" placeholder="Enter email address"> 6264 <input name="form_key" type="hidden" value="azuXBYKQfItoxoot"> <button class="btn btn-primary"> 6265 Subscribe Now </button> 6266 </div> 6267 <div> 6268 <template x-if="displayErrorMessage"> 6269 <p class="flex items-center text-red"> 6270 <span class="inline-block w-8 h-8 mr-3"> 6271 <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" width="24" height="24" role="img"> 6272 <path stroke-linecap="round" stroke-linejoin="round" d="M12 8v4m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"></path> 6273<title>exclamation-circle</title></svg> 6274 </span> 6275 <template x-for="errorMessage in errorMessages"> 6276 <span x-html="errorMessage"></span> 6277 </template> 6278 </p> 6279 </template> 6280 </div> 6281 </form> 6282 <div class="w-full"> 6283 </div> 6284
6284<script> 6285 function initNewsletterForm() { 6286 return { 6287 errors: 0, 6288 hasCaptchaToken: 0, 6289 displayErrorMessage: false, 6290 errorMessages: [], 6291 setErrorMessages(messages) { 6292 this.errorMessages = [messages] 6293 this.displayErrorMessage = this.errorMessages.length 6294 }, 6295 submitForm() { 6296 // Do not rename $form, the variable is expected to be declared in the recaptcha output 6297 const $form = document.querySelector('#newsletter-validate-detail'); 6298 6299 if (this.errors === 0) { 6300 $form.submit(); 6301 } 6302 } 6303 } 6304 } 6305 </script>
6305 6306</div> 6307 6308<div class="pr-4 lg:w-1/4 md:w-1/2"> 6309 6310</div> </div></div><div class="pagebuilder-column" data-content-type="column" data-appearance="full-height" data-background-images="{}" data-element="main" data-pb-style="L0EMJM5"><h4 class="text-lg font-medium text-black mb-6" data-content-type="heading" data-appearance="default" data-element="main" data-pb-style="K1G3B6J">Flooring Inc.</h4><div data-content-type="text" data-appearance="default" data-element="main"><p style="text-align: right;">1958 Almaville Road Suite #110</p></div><div data-content-type="text" data-appearance="default" data-element="main"><p id="JM1KPUH" style="text-align: right;">Smyrna, TN 37167</p></div><div data-content-type="text" data-appearance="default" data-element="main"><p style="text-align: right;">p. <a tabindex="0" href="tel:8664166388">(866) 416-6388</a></p></div><div data-content-type="text" data-appearance="default" data-element="main"><p style="text-align: right;">e. <a id="H0FVHR7" tabindex="0" href="/contact">[email protected]</a></p></div><div data-content-type="text" data-appearance="default" data-element="main"><p style="text-align: right;"><strong>Hours (All times ET)</strong></p></div><div data-content-type="text" data-appearance="default" data-element="main"><p style="text-align: right;">Mon - Fri 9 am - 6 pm</p></div><div data-content-type="text" data-appearance="default" data-element="main"><p style="text-align: right;">Saturday 9 am - 5 pm <strong>(Sales Chat Only)</strong></p></div></div></div></div></div> 6311</div></div></div></div></div><div class="footer_bottom bg-white" data-content-type="row" data-appearance="full-bleed" data-enable-parallax="0" data-parallax-speed="0.5" data-background-images="{}" data-background-type="image" data-video-loop="true" data-video-play-only-visible="true" data-video-lazy-load="true" data-video-fallback-src="" data-element="main" data-pb-style="W8FW3EE"><div class="pagebuilder-column-group footer-wrap" data-background-images="{}" data-content-type="column-group" data-appearance="default" data-grid-size="12" data-element="main" data-pb-style="AWDS0W8"><div class="pagebuilder-column-line" data-content-type="column-line" data-element="main" data-pb-style="PHW76I9"><div class="pagebuilder-column footer_bottom_lft" data-content-type="column" data-appearance="full-height" data-background-images="{}" data-element="main" data-pb-style="TPKYLUC"><div data-content-type="text" data-appearance="default" data-element="main"><p>© Copyright 2010-2026 IncStores LLC. | All rights reserved.</p></div></div><div class="pagebuilder-column footer_bottom_rgt" data-content-type="column" data-appearance="full-height" data-background-images="{}" data-element="main" data-pb-style="HVOCS1N"><div data-content-type="block" data-appearance="default" data-element="main"><div class="widget block block-static-block"> 6312 <style>#html-body [data-pb-style=UD4KGT3]{background-position:left top;background-size:cover;background-repeat:no-repeat;background-attachment:scroll;align-self:stretch}#html-body [data-pb-style=QSS87SS]{display:flex;width:100%}#html-body [data-pb-style=IC77K1S],#html-body [data-pb-style=O5JWPM0]{justify-content:flex-start;display:flex;flex-direction:column;background-position:left top;background-size:cover;background-repeat:no-repeat;background-attachment:scroll;width:50%;align-self:stretch}</style><div class="pagebuilder-column-group footer_bottom_right" data-background-images="{}" data-content-type="column-group" data-appearance="default" data-grid-size="12" data-element="main" data-pb-style="UD4KGT3"><div class="pagebuilder-column-line" data-content-type="column-line" data-element="main" data-pb-style="QSS87SS"><div class="pagebuilder-column" data-content-type="column" data-appearance="full-height" data-background-images="{}" data-element="main" data-pb-style="IC77K1S"><div data-content-type="text" data-appearance="default" data-element="main"><ul> 6313<li><a title="Better Business Bureau - Flooring Inc." href="https://www.bbb.org/us/az/phoenix/profile/retail-floor-materials/flooringinccom-1126-97031168" target="_blank" rel="noopener"><picture><source type="image/webp" srcset="https://www.flooringinc.com/media/wysiwyg/footer-bbb.webp"><img id="BQMJYDJ" style="width: 129px; height: 35px;" src="https://www.flooringinc.com/media/wysiwyg/footer-bbb.png" alt="" width="125" height="34" loading="lazy" loading="lazy"></picture></a></li> 6314<li>Checks <picture><source type="image/webp" srcset="https://www.flooringinc.com/media/wysiwyg/footer-icon5.webp"><img style="width: 12px; height: 12px;" src="https://www.flooringinc.com/media/wysiwyg/footer-icon5.png" alt="" width="12" height="12" loading="lazy" loading="lazy"></picture> accepted by mail</li> 6315</ul></div></div><div class="pagebuilder-column" data-content-type="column" data-appearance="full-height" data-background-images="{}" data-element="main" data-pb-style="O5JWPM0"><div data-content-type="text" data-appearance="default" data-element="main"><ul> 6316<li><picture><source type="image/webp" srcset="https://www.flooringinc.com/media/wysiwyg/footer-icon6.webp"><img src="https://www.flooringinc.com/media/wysiwyg/footer-icon6.png" alt="" width="33" height="25" loading="lazy" loading="lazy"></picture></li> 6317<li><picture><source type="image/webp" srcset="https://www.flooringinc.com/media/wysiwyg/footer-icon7.webp"><img src="https://www.flooringinc.com/media/wysiwyg/footer-icon7.png" alt="" width="30" height="19" loading="lazy" loading="lazy"></picture></li> 6318<li><picture><source type="image/webp" srcset="https://www.flooringinc.com/media/wysiwyg/footer-icon8.webp"><img src="https://www.flooringinc.com/media/wysiwyg/footer-icon8.png" alt="" width="34" height="26" loading="lazy" loading="lazy"></picture></li> 6319<li><picture><source type="image/webp" srcset="https://www.flooringinc.com/media/wysiwyg/footer-icon9.webp"><img src="https://www.flooringinc.com/media/wysiwyg/footer-icon9.png" alt="" width="33" height="21" loading="lazy" loading="lazy"></picture></li> 6320<li><picture><source type="image/webp" srcset="https://www.flooringinc.com/media/wysiwyg/footer-icon10.webp"><img src="https://www.flooringinc.com/media/wysiwyg/footer-icon10.png" alt="" width="39" height="26" loading="lazy" loading="lazy"></picture></li> 6321<li><picture><source type="image/webp" srcset="https://www.flooringinc.com/media/wysiwyg/footer-icon11.webp"><img src="https://www.flooringinc.com/media/wysiwyg/footer-icon11.png" alt="" width="39" height="26" loading="lazy" loading="lazy"></picture></li> 6322<li><button id="uw-widget-custom-trigger" class="uw-widget-custom-trigger" aria-label="Accessibility Widget" data-uw-ignore-s25="true" data-uw-trigger="true" aria-haspopup="dialog"></button></li> 6323</ul></div></div></div></div><div data-content-type="html" data-appearance="default" data-element="main" data-decoded="true"><style> 6324.checkout-cart-index .summary-cart .cart-discount{display:block;} 6325.page-with-filter .products.wrapper.mode-list.products-list .item.product .catergory_slider_content .compare-buttons .compare-buttons-mobile{order:2;} 6326.checkout-payment-method .payment-method .payment-method-title.field.choice input#paypal_express+label{display:block;}.catalog-product-view .youMayAlso.products_slider a.priceBlock, .catalog-product-view .youMayAlso.products_slider .price-box{min-height: 95px;align-items: flex-start;} 6327@media(min-width:1280px){.mega_menu_banner img{max-width: 239px !important;}} 6328.cms-home .catergory_slider_content .product-item-link{font-size: .875rem;line-height: 1.313rem;} 6329@media(min-width: 768px){ 6330.catergory_slider_content .compare-buttons .qty_fields{width:auto;order: 2;}.catergory_slider_content .compare-buttons .ship-fax-plp{width:100%;order: 1;border-bottom:1px solid rgb(178,178,178);}
6330.catergory_slider_content .compare-buttons .orderSampleContent{order:3;} 6331.catergory_slider_content .compare-buttons .ship-fax-plp .ship-iconsada{display: block;} 6332.page-products #maincontent .products.mode-grid .catergory_slider_content .compare-buttons .orderSampleContent{order: 3;} 6333 .category_banner .pagebuilder-column-group .pagebuilder-column-line .pagebuilder-column figure picture{height: 100% !important;object-fit:cover;} 6334[data-content-type=products][data-appearance=carousel] [data-role=glider-content] .item.product{min-width: 370px;width: 370px;max-width: 370px;}[data-content-type=products][data-appearance=carousel] [data-role=glider-content]{display: flex;flex-wrap: nowrap;overflow-x: auto;} 6335.cms-home [data-content-type=products][data-appearance=carousel] [data-role=glider-content] .item.product:not(.glider-slide){min-width: 370px;} 6336[data-content-type=products][data-appearance=carousel] [data-role=glider-content]:not(.glider)::-webkit-scrollbar{width: 10px;} 6337[data-content-type=products][data-appearance=carousel] [data-role=glider-content]:not(.glider)::-webkit-scrollbar-track {background: #ffffff !important;} 6338[data-content-type=products][data-appearance=carousel] [data-role=glider-content]:not(.glider)::-webkit-scrollbar-thumb {background: #ffffff !important;} 6339} 6340@media(min-width: 768px){ 6341 .featured_partners .swiper-container:not(.swiper-initialized){display: flex;overflow-x: auto;flex-wrap: nowrap;width: 100%;max-width: 100%;min-width: 100%;transform: inherit;} 6342 .featured_partners .swiper-container:not(.swiper-initialized) .swiper-slide{width: 16%;} 6343 .featured_partners .swiper-container:not(.swiper-initialized)::-webkit-scrollbar{width: 10px;} 6344 .featured_partners .swiper-container:not(.swiper-initialized)::-webkit-scrollbar-track {background: #ffffff !important;} 6345 .featured_partners .swiper-container:not(.swiper-initialized)::-webkit-scrollbar-thumb {background: #ffffff !important;} 6346 .featured_partners .swiper-container:not(.swiper-initialized)::-webkit-scrollbar-thumb:hover {background: #ffffff !important;} 6347} 6348@media(max-width:767px){.page-products #maincontent .toolbar.toolbar-products .pages-items{justify-content: center;gap: 10px;box-shadow: none;}} 6349</style></div></div> 6350</div></div></div></div><div data-content-type="html" data-appearance="default" data-element="main" data-decoded="true">
6350<script> 6351 document.addEventListener('DOMContentLoaded', function () { 6352 const gallery = document.querySelector('#gallery'); 6353 const header = document.querySelector('#header'); 6354 if (!gallery || !header) return; 6355 const stickyTop = header.offsetHeight; 6356 // parent/container where sticky should stop 6357 const parent = gallery.parentElement; 6358 function checkSticky() { 6359 const rect = gallery.getBoundingClientRect(); 6360 const parentRect = parent.getBoundingClientRect(); 6361 // sticky active only while parent still has space 6362 const isSticky = 6363 rect.top <= stickyTop && 6364 parentRect.bottom > rect.height + stickyTop; 6365 document.body.classList.toggle('gallery-sticky', isSticky); 6366 } 6367 checkSticky(); 6368 window.addEventListener('scroll', checkSticky); 6369 window.addEventListener('resize', checkSticky); 6370 }); 6371</script>
6371 6372<style> 6373@media (min-width: 1200px) { 6374 .megamenu_items:hover>.megamenu { 6375 max-width: 1440px; 6376 } 6377} 6378.products__recommendations .products_slider .catergory_slider_content .color_counts{margin-bottom: 15px;} 6379html.order_active .page-header #header{z-index: -1;} 6380html.order_active{overflow: hidden !important;} 6381@media(min-width: 768px){.checkout-cart-index #shopping-cart-table .cart.item .item-info td{flex-wrap: nowrap;}} 6382</style> 6383<style> 6384.cms-home .order-free-sample-popup{display: none;} 6385.cms-home.order_active .order-free-sample-popup{display: flex;} 6386@media(min-width:768px){ 6387.page-with-filter .widget-product-carousel .catergory_slider_content .compare-buttons{flex-wrap: wrap;} 6388.page-with-filter .widget-product-carousel .catergory_slider_content .compare-buttons .ship-fax-plp{order:1;} 6389.page-with-filter .widget-product-carousel .catergory_slider_content .compare-buttons .compare-buttons-mobile{width: 100%;order: 2;display: flex;justify-content: space-between;} 6390.page-with-filter .widget-product-carousel .catergory_slider_content .compare-buttons .orderSampleContent .order_btn{margin-top: 10px;} 6391.page-with-filter .widget-product-carousel .catergory_slider_content .compare-buttons{border-top: 0px;padding-top:0px;margin-top: 0px;} 6392.catalog-product-view .products_slider .compare-buttons .qty_fields .btn_cart{width:110px} 6393} 6394@media(max-width:767px){ 6395.page-with-filter .widget-product-carousel .catergory_slider_content .compare-buttons{flex-wrap: wrap;} 6396.page-with-filter .widget-product-carousel .catergory_slider_content .compare-buttons .ship-fax-plp{order:1;width: 100%;} 6397.page-with-filter .widget-product-carousel .catergory_slider_content .compare-buttons .compareBtn{order:2;justify-content: flex-start;width: auto;margin-top: 10px;} 6398.page-with-filter .widget-product-carousel .catergory_slider_content .compare-buttons .orderSampleContent{order:3;margin-top: 10px;} 6399.page-with-filter .widget-product-carousel .catergory_slider_content .compare-buttons .compare-buttons-mobile{order:2;width: 100%;display: flex;justify-content: space-between;} 6400} 6401#related_cart_slider .js_slides{margin-right: 0;margin-left: 0;} 6402@media (min-width: 1024px) { 6403.container { 6404 max-width: 1440px !important; 6405} 6406} 6407.page-with-filter .product-item .product-info .price-box .price-container .price-wrapper span.price{font-size: 20px !important;color: #1e1e1e !important;} 6408.page-with-filter .product-item .product-info .price-box .price-container .price-wrapper{font-size: 20px !important;line-height: 20px !important} 6409.brand_logo_listpage img, div.brand_logo_listpage img{max-width:100px} 6410.catalog-product-view .product-item .product-info .price-box .price-container .price-wrapper{color: rgb(52 174 74 / var(--tw-text-opacity)) !important;line-height: 19px !important;} 6411 6412.catalog-product-view .product-info-main .quickship_swatch_option.incstores_pim_color_axis .color_swatches .swatch-attribute-options .selectOptionColor .select-none.swatch-option{display: none;} 6413 6414@media(max-width: 767px){ 6415 .related_products_list_view .glider-track{width: 100% !important;flex-wrap: nowrap;align-items: flex-start;} 6416 .related_products_list_view .related_products_list_view_content{width: 100% !important;min-width: 280px;max-width: 280px;} 6417} 6418 6419.dcw-share-cart .space-y-4>:not([hidden])~:not([hidden]) { 6420 --tw-space-y-reverse: 0; 6421 margin-top: calc(1rem * (1 - var(--tw-space-y-reverse))); 6422 margin-bottom: calc(1rem * var(--tw-space-y-reverse)); 6423} 6424.dcw-share-cart .bg-black\/50 { 6425 background-color: #00000080; 6426} 6427.dcw-share-cart .z-\[999\] { 6428 z-index: 999; 6429} 6430</style></div></div>
6431<script> 6432 window.addEventListener('init-external-scripts', () => { 6433 const klaviyoScript = document.createElement('script'); 6434 klaviyoScript.src = '//static.klaviyo.com/onsite/js/klaviyo.js?company_id=WAwVDg'; 6435 klaviyoScript.type = 'text/javascript'; 6436 klaviyoScript.async = true; 6437 document.head.append(klaviyoScript); 6438 }, {once: true, passive: true}); 6439</script>
vendor: 1 bytes, line 6439
6439
6440<script> 6441 document.addEventListener('DOMContentLoaded', function() { 6442 const buttons = document.querySelectorAll('.cms-home .order_btn'); 6443 buttons.forEach(button => { 6444 button.addEventListener('click', function() { 6445 const modal = this.closest('.orderSampleContent').querySelector('.order-free-sample-popup'); 6446 if (modal) { 6447 modal.style.display = 'block'; 6448 } 6449 }); 6450 }); 6451 6452 // Handle closing the modal 6453 document.querySelectorAll('.cms-home .order-free-sample-popup .closemodal').forEach(closeBtn => { 6454 closeBtn.addEventListener('click', function() { 6455 const modal = this.closest('.order-free-sample-popup'); 6456 if (modal) { 6457 modal.style.display = 'none'; 6458 } 6459 }); 6460 }); 6461 }); 6462</script>
6462 6463
6464<script> 6465 document.addEventListener('DOMContentLoaded', function () { 6466 function updateRatingsClass(ratingEl) { 6467 const hasReviews = ratingEl.querySelector('.bv_numReviews_component_container'); 6468 ratingEl.classList.toggle('no-reviews', !hasReviews); 6469 } 6470 document.querySelectorAll('.ratings').forEach(ratingEl => { 6471 updateRatingsClass(ratingEl); 6472 const observer = new MutationObserver(() => { 6473 updateRatingsClass(ratingEl); 6474 }); 6475 observer.observe(ratingEl, { 6476 childList: true, 6477 subtree: true 6478 }); 6479 }); 6480 }); 6481</script>
6481 6482 6483<link rel="stylesheet" type="text/css" href="https://www.flooringinc.com/static/version1789462004/frontend/Dcw/hyvadesktop/en_US/css/poppins.min.css" media="print" onload="this.media='all'"/> 6484<link rel="stylesheet" type="text/css" href="https://www.flooringinc.com/static/version1789462004/frontend/Dcw/hyvadesktop/en_US/css/print.min.css" media="print" onload="this.media='all'"/> 6485<link rel="stylesheet" type="text/css" href="https://www.flooringinc.com/static/version1789462004/frontend/Dcw/hyvadesktop/en_US/css/admin.min.css" media="print" onload="this.media='all'"/> 6486<link rel="stylesheet" type="text/css" href="https://www.flooringinc.com/static/version1789462004/frontend/Dcw/hyvadesktop/en_US/Bss_SocialLogin/css/jquery.fancybox.min.css" media="print" onload="this.media='all'"/> 6487<link rel="stylesheet" type="text/css" href="https://www.flooringinc.com/static/version1789462004/frontend/Dcw/hyvadesktop/en_US/Hyva_MirasvitLayeredNavigation/css/lib/nouislider.min.css" media="print" onload="this.media='all'"/> 6488<link rel="stylesheet" type="text/css" href="https://www.flooringinc.com/static/version1789462004/frontend/Dcw/hyvadesktop/en_US/Astound_Affirm/affirm-promo.min.css" media="print" onload="this.media='all'"/> 6489<link rel="stylesheet" type="text/css" href="https://www.flooringinc.com/static/version1789462004/frontend/Dcw/hyvadesktop/en_US/Dcw_CircularDesignerTool/css/base-global-header-footer.min.css" media="print" onload="this.media='all'"/> 6490<link rel="stylesheet" type="text/css" href="https://www.flooringinc.com/static/version1789462004/frontend/Dcw/hyvadesktop/en_US/Dcw_CircularDesignerTool/css/matdesigner.min.css" media="print" onload="this.media='all'"/> 6491<link rel="stylesheet" type="text/css" href="https://www.flooringinc.com/static/version1789462004/frontend/Dcw/hyvadesktop/en_US/Magefan_Blog/css/comments.min.css" media="print" onload="this.media='all'"/> 6492<link rel="stylesheet" type="text/css" href="https://www.flooringinc.com/static/version1789462004/frontend/Dcw/hyvadesktop/en_US/Plumrocket_GlobalPrivacyControl/css/gpc.min.css" media="print" onload="this.media='all'"/></div></footer>
6493<script> 6494 function dataServicesShoppingCartContextData() 6495 { 6496 return { 6497 initContext(cartData) { 6498 let contextCartItems = []; 6499 6500 cartData.items.forEach(function (item){ 6501 contextCartItems.push({ 6502 id: item.item_id, 6503 formattedPrice: parseFloat(item.product_price_value ? item.product_price_value : 0), 6504 quantity: item.qty, 6505 product: { 6506 productType: item.product_type, 6507 productId: item.product_id, 6508 name: item.product_name, 6509 sku: item.product_sku, 6510 mainImageUrl : item.product_image.src 6511 }, 6512 prices: { 6513 price: { 6514 value: parseFloat(item.product_price_value ? item.product_price_value : 0) 6515 } 6516 } 6517 }) 6518 }); 6519 6520 magentoStorefrontEvents.context.setShoppingCart({ 6521 id: cartData.dsCartId, 6522 totalQuantity: cartData.summary_count, 6523 prices: { 6524 subtotalExcludingTax: { 6525 value: parseFloat(cartData.subtotalAmountExclTax ? cartData.subtotalAmountExclTax : 0) 6526 }, 6527 subtotalIncludingTax: { 6528 value: parseFloat(cartData.subtotalAmount ? cartData.subtotalAmount : 0) 6529 } 6530 }, 6531 items: contextCartItems, 6532 possibleOnepageCheckout: cartData.possible_onepage_checkout, 6533 giftMessageSelected : false, 6534 giftWrappingSelected : false 6535 }); 6536 6537 window.dispatchEvent(new Event("shoppingCartContextSet")); 6538 } 6539 } 6540 } 6541</script>
6541 6542<div x-data="dataServicesShoppingCartContextData()" 6543 @private-content-loaded.window="initContext($event.detail.data.cart)"></div> 6544 6545
6546<script> 6547 (function () { 6548 'use strict'; 6549 6550 /** 6551 * Config to determine which element is responsible for the form submission 6552 * 6553 * @type {[{elementSelector: undefined|string, submitAttribute: string}]} 6554 */ 6555 const formWrapperConfig = [{"elementSelector":null,"submitAttribute":"submit"},{"elementSelector":"[type=\"submit\"]","submitAttribute":"click"}]; 6556 6557 /** 6558 * Replace protected forms submit with amRecaptchaModel.execute($event) method. 6559 * Call original submit on amrecaptcha-callback event after successful captcha validation. 6560 * 6561 * @return {void} 6562 */ 6563 const wrapFormSubmit = function () { 6564 document.addEventListener("DOMContentLoaded", function () { 6565 const formsSelector = window.amRecaptchaModel?.formsToProtect || ''; 6566 if (formsSelector.length === 0) { 6567 return; 6568 } 6569 6570 document.querySelectorAll(formsSelector)?.forEach(formElement => { 6571 if (!formElement) { 6572 return; 6573 } 6574 6575 const { elementToWrap, attributeNameToWrap } = resolveElementWrapping(formElement); 6576 if (!elementToWrap || !attributeNameToWrap) { 6577 return; 6578 } 6579 6580 setElementAttributes(formElement, elementToWrap, attributeNameToWrap); 6581 }); 6582 }); 6583 }; 6584 6585 /** 6586 * Find submit event and DOM element that has this event using formWrapperConfig. 6587 * 6588 * @param {HTMLElement} formElement 6589 * @return {{elementToWrap: undefined|string, attributeNameToWrap: undefined|string}} 6590 */ 6591 const resolveElementWrapping = function (formElement) { 6592 let result = { 6593 elementToWrap: undefined, 6594 attributeNameToWrap: undefined 6595 }; 6596 6597 formWrapperConfig.forEach(({ elementSelector, submitAttribute }) => { 6598 const elementToWrap = !!elementSelector ? formElement.querySelector(elementSelector) : formElement; 6599 if (!elementToWrap) { 6600 return; 6601 } 6602 6603 const attributeNameToWrap = elementToWrap.getAttributeNames().find( 6604 (elementAttribute) => { 6605 /** @type {string[]} */ 6606 const submitAttributeVariations = ['@', 'x-on:'].map(variation => variation + submitAttribute); 6607 6608 return submitAttributeVariations.some( 6609 (submitAttributeVariation) => elementAttribute.startsWith(submitAttributeVariation) 6610 ) 6611 } 6612 ); 6613 if (!attributeNameToWrap) { 6614 return; 6615 } 6616 6617 result.elementToWrap = elementToWrap; 6618 result.attributeNameToWrap = attributeNameToWrap; 6619 }); 6620 6621 return result; 6622 } 6623 6624 /** 6625 * Set attribute to wrap original submit, add eventListeners for captcha callbacks 6626 * 6627 * @param {HTMLElement} formElement 6628 * @param {HTMLElement} elementToWrap 6629 * @param {string} attributeNameToWrap 6630 */ 6631 const setElementAttributes = function (formElement, elementToWrap, attributeNameToWrap) { 6632 const originalSubmit = elementToWrap.getAttribute(attributeNameToWrap); 6633 elementToWrap.removeAttribute(attributeNameToWrap); 6634 6635 /** 6636 * To properly set submit attribute - we need to replace '@' with 'x-on:' 6637 * and add preventDefault behaviour 6638 */ 6639 elementToWrap.setAttribute( 6640 attributeNameToWrap.replace(/^@/, 'x-on:').replace(/.prevent$/, '') + '.prevent', 6641 'amRecaptchaModel.execute($event)' 6642 ); 6643 elementToWrap.setAttribute( 6644 'x-on:amrecaptcha-executable-callback', 6645 originalSubmit 6646 ); 6647 } 6648 6649 wrapFormSubmit(); 6650 })(window.amRecaptchaModel = window.amRecaptchaModel || {}); 6651</script>
6651 6652
6653<script> 6654 function initAuthenticationBss() { 6655 return { 6656 open: false, 6657 openLogin : false, 6658 openRegister : false, 6659 openForgot : false, 6660 openCreate : true, 6661 passwordsMatching: true, 6662 openMessage: false, 6663 errors: 0, 6664 message: "", 6665 hasCaptchaToken: 0, 6666 openButtonLogin : false, 6667 openButtonRegister : false, 6668 openSuccessMessage : false, 6669 checkUseReCaptcha: 1, 6670 recaptchaLoading: null, 6671 initSocial() { 6672 if (!this.checkUseReCaptcha) { 6673 return Promise.resolve(); 6674 } 6675 if (this.recaptchaLoading) { 6676 return this.recaptchaLoading; 6677 } 6678 if (typeof window.grecaptcha !== 'undefined') { 6679 this.recaptchaLoading = Promise.resolve(); 6680 return this.recaptchaLoading; 6681 } 6682 this.recaptchaLoading = new Promise((resolve, reject) => { 6683 const recaptchaUrl = `https://www.google.com/recaptcha/api.js?render=6LdQFsgqAAAAAFaiT_SQ7C9UmCcxWxpMd6pIMAEO&hl=en`; 6684 const script = document.createElement('script'); 6685 script.setAttribute('type', 'text/javascript'); 6686 script.setAttribute('src', recaptchaUrl); 6687 script.onload = () => resolve(); 6688 script.onerror = () => reject(new Error('Failed to load reCAPTCHA')); 6689 document.head.appendChild(script); 6690 }); 6691 return this.recaptchaLoading; 6692 }, 6693 loadRecaptchaOnInteraction() { 6694 if (!this.checkUseReCaptcha) { 6695 return; 6696 } 6697 // Avoid scroll/mousemove/wheel â they fire on load / DevTools / trackpads. 6698 const events = ['pointerdown', 'keydown', 'touchstart']; 6699 const load = () => { 6700 events.forEach((eventName) => { 6701 window.removeEventListener(eventName, load, { capture: true }); 6702 }); 6703 this.initSocial(); 6704 }; 6705 events.forEach((eventName) => { 6706 window.addEventListener(eventName, load, { once: true, passive: true, capture: true }); 6707 }); 6708 }, 6709 checkPasswordsMatch() { 6710 if (document.getElementById('password').value === 6711 document.getElementById('password-confirmation').value) { 6712 this.passwordsMatching = true; 6713 return true; 6714 } 6715 this.passwordsMatching = false; 6716 return false; 6717 }, 6718 submitForm: function () { 6719 const $form = document.querySelector('#login-form'); 6720 if (this.errors === 0) { 6721 this.dispatchLoginRequest($form); 6722 } 6723 }, 6724 submitForgotForm : function () { 6725 const $form = document.querySelector('#fotgot-form'); 6726 if (this.errors === 0) { 6727 this.dispatchForgotRequest($form); 6728 } 6729 }, 6730 submitRegisterForm : function () { 6731 const $form = document.querySelector('#create-form'); 6732 if (this.errors === 0) { 6733 this.dispatchRegisterRequest($form); 6734 } 6735 }, 6736 validateCaptcha : async function () { 6737 await this.initSocial(); 6738 return new Promise((resolve, reject) => { 6739 if (typeof window.grecaptcha === 'undefined') { 6740 return reject(new Error('reCAPTCHA is not available')); 6741 } 6742 grecaptcha.ready(function () { 6743 grecaptcha.execute('6LdQFsgqAAAAAFaiT_SQ7C9UmCcxWxpMd6pIMAEO', {action: 'submit'}).then(function (token) { 6744 return resolve(token); 6745 }).catch(reject); 6746 }); 6747 }); 6748 }, 6749 dispatchLoginRequest:async function (form) { 6750 if (this.checkUseReCaptcha) { 6751 let token = await this.validateCaptcha(); 6752 if(token) 6753 { 6754 document.getElementById("g-recaptcha-response").setAttribute('value',token); 6755 } 6756 } 6757 const username = this.$refs['customer-email'].value; 6758 const password = this.$refs['customer-password'].value; 6759 const recaptchaValue = document.getElementById("g-recaptcha-response").value; 6760 const postUrl = "https://www.flooringinc.com/sociallogin/popup/login/"; 6761 fetch(postUrl, { 6762 headers: { 6763 contentType: "application/x-www-form-urlencoded; charset=UTF-8", 6764 }, 6765 body: new URLSearchParams({ 6766 username: username, 6767 password: password, 6768 ['g-recaptcha-response']: recaptchaValue, 6769 form_key: hyva.getFormKey(), 6770 }), 6771 method: "POST", 6772 mode: "cors", 6773 credentials: "include", 6774 }).then(response => { 6775 return response.json() 6776 } 6777 ).then(data => { 6778 this.isLoading = false;
6779 if (data.error) { 6780 this.message = data.message; 6781 this.openMessage = true; 6782 this.errors = 1; 6783 this.hasCaptchaToken = 0; 6784 } else { 6785 this.message = data.message; 6786 this.openMessage = false; 6787 this.openSuccessMessage = true; 6788 if (data.redirect !== '' && data.redirect != null) { 6789 window.location.href = data.redirect; 6790 } else { 6791 location.reload(true); 6792 } 6793 } 6794 }); 6795 }, 6796 dispatchForgotRequest:async function (form) { 6797 if (this.checkUseReCaptcha) { 6798 let token = await this.validateCaptcha(); 6799 if(token) 6800 { 6801 document.getElementById("g-recaptcha-response").setAttribute('value',token); 6802 } 6803 } 6804 const email = form.querySelector("#email_address").value; 6805 const recaptchaValue = document.getElementById("g-recaptcha-response").value; 6806 const postUrl = "https://www.flooringinc.com/sociallogin/popup/forgot/"; 6807 fetch(postUrl, { 6808 headers: { 6809 contentType: "application/x-www-form-urlencoded; charset=UTF-8", 6810 }, 6811 body: new URLSearchParams({ 6812 email: email, 6813 ['g-recaptcha-response']: recaptchaValue, 6814 form_key: hyva.getFormKey(), 6815 }), 6816 method: "POST", 6817 mode: "cors", 6818 credentials: "include", 6819 }).then(response => { 6820 return response.json() 6821 } 6822 ).then(data => { 6823 this.isLoading = false; 6824 if (data.error) { 6825 this.message = data.message; 6826 this.openMessage = true; 6827 this.errors = 1; 6828 this.hasCaptchaToken = 0; 6829 } else { 6830 if (data.redirect !== '' && data.redirect != null) { 6831 window.location.href = data.redirect; 6832 } else { 6833 location.reload(true); 6834 } 6835 } 6836 }); 6837 }, 6838 dispatchRegisterRequest:async function (form) { 6839 if (this.checkUseReCaptcha) { 6840 let token = await this.validateCaptcha(); 6841 if(token) 6842 { 6843 document.getElementById("g-recaptcha-response").setAttribute('value',token); 6844 } 6845 } 6846 const firstname = form.querySelector("#firstname").value; 6847 const lastname = form.querySelector("#lastname").value; 6848 const email = form.querySelector("#email_address").value; 6849 const password = form.querySelector("#password").value; 6850 const passwordConfirmation = form.querySelector("#password-confirmation").value; 6851 const recaptchaValue = document.getElementById("g-recaptcha-response").value; 6852 const postUrl = "https://www.flooringinc.com/sociallogin/popup/create/"; 6853 fetch(postUrl, { 6854 headers: { 6855 contentType: "application/x-www-form-urlencoded; charset=UTF-8", 6856 }, 6857 body: new URLSearchParams({ 6858 ['g-recaptcha-response']: recaptchaValue, 6859 firstname: firstname, 6860 lastname: lastname, 6861 email: email, 6862 password: password, 6863 password_confirmation: passwordConfirmation, 6864 form_key: hyva.getFormKey(), 6865 }), 6866 method: "POST", 6867 mode: "cors", 6868 credentials: "include", 6869 }).then(response => { 6870 return response.json() 6871 } 6872 ).then(data => { 6873 this.isLoading = false;
6874 if (data.error) { 6875 this.message = data.message; 6876 this.openMessage = true; 6877 this.hasCaptchaToken = 0; 6878 } else { 6879 this.message = data.message; 6880 this.openMessage = false; 6881 this.openSuccessMessage = true; 6882 if (data.redirect !== '' && data.redirect != null) { 6883 window.location.href = data.redirect; 6884 } else { 6885 location.reload(true); 6886 } 6887 } 6888 }); 6889 }, 6890 eventListeners: { 6891 ['@popup-register.window']($event) { 6892 this.open = true; 6893 this.openRegister = $event.detail.openRegister; 6894 this.openLogin = $event.detail.openLogin; 6895 this.openCreate = $event.detail.openCreate; 6896 this.openButtonLogin = $event.detail.openButtonLogin; 6897 this.openButtonRegister = $event.detail.openButtonRegister; 6898 this.initSocial(); 6899 } 6900 } 6901 } 6902 } 6903</script>
6903 6904 6905<section id="authentication-popup-bss" 6906 x-data="initAuthenticationBss()" x-init="loadRecaptchaOnInteraction()" 6907 @keydown.window.escape="open = false" 6908<div role="dialog" 6909 aria-modal="true" 6910 class="hidden inset-y-0 right-0 z-30 flex max-w-full" 6911 :class="{ 'hidden': !open, 'fixed': open }" 6912 x-bind="eventListeners" 6913> 6914 <div class="relative bg-container-lighter bss_login_popup" 6915 x-show="open" 6916 @click.outside="open = false" 6917 x-transition:enter="transform transition ease-in-out duration-500 sm:duration-700" 6918 x-transition:enter-start="translate-x-full" 6919 x-transition:enter-end="translate-x-0" 6920 x-transition:leave="transform transition ease-in-out duration-500 sm:duration-700" 6921 x-transition:leave-start="translate-x-0" 6922 x-transition:leave-end="translate-x-full" 6923 > 6924 <div 6925 x-show="open" 6926 x-transition:enter="ease-in-out duration-500" 6927 x-transition:enter-start="opacity-0" 6928 x-transition:enter-end="opacity-100" 6929 x-transition:leave="ease-in-out duration-500" 6930 x-transition:leave-start="opacity-100" 6931 x-transition:leave-end="opacity-0" class="absolute flex close_icon" style="width: 11px;height: 11px;background: transparent;"> 6932 <button @click="open = false;" aria-label="Close panel" 6933 class="transition duration-150 ease-in-out text-black cursor-pointer"> 6934 <picture><source type="image/webp" srcset="https://www.flooringinc.com/static/version1789462004/frontend/Dcw/hyvadesktop/en_US/images/Close--icon.webp"><img src="https://www.flooringinc.com/static/version1789462004/frontend/Dcw/hyvadesktop/en_US/images/Close--icon.png" alt="Close--icon" width="11" height="11" /></picture> 6935 </button> 6936 </div> 6937 <div class="flex h-full flex-col bss_login_popup_in overflow-y-auto" > 6938 <div class="message mx-4 message-error" x-show="openMessage"> 6939 <div> 6940 <span x-html="message"></span> 6941 </div> 6942 <div class="cursor-pointer" title="close" @click="openMessage = false"> 6943 <svg class="fill-current text-white" xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18"> 6944 <path d="M14.53 4.53l-1.06-1.06L9 7.94 4.53 3.47 3.47 4.53 7.94 9l-4.47 6945 4.47 1.06 1.06L9 10.06l4.47 4.47 1.06-1.06L10.06 9z"> 6946 </path> 6947 </svg> 6948 </div> 6949 </div> 6950 <div class="message mx-4 message-error success" x-show="openSuccessMessage"> 6951 <div> 6952 <span x-html="message"></span> 6953 </div> 6954 <div class="cursor-pointer" title="close" @click="openSuccessMessage = false"> 6955 <svg class="fill-current text-white" xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18"> 6956 <path d="M14.53 4.53l-1.06-1.06L9 7.94 4.53 3.47 3.47 4.53 7.94 9l-4.47 6957 4.47 1.06 1.06L9 10.06l4.47 4.47 1.06-1.06L10.06 9z"> 6958 </path> 6959 </svg> 6960 </div> 6961 </div> 6962 <div class="block-customer-login for_got" x-show="openForgot"> 6963 <h2 id="authenticate-customer-login" class="text-size18 font-medium text-darkblack"> 6964 Forgot Password </h2> 6965 <form class="form form-fotgotpassword" 6966 method="post" 6967 @submit.prevent="submitForgotForm();" 6968 id="fotgot-form"> 6969 <fieldset class="fieldset"> 6970 <div class="text-size14 font-normal text-black mb-4">Please enter your email address below to receive a password reset link.</div> 6971 <div class="field email required"> 6972 <label for="email_address" class="label"><span>Email</span></label> 6973 <div class="control"> 6974 <input type="email" name="email" alt="email" id="email_address" class="form-input" required 6975 value=""> 6976 </div> 6977 </div> 6978 </fieldset> 6979 <div class="actions-toolbar"> 6980 <div class="primary"> 6981 <button type="submit" class="action submit primary"><span>Reset My Password</span></button> 6982 </div> 6983 <div class="secondary ml-4 self-center"> 6984 <a class="action back cursor-pointer" 6985 @click ="openForgot = false,openLogin = true, 6986 openButtonLogin = true" 6987 >
6988 <span class="text-size14 font-medium text-black"> 6989 Back </span> 6990 </a> 6991 </div> 6992 </div> 6993 </form> 6994</div> 6995 6996 6997 6998 <div class="w-full"> 6999 <input id="g-recaptcha-response" type="hidden" value=""/> 7000 </div> 7001 <div class="block-new-customer social_login" 7002 x-show="openButtonLogin"> 7003 <h2 id="authenticate-new-customer" class="text-size18 font-semibold text-darkblack"> 7004 Log In </h2> 7005 <div class="block-content"> 7006 <div id="add_button_login_byclass" x-data="bssButtonSocial()" x-ref="registerSocialButton"> 7007 <div class=""> 7008 <div class="sociallogin-buttons" x-ref="loginSocialButton"> 7009 <ul class="sociallogin-clearfix flex flex-wrap"> 7010 <li class="w-full text-size14 font-medium text-darkblack relative sociallogin-button 7011 googleplus" title="Login with Google"> 7012 <a class="sociallogin-button-link sociallogin-button-click" id="sociallogin-button-click" 7013 href="javascript:void(0);" data-href="https://accounts.google.com/o/oauth2/auth?response_type=code&redirect_uri=https%3A%2F%2Fwww.flooringinc.com%2Fsociallogin%2Faccount%2Flogin%2Ftype%2Fgoogleplus%2F&client_id=900046866587-mph1s7dsg2dcau694j9ukb0m26hukidu.apps.googleusercontent.com&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fuserinfo.profile+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fuserinfo.email&state=&access_type=offline&approval_prompt=auto" 7014 data-width="630" 7015 data-height="650" 7016 x-ref="googleplus" 7017 @click="popupSocial($refs.googleplus)"> 7018 <span class="sociallogin-button-auto"> 7019 <span class="sociallogin-button-icon"> 7020 </span> 7021 <span class="sociallogin-button-text">Login with Google</span> 7022 </span> 7023 </a> 7024 </li> 7025 </ul> 7026 </div> 7027 7028 </div> 7029 <div style="clear: both;"></div> 7030 </div> 7031 </div> 7032 </div> 7033 <div class="block-customer-login" x-show="openLogin" x-data="{ show: false }"> 7034 <span class="or-label text-size14 font-normal text-darkblack"> Or</span> 7035 7036 <form class="form form-login" 7037 method="post" 7038 @submit.prevent="submitForm();" 7039 id="login-form" 7040 > 7041 <div class="fieldset login"> 7042 <div class="field email required"> 7043 <label class="label hidden" for="customer-email"> 7044 <span>Email Address</span> 7045 </label> 7046 <div class="control"> 7047 <input name="username" 7048 x-ref="customer-email" 7049 @change="errors = 0" 7050 type="email" 7051 required 7052 class="form-input input-text" id="customer-email" placeholder="Email address" 7053 > 7054 </div> 7055 </div> 7056 <div class="field password required" > 7057 <label for="pass" class="label hidden">
7058 <span>Password</span> 7059 </label> 7060 <div class="control"> 7061 <input name="password" 7062 type="password" 7063 class="form-input input-text" id="pass" placeholder="Password" 7064 required 7065 x-ref="customer-password" 7066 @change="errors = 0" 7067 > 7068 </div> 7069 </div> 7070 7071 <input name="context" type="hidden" value="checkout"/> 7072 7073 <div class="actions-toolbar flex justify-between items-center" > 7074 <div class="flex items-center"> 7075 <input type="checkbox" name="show-password" @click="showPassword()" id="show-password" value="" class="checkbox"> 7076 <label class="cursor-pointer text-size12 font-normal text-darkblack" style="margin:0;" for="show-password">Show password</label> 7077 <!-- <span class="cursor-pointer text-size12 font-normal text-darkblack" @click="showPasswordForLable()" id="show-password-label" > 7078 Show Password 7079 </span> --> 7080 </div> 7081 <span class="cursor-pointer text-size12 font-normal text-darkblack" @click="openForgot = true,openLogin = false,openButtonLogin = false"> 7082 Forgot Your Password? </span> 7083 7084 7085 </div> 7086 <div class="actions-toolbar flex justify-between items-center"> 7087 <button type="submit" class="inline-flex btn btn-primary login_btn"> 7088 Log In </button> 7089 </div> 7090 </div> 7091 </form> 7092</div> 7093
7094<script> 7095 function showPassword(){ 7096 var showPwd=document.getElementById("show-password"); 7097 var password=document.getElementById("pass"); 7098 if(showPwd.checked==true) { 7099 password.type="text"; 7100 } else { 7101 password.type="password"; 7102 } 7103 } 7104 function showPasswordForLable(){ 7105 var password=document.getElementById("pass"); 7106 if (password.type === "password") { 7107 password.type = "text"; 7108 } else { 7109 password.type = "password"; 7110 } 7111 } 7112</script>
7112 7113 <div class="block-new-customer new_customer text-center" x-show ="openCreate"> 7114 <h2 id="authenticate-new-customer" class="text-size13 font-normal text-darkblack"> 7115 New Customer? </h2> 7116 <div class="block-content"> 7117 <div class="actions-toolbar"> 7118 <a class="block btn btn-primary cursor-pointer text-size18 font-semibold text-custom-blue" 7119 href="https://www.flooringinc.com/customer/account/create/" > 7120 Sign Up Now </a> 7121 </div> 7122 <div class="block-new-customer"> 7123 <h3 class="text-size16 font-normal text-black"> 7124 <a class="block underline" 7125 href="https://www.flooringinc.com/pro-advantage/" 7126 > 7127 Become a Pro </a> 7128 </h3> 7129 </div> 7130 </div> 7131 </div> 7132 <div class="block-new-customer social_login margin" x-show="openButtonRegister"> 7133 <h2 id="authenticate-new-customer" class="text-size18 font-medium text-darkblack"> 7134 Social Register </h2> 7135 <div class="block-content"> 7136 <div id="add_button_register_byclass" x-data="bssButtonSocial()" x-ref="registerSocialButton"> 7137 <div class=""> 7138 <div class="sociallogin-buttons"> 7139 <ul class="sociallogin-clearfix flex flex-wrap"> 7140 <li class="w-full text-size14 font-medium text-darkblack relative sociallogin-button googleplus" title="Register with Google"> 7141 <a class="sociallogin-button-link sociallogin-button-click" id="sociallogin-button-click" 7142 href="javascript:void(0);" data-href="https://accounts.google.com/o/oauth2/auth?response_type=code&redirect_uri=https%3A%2F%2Fwww.flooringinc.com%2Fsociallogin%2Faccount%2Flogin%2Ftype%2Fgoogleplus%2F&client_id=900046866587-mph1s7dsg2dcau694j9ukb0m26hukidu.apps.googleusercontent.com&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fuserinfo.profile+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fuserinfo.email&state=&access_type=offline&approval_prompt=auto" 7143 data-width="630" 7144 data-height="650" 7145 x-ref="googleplus" 7146 @click="popupSocial($refs.googleplus)"> 7147 <span class="sociallogin-button-auto"> 7148 <span class="sociallogin-button-icon"> 7149 </span> 7150 <span class="sociallogin-button-text">Register with Google</span> 7151 </span> 7152 </a> 7153 </li> 7154 </ul> 7155 </div> 7156 </div> 7157 <div style="clear: both;"></div> 7158 </div> 7159 </div> 7160 </div> 7161 </div> 7162 </div> 7163</div> 7164</section>
7165<script> 7166 var classLogin = [".checkout-container .opc-wrapper"]; 7167 var classRegister = [""]; 7168 classLogin = classLogin[0].trim().split(/\s+/); 7169 classRegister = classRegister[0].trim().split(/\s+/); 7170 if(classLogin && classLogin.length > 0 && classLogin[0]){ 7171 classLogin.forEach(element => { 7172 var classLoginElement = document.querySelector(element); 7173 var loginSocialButton = document.getElementById('add_button_login_byclass'); 7174 if (classLoginElement && loginSocialButton) { 7175 const cloneLoginSocialButton = loginSocialButton.cloneNode(true); 7176 classLoginElement.appendChild(cloneLoginSocialButton); 7177 cloneLoginSocialButton.style.display='block'; 7178 } 7179 }); 7180 } 7181 7182 if(classRegister && classRegister.length > 0 && classRegister[0]){ 7183 classRegister.forEach(element => { 7184 var classRegisterElement = document.querySelector(element); 7185 var registerSocialButton = document.getElementById('add_button_register_byclass'); 7186 if (classRegisterElement && registerSocialButton) { 7187 const cloneRegisterSocialButton = registerSocialButton.cloneNode(true); 7188 classRegisterElement.appendChild(cloneRegisterSocialButton); 7189 cloneRegisterSocialButton.style.display='block'; 7190 } 7191 }); 7192 } 7193 7194 function bssButtonSocial() { 7195 return { 7196 renderShowmore : function (element) { 7197 var socialButton = element.querySelector('.sociallogin-clearfix').getElementsByTagName("li"); 7198 for (let i = 0; i <= socialButton.length - 1; i++) { 7199 socialButton[i].style.display = 'block'; 7200 } 7201 element.querySelector('.sociallogin-showmore').style.display = 'none'; 7202 }, 7203 popupSocial: function (element) { 7204 var href = element.getAttribute('data-href'); 7205 var width = element.getAttribute('data-width'); 7206 var height = element.getAttribute('data-height'); 7207 var popup_window = null; 7208 if (!width) { 7209 width = 650; 7210 } 7211 7212 if(!height) { 7213 height = 350; 7214 } 7215 7216 var left = parseInt((window.innerWidth- width) / 2); 7217 var top = parseInt((window.innerHeight - height) / 2); 7218 7219 var params = [ 7220 'resizable=yes', 7221 'scrollbars=no', 7222 'toolbar=no', 7223 'menubar=no', 7224 'location=no', 7225 'directories=no', 7226 'status=yes', 7227 'width='+ width, 7228 'height='+ height, 7229 'left='+ left, 7230 'top='+ top 7231 ]; 7232 7233 if(popup_window) { 7234 popup_window.close(); 7235 } 7236 7237 if(href) { 7238 popup_window = window.open(href,'',params.join(',')); 7239 popup_window.focus(); 7240 7241 }else{ 7242 alert('This Login Application was not configured correctly. Please contact our customer support.'); 7243 } 7244 return false; 7245 } 7246 } 7247 } 7248 7249</script>
7249 7250 7251 7252 7253
7253<script> 7254 (() => { 7255 function changeNoCookieDomain() { 7256 const categoryKey = "marketing"; 7257 if (! prCookieConsentApi.isAllowedCategory(categoryKey)) { 7258 return; 7259 } 7260 7261 let iframes = document.querySelectorAll('iframe'), 7262 youtubeNoCookieIframes = Array.from(iframes) 7263 .filter((iframe) => iframe.src.indexOf('youtube-nocookie.com') !== -1); 7264 7265 youtubeNoCookieIframes.forEach((iframe) => { 7266 iframe.src = iframe.src.replace('youtube-nocookie.com', 'youtube.com'); 7267 }); 7268 } 7269 7270 if (prCookieConsentApi) { 7271 changeNoCookieDomain(); 7272 return; 7273 } 7274 7275 document.addEventListener('pr-cookie-consent-api:configured', changeNoCookieDomain); 7276 })(); 7277 </script>
7277 7278
7279<script> 7280 'use strict'; 7281 7282 (() => { 7283 window.addEventListener('DOMContentLoaded', () => { 7284 if (document.querySelectorAll('lite-youtube').length > 0) { 7285 const link = document.createElement('link'), 7286 script = document.createElement('script'); 7287 7288 link.rel = 'stylesheet'; 7289 link.type = 'text/css'; 7290 link.href = 'https\u003A\u002F\u002Fwww.flooringinc.com\u002Fstatic\u002Fversion1789462004\u002Ffrontend\u002FDcw\u002Fhyvadesktop\u002Fen_US\u002FMageQuest_LiteYouTube\u002Fcss\u002Flite\u002Dyt\u002Dembed.min.css'; 7291 document.head.appendChild(link); 7292 7293 script.type = 'text/javascript'; 7294 script.src = 'https\u003A\u002F\u002Fwww.flooringinc.com\u002Fstatic\u002Fversion1789462004\u002Ffrontend\u002FDcw\u002Fhyvadesktop\u002Fen_US\u002FMageQuest_LiteYouTube\u002Fjs\u002Flite\u002Dyt\u002Dembed.min.js'; 7295 document.head.appendChild(script); 7296 } 7297 }); 7298 })(); 7299</script>
vendor: 1 bytes, line 7299
7299
7300<script data-mfmofile="true"> 7301 document.addEventListener("DOMContentLoaded", function() { 7302 if (document.querySelectorAll('.mf-ytw-wrapper').length || document.querySelectorAll('[data-mf-ytw-youtube-link]').length) { 7303 !function (f, b, e, v, t, s) { 7304 if(f.mfytwcss)return; 7305 f.mfytwcss=1; 7306 t = b.createElement(e); 7307 t.rel = 'stylesheet'; 7308 t.type = 'text/css'; 7309 t.href = v; 7310 s = b.getElementsByTagName('HEAD')[0]; 7311 s.appendChild(t) 7312 }(window, document, 'link', 'https://www.flooringinc.com/static/version1789462004/frontend/Dcw/hyvadesktop/en_US/Magefan_YouTubeWidget/css/youtubewidget.min.css'); 7313 } 7314 if (document.querySelectorAll('.mf-ytw-wrapper').length) { 7315 !function (f, b, e, v, t, s) { 7316 if(f.mfytwjs)return; 7317 f.mfytwjs=1; 7318 t = b.createElement(e); 7319 t.type = 'text/javascript'; 7320 t.src = v; 7321 s = b.getElementsByTagName('HEAD')[0]; 7322 s.appendChild(t) 7323 }(window, document, 'script', 'https://www.flooringinc.com/static/version1789462004/frontend/Dcw/hyvadesktop/en_US/Magefan_YouTubeWidget/js/iframe.min.js'); 7324 } 7325 if (document.querySelectorAll('[data-mf-ytw-youtube-link]').length) { 7326 !function (f, b, e, v, t) { 7327 if(f.mflinkjs)return; 7328 f.mflinkjs=1; 7329 t = b.createElement(e); 7330 t.type = 'text/javascript'; 7331 t.src = v; 7332 s = b.getElementsByTagName('HEAD')[0]; 7333 s.appendChild(t) 7334 }(window, document, 'script', 'https://www.flooringinc.com/static/version1789462004/frontend/Dcw/hyvadesktop/en_US/Magefan_YouTubeWidget/js/link.min.js'); 7335 } 7336 }); 7337</script>
7337 7338 7339 <div id="pr-gpc-notification-modal" style="display: none;"> 7340 <div class="pr-gpc-notification-wrap"> 7341 <h2>Your Opt-Out Preferences Honored</h2> 7342<p>Your browser's privacy preference (GPC) has been detected.</p> 7343<p class="pr-gpc-text-with-icon"><picture><source type="image/webp" srcset="https://www.flooringinc.com/static/version1789462004/frontend/Dcw/hyvadesktop/en_US/Plumrocket_GlobalPrivacyControl/images/check_circle.webp"><img src="https://www.flooringinc.com/static/version1789462004/frontend/Dcw/hyvadesktop/en_US/Plumrocket_GlobalPrivacyControl/images/check_circle.png" alt="GPC Icon" width="18" height="18"></picture> Non-essential cookies have been disabled on our website.</p> 7344</div> </div> 7345 7346
7346<script type="text/x-magento-init" nonce="YjZ2ZWQxdzRxcTd4ZGJzcGk4OGs3aXlybTNkOWF6ODk="> 7347 { 7348 "#pr-gpc-notification-modal": { 7349 "Plumrocket_GlobalPrivacyControl/js/opt-out-notification": {} 7350 } 7351 } 7352 </script>
7352 7353 7354
7355<script> 7356 (() => { 7357 function src_default(Alpine) { 7358 Alpine.directive("intersect", (el, { value, expression, modifiers }, { evaluateLater, cleanup }) => { 7359 let evaluate = evaluateLater(expression); 7360 let options = { 7361 rootMargin: getRootMargin(modifiers), 7362 threshold: getThreshhold(modifiers) 7363 }; 7364 let observer = new IntersectionObserver((entries) => { 7365 entries.forEach((entry) => { 7366 if (entry.isIntersecting === (value === "leave")) 7367 return; 7368 evaluate(); 7369 modifiers.includes("once") && observer.disconnect(); 7370 }); 7371 }, options); 7372 observer.observe(el); 7373 cleanup(() => { 7374 observer.disconnect(); 7375 }); 7376 }); 7377 } 7378 function getThreshhold(modifiers) { 7379 if (modifiers.includes("full")) 7380 return 0.99; 7381 if (modifiers.includes("half")) 7382 return 0.5; 7383 if (!modifiers.includes("threshold")) 7384 return 0; 7385 let threshold = modifiers[modifiers.indexOf("threshold") + 1]; 7386 if (threshold === "100") 7387 return 1; 7388 if (threshold === "0") 7389 return 0; 7390 return Number(`.${threshold}`); 7391 } 7392 function getLengthValue(rawValue) { 7393 let match = rawValue.match(/^(-?[0-9]+)(px|%)?$/); 7394 return match ? match[1] + (match[2] || "px") : void 0; 7395 } 7396 function getRootMargin(modifiers) { 7397 const key = "margin"; 7398 const fallback = "0px 0px 0px 0px"; 7399 const index = modifiers.indexOf(key); 7400 if (index === -1) 7401 return fallback; 7402 let values = []; 7403 for (let i = 1; i < 5; i++) { 7404 values.push(getLengthValue(modifiers[index + i] || "")); 7405 } 7406 values = values.filter((v) => v !== void 0); 7407 return values.length ? values.join(" ").trim() : fallback; 7408 } 7409 7410 document.addEventListener("alpine:init", () => { 7411 window.Alpine.plugin(src_default); 7412 }); 7413 })(); 7414</script>
vendor: 1 bytes, line 7414
7414
7415<script> 7416 for (const [selector, deferUntil] of Object.entries({".product-slider section[x-data]":"intersect",".product-info [x-data]":"intersect","#filters-content [x-data]":"intersect","#review_form":"intersect","section[x-data^=initRecentlyViewedProductsComponent]":"intersect","div[x-data^=initBundleOptions]":"intersect","#product_addtocart_form [x-data]":"intersect","#notice-cookie-block":"intersect"})) { 7417 document.querySelectorAll(selector).forEach(el => el.setAttribute('x-defer', `${deferUntil}`)); 7418 } 7419</script>
vendor: 1 bytes, line 7419
7419
7420<script> 7421 (function () { 7422 "use strict"; 7423 7424 const hasAlpine = new Promise(resolve => { 7425 window.addEventListener('alpine:initialized', resolve, {once: true, passive: true}); 7426 }); 7427 7428 const hasInteract = new Promise(resolve => { 7429 (events => { 7430 const onInteract = () => { 7431 resolve(); 7432 events.forEach(type => window.removeEventListener(type, onInteract)); 7433 } 7434 events.forEach(type => window.addEventListener(type, onInteract, {once: true, passive: true})) 7435 })(['touchstart', 'mouseover', 'wheel', 'scroll', 'keydown']) 7436 }); 7437 7438 const onIntersect = (el) => { 7439 return new Promise(resolve => { 7440 const observer = new IntersectionObserver(entries => { 7441 for (const entry of entries) { 7442 if (entry.isIntersecting) { 7443 observer.disconnect() 7444 resolve(); 7445 } 7446 } 7447 }, {}); 7448 observer.observe(el); 7449 }); 7450 } 7451 7452 function runComponent(el) { 7453 hasAlpine.then(() => { 7454 el.removeAttribute('x-ignore'); 7455 queueMicrotask(() => Alpine.initTree(el)); 7456 }); 7457 } 7458 7459 function initDeferredComponents() { 7460 document.querySelectorAll('[x-data][x-defer]').forEach(el => { 7461 el.setAttribute('x-ignore', ''); 7462 const deferUntil = (el.getAttribute('x-defer') || '').trim(); 7463 switch (deferUntil) { 7464 case 'interact': 7465 hasInteract.then(() => runComponent(el)); 7466 break; 7467 case 'intersect': 7468 onIntersect(el).then(() => runComponent(el)) 7469 break; 7470 case 'idle': 7471 window.requestIdleCallback 7472 ? window.requestIdleCallback(() => runComponent(el), {timeout: 4000}) 7473 : setTimeout(() => runComponent(el), 4000); 7474 break; 7475 case 'eager': 7476 runComponent(el); 7477 break; 7478 default: 7479 if (deferUntil.startsWith('event:') && deferUntil.length > 6) { 7480 window.addEventListener(deferUntil.substring(6), () => runComponent(el), {once: true, passive: true}); 7481 } 7482 } 7483 }); 7484 } 7485 7486 window.addEventListener('alpine:init', initDeferredComponents, {once: true, passive: true}); 7487 })() 7488</script>
7488 7489
7490<script type="module" 7491 src="https://www.flooringinc.com/static/version1789462004/frontend/Dcw/hyvadesktop/en_US/Hyva_Theme/js/alpine3.min.js" 7492 defer 7493 crossorigin 7494></script>
vendor: 1 bytes, line 7494
7494
7495<script> 7496 'use strict'; 7497 function dispatchMessages(messages, hideAfter) { 7498 const messagesEvent = new CustomEvent("messages-loaded", { 7499 detail: { 7500 messages: messages, 7501 hideAfter: hideAfter 7502 } 7503 }); 7504 window.dispatchEvent(messagesEvent); 7505 } 7506 7507 if (typeof hyva === 'undefined' || (!hyva.getBrowserStorage || !hyva.getCookie || !hyva.setCookie)) { 7508 console.warn("Hyvä helpers are not loaded yet. Make sure they are included before this script"); 7509 } 7510 7511 (function( hyva, undefined ) { 7512 7513 hyva.initFormKey = () => { 7514 const inputSelector = 'input[name="form_key"]', 7515 formKey = hyva.getFormKey(); 7516 7517 Array.from(document.querySelectorAll(inputSelector)).map(function (input) { 7518 input.value = formKey 7519 }); 7520 } 7521 7522 hyva.initMessages = () => { 7523 try { 7524 const messages = hyva.getCookie('mage-messages'); 7525 window.mageMessages = messages ? JSON.parse(decodeURIComponent(messages).replace(/\+/g, ' ')) : []; 7526 7527 dispatchMessages(window.mageMessages); 7528 7529 // empty `mage-messages` cookie 7530 const skipSetDomain = true; 7531 hyva.setCookie('mage-messages','', -1, skipSetDomain); 7532 7533 } catch (error) { 7534 console.warn('Error parsing Cookie Messages:', error); 7535 } 7536 } 7537 7538 window.addEventListener('DOMContentLoaded', hyva.initFormKey); 7539 hyva.alpineInitialized(hyva.initMessages) 7540 7541 }( window.hyva = window.hyva || {} )); 7542</script>
vendor: 1 bytes, line 7542
7542
7543<script> 7544 'use strict'; 7545 { 7546 const private_content_key = 'mage-cache-storage'; 7547 const private_content_expire_key = 'mage-cache-timeout'; 7548 const private_content_version_key = 'private_content_version'; 7549 const section_data_ids_key = 'section_data_ids'; 7550 const mage_cache_session_id_key = 'mage-cache-sessid'; 7551 const last_visited_store_key = 'last_visited_store'; 7552 7553 const ttl = 3600; 7554 7555 if (typeof hyva === 'undefined' || (!hyva.getBrowserStorage || !hyva.getCookie || !hyva.setCookie)) { 7556 console.warn("Hyvä helpers are not loaded yet. Make sure they are included before this script"); 7557 } 7558 7559 function loadSectionData () { 7560 const browserStorage = hyva.getBrowserStorage(); 7561 if (!browserStorage) { 7562 typeof window.dispatchMessages !== "undefined" && window.dispatchMessages( 7563 [{ 7564 type: "warning", 7565 text: "Please enable LocalStorage in your browser." 7566 }] 7567 ); 7568 return; 7569 } 7570 try { 7571 let isInvalid = false; 7572 7573 if (hyva.getCookie(last_visited_store_key) !== CURRENT_STORE_CODE) { 7574 isInvalid = true; 7575 } 7576 hyva.setCookie(last_visited_store_key, CURRENT_STORE_CODE, false, false); 7577 7578 if (!hyva.getCookie(mage_cache_session_id_key)) { 7579 isInvalid = true; 7580 browserStorage.removeItem(private_content_key); 7581 const skipSetDomain = true; 7582 const days = false; 7583 hyva.setCookie(mage_cache_session_id_key, true, days, skipSetDomain) 7584 } 7585 7586 const cookieVersion = hyva.getCookie(private_content_version_key); 7587 const storageVersion = browserStorage.getItem(private_content_version_key); 7588 7589 if (cookieVersion && !storageVersion || cookieVersion !== storageVersion) { 7590 isInvalid = true; 7591 } 7592 7593 const privateContentExpires = browserStorage.getItem(private_content_expire_key); 7594 if (privateContentExpires && new Date(privateContentExpires) < new Date()) { 7595 browserStorage.removeItem(private_content_key); 7596 } 7597 7598 if (isInvalid && cookieVersion) { 7599 fetchPrivateContent([]); 7600 } else if (cookieVersion && storageVersion && cookieVersion === storageVersion) { 7601 const privateContent = JSON.parse(browserStorage.getItem(private_content_key)); 7602 if ( 7603 privateContent && 7604 privateContentExpires && 7605 privateContent.cart && 7606 privateContent.customer 7607 ) { 7608 dispatchPrivateContent(privateContent); 7609 } else { 7610 fetchPrivateContent([]); 7611 } 7612 } else { 7613 if (document.getElementById('default-section-data')) { 7614 const privateContent = JSON.parse(document.getElementById('default-section-data').innerText.trim()); 7615 dispatchPrivateContent(privateContent); 7616 } else { 7617 dispatchPrivateContent({}); 7618 } 7619 } 7620 7621 } catch (error) { 7622 console.warn('Error retrieving Private Content:', error); 7623 } 7624 } 7625 7626 hyva.alpineInitialized(loadSectionData) 7627 window.addEventListener('reload-customer-section-data', loadSectionData); 7628 7629 function dispatchPrivateContent(data) { 7630 const privateContentEvent = new CustomEvent("private-content-loaded", { 7631 detail: { 7632 data: data 7633 } 7634 }); 7635 window.dispatchEvent(privateContentEvent); 7636 } 7637 7638 function fetchPrivateContent(sections) { 7639 fetch(`${BASE_URL}customer/section/load/?sections=${encodeURIComponent(sections.join(','))}`, { 7640 method: 'GET', 7641 headers: { 7642 'Content-Type': 'application/json', 7643 'X-Requested-With': 'XMLHttpRequest' 7644 } 7645 }) 7646 .then(response => response.json()) 7647 .then( 7648 data => { 7649 if (data) { 7650 try { 7651 const browserStorage = hyva.getBrowserStorage(); 7652 7653 // merge new data preserving non-invalidated sections 7654 const oldSectionData = JSON.parse(browserStorage.getItem(private_content_key) || '{}') || {}; 7655 7656 if ((! data.cart || ! data.cart.cartId) && oldSectionData['checkout-data']) { 7657 delete oldSectionData['checkout-data']; 7658 } 7659 const newSectionData = Object.assign(oldSectionData, data); 7660 7661 dispatchPrivateContent(newSectionData); 7662 7663 // don't persist messages, they've been dispatched already 7664 if (newSectionData.messages && newSectionData.messages.messages ) { 7665 newSectionData.messages.messages = []; 7666 } 7667 7668 browserStorage.setItem(private_content_key, JSON.stringify(newSectionData)); 7669 7670 const expiresAt = new Date(Date.now() + (ttl * 1000)).toISOString(); 7671 browserStorage.setItem(private_content_expire_key, expiresAt); 7672 7673 const newCookieVersion = hyva.getCookie(private_content_version_key); 7674 browserStorage.setItem(private_content_version_key, newCookieVersion); 7675 7676 // We don't need the section_data_ids in Hyvä, but we store them for compatibility 7677 // with Luma Fallback. Otherwise, not all sections are loaded in Luma Checkout 7678 hyva.setCookie( 7679 section_data_ids_key, 7680 JSON.stringify( 7681 Object.keys(data).reduce((sectionDataIds, sectionKey) => { 7682 sectionDataIds[sectionKey] = data[sectionKey]['data_id']; 7683 return sectionDataIds; 7684 }, {}) 7685 ), 7686 false, 7687 true 7688 ); 7689 } catch (error) { 7690 console.warn("Couldn't store privateContent", error); 7691 } 7692 } 7693 } 7694 ); 7695 } 7696 } 7697</script>
vendor: 1 bytes, line 7697
7697
7698<script> 7699 (() => { 7700 document.addEventListener('submit', event => event.target.action = event.target.action.replace('%25uenc%25', hyva.getUenc())); 7701 })() 7702</script>
vendor: 1 bytes, line 7702
7702
7703<script> 7704 (events => { 7705 const dispatchUserInteractionEvent = () => { 7706 events.forEach(type => window.removeEventListener(type, dispatchUserInteractionEvent)) 7707 window.dispatchEvent(new Event('init-external-scripts')) 7708 }; 7709 events.forEach(type => window.addEventListener(type, dispatchUserInteractionEvent, {once: true, passive: true})) 7710 })(['touchstart', 'mouseover', 'wheel', 'scroll', 'keydown']) 7711</script>
7711 7712<style> 7713[data-bv-show=inline_rating] .bv_sub_container .bv_numReviews_component_container .bv_text{margin: -2px 0 0 0 !important;display: flex !important;} 7714@media(max-width: 767px){ 7715[data-bv-show=inline_rating] .bv_sub_container .bv_numReviews_component_container .bv_text{margin: 4px 0 0 0 !important;} 7716} 7717@media screen and (min-width: 768px) and (max-width: 1440px) { 7718 .product-item .product-info .price-box .price-container .price-wrapper span.price{font-size: 18px !important;} 7719 .product-item .product-info .price-box .price-container .price-wrapper{font-size: 18px;} 7720} 7721@media(max-width: 1550px){ 7722.products__recommendations .product-slider .glider-track .recommended-slider-item{min-width:auto;} 7723} 7724.page-products .spot-light .catergory_slider_content{border-radius: 10px;} 7725.page-header .panel.wrapper .header_top .header_left_notification a.email_icon:before{background-image: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" fill="%2315324c" version="1.1" id="Capa_1" width="800px" height="800px" viewBox="0 0 388.424 388.424" xml:space="preserve"><g><path d="M384.202,59.111H4.209C1.888,59.111,0,61,0,63.33v261.766c0,2.33,1.888,4.217,4.209,4.217h379.993 c2.317,0,4.222-1.887,4.222-4.217V63.33C388.424,61,386.52,59.111,384.202,59.111z M319.937,92.888L194.212,185.09L68.485,92.888 H319.937z M354.647,295.535H33.779V109.328l157.935,115.82c1.494,1.089,3.508,1.089,5.004,0l157.934-115.82v186.207H354.647z"/></g></svg>');background-size: 22px 22px;} 7726@media(max-width: 767px){ 7727.page-products .spot-light .catergory_slider_content .product-info{padding-left: 0 !important;padding-right: 0px !important;} 7728} 7729.page-products .spot-light .spot-bottom .order_btn{height: 35px;width: auto;color: rgb(255 255 255 / var(--tw-text-opacity)) !important;background: #296497 !important;border-radius: .375rem;padding: 0 1.25rem !important;text-align: center;text-decoration: none !important; vertical-align: middle;font-size: .75rem;line-height: 1rem;font-weight: 400;transition-duration: .15s;line-height: 35px;display: block; 7730} 7731.page-products .spot-light .spot-bottom .order_btn:hover{background: #15324c !important;transition-duration: .15s;} 7732.page-products .spot-light .catergory_slider_content .color_counts .color_count{font-size: 12px;color: rgb(127 127 127 / var(--tw-text-opacity)} 7733 7734 7735.category-top-filter .pagebuilder-column h3 span, .category-top-filter .pagebuilder-column h3 span a, .category-top-filter .pagebuilder-column h3 a{display: block;} 7736.checkout-payment-method .payment-method .payment-method-title.field.choice input#paypal_express+label {display: block;} 7737.catalog-product-view .product-info-main .color_swatches .swatch-attribute-options .select_none.swatch-option{display: none;} 7738@media(min-width: 768px){ 7739 .checkout-cart-index #shopping-cart-table .cart.item .item-info td.col.item{flex-wrap: nowrap;} 7740} 7741@media(min-width: 1500px){ 7742 .checkout-cart-index #shopping-cart-table .col.qty{min-width: 169px;max-width: 169px;width: 169px;} 7743} 7744@media only screen and (max-width: 1340px) and (min-width: 1000px){ 7745 .checkout-cart-index #maincontent #shopping-cart-table .product-item-details{max-width: 40%;} 7746} 7747</style>
7748<script> 7749document.addEventListener('DOMContentLoaded', function() { 7750 if (window.innerWidth <= 767) { 7751 document.querySelectorAll('.page-with-filter.page-products .sidebar .filter-content .card .filter-options-title').forEach(function(title) { 7752 const span = title.querySelector('span'); 7753 if (span && span.textContent.trim().includes('Revenue Ranking')) { 7754 const parentCard = title.closest('.card'); 7755 if (parentCard && !parentCard.id) { 7756 parentCard.id = 'filter-id-revenue_ranking'; 7757 } 7758 } 7759 }); 7760 } 7761}); 7762</script>
7762 7763<style> 7764.page-with-filter.page-products .sidebar .filter-content .card#filter-id-revenue_ranking{display: none;} 7765.checkout-index-index .kl_sms_phone_number-field{margin-bottom: 20px;} 7766@media(min-width: 768px){ 7767 .catalog-product-view .modal.order-free-sample-popup .right .order-free-sample-prod-info .product-info:after{right: -10px;top: -10px;} 7768} 7769@media(max-width: 767px){ 7770 .catalog-product-view .order-free-sample-popup .border .product-info:after{left: 35px;} 7771} 7772.checkout-index-index .notification4 {display: none} 7773 #related_cart_slider .js_slides{margin-right: 0;margin-left: 0;} 7774</style>
7775<script> 7776 function initConfigurableOptions(productId, optionConfig) { 7777 7778 function findPathParam(key) { 7779 const baseUrl = (BASE_URL.substr(0, 2) === '//' ? 'http:' : '') + BASE_URL; 7780 const baseUrlParts = (new URL(baseUrl)).pathname.replace(/\/$/, '').split('/'); 7781 const pathParts = window.location.pathname.split('/').slice(baseUrlParts.length + 3); 7782 for (let i = 0; i < pathParts.length; i += 2) { 7783 if (pathParts[i] === key && pathParts.length > i) { 7784 return pathParts[i + 1]; 7785 } 7786 } 7787 } 7788 7789 return { 7790 optionConfig, 7791 productId, 7792 attributeCode:'', 7793 itemId: (new URLSearchParams(window.location.search)).get('id') || findPathParam('id'), 7794 ssrGalleryChildId: 0, 7795 allowedAttributeOptions: [], 7796 selectedValues: [], 7797 init() { 7798 this.checkIsFirst(); 7799 this.findAllowedAttributeOptions(); 7800 this.$nextTick(() => { 7801 if (typeof this.optionConfig.defaultValues === 'object') { 7802 for (const [optionId, value] of Object.entries(this.optionConfig.defaultValues)) { 7803 this.changeOption(optionId, value + ''); 7804 } 7805 } 7806 }); 7807 }, 7808 checkIsFirst() { 7809 this.isLoadedFirst = true; 7810 setTimeout(() => { 7811 this.isLoadedFirst = false; 7812 }, "3000"); 7813 }, 7814 findSimpleIndex() { 7815 this.productIndex = this.calculateSimpleIndexForPartialSelection(this.selectedValues); 7816 }, 7817 calculateSimpleIndexForPartialSelection(selectedValues) { 7818 if (selectedValues.length === 0) return 0; 7819 let productIndexIds = Object.keys(this.optionConfig.index); 7820 Object.keys(this.optionConfig.attributes).forEach((attribute) => { 7821 const productsWithAttributeMatch = selectedValues[attribute] 7822 ? productIndexIds.filter((productIndex) => { 7823 return this.optionConfig.index[productIndex][attribute] === this.selectedValues[attribute] 7824 }) 7825 : []; 7826 7827 productIndexIds = productsWithAttributeMatch.length ? productsWithAttributeMatch : productIndexIds 7828 }) 7829 return productIndexIds[0]; 7830 }, 7831 calculateSimpleIndexForFullSelection(selectedValues) { 7832 const productIndexes = this.optionConfig.index; 7833 return Object.keys(productIndexes).find(productIndex => { 7834 const productCandidateOptions = productIndexes[productIndex]; 7835 7836 for (const productOption in productCandidateOptions) { 7837 if ( 7838 ! selectedValues[productOption] || 7839 selectedValues[productOption] !== productCandidateOptions[productOption] 7840 ) { 7841 return false; 7842 } 7843 } 7844 return productIndex; 7845 }); 7846 }, 7847 productIndex: 0, 7848 findAllowedAttributeOptions() { 7849 this.allowedAttributeOptions = this.calculateAllowedAttributeOptions(this.selectedValues); 7850 }, 7851 calculateAllowedAttributeOptions(selectedValues) { 7852 const allAttributes = this.optionConfig.attributes; 7853 const allAttributesSorted = Object.values(allAttributes).sort((a,b) => { 7854 return a.position - b.position 7855 }); 7856 7857 const selectionWithoutAttr = attrId => { 7858 return Object.keys(selectedValues).reduce((acc, id) => { 7859 if (id !== attrId) acc[id] = selectedValues[id]; 7860 return acc; 7861 }, {}) 7862 } 7863 7864 const newAllowedAttributeOptions = []; 7865 7866 allAttributesSorted.forEach(attribute => { 7867 const availableIndexes = this.calculateAvailableProductIndexes(selectionWithoutAttr(attribute.id)); 7868 if (attribute?.code === 'incstores_pim_color_axis') { 7869 newAllowedAttributeOptions[attribute.id] = 7870 allAttributes[attribute.id].options 7871 .filter(option => { 7872 return !!option.products.find(product => availableIndexes.includes(product)); 7873 }) 7874 .sort((a, b) => {
7875 const cheapestA = this.findCheapestProductForPartialSelectionForSort({ 7876 ...selectedValues, 7877 [attribute.id]: a.id 7878 }); 7879 7880 const cheapestB = this.findCheapestProductForPartialSelectionForSort({ 7881 ...selectedValues, 7882 [attribute.id]: b.id 7883 }); 7884 7885 if (!cheapestA && !cheapestB) return 0; 7886 if (!cheapestA) return 1; 7887 if (!cheapestB) return -1; 7888 7889 const priceA = this.optionConfig.optionPrices[cheapestA].customPrice.amount; 7890 const priceB = this.optionConfig.optionPrices[cheapestB].customPrice.amount; 7891 7892 return priceA - priceB; 7893 }); 7894 } else { 7895 newAllowedAttributeOptions[attribute.id] = allAttributes[attribute.id].options.filter(option => { 7896 return !!option.products.find(product => { 7897 //====== For Custom Design link - fetch child product id on page load START ====== 7898 if(document.querySelector('input[name="selected_option_child_id"]')){ 7899 if(document.querySelector('input[name="selected_option_child_id"]').value == ''){ 7900 document.querySelector('input[name="selected_option_child_id"]').value = product; 7901 } 7902 } 7903 //====== For Custom Design link - fetch child product id on page load END ====== 7904 return availableIndexes.includes(product); 7905 }) 7906 }); 7907 } 7908 }); 7909 return newAllowedAttributeOptions; 7910 }, 7911 calculateAvailableProductIndexes(selectedOptions) { 7912 if (Object.keys(selectedOptions).length === 0) { 7913 return Object.keys(this.optionConfig.index); 7914 } 7915 7916 const selectedIds = Object.keys(selectedOptions); 7917 if (Object.values(this.optionConfig.salable || {}).length) { 7918 const selectedOptionIndexes = selectedIds.map(attrId => { 7919 const optionValue = selectedOptions[attrId]; 7920 return this.optionConfig.salable[attrId] && this.optionConfig.salable[attrId][optionValue] || [] 7921 }) 7922 return selectedOptionIndexes.reduce((acc, optionIndexes) => { 7923 return acc.filter(index => optionIndexes.includes(index)); 7924 }); 7925 } else { 7926 const productIndexes = this.optionConfig.index; 7927 return Object.keys(productIndexes).filter(index => { 7928 return selectedIds.find( 7929 attrId => productIndexes[index][attrId] === `${selectedOptions[attrId]}` 7930 ) 7931 }); 7932 } 7933 }, 7934 findAttributeByOptionId(optionId) { 7935 for (const attributeId in this.optionConfig.attributes) { 7936 const attributeOptions = this.optionConfig.attributes[attributeId].options || []; 7937 if (attributeOptions.find(option => option.id === optionId)) { 7938 return attributeId; 7939 } 7940 } 7941 }, 7942 getAllowedAttributeOptions(attributeId) { 7943 return this.allowedAttributeOptions[attributeId] || [] 7944 }, 7945 getProductIdsForOption(option) { 7946 const attributeId = this.findAttributeByOptionId(option.id); 7947 const allOptions = this.optionConfig.attributes[attributeId]; 7948 const opt = (allOptions && allOptions.options || []).find(o => o.id === option.id); 7949 return opt && opt.products 7950 ? opt.products 7951 : []; 7952 }, 7953 findProductIdsForPartialSelection(optionSelection) { 7954 const candidateProducts = Object.values(optionSelection).reduce((candidates, optionId) => { 7955 const newCandidates = this.getProductIdsForOption({id: optionId}); 7956 return candidates === null 7957 ? newCandidates 7958 : candidates.filter(productId => newCandidates.includes(productId)); 7959 }, null); 7960 return candidateProducts || []; 7961 },
7962 findCheapestProductForPartialSelection(optionSelection) { 7963 const candidateProducts = this.findProductIdsForPartialSelection(optionSelection); 7964 return candidateProducts.reduce((cheapest, simpleIdx) => { 7965 // in the first iteration we start with simpleIdx as the currently cheapest product 7966 if (! this.optionConfig.optionPrices[cheapest]) return simpleIdx; 7967 const knownCheapestPrice = this.optionConfig.optionPrices[cheapest].finalPrice.amount; 7968 return knownCheapestPrice > this.optionConfig.optionPrices[simpleIdx].finalPrice.amount 7969 ? simpleIdx 7970 : cheapest; 7971 }, 0) 7972 }, 7973 findCheapestProductForPartialSelectionForSort(optionSelection) { 7974 const candidateProducts = this.findProductIdsForPartialSelection(optionSelection); 7975 return candidateProducts.reduce((cheapest, simpleIdx) => { 7976 // in the first iteration we start with simpleIdx as the currently cheapest product 7977 if (! this.optionConfig.optionPrices[cheapest]) return simpleIdx; 7978 const knownCheapestPrice = this.optionConfig.optionPrices[cheapest].customPrice.amount; 7979 return knownCheapestPrice > this.optionConfig.optionPrices[simpleIdx].customPrice.amount 7980 ? simpleIdx 7981 : cheapest; 7982 }, 0) 7983 }, 7984 findProductIdToUseForOptionPrice(option) { 7985 // try to find a product for a complete selection 7986 const attributeId = this.findAttributeByOptionId(option.id); 7987 const optionSelection = Object.assign({}, this.selectedValues, {[attributeId]: option.id}); 7988 const matchingSimpleIndex = this.calculateSimpleIndexForFullSelection(optionSelection); 7989 // if there is no complete selection, use the cheapest product for the option 7990 return matchingSimpleIndex || this.findCheapestProductForPartialSelection(optionSelection); 7991 }, 7992 getAttributeOptionLabel(option) { 7993 const optionProduct = this.findProductIdToUseForOptionPrice(option); 7994 if ((! optionProduct) || (optionProduct === this.productIndex)) { 7995 return option.label; 7996 } 7997 7998 const currentPrice = this.getOptionPriceAdjustmentBasePrice(); 7999 8000 if (this.optionConfig.optionPrices[optionProduct]) { 8001 const optionPrice = this.optionConfig.optionPrices[optionProduct].finalPrice.amount; 8002 if (optionPrice !== currentPrice){ 8003 return option.label + ' ' + hyva.formatPrice(optionPrice - currentPrice, true); 8004 } 8005 } 8006 return option.label; 8007 }, 8008 getOptionPriceAdjustmentBasePrice() { 8009 if (this.optionConfig.optionPrices[this.productIndex]) { 8010 return this.optionConfig.optionPrices[this.productIndex].finalPrice.amount 8011 } 8012 const cheapestForSelection = this.findCheapestProductForPartialSelection(this.selectedValues); 8013 return this.optionConfig.optionPrices[cheapestForSelection] 8014 ? this.optionConfig.optionPrices[cheapestForSelection].finalPrice.amount 8015 : this.optionConfig.prices.finalPrice.amount; // default price if no option selection 8016 }, 8017 changeOption(optionId, value) { 8018 if (value !== '' 8019 && typeof this.optionIsEnabled === 'function' 8020 && !this.optionIsEnabled(optionId, value)) { 8021 return; 8022 } 8023 var checkbox = document.getElementById('overage_percent'); 8024 if(checkbox){ 8025 checkbox.checked = true; // Check the checkbox 8026 } 8027 var galleryImgOpacity = document.querySelector('#gallery .prod_slider img.first-image'); 8028 if (galleryImgOpacity) { 8029 galleryImgOpacity.classList.add('opacity-0'); 8030 } 8031 if (value === '') { 8032 // create new array so the length property is reset if no option is selected (avoiding delete) 8033 this.selectedValues = this.selectedValues.reduce((newSelection, val, opt) => { 8034 if (opt !== optionId) { 8035 newSelection[opt] = val; 8036 } 8037 return newSelection; 8038 }, []); 8039 } else { 8040 const currentUrl = window.location.href; 8041 // Create a URL object 8042 const url = new URL(currentUrl); 8043 // Use searchParams to get the color option 8044 const colorOption = url.searchParams.get('color-option'); 8045 const variantOption = url.searchParams.get('variant-option'); 8046 if(colorOption!==null && variantOption!==null){ 8047 if(this.optionConfig.attributes[optionId]['code'] == 'incstores_pim_color_axis') 8048 { 8049 this.selectedValues[optionId] = colorOption; 8050 } 8051 if(this.optionConfig.attributes[optionId]['code'] == 'incstores_pim_variant_axis') 8052 { 8053 this.selectedValues[optionId] = variantOption; 8054 } 8055 } 8056 else if(colorOption!==null){ 8057 if(this.optionConfig.attributes[optionId]['code'] == 'incstores_pim_color_axis') 8058 { 8059 this.selectedValues[optionId] = colorOption; 8060 } 8061 8062 } 8063 else if(this.isLoadedFirst == true && (0 > 0 || 0 > 0)) 8064 { 8065 if(this.optionConfig.attributes[optionId]['code'] == 'incstores_pim_color_axis') 8066 { 8067 this.selectedValues[optionId] = '0'; 8068 } 8069 if(this.optionConfig.attributes[optionId]['code'] == 'incstores_pim_variant_axis') 8070 { 8071 this.selectedValues[optionId] = '0'; 8072 } 8073 } 8074 else 8075 { 8076 this.selectedValues[optionId] = value; 8077 } 8078 8079 var addToCartButton = document.querySelector('.pdp-addtocart-btn'); 8080 if (addToCartButton) { 8081 if (!addToCartButton.classList.contains('pointer-events-none')) { 8082 addToCartButton.classList.add('pointer-events-none'); 8083 addToCartButton.classList.add('opacity-50'); 8084 } 8085 } 8086 8087 var productId = this.findProductIdsForPartialSelection(this.selectedValues)[0]; 8088 var baseUrl = "https://www.flooringinc.com/"; 8089 8090 if (typeof productId === 'undefined') { 8091 let attributeCode = this.optionConfig.attributes[optionId]['code']; 8092 setTimeout(() => { 8093 if (attributeCode == 'incstores_pim_color_axis') { 8094 if (typeof this.autoSelectCompatibleOtherOption === 'function') { 8095 this.autoSelectCompatibleOtherOption(optionId); 8096 } 8097 } else if (attributeCode == 'incstores_pim_variant_axis' 8098 || attributeCode == 'product_option') { 8099 if (typeof this.autoSelectCompatibleColorOption === 'function') { 8100 this.autoSelectCompatibleColorOption(optionId); 8101 } 8102 } 8103 }, 300); 8104 } else { 8105 var fetchUrl = baseUrl+'customattribute/index/index/productId/'+productId; 8106 8107 fetch(fetchUrl) 8108 .then(response => response.json()) 8109 .then(data => { 8110 8111 if (document.getElementById('dimensions-attributes')) { 8112 document.getElementById('dimensions-attributes').innerHTML= data.detailsHtml.dimensionsHtml; 8113 } 8114 8115 if (document.getElementById('details-attributes')) { 8116 document.getElementById('details-attributes').innerHTML= data.detailsHtml.productDetails; 8117 } 8118 8119 if (document.getElementById('ship-to-text')) { 8120 document.getElementById('ship-to-text').value= data.shipToText; 8121 } 8122 8123 var addToCartButton = document.querySelector('.pdp-addtocart-btn'); 8124 if (addToCartButton) { 8125 addToCartButton.classList.remove('pointer-events-none'); 8126 addToCartButton.classList.remove('opacity-50'); 8127 } 8128 }) 8129 .catch(error => { 8130 console.log(error); 8131 }); 8132 } 8133 8134 } 8135 this.findSimpleIndex(); 8136 this.findAllowedAttributeOptions(); 8137 this.updateCalculatorType();// custom coding 8138 this.updateMinRollcut();// custom coding 8139 this.updateMaxRollLengthRestriction();// custom coding 8140 this.updateTileSizeArea(); // custom coding 8141 this.updateExactWidth(); // custom coding 8142 this.updateExactLength(); // custom coding 8143 this.updateExactHeight(); // custom coding 8144 this.updateCoveragePerCase(); // custom coding 8145 this.updateTileMinQty(); // custom coding 8146 this.updateShippingDetails(); // custom coding 8147 this.updatePrices(); 8148 this.updateSquareFootage(); 8149 8150 //If the page loads first time it will stop the gallery change, so configurable product image will display 8151 if (!this.isLoadedFirst) { 8152 this.updateGallery(); 8153 } 8154 8155 //====== For Custom Design link - fetch child product id when option clicked START ====== 8156 if(document.querySelector('input[name="selected_option_child_id"]')){ 8157 document.querySelector('input[name="selected_option_child_id"]').value = this.productIndex; 8158 } 8159 if(document.querySelector('input[name="custom_length"]') && document.getElementById('roll_length')){ 8160 document.querySelector('input[name="custom_length"]').value = document.getElementById('roll_length').value; 8161 } 8162 //====== For Custom Design link - fetch child product id when option clicked END ====== 8163 window.dispatchEvent( 8164 new CustomEvent( 8165 'configurable-selection-changed', 8166 { 8167 detail: { 8168 productId: this.productId, 8169 optionId: optionId, 8170 value: value, 8171 productIndex: this.productIndex, 8172 selectedValues: this.selectedValues, 8173 attributeCode: this.optionConfig.attributes[optionId]['code'], 8174 candidates: this.findProductIdsForPartialSelection(this.selectedValues), 8175 } 8176 } 8177 ) 8178 ); 8179 8180 /* =============================== disabled product option checking & remove START =============== */ 8181 if (!this.optionConfig?.ship_region_enabled 8182 && document.querySelector('.swatch-attribute .selectOptionColor') 8183 ) { 8184 var quickship_lebel_should_show; 8185 var quickship_active_color_option_exist = 0; 8186 setTimeout(() => { 8187 document.querySelectorAll('.swatch-attribute .selectOptionColor').forEach(function(option_box) { 8188 if (!option_box.querySelector('div, label')) { 8189 option_box.remove(); 8190 } 8191 }); 8192 8193 }, 300); 8194 } 8195 /* =============================== disabled product option checking & remove END =============== */ 8196 8197 /* ========== remove validation when click on available color start =============== */ 8198 if(document.querySelector('.normal_color_swatch_option .selectOptionColor') ){ 8199 setTimeout(() => { 8200 const colorBoxes = document.querySelectorAll( 8201 '.normal_color_swatch_option .selectOptionColor' 8202 ); 8203 var colorNotAvailable = 0; 8204 const colorerrorDiv = document.getElementById('normal-color-swatch-option-error-msg'); 8205
8206 colorBoxes.forEach((colorBox) => { 8207 if (colorBox.querySelector('.select_none label.checked')) { 8208 colorNotAvailable = 1; 8209 } 8210 }); 8211 if (!colorNotAvailable){ 8212 colorerrorDiv.textContent = ''; 8213 colorerrorDiv.style.display = 'none'; 8214 } 8215 8216 }, 300); 8217 } 8218 /* ========== remove validation when click on available color end =============== */ 8219 8220 /* =============================== color label show / hide if color option not showing END =============== */ 8221 8222 /* =============================== other label show / hide if the option not showing START =============== */ 8223 if (typeof this.syncOtherSwatchOptionVisibility === 'function') { 8224 this.syncOtherSwatchOptionVisibility(); 8225 } else { 8226 const swatchAttribute = document.querySelector('.swatch-attribute.other_swatch_option'); 8227 if (swatchAttribute) { 8228 setTimeout(() => { 8229 const selectOptionColors = swatchAttribute.querySelectorAll('.selectOptionColor'); 8230 if (selectOptionColors.length > 1) { 8231 swatchAttribute.style.display = 'block'; 8232 } else { 8233 swatchAttribute.style.display = 'none'; 8234 } 8235 }, 300); 8236 } 8237 } 8238 /* =============================== other label show / hide if the option not showing END =============== */ 8239 8240 }, 8241 calculateIsMinimalPrice() { 8242 return ( 8243 this.selectedValues.filter(value => !!value).length < 8244 Object.keys(this.optionConfig.attributes).length 8245 ); 8246 }, 8247 updatePrices() { 8248 const value = this.productIndex ? 8249 this.optionConfig.optionPrices[this.productIndex] : 8250 this.optionConfig.prices; 8251 8252 window.dispatchEvent( 8253 new CustomEvent( 8254 "update-prices-" + this.productId, 8255 { 8256 detail: Object.assign( 8257 value, 8258 { 8259 isMinimalPrice: this.calculateIsMinimalPrice(), 8260 calculatorType: this.optionConfig?.calculator_type?.[this.productIndex] ?? '', 8261 getIncstoresPimCoverage: this.optionConfig?.coverage_per_case?.[this.productIndex] ?? '', 8262 unitOfMeasure: this.optionConfig?.unit_of_measure?.[this.productIndex] ?? '', 8263 altUnitOfMeasure: this.optionConfig?.alt_unit_of_measure?.[this.productIndex] ?? 'sqft', 8264 availableQuantity: this.optionConfig?.available_quantity?.[this.productIndex] ?? '', 8265 } 8266 ) 8267 } 8268 ) 8269 ); 8270 setTimeout(() => { 8271 var calculatorType = this.optionConfig.calculator_type[this.productIndex]; 8272 var priceElement = document.querySelector('div.items-baseline .final-price .price'); 8273 8274 if (priceElement && calculatorType != 'none' && calculatorType != 'pre_cut_roll') { 8275 var customOptionPrice = priceElement.childNodes[0].nodeValue.trim(); 8276 let priceLabelElement = document.querySelector('.final-price .price-label'); 8277 var priceLabel = ""; 8278 8279 if (priceLabelElement) { 8280 priceLabel = priceLabelElement.textContent.trim(); 8281 } 8282 8283 document.querySelectorAll('.display-option-price').forEach(el => { 8284 el.textContent = "("+customOptionPrice+priceLabel+")"; 8285 }); 8286 } else if (calculatorType == 'none') { 8287 //None type 8288 var priceElement = document.querySelector('.none .final-price .price'); 8289 var customOptionPrice = ""; 8290 8291 if (priceElement) { 8292 customOptionPrice = priceElement.childNodes[0].nodeValue.trim(); 8293 } 8294 document.querySelectorAll('.display-option-price').forEach(el => { 8295 el.textContent = "("+customOptionPrice+")"; 8296 }); 8297 } else if (calculatorType == 'pre_cut_roll') { 8298 let priceLabelElement = document.querySelector('.final-price .price-label'); 8299 var priceLabel = ""; 8300 8301 if (priceLabelElement) { 8302 priceLabel = priceLabelElement.textContent.trim(); 8303 } 8304 var priceElement = document.querySelector('.pre_cut_roll .final-price .price'); 8305 var customOptionPrice = ""; 8306 8307 if (priceElement) { 8308 customOptionPrice = priceElement.childNodes[0].nodeValue.trim(); 8309 } 8310 document.querySelectorAll('.display-option-price').forEach(el => { 8311 el.textContent = "("+customOptionPrice+priceLabel+")"; 8312 }); 8313 } 8314 }, "500"); 8315 }, 8316 updateTileSizeArea() { 8317 const overage_percent = this.optionConfig.overage_percent[this.productIndex]; 8318 const coverage_per_case = this.optionConfig.coverage_per_case[this.productIndex]; 8319 const exact_width = this.optionConfig.exact_width[this.productIndex]; 8320 const exact_length = this.optionConfig.exact_length[this.productIndex]; 8321 window.dispatchEvent( 8322 new CustomEvent( 8323 "update-tile-size-area-" + this.productId, 8324 { 8325 detail: { 8326 overage_percent: overage_percent, 8327 coverage_per_case: coverage_per_case, 8328 exact_width: exact_width, 8329 exact_length: exact_length, 8330 calculator_type: this.optionConfig.calculator_type[this.productIndex], 8331 } 8332 } 8333 ) 8334 ); 8335 }, 8336 updateExactWidth() { 8337 const exact_width = this.optionConfig.exact_width[this.productIndex]; 8338 window.dispatchEvent( 8339 new CustomEvent( 8340 "update-exact-width-" + this.productId, 8341 {detail: exact_width} 8342 ) 8343 ); 8344 }, 8345 updateExactLength() { 8346 const exact_length = this.optionConfig.exact_length[this.productIndex]; 8347 window.dispatchEvent( 8348 new CustomEvent(
8349 "update-exact-length-" + this.productId, 8350 {detail: exact_length} 8351 ) 8352 ); 8353 }, 8354 updateExactHeight() { 8355 const exact_height = this.optionConfig.exact_height[this.productIndex]; 8356 window.dispatchEvent( 8357 new CustomEvent( 8358 "update-exact-height-" + this.productId, 8359 {detail: exact_height} 8360 ) 8361 ); 8362 }, 8363 updateCoveragePerCase() { 8364 const coverage_per_case = this.optionConfig.coverage_per_case[this.productIndex]; 8365 //const tile_size_area = ""; 8366 window.dispatchEvent( 8367 new CustomEvent( 8368 "update-coverage-per-case-" + this.productId, 8369 {detail: coverage_per_case} 8370 ) 8371 ); 8372 }, 8373 updateTileMinQty() { 8374 const min_tile_quantity = this.optionConfig.min_tile_quantity[this.productIndex]; 8375 window.dispatchEvent( 8376 new CustomEvent( 8377 "update-min-tile-quantity-" + this.productId, 8378 {detail: min_tile_quantity} 8379 ) 8380 ); 8381 }, 8382 getAttributeIdByCode(attributeCode) { 8383 let attributes = this.optionConfig.attributes; 8384 8385 for (let id in attributes) { 8386 if (attributes[id].code === attributeCode) { 8387 return id; 8388 } 8389 } 8390 8391 return null; 8392 }, 8393 updateCalculatorType() { 8394 const has_corner_border_center = this.optionConfig.has_corner_border_center[this.productIndex]; 8395 const calculator_type = this.optionConfig.calculator_type[this.productIndex]; 8396 if(calculator_type == 'sqft' && has_corner_border_center !=1){ 8397 var cbcelements = document.querySelectorAll('.cbc'); 8398 cbcelements.forEach(function(element) { 8399 element.style.display = 'none'; 8400 }); 8401 var noneelements = document.querySelectorAll('.none'); 8402 noneelements.forEach(function(element) { 8403 element.style.display = 'none'; 8404 }); 8405 var rollelements = document.querySelectorAll('.roll'); 8406 rollelements.forEach(function(element) { 8407 element.style.display = 'none'; 8408 }); 8409 var cbcelements = document.querySelectorAll('.case'); 8410 cbcelements.forEach(function(element) { 8411 element.style.display = 'none'; 8412 }); 8413 var elements = document.querySelectorAll('.sqft'); 8414 elements.forEach(function(element) { 8415 element.style.display = 'block'; 8416 }); 8417 8418 var elements = document.querySelectorAll('.pre_cut_roll'); 8419 elements.forEach(function(element) { 8420 element.style.display = 'none'; 8421 }); 8422 const button = document.getElementById("product-addtocart-button-fake"); 8423 if (button && button.getAttribute("data-flooring-handler") !== "addToCartClickVerify") { 8424 button.setAttribute("data-flooring-handler", "addToCartClickVerify"); 8425 } 8426 } else if(calculator_type == 'sqft' && has_corner_border_center ==1){ 8427 var sqftelements = document.querySelectorAll('.sqft'); 8428 sqftelements.forEach(function(element) { 8429 element.style.display = 'none'; 8430 }); 8431 var caseelements = document.querySelectorAll('.case'); 8432 caseelements.forEach(function(element) { 8433 element.style.display = 'none'; 8434 }); 8435 var rollelements = document.querySelectorAll('.roll');
8436 rollelements.forEach(function(element) { 8437 element.style.display = 'none'; 8438 }); 8439 var noneelements = document.querySelectorAll('.none'); 8440 noneelements.forEach(function(element) { 8441 element.style.display = 'none'; 8442 }); 8443 var elements = document.querySelectorAll('.cbc'); 8444 elements.forEach(function(element) { 8445 element.style.display = 'block'; 8446 }); 8447 var elements = document.querySelectorAll('.price-details .sqft'); 8448 elements.forEach(function(element) { 8449 element.style.display = 'none'; 8450 }); 8451 8452 var elements = document.querySelectorAll('.pre_cut_roll'); 8453 elements.forEach(function(element) { 8454 element.style.display = 'none'; 8455 }); 8456 const button = document.getElementById("product-addtocart-button-fake"); 8457 if (button && button.getAttribute("data-flooring-handler") !== "addToCartClickVerify") { 8458 button.setAttribute("data-flooring-handler", "addToCartClickVerify"); 8459 } 8460 }else if(calculator_type == 'case'){ 8461 var sqftelements = document.querySelectorAll('.sqft'); 8462 sqftelements.forEach(function(element) { 8463 element.style.display = 'none'; 8464 }); 8465 var cbcelements = document.querySelectorAll('.cbc'); 8466 cbcelements.forEach(function(element) { 8467 element.style.display = 'none'; 8468 }); 8469 var noneelements = document.querySelectorAll('.none'); 8470 noneelements.forEach(function(element) { 8471 element.style.display = 'none'; 8472 }); 8473 var rollelements = document.querySelectorAll('.roll'); 8474 rollelements.forEach(function(element) { 8475 element.style.display = 'none'; 8476 }); 8477 var elements = document.querySelectorAll('.case'); 8478 elements.forEach(function(element) { 8479 element.style.display = 'block'; 8480 }); 8481 8482 var elements = document.querySelectorAll('.pre_cut_roll'); 8483 elements.forEach(function(element) { 8484 element.style.display = 'none'; 8485 }); 8486 const button = document.getElementById("product-addtocart-button-fake"); 8487 if (button && button.getAttribute("data-flooring-handler") !== "addToCartClickVerify") { 8488 button.setAttribute("data-flooring-handler", "addToCartClickVerify"); 8489 } 8490 } else if(calculator_type == 'roll'){ 8491 var sqftelements = document.querySelectorAll('.sqft'); 8492 sqftelements.forEach(function(element) { 8493 element.style.display = 'none'; 8494 }); 8495 var cbcelements = document.querySelectorAll('.cbc'); 8496 cbcelements.forEach(function(element) { 8497 element.style.display = 'none'; 8498 }); 8499 var caseelements = document.querySelectorAll('.case'); 8500 caseelements.forEach(function(element) { 8501 element.style.display = 'none'; 8502 }); 8503 var noneelements = document.querySelectorAll('.none'); 8504 noneelements.forEach(function(element) { 8505 element.style.display = 'none'; 8506 }); 8507 var elements = document.querySelectorAll('.roll'); 8508 elements.forEach(function(element) { 8509 element.style.display = 'block'; 8510 }); 8511 const button = document.getElementById("product-addtocart-button-fake"); 8512 if (button && button.getAttribute("data-flooring-handler") !== "addToCartClickVerify") { 8513 button.setAttribute("data-flooring-handler", "addToCartClickVerify"); 8514 } 8515 8516 var elements = document.querySelectorAll('.pre_cut_roll');
8517 elements.forEach(function(element) { 8518 element.style.display = 'none'; 8519 }); 8520 } else if(calculator_type == 'pre_cut_roll'){ 8521 var sqftelements = document.querySelectorAll('.sqft'); 8522 sqftelements.forEach(function(element) { 8523 element.style.display = 'none'; 8524 }); 8525 var cbcelements = document.querySelectorAll('.cbc'); 8526 cbcelements.forEach(function(element) { 8527 element.style.display = 'none'; 8528 }); 8529 var caseelements = document.querySelectorAll('.case'); 8530 caseelements.forEach(function(element) { 8531 element.style.display = 'none'; 8532 }); 8533 var noneelements = document.querySelectorAll('.none'); 8534 noneelements.forEach(function(element) { 8535 element.style.display = 'none'; 8536 }); 8537 var elements = document.querySelectorAll('.roll'); 8538 elements.forEach(function(element) { 8539 element.style.display = 'none'; 8540 }); 8541 var elements = document.querySelectorAll('.pre_cut_roll'); 8542 elements.forEach(function(element) { 8543 element.style.display = 'block'; 8544 }); 8545 const button = document.getElementById("product-addtocart-button-fake"); 8546 if (button && button.getAttribute("data-flooring-handler") !== "addToCartClickforPreCutRoll") { 8547 button.setAttribute("data-flooring-handler", "addToCartClickforPreCutRoll"); 8548 } 8549 } else { 8550 var sqftelements = document.querySelectorAll('.sqft'); 8551 sqftelements.forEach(function(element) { 8552 element.style.display = 'none'; 8553 }); 8554 var cbcelements = document.querySelectorAll('.cbc'); 8555 cbcelements.forEach(function(element) { 8556 element.style.display = 'none'; 8557 }); 8558 var caseelements = document.querySelectorAll('.case'); 8559 caseelements.forEach(function(element) { 8560 element.style.display = 'none'; 8561 }); 8562 var rollelements = document.querySelectorAll('.roll'); 8563 rollelements.forEach(function(element) { 8564 element.style.display = 'none'; 8565 }); 8566 var cbcelements = document.querySelectorAll('.case'); 8567 cbcelements.forEach(function(element) { 8568 element.style.display = 'none'; 8569 }); 8570 var elements = document.querySelectorAll('.none'); 8571 elements.forEach(function(element) { 8572 element.style.display = 'block'; 8573 }); 8574 const noneButton = document.getElementById("product-addtocart-button-fake"); 8575 if (noneButton && noneButton.getAttribute("data-flooring-handler") !== "addToCartClickforNone") { 8576 noneButton.setAttribute("data-flooring-handler", "addToCartClickforNone"); 8577 } 8578 8579 var elements = document.querySelectorAll('.pre_cut_roll'); 8580 elements.forEach(function(element) { 8581 element.style.display = 'none'; 8582 }); 8583 } 8584 }, 8585 updateMinRollcut() { 8586 const min_rollcut = this.optionConfig.min_rollcut[this.productIndex]; 8587 var exactlength = ''; 8588 window.dispatchEvent( 8589 new CustomEvent( 8590 "update-min-rollcut-" + this.productId, 8591 {detail: min_rollcut} 8592 ) 8593 ); 8594 }, 8595 8596 updateMaxRollLengthRestriction() { 8597 const max_roll_length_restriction = this.optionConfig.max_roll_length_restriction[this.productIndex]; 8598 const exact_width = this.optionConfig.exact_width[this.productIndex]; 8599 const exact_length = this.optionConfig.exact_length[this.productIndex]; 8600 const min_rollcut = this.optionConfig.min_rollcut[this.productIndex]; 8601 8602 window.dispatchEvent( 8603 new CustomEvent( 8604 "update-max-roll-length-restriction-" + this.productId, 8605 { 8606 detail: { 8607 max_roll_length_restriction: max_roll_length_restriction, 8608 min_rollcut: min_rollcut, 8609 exact_width: exact_width, 8610 exact_length: exact_length, 8611 } 8612 } 8613 ) 8614 ); 8615 }, 8616 updateShippingDetails() { 8617 const pdp_shipping_text = this.optionConfig.pdp_shipping_text[this.productIndex]; 8618 const expected_days_ship = this.optionConfig.expected_days_ship[this.productIndex]; 8619 window.dispatchEvent( 8620 new CustomEvent( 8621 "update-shipping-details-" + this.productId, 8622 { 8623 detail: { 8624 pdp_shipping_text: pdp_shipping_text, 8625 expected_days_ship: expected_days_ship, 8626 } 8627 } 8628 ) 8629 ); 8630 }, 8631 updateGallery () { 8632 if (this.isLoadedFirst && this.ssrGalleryChildId > 0) { 8633 return; 8634 } 8635 8636 if (this.productIndex) { 8637 const images = this.optionConfig.images[this.productIndex]; 8638 images && window.dispatchEvent(new CustomEvent( 8639 "update-gallery", 8640 { detail: this.sortImagesByPosition(images) } 8641 )); 8642 } else { 8643 window.dispatchEvent(new Event("reset-gallery")); 8644 } 8645 }, 8646 updateSquareFootage () { 8647 let squareFootageElement = document.getElementsByName('square_footage'); 8648 8649 if (squareFootageElement.length > 0) { 8650 var squareFootage = squareFootageElement[0].value; 8651 8652 if (squareFootage) { 8653 // Trigger the 'keyup' event 8654 var event = new KeyboardEvent('keyup', { 8655 'key': 'Enter', // You can set this to any key, like 'Enter' 8656 'bubbles': true, 8657 'cancelable': true 8658 }); 8659 8660 squareFootageElement[0].dispatchEvent(event); 8661 } 8662 } 8663 }, 8664 sortImagesByPosition(images) { 8665 return images.sort((x, y) => { 8666 return x.position === y.position ? 0 : (parseInt(x.position) > parseInt(y.position) ? 1 : -1) 8667 }); 8668 }, 8669 onGetCartData(data) { 8670 this.preselectCartItems(data); 8671 this.preselectQuerystringItems(); 8672 this.preselectLocationHashItems(); 8673 }, 8674 preselectCartItems(data) { 8675 // pre-select options based on cart data for current (quote) itemId 8676 const cart = data && data.cart; 8677 if (cart && cart.items) { 8678 const cartItem = cart.items.find((item) => { 8679 return ( 8680 item.item_id === this.itemId 8681 && item.product_id === this.productId 8682 ) 8683 }); 8684 if (cartItem && cartItem.options && cartItem.options.length) { 8685 cartItem.options.map(option => { 8686 this.changeOption(option.option_id, option.option_value); 8687 }) 8688 } 8689 } 8690 }, 8691 preselectQuerystringItems() { 8692 // pre-select option like ?size=167 8693 const urlQueryParams = new URLSearchParams(window.location.search.replace('?','')); 8694 Object.values(this.optionConfig.attributes).map(attribute => { 8695 urlQueryParams.get(attribute.code) && 8696 this.changeOption(attribute.id, urlQueryParams.get(attribute.code)); 8697 }); 8698 }, 8699 preselectLocationHashItems() { 8700 // pre-select option like #144=167 8701 const urlHashParams = new URLSearchParams(window.location.hash.replace('#','')); 8702 Object.values(this.optionConfig.attributes).map(attribute => { 8703 urlHashParams.get(attribute.id) && 8704 this.changeOption(attribute.id, urlHashParams.get(attribute.id)); 8705 }); 8706 } 8707 } 8708 } 8709 8710 function isOptionVisible(element) { 8711 const computedStyle = window.getComputedStyle(element); 8712 return computedStyle.display !== 'none' && computedStyle.visibility !== 'hidden'; 8713 } 8714</script>
vendor: 1 bytes, line 8714
8714
8715<script> 8716 function initCompareOnProductList() { 8717 return { 8718 addToCompare(productId) { 8719 const formKey = hyva.getFormKey(); 8720 const postUrl = BASE_URL + 'catalog/product_compare/add/'; 8721 8722 fetch(postUrl, { 8723 "headers": { 8724 "content-type": "application/x-www-form-urlencoded; charset=UTF-8", 8725 }, 8726 "body": "form_key=" + formKey + "&product=" + productId + "&uenc=" + hyva.getUenc(), 8727 "method": "POST", 8728 "mode": "cors", 8729 "credentials": "include" 8730 }).then(function (response) { 8731 if (response.redirected) { 8732 window.location.href = response.url; 8733 } 8734 }).catch(function (error) { 8735 typeof window.dispatchMessages !== "undefined" && window.dispatchMessages( 8736 [{ 8737 type: "error", 8738 text: error 8739 }], 5000 8740 ); 8741 }); 8742 } 8743 }; 8744 } 8745</script>
vendor: 1 bytes, line 8745
8745
8746<script> 8747 function initWishlist() { 8748 return { 8749 addToWishlist(productId) { 8750 const formKey = hyva.getFormKey(); 8751 const postUrl = BASE_URL + 'wishlist/index/add/'; 8752 8753 fetch(postUrl, { 8754 "headers": { 8755 "content-type": "application/x-www-form-urlencoded; charset=UTF-8", 8756 }, 8757 "body": "form_key=" + formKey + "&product=" + productId + "&uenc=" + hyva.getUenc(), 8758 "method": "POST", 8759 "mode": "cors", 8760 "credentials": "include" 8761 }).then(function (response) { 8762 if (response.redirected) { 8763 window.location.href = response.url; 8764 } else if (response.ok) { 8765 return response.json(); 8766 } else { 8767 typeof window.dispatchMessages !== "undefined" && window.dispatchMessages( 8768 [{ 8769 type: "warning", 8770 text: "Could not add item to wishlist." 8771 }], 5000 8772 ); 8773 } 8774 }).then(function (response) { 8775 if (!response) { return } 8776 typeof window.dispatchMessages !== "undefined" && window.dispatchMessages( 8777 [{ 8778 type: (response.success) ? "success" : "error", 8779 text: (response.success) 8780 ? "Product has been added to your Wish List." 8781 : response.error_message 8782 }], 5000 8783 ); 8784 const reloadCustomerDataEvent = new CustomEvent("reload-customer-section-data"); 8785 window.dispatchEvent(reloadCustomerDataEvent); 8786 }).catch(function (error) { 8787 typeof window.dispatchMessages !== "undefined" && window.dispatchMessages( 8788 [{ 8789 type: "error", 8790 text: error 8791 }], 5000 8792 ); 8793 }); 8794 } 8795 } 8796 } 8797</script>
vendor: 1 bytes, line 8797
8797
8798<script> 8799 function initSwatchOptions(swatchConfig, swatchLabelValues = null) { 8800 const normalizedSwatchLabelValues = ( 8801 swatchLabelValues 8802 && typeof swatchLabelValues === 'object' 8803 && !Array.isArray(swatchLabelValues) 8804 ) ? swatchLabelValues : {}; 8805 8806 return { 8807 swatchConfig, 8808 swatchLabelValues: normalizedSwatchLabelValues, 8809 resolveSwatchLabel(attributeId, optionId) { 8810 if (optionId === undefined || optionId === null || optionId === '') { 8811 return ''; 8812 } 8813 8814 const optionKey = String(optionId); 8815 const labels = ( 8816 this.swatchLabelValues 8817 && typeof this.swatchLabelValues === 'object' 8818 && !Array.isArray(this.swatchLabelValues) 8819 ) ? this.swatchLabelValues : {}; 8820 const flatLabel = labels[optionKey] ?? labels[optionId]; 8821 if (flatLabel !== undefined && flatLabel !== null && flatLabel !== '') { 8822 return String(flatLabel); 8823 } 8824 8825 const attrConfig = this.swatchConfig?.[attributeId] ?? this.swatchConfig?.[String(attributeId)]; 8826 const attrLabels = attrConfig?.swatchLabelValues; 8827 if (attrLabels) { 8828 const attrLabel = attrLabels[optionKey] ?? attrLabels[optionId]; 8829 if (attrLabel !== undefined && attrLabel !== null && attrLabel !== '') { 8830 return String(attrLabel); 8831 } 8832 } 8833 8834 const swatchOption = attrConfig?.[optionKey] ?? attrConfig?.[optionId]; 8835 if (swatchOption?.label) { 8836 return String(swatchOption.label); 8837 } 8838 8839 return this.getOptionLabelFromOptionConfig(attributeId, optionId) || ''; 8840 }, 8841 getAttributeSwatchData(attributeId) { 8842 const attributeKey = String(attributeId); 8843 const rawConfig = this.swatchConfig?.[attributeId] ?? this.swatchConfig?.[attributeKey]; 8844 const labels = ( 8845 this.swatchLabelValues 8846 && typeof this.swatchLabelValues === 'object' 8847 && !Array.isArray(this.swatchLabelValues) 8848 ) ? this.swatchLabelValues : {}; 8849 if (!rawConfig) { 8850 return {details: {}, swatchLabelValues: labels}; 8851 } 8852 const swatchConfig = Object.assign({}, rawConfig); 8853 if (swatchConfig['additional_data']) { 8854 try { 8855 swatchConfig['details'] = JSON.parse(swatchConfig['additional_data']); 8856 } catch (error) { 8857 swatchConfig['details'] = {}; 8858 } 8859 } else { 8860 swatchConfig['details'] = swatchConfig['details'] ?? {}; 8861 } 8862 swatchConfig['swatchLabelValues'] = labels; 8863 8864 return swatchConfig; 8865 }, 8866 getAllAttributeOptions(attributeId) { 8867 return ( 8868 this.optionConfig.attributes[attributeId] && 8869 this.optionConfig.attributes[attributeId].options 8870 ) || [] 8871 }, 8872 optionIsActive(attributeId, optionId) { 8873 const optionKey = String(optionId); 8874 return !!this.getAllowedAttributeOptions(attributeId).find( 8875 option => String(option.id) === optionKey 8876 ); 8877 }, 8878 optionIsEnabled(attributeId, optionId) { 8879 const attributeKey = String(attributeId); 8880 const optionKey = String(optionId); 8881 const index = this.optionConfig?.index || {}; 8882 for (const productId in index) { 8883 const productOptions = index[productId] || {}; 8884 if ( 8885 String(productOptions[attributeKey]) === optionKey 8886 || String(productOptions[attributeId]) === optionKey 8887 ) { 8888 return true; 8889 } 8890 } 8891 const attributeOptions = ( 8892 this.optionConfig?.attributes?.[attributeId]?.options 8893 || this.optionConfig?.attributes?.[attributeKey]?.options 8894 || [] 8895 ); 8896 const match = attributeOptions.find((option) => String(option.id) === optionKey); 8897 if (!match?.products?.length) { 8898 return false;
8899 } 8900 return match.products.some((childId) => { 8901 const key = String(childId); 8902 return Object.prototype.hasOwnProperty.call(index, key) 8903 || Object.prototype.hasOwnProperty.call(index, childId); 8904 }); 8905 }, 8906 mapSwatchTypeNumberToTypeCode(typeNumber) { 8907 switch ("" + typeNumber) { 8908 case "1": 8909 return "color" 8910 case "2": 8911 return "image" 8912 case "3": 8913 return "empty" 8914 case "0": 8915 default: 8916 return "text" 8917 } 8918 }, 8919 getTypeOfFirstOption(attributeId) { 8920 for (const optionId in this.swatchConfig[attributeId]) { 8921 const option = this.swatchConfig[attributeId][optionId]; 8922 if (typeof option.type !== 'undefined') { 8923 return this.mapSwatchTypeNumberToTypeCode(option.type); 8924 } 8925 } 8926 }, 8927 getVisualSwatchType(attributeId, targetOptionId) { 8928 // If a type configuration is present for the given option id, use it 8929 const config = this.swatchConfig[attributeId]; 8930 if (config[targetOptionId] && typeof config[targetOptionId].type !== 'undefined') { 8931 return this.mapSwatchTypeNumberToTypeCode(config[targetOptionId].type); 8932 } 8933 8934 // Otherwise - if no config is present for the target option - use the type of the first option 8935 // with a type property from the attribute, thus assuming its the same type as the target option. 8936 // (This edge case condition can occur on single swatch products if some options are not salable) 8937 return this.getTypeOfFirstOption(attributeId); 8938 }, 8939 getSwatchType(attributeId, optionId) { 8940 // Deserialize the attribute details the first time they are used 8941 if (this.swatchConfig[attributeId] && ! this.swatchConfig[attributeId].details) { 8942 this.swatchConfig[attributeId] = this.getAttributeSwatchData(attributeId); 8943 } 8944 const type = this.swatchConfig[attributeId] && 8945 this.swatchConfig[attributeId].details && 8946 this.swatchConfig[attributeId].details.swatch_input_type || 8947 "empty"; 8948 return type === 'visual' ? this.getVisualSwatchType(attributeId, optionId) : type; 8949 }, 8950 isTextSwatch(attributeId, optionId) { 8951 return this.getSwatchType(attributeId, optionId) === 'text'; 8952 }, 8953 isVisualSwatch(attributeId, optionId) { 8954 const type = this.getSwatchType(attributeId, optionId); 8955 8956 return ['image', 'color'].includes(type); 8957 }, 8958 getSwatchBackgroundStyle(attributeId, optionId) { 8959 const config = this.getSwatchConfig(attributeId, optionId); 8960 const type = this.getSwatchType(attributeId, optionId); 8961 8962 if (type === "color") { 8963 return 'background-color:' + config.value; 8964 } else if (type === "image") { 8965 return "background: #ffffff url('" + config.value + "') no-repeat center"; 8966 } else { 8967 return ''; 8968 } 8969 }, 8970 getSwatchText(attributeId, optionId) { 8971 return this.resolveSwatchLabel(attributeId, optionId); 8972 }, 8973 getLegacyColorSwatchImageHtml(attributeId, optionId) { 8974 const map = this._legacyColorSwatchImages || {}; 8975 return this.getSwatchTextUrl(attributeId, optionId, map); 8976 }, 8977 getSwatchTextUrl(attributeId, optionId, childSwatch) { 8978 const config = this.getSwatchConfig(attributeId, optionId); 8979 const optionKey = String(optionId); 8980 const swatchMap = ( 8981 childSwatch 8982 && typeof childSwatch === 'object' 8983 && !Array.isArray(childSwatch) 8984 ) ? childSwatch : {}; 8985 const swatchUrl = swatchMap[optionKey] ?? swatchMap[optionId]; 8986 if(swatchUrl != "" && swatchUrl != null && isValidURL(swatchUrl)){ 8987 return "<img loading='lazy' src="+swatchUrl+" title="+swatchUrl+" alt="+swatchUrl+"/>"; 8988 } else if(config && config.value!="" && config.value!= null && isValidURL(config.value)){ 8989 return "<img loading='lazy' src="+config.value+" title="+config.value+" alt="+config.value+"/>"; 8990 } else { 8991 var placeHoldernew = BASE_URL+'media/catalog/product/placeholder/default/swatch_placeholder.png'; 8992 8993 return "<img width= '60px' height='60px' src="+placeHoldernew+" title="+placeHoldernew+" alt="+placeHoldernew+"/>"; 8994 } 8995 }, 8996 getOptionLabelFromOptionConfig(attributeId, optionId) { 8997 const optionKey = String(optionId); 8998 const option = this.getAllAttributeOptions(attributeId).find( 8999 (entry) => String(entry.id) === optionKey 9000 ); 9001 return option?.label || ''; 9002 }, 9003 getSwatchConfig(attributeId, optionId) { 9004 const attrConfig = this.swatchConfig[attributeId] ?? this.swatchConfig[String(attributeId)]; 9005 if (!attrConfig) { 9006 return false;
9007 } 9008 return attrConfig[optionId] ?? attrConfig[String(optionId)] ?? false; 9009 }, 9010 activeTooltipItem: false, 9011 tooltipPositionElement: false, 9012 isTooltipVisible() { 9013 return this.activeTooltipItem && 9014 this.getSwatchConfig( 9015 this.activeTooltipItem.attribute, 9016 this.activeTooltipItem.item 9017 ); 9018 }, 9019 getTooltipImageStyle(attributeId, optionId) { 9020 const config = this.getSwatchConfig(attributeId, optionId); 9021 const type = this.getSwatchType(attributeId, optionId); 9022 9023 if (type === "color") { 9024 return 'background-color:' + config.value + '; width: 110px; height: 90px;'; 9025 } else if (type === "image") { 9026 return "background: #ffffff url('" + config.thumb + 9027 "') center center no-repeat; width: 110px; height: 90px;"; 9028 } else { 9029 return 'display:none'; 9030 } 9031 }, 9032 getTooltipPosition() { 9033 if (!this.tooltipPositionElement) { 9034 return ''; 9035 } 9036 const rect = this.tooltipPositionElement.getBoundingClientRect(); 9037 const elementWidth = rect.width; 9038 const elementHeight = rect.height; 9039 const container = document.querySelector('.swatch___render'); 9040 if (!container) { 9041 return ''; 9042 } 9043 const containerRect = container.getBoundingClientRect(); 9044 const topPosition = rect.top - containerRect.top + 10; 9045 const leftPosition = rect.left - containerRect.left; 9046 9047 return ` 9048 top: ${topPosition}px; 9049 left: ${leftPosition}px; 9050 `; 9051 }, 9052 getSwatchConfigLabel(attributeId, optionId) { 9053 const label = this.resolveSwatchLabel(attributeId, optionId); 9054 return label !== '' ? label : false; 9055 }, 9056 getTooltipLabel() { 9057 return this.getSwatchConfigLabel(this.activeTooltipItem.attribute, this.activeTooltipItem.item); 9058 //return this.getSwatchConfig(this.activeTooltipItem.attribute, this.activeTooltipItem.item).label 9059 }, 9060 focusedLabel: false, 9061 focusLabel(optionId) { 9062 this.focusedLabel = optionId; 9063 }, 9064 blurLabel() { 9065 this.focusedLabel = false; 9066 }, 9067 showSwatches: true, 9068 initShowSwatchesIntersect() { 9069 this.showSwatches = true; 9070 }, 9071 9072 quickShipValidation(attributeCode, attributeId, optionId){ 9073 if (optionId === undefined || optionId === null || optionId === '') { 9074 return 0; 9075 } 9076 var is_quick_ship_color = 0; 9077 var optionConfigObj = this.optionConfig; 9078 if (!optionConfigObj || typeof optionConfigObj !== 'object') { 9079 return 0; 9080 } 9081 if(attributeCode == 'incstores_pim_color_axis'){ 9082 var attributes = optionConfigObj.attributes; 9083 if (!attributes || !attributes[attributeId] || !attributes[attributeId]['options']) { 9084 return 0; 9085 } 9086 var quickShipColorIds = optionConfigObj.quick_ship_color_ids || []; 9087 if (quickShipColorIds.length) { 9088 return quickShipColorIds.some(function (id) { 9089 return String(id) === String(optionId); 9090 }) ? 1 : 0; 9091 } 9092 var quickShipMap = optionConfigObj.quick_ship; 9093 if (!quickShipMap) { 9094 return 0; 9095 } 9096 var attributes_options = attributes[attributeId]['options']; 9097 9098 attributes_options.forEach(function(option_details) { 9099 if(option_details['id'] == optionId){ 9100 option_details['products'].forEach(function(child_product_id) { 9101 if(quickShipMap[String(child_product_id)] == 1 || quickShipMap[child_product_id] == 1){ 9102 is_quick_ship_color = 1; 9103 return false;
9104 } 9105 }); 9106 } 9107 }); 9108 } 9109 return is_quick_ship_color; 9110 }, 9111 9112 hasQuickShipColorOptions(attributeCode, attributeId) { 9113 if (!this.optionConfig?.attributes?.[attributeId]?.options?.length) { 9114 return false; 9115 } 9116 if (this.selectedValues) { 9117 Object.keys(this.selectedValues).forEach(function (key) { 9118 void this.selectedValues[key]; 9119 }.bind(this)); 9120 } 9121 var colorIds = this.optionConfig.quick_ship_color_ids || []; 9122 var options = this.optionConfig.attributes[attributeId].options; 9123 for (var i = 0; i < options.length; i++) { 9124 var optionId = options[i].id; 9125 var isQuick = colorIds.length 9126 ? colorIds.some(function (id) { return String(id) === String(optionId); }) 9127 : (this.quickShipValidation(attributeCode, attributeId, optionId) === 1); 9128 if (!isQuick) { 9129 continue; 9130 } 9131 if (!this.optionIsEnabled(attributeId, optionId)) { 9132 continue; 9133 } 9134 if (!this.optionIsActive(attributeId, optionId)) { 9135 continue; 9136 } 9137 return true; 9138 } 9139 return false; 9140 }, 9141 9142 hasNormalColorOptions(attributeCode, attributeId) { 9143 if (!this.optionConfig?.attributes?.[attributeId]?.options?.length) { 9144 return false; 9145 } 9146 if (this.shipRegionZipActive && this.customerRegionCode) { 9147 return false; 9148 } 9149 var colorIds = this.optionConfig.quick_ship_color_ids || []; 9150 var options = this.optionConfig.attributes[attributeId].options; 9151 for (var i = 0; i < options.length; i++) { 9152 var optionId = options[i].id; 9153 var isQuick = colorIds.length 9154 ? colorIds.some(function (id) { return String(id) === String(optionId); }) 9155 : (this.quickShipValidation(attributeCode, attributeId, optionId) === 1); 9156 if (!isQuick) { 9157 if (!this.optionIsEnabled(attributeId, optionId)) { 9158 continue; 9159 } 9160 if (!this.optionIsActive(attributeId, optionId)) { 9161 continue; 9162 } 9163 return true; 9164 } 9165 } 9166 return false; 9167 }, 9168 9169 shouldShowQuickShipSection(attributeCode, attributeId) { 9170 if (this.shipRegionZipActive && this.customerRegionCode) { 9171 return false; 9172 } 9173 return this.hasQuickShipColorOptions(attributeCode, attributeId); 9174 }, 9175 9176 getOtherSwatchAttributeId(section = null) { 9177 const target = section || document.querySelector('.swatch-attribute.other_swatch_option'); 9178 if (!target || !this.optionConfig?.attributes) { 9179 return null; 9180 } 9181 for (const key in this.optionConfig.attributes) { 9182 const code = this.optionConfig.attributes[key]?.code;
9183 if (code && code !== 'incstores_pim_color_axis' && target.classList.contains(code)) { 9184 return parseInt(key, 10); 9185 } 9186 } 9187 for (const key in this.optionConfig.attributes) { 9188 const code = this.optionConfig.attributes[key]?.code; 9189 if (code && code !== 'incstores_pim_color_axis') { 9190 return parseInt(key, 10); 9191 } 9192 } 9193 return null; 9194 }, 9195 9196 /** 9197 * Count salable/enabled options only. Disabled Magento variants stay out of the UI. 9198 * Hide "Select An Option" when fewer than two enabled options remain. 9199 */ 9200 countEnabledOtherSwatchOptions(attrId) { 9201 if (!attrId) { 9202 return 0; 9203 } 9204 const options = this.optionConfig?.attributes?.[attrId]?.options || []; 9205 return options.filter((option) => this.optionIsEnabled(attrId, option.id)).length; 9206 }, 9207 9208 countVisibleOtherSwatchOptions() { 9209 return this.countEnabledOtherSwatchOptions(this.getOtherSwatchAttributeId()); 9210 }, 9211 9212 syncOtherSwatchOptionVisibility() { 9213 const sections = document.querySelectorAll('.swatch-attribute.other_swatch_option'); 9214 if (!sections.length) { 9215 return; 9216 } 9217 const self = this; 9218 const applyVisibility = () => { 9219 sections.forEach((variantSection) => { 9220 const attrId = self.getOtherSwatchAttributeId(variantSection); 9221 if (!attrId) { 9222 return; 9223 } 9224 const optionCount = self.countEnabledOtherSwatchOptions(attrId); 9225 const shouldShow = optionCount > 1; 9226 variantSection.classList.toggle('dcw-single-option-hidden', !shouldShow); 9227 // Theme CSS defaults other_swatch_option to display:none â force block/none. 9228 variantSection.style.setProperty( 9229 'display', 9230 shouldShow ? 'block' : 'none', 9231 'important' 9232 ); 9233 if (!shouldShow && optionCount === 1) { 9234 const options = self.optionConfig?.attributes?.[attrId]?.options || []; 9235 const enabledOption = options.find((option) => self.optionIsEnabled(attrId, option.id)); 9236 const optionId = enabledOption?.id; 9237 if (optionId !== undefined 9238 && String(self.selectedValues[attrId]) !== String(optionId) 9239 && typeof self.changeOption === 'function') { 9240 self.changeOption(attrId, optionId); 9241 } 9242 } 9243 }); 9244 }; 9245 applyVisibility(); 9246 window.setTimeout(applyVisibility, 300); 9247 }, 9248 9249 /** 9250 * After color selection only (including disabled colors): if current variant/option 9251 * is incompatible, auto-select the cheapest compatible one. Never run on variant clicks.
9252 */ 9253 autoSelectCompatibleOtherOption(colorAttrId) { 9254 if (!colorAttrId || !this.optionConfig?.attributes) { 9255 return; 9256 } 9257 const selectedColor = this.selectedValues[colorAttrId]; 9258 if (!selectedColor) { 9259 return; 9260 } 9261 9262 let otherAttrId = null; 9263 if (typeof this.getAttributeIdByCode === 'function') { 9264 otherAttrId = this.getAttributeIdByCode('incstores_pim_variant_axis') 9265 || this.getAttributeIdByCode('product_option'); 9266 } 9267 if (!otherAttrId) { 9268 const section = document.querySelector('.swatch-attribute.other_swatch_option'); 9269 otherAttrId = this.getOtherSwatchAttributeId(section); 9270 } 9271 if (!otherAttrId || !this.optionConfig.attributes[otherAttrId]) { 9272 return; 9273 } 9274 9275 const currentOther = this.selectedValues[otherAttrId]; 9276 const isCurrentCompatible = currentOther 9277 && typeof this.optionIsActive === 'function' 9278 && this.optionIsActive(otherAttrId, currentOther); 9279 9280 if (isCurrentCompatible) { 9281 return; 9282 } 9283 9284 const options = this.optionConfig.attributes[otherAttrId].options || []; 9285 let lowestPrice = null; 9286 let lowestOptionId = null; 9287 9288 options.forEach((option) => { 9289 if (typeof this.optionIsEnabled === 'function' 9290 && !this.optionIsEnabled(otherAttrId, option.id)) { 9291 return; 9292 } 9293 const productIds = option.products || []; 9294 productIds.forEach((productId) => { 9295 const product = this.optionConfig.index[productId] 9296 || this.optionConfig.index[String(productId)]; 9297 if (!product || String(product[colorAttrId]) !== String(selectedColor)) { 9298 return; 9299 } 9300 const priceData = this.optionConfig.optionPrices[productId] 9301 || this.optionConfig.optionPrices[String(productId)]; 9302 if (!priceData) { 9303 return; 9304 } 9305 const price = priceData.finalPrice.amount; 9306 if (lowestPrice === null || price < lowestPrice) { 9307 lowestPrice = price; 9308 lowestOptionId = option.id; 9309 } 9310 }); 9311 }); 9312 9313 if (lowestOptionId === null 9314 || String(this.selectedValues[otherAttrId]) === String(lowestOptionId)) { 9315 return; 9316 } 9317 9318 if (typeof this.changeOption === 'function') { 9319 this.changeOption(otherAttrId, lowestOptionId); 9320 return; 9321 } 9322 9323 const el = document.querySelector( 9324 'input[name="super_attribute[' + otherAttrId + ']"][value="' + lowestOptionId + '"]' 9325 ); 9326 if (el) { 9327 el.click(); 9328 } 9329 }, 9330 9331 /** 9332 * After variant / Select An Option change: if current color is unavailable, 9333 * auto-select the cheapest compatible color. Never run on color clicks. 9334 */ 9335 autoSelectCompatibleColorOption(otherAttrId) { 9336 if (!otherAttrId || !this.optionConfig?.attributes) { 9337 return; 9338 } 9339 const selectedOther = this.selectedValues[otherAttrId]; 9340 if (!selectedOther) { 9341 return; 9342 } 9343 9344 let colorAttrId = null; 9345 if (typeof this.getAttributeIdByCode === 'function') { 9346 colorAttrId = this.getAttributeIdByCode('incstores_pim_color_axis'); 9347 }
9348 if (!colorAttrId && typeof this.getShipRegionColorAttributeId === 'function') { 9349 colorAttrId = this.getShipRegionColorAttributeId(); 9350 } 9351 if (!colorAttrId || !this.optionConfig.attributes[colorAttrId]) { 9352 return; 9353 } 9354 9355 const currentColor = this.selectedValues[colorAttrId]; 9356 const isCurrentCompatible = currentColor 9357 && typeof this.optionIsActive === 'function' 9358 && this.optionIsActive(colorAttrId, currentColor); 9359 9360 if (isCurrentCompatible) { 9361 return; 9362 } 9363 9364 const options = this.optionConfig.attributes[colorAttrId].options || []; 9365 let lowestPrice = null; 9366 let lowestOptionId = null; 9367 9368 options.forEach((option) => { 9369 if (typeof this.optionIsEnabled === 'function' 9370 && !this.optionIsEnabled(colorAttrId, option.id)) { 9371 return; 9372 } 9373 const productIds = option.products || []; 9374 productIds.forEach((productId) => { 9375 const product = this.optionConfig.index[productId] 9376 || this.optionConfig.index[String(productId)]; 9377 if (!product || String(product[otherAttrId]) !== String(selectedOther)) { 9378 return; 9379 } 9380 const priceData = this.optionConfig.optionPrices[productId] 9381 || this.optionConfig.optionPrices[String(productId)]; 9382 if (!priceData) { 9383 return; 9384 } 9385 const price = priceData.finalPrice.amount; 9386 if (lowestPrice === null || price < lowestPrice) { 9387 lowestPrice = price; 9388 lowestOptionId = option.id; 9389 } 9390 }); 9391 }); 9392 9393 if (lowestOptionId === null 9394 || String(this.selectedValues[colorAttrId]) === String(lowestOptionId)) { 9395 return; 9396 } 9397 9398 if (typeof this.changeOption === 'function') { 9399 this.changeOption(colorAttrId, lowestOptionId); 9400 return; 9401 } 9402 9403 const el = document.querySelector( 9404 'input[name="super_attribute[' + colorAttrId + ']"][value="' + lowestOptionId + '"]' 9405 ); 9406 if (el) { 9407 el.click(); 9408 } 9409 }, 9410 9411 syncNormalColorSwatchQuickShipVisibility() { 9412 if (this.shipRegionZipActive && this.customerRegionCode) { 9413 return; 9414 } 9415 if (typeof this.quickShipValidation !== 'function') { 9416 if (typeof this.syncNormalColorSwatchSectionVisibility === 'function') { 9417 this.syncNormalColorSwatchSectionVisibility(); 9418 } 9419 return; 9420 } 9421 const self = this; 9422 document.querySelectorAll('.normal_color_swatch_option .selectOptionColor').forEach(function (el) { 9423 const input = el.querySelector('input.product-option-value-input[name^="super_attribute"]'); 9424 if (!input) { 9425 return; 9426 } 9427 const nameMatch = input.name.match(/super_attribute\[(\d+)\]/); 9428 if (!nameMatch) { 9429 return; 9430 } 9431 const attributeId = parseInt(nameMatch[1], 10); 9432 const optionId = input.value; 9433 const attributeCode = input.getAttribute('data-attributecode') || 'incstores_pim_color_axis'; 9434 if (self.quickShipValidation(attributeCode, attributeId, optionId) === 1) { 9435 el.classList.add('hidden'); 9436 el.style.display = 'none'; 9437 } else { 9438 el.classList.remove('hidden'); 9439 el.style.display = ''; 9440 } 9441 }); 9442 if (typeof this.syncNormalColorSwatchSectionVisibility === 'function') { 9443 this.syncNormalColorSwatchSectionVisibility(); 9444 } 9445 }, 9446 9447 getColorAttributeId() { 9448 if (typeof this.getAttributeIdByCode === 'function') { 9449 const id = this.getAttributeIdByCode('incstores_pim_color_axis'); 9450 return id ? parseInt(String(id), 10) : null; 9451 } 9452 if (!this.optionConfig?.attributes) { 9453 return null; 9454 } 9455 for (const key in this.optionConfig.attributes) { 9456 if (this.optionConfig.attributes[key]?.code === 'incstores_pim_color_axis') { 9457 return parseInt(key, 10); 9458 } 9459 } 9460 return null; 9461 }, 9462 9463 /** 9464 * Hide entire "Select A Color" block when every color is Quick Ship (or none left). 9465 */ 9466 syncNormalColorSwatchSectionVisibility() { 9467 const sections = document.querySelectorAll('.normal_color_swatch_option'); 9468 if (!sections.length) { 9469 return; 9470 } 9471 const colorAttrId = this.getColorAttributeId(); 9472 const shouldShow = colorAttrId 9473 && typeof this.hasNormalColorOptions === 'function' 9474 && this.hasNormalColorOptions('incstores_pim_color_axis', colorAttrId); 9475 9476 sections.forEach((section) => { 9477 if (!shouldShow) { 9478 section.classList.add('hidden'); 9479 section.style.setProperty('display', 'none', 'important'); 9480 } else { 9481 section.classList.remove('hidden', 'sr-only'); 9482 section.style.setProperty('display', 'block', 'important'); 9483 } 9484 }); 9485 } 9486 } 9487 } 9488 9489 function isValidURL(url) { 9490 // Regular expression for URL validation 9491 var pattern = /^(https?:\/\/)?([\w.]+)\.([a-z]{2,})(\/[\w\.-]*)*\/?$/i; 9492 return pattern.test(url); 9493} 9494</script>
vendor: 1 bytes, line 9494
9494
9495<script> 9496 'use strict'; 9497 9498 (function () { 9499 const modals = []; 9500 const excludedFromFocusTrapping = new Set(); 9501 9502 function trapFocusInNextModalWithOverlay() { 9503 for (let idx = modals.length -1; idx >= 0; idx--) { 9504 const nextOnStack = modals[idx]; 9505 const nextDialogElement = nextOnStack.instance.$refs[nextOnStack.name]; 9506 if (! isOverlayDisabled(nextDialogElement)) { 9507 hyva.trapFocus(nextDialogElement); 9508 break; 9509 } 9510 } 9511 } 9512 9513 function focusables(dialogElement) { 9514 const selector = 'button, [href], input, textarea, select, details, [tabindex]:not([tabindex="-1"])'; 9515 return Array.from(dialogElement.querySelectorAll(selector)) 9516 .filter(el => !el.hasAttribute('disabled')); 9517 } 9518 9519 function firstVisible(elements) { 9520 const a = Array.from(elements); 9521 for (let i = 0; i < a.length; i++) { 9522 if (a[i].offsetWidth || a[i].offsetHeight || a[i].getClientRects().length) return a[i]; 9523 } 9524 return null; 9525 } 9526 9527 function isInViewport(element) { 9528 const rect = element && element.getBoundingClientRect(); 9529 return rect && 9530 rect.top >= 0 && 9531 rect.left >= 0 && 9532 rect.right <= window.innerWidth && 9533 rect.bottom <= window.innerHeight; 9534 } 9535 9536 function setFocusAfterTransition(dialogElement, duration) { 9537 const nested = Array.from(dialogElement.querySelectorAll('[role="dialog"]')); 9538 const candidates = Array.from(dialogElement.querySelectorAll('[x-focus-first]')); 9539 next: for (let candidate of candidates) { 9540 for (let child of nested) { 9541 if (child.contains(candidate)) continue next; 9542 } 9543 setTimeout(() => candidate.focus(), 50); 9544 break; 9545 } 9546 window.setTimeout(() => { 9547 const focusElement = firstVisible(dialogElement.querySelectorAll('[x-focus-first]')) || 9548 focusables(dialogElement)[0] || 9549 null; 9550 focusElement && isInViewport(focusElement) && focusElement.focus(); 9551 }, Math.max(1, duration)); 9552 } 9553 9554 function determineTrigger($refs, dialog, trigger) { 9555 if (typeof trigger === 'undefined' && typeof dialog === 'object' && dialog.target instanceof HTMLElement) { 9556 return dialog.target; 9557 } 9558 if (typeof dialog === 'string' && typeof trigger === 'object' && trigger.target instanceof HTMLElement) { 9559 return trigger.target; 9560 } 9561 if (typeof trigger === 'string') { 9562 try { 9563 return $refs[trigger] || document.querySelector(trigger) 9564 } catch (e) {} 9565 } 9566 if (trigger instanceof Element) { 9567 return trigger; 9568 } 9569 9570 return null; 9571 } 9572 9573 function isOverlayDisabled(dialog) { 9574 return dialog && dialog.hasAttribute('x-no-overlay') 9575 } 9576 9577 function areRemainingModalsWithoutOverlay(modals) 9578 { 9579 const overflowDisabled = modals.map(modal => modal.instance.$refs[modal.name]).filter(isOverlayDisabled); 9580 9581 return overflowDisabled.length === modals.length; 9582 } 9583 9584 window.hyva.modal = function(options) { 9585 9586 const config = Object.assign({ 9587 dialog: 'dialog', duration: 300, transitionEnter: 'transition ease-out duration-300', 9588 transitionEnterStart: 'opacity-0', 9589 transitionEnterEnd: 'opacity-100', 9590 transitionLeave: 'transition ease-in duration-300', 9591 transitionLeaveStart: 'opacity-100', 9592 transitionLeaveEnd: 'opacity-0', 9593 }, options); 9594 let lastHide = 0; 9595 9596 return { 9597 opened: {}, 9598 show(dialog, trigger) { 9599 const focusTargetAfterHide = determineTrigger(this.$refs, dialog, trigger); 9600 const name = typeof dialog === 'string' ? dialog : config.dialog; 9601 const dialogElement = this.$refs[name]; 9602 if (! dialogElement) { 9603 return; 9604 } 9605 const useOverlay = ! dialogElement.hasAttribute('x-no-overlay'); 9606 9607 dialogElement.scrollTop = 0; 9608 9609 if (this.opened[name]) { 9610 return; 9611 } 9612 9613 if (focusTargetAfterHide) { 9614 focusTargetAfterHide.setAttribute('aria-expanded', 'true'); 9615 } 9616 9617 this.opened[name] = true; 9618 useOverlay && this.$nextTick(() => hyva.trapFocus(dialogElement)); 9619 setFocusAfterTransition(dialogElement, config.duration); 9620 9621 const frame = {name, instance: this, focusTarget: focu
9621sTargetAfterHide, time: Date.now()}; 9622 9623 modals.push(frame); 9624 if (useOverlay) { 9625 document.body.classList.add('overflow-hidden'); 9626 } 9627 return new Promise(resolve => frame.resolve = resolve); 9628 }, 9629 cancel() { 9630 this.hide(false); 9631 }, 9632 ok() { 9633 this.hide(true); 9634 }, 9635 hide(value) { 9636 if (Date.now() - lastHide < config.duration) { 9637 return; 9638 } 9639 lastHide = Date.now(); 9640 9641 const modal = modals.pop() || {}; 9642 const name = modal.name; 9643 this.opened[name] = false; 9644 hyva.releaseFocus(modal.instance.$refs[modal.name]) 9645 trapFocusInNextModalWithOverlay(); 9646 9647 const nextFocusAfterHide = modal.focusTarget; 9648 nextFocusAfterHide && setTimeout(() => { 9649 nextFocusAfterHide.setAttribute('aria-expanded', 'false'); 9650 nextFocusAfterHide.focus() 9651 }, config.duration); 9652 9653 if (modals.length === 0 || areRemainingModalsWithoutOverlay(modals)) { 9654 document.body.classList.remove('overflow-hidden'); 9655 } 9656 9657 modal.resolve(value); 9658 }, 9659 overlay(dialog) { 9660 const name = typeof dialog === 'string' ? dialog : config.dialog; 9661 return { 9662 ['x-show']() { 9663 return this.opened[name] 9664 }, 9665 ['x-transition:enter']: config.transitionEnter, 9666 ['x-transition:enter-start']: config.transitionEnterStart, 9667 ['x-transition:enter-end']: config.transitionEnterEnd, 9668 ['x-transition:leave']: config.transitionLeave, 9669 ['x-transition:leave-start']: config.transitionLeaveStart, 9670 ['x-transition:leave-end']: config.transitionLeaveEnd, 9671 ['@hyva-modal-show.window'](event) { 9672 event.detail && event.detail.dialog === name && this.show(name, event.detail.focusAfterHide) 9673 } 9674 }; 9675 } 9676 }; 9677 } 9678 9679 window.hyva.modal.peek = () => modals.length > 0 && modals[modals.length -1] 9680 9681 window.hyva.modal.pop = function () { 9682 if (modals.length > 0) { 9683 const modal = modals[modals.length -1]; 9684 modal.instance.hide(); 9685 } 9686 } 9687 9688 window.hyva.modal.excludeSelectorsFromFocusTrap = function (selectors) { 9689 typeof selectors === 'string' || selectors instanceof String 9690 ? excludedFromFocusTrapping.add(selectors) 9691 : selectors.map(selector => excludedFromFocusTrapping.add(selector)); 9692 } 9693 9694 window.hyva.modal.eventListeners = { 9695 keydown: event => { 9696 if (event.key === 'Escape') { 9697 window.hyva.modal.pop(); 9698 } 9699 }, 9700 click: event => { 9701 if (modals.length > 0) { 9702 const modal = modals[modals.length -1]; 9703 const dialog = modal.instance.$refs[modal.name]; 9704 if (modal.time + 50 < Date.now() && // if last click processing is more than 50ms ago 9705 ! isOverlayDisabled(dialog) && // if dialog has overlay 9706 ! dialog.contains(event.target)) { // if click is outside of dialog 9707 modal.instance.hide(); 9708 } 9709 } 9710 } 9711 }; 9712 9713 document.addEventListener('keydown', window.hyva.modal.eventListeners.keydown); 9714 9715 document.addEventListener('click', window.hyva.modal.eventListeners.click); 9716 })(); 9717</script>
vendor: 1 bytes, line 9717
9717
9718<script> 9719 'use strict'; 9720 9721 (() => { 9722 const equalizeButtonWidths = (buttons) => { 9723 const buttonList = buttons.querySelectorAll('[data-element="link"], [data-element="empty_link"]'); 9724 let buttonMinWidth = 0; 9725 9726 buttonList.forEach(button => { 9727 const buttonWidth = button.offsetWidth; 9728 9729 if (buttonWidth > buttonMinWidth) { 9730 buttonMinWidth = buttonWidth; 9731 } 9732 }); 9733 9734 buttonList.forEach(button => { 9735 button.style.minWidth = `${buttonMinWidth}px`; 9736 }); 9737 }; 9738 9739 window.addEventListener('DOMContentLoaded', () => { 9740 document.querySelectorAll('[data-content-type="buttons"][data-same-width="true"]').forEach(buttons => { 9741 equalizeButtonWidths(buttons); 9742 }); 9743 }); 9744 })(); 9745</script>
vendor: 1 bytes, line 9745
9745
9746<script> 9747 'use strict'; 9748 9749 (() => { 9750 const initCarousels = (elements) => { 9751 if (!Glider) { 9752 return; 9753 } 9754 9755 const initProductCarousel = (carousel) => { 9756 const gliderElement = carousel.querySelector('[data-role="glider-content"]'); 9757 9758 if (!gliderElement) { 9759 return; 9760 } 9761 9762 const gliderDots = carousel.querySelector('.glider-dots'); 9763 const gliderPrev = carousel.querySelector('.glider-prev'); 9764 const gliderNext = carousel.querySelector('.glider-next'); 9765 9766 const glider = new Glider(gliderElement, { 9767 slidesToShow: 1.2, 9768 slidesToScroll: 2, 9769 scrollLock: true, 9770 draggable: true, 9771 dragVelocity: 2.5, 9772 dots: gliderDots, 9773 arrows: { 9774 prev: gliderPrev, 9775 next: gliderNext, 9776 }, 9777 responsive: [ 9778 { 9779 breakpoint: 768, 9780 settings: { 9781 slidesToShow: 3, 9782 slidesToScroll: 3, 9783 } 9784 }, 9785 { 9786 breakpoint: 1024, 9787 settings: { 9788 slidesToShow: 4, 9789 slidesToScroll: 4, 9790 } 9791 }, 9792 { 9793 breakpoint: 1200, 9794 settings: { 9795 slidesToShow: 5, 9796 slidesToScroll: 5, 9797 } 9798 } 9799 ], 9800 }); 9801 9802 carousel.classList.remove('overflow-x-scroll'); 9803 gliderPrev.classList.remove('hidden'); 9804 gliderNext.classList.remove('hidden'); 9805 9806 if (carousel.dataset.autoplay !== 'false') { 9807 gliderAutoplay( 9808 glider, 9809 carousel.dataset.autoplaySpeed, 9810 carousel.dataset.infiniteLoop 9811 ); 9812 } 9813 }; 9814 9815 const initSliderCarousel = (slider) => { 9816 slider.innerHTML = `<div data-role="glider-content">${slider.innerHTML}</div>`; 9817 slider.classList.add('glider-contain'); 9818 9819 slider.insertAdjacentHTML( 9820 'beforeend', 9821 '\u000A\u003Cdiv\u0020class\u003D\u0022carousel\u002Dnav\u0020flex\u0020items\u002Dcenter\u0020justify\u002Dcenter\u0020flex\u002D1\u0020p\u002D4\u0022\u003E\u000A\u0020\u0020\u0020\u0020\u003Cbutton\u000A\u0020\u0020\u0020\u0020\u0020\u0020\u0020\u0020aria\u002Dlabel\u003D\u0022Previous\u0022\u000A\u0020\u0020\u0020\u0020\u0020\u0020\u0020\u0020class\u003D\u0022glider\u002Dprev\u0020w\u002D8\u0020h\u002D8\u0020mr\u002D1\u0020text\u002Dblack\u0020rounded\u002Dfull\u0020outline\u002Dnone\u0020focus\u003Aoutline\u002Dnone\u0020hidden\u0022\u003E\u000A\u0020\u0020\u0020\u0020\u0020\u0020\u0020\u0020\u003Csvg\u0020xmlns\u003D\u0022http\u003A\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\u0022\u0020fill\u003D\u0022none\u0022\u0020viewBox\u003D\u00220\u00200\u002024\u002024\u0022\u0020stroke\u002Dwidth\u003D\u00222\u0022\u0020stroke\u003D\u0022currentColor\u0022\u0020width\u003D\u002224\u0022\u0020height\u003D\u002224\u0022\u0020role\u
9821003D\u0022img\u0022\u003E\u000A\u0020\u0020\u003Cpath\u0020stroke\u002Dlinecap\u003D\u0022round\u0022\u0020stroke\u002Dlinejoin\u003D\u0022round\u0022\u0020d\u003D\u0022M15\u002019l\u002D7\u002D7\u00207\u002D7\u0022\u002F\u003E\u000A\u003Ctitle\u003Echevron\u002Dleft\u003C\u002Ftitle\u003E\u003C\u002Fsvg\u003E\u000A\u0020\u0020\u0020\u0020\u003C\u002Fbutton\u003E\u000A\u0020\u0020\u0020\u0020\u003Cdiv\u0020role\u003D\u0022navigation\u0022\u0020class\u003D\u0022glider\u002Ddots\u0020select\u002Dnone\u0020flex\u0020flex\u002Dwrap\u0020mx\u002D1\u0020justify\u002Dcenter\u0020p\u002D0\u0020focus\u003Aoutline\u002Dnone\u0022\u003E\u003C\u002Fdiv\u003E\u000A\u0020\u0020\u0020\u0020\u003Cbutton\u000A\u0020\u0020\u0020\u0020\u0020\u0020\u0020\u0020aria\u002Dlabel\u003D\u0022Next\u0022\u000A\u0020\u0020\u0020\u0020\u0020\u0020\u0020\u0020class\u003D\u0022glider\u002Dnext\u0020w\u002D8\u0020h\u002D8\u0020ml\u002D1\u0020text\u002Dblack\u0020rounded\u002Dfull\u0020outline\u002Dnone\u0020focus\u003Aoutline\u002Dnone\u0020hidden\u0022\u003E\u000A\u0020\u0020\u0020\u0020\u0020\u0020\u0020\u0020\u003Csvg\u0020xmlns\u003D\u0022http\u003A\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\u0022\u0020fill\u003D\u0022none\u0022\u0020viewBox\u003D\u00220\u00200\u002024\u002024\u0022\u0020stroke\u002Dwidth\u003D\u00222\u0022\u0020stroke\u003D\u0022currentColor\u0022\u0020width\u003D\u002224\u0022\u0020height\u003D\u002224\u0022\u0020role\u
9821003D\u0022img\u0022\u003E\u000A\u0020\u0020\u003Cpath\u0020stroke\u002Dlinecap\u003D\u0022round\u0022\u0020stroke\u002Dlinejoin\u003D\u0022round\u0022\u0020d\u003D\u0022M9\u00205l7\u00207\u002D7\u00207\u0022\u002F\u003E\u000A\u003Ctitle\u003Echevron\u002Dright\u003C\u002Ftitle\u003E\u003C\u002Fsvg\u003E\u000A\u0020\u0020\u0020\u0020\u003C\u002Fbutton\u003E\u000A\u003C\u002Fdiv\u003E\u000A' 9822 ); 9823 9824 const gliderElement = slider.querySelector('[data-role="glider-content"]'); 9825 const gliderDots = slider.querySelector('.glider-dots'); 9826 const gliderPrev = slider.querySelector('.glider-prev'); 9827 const gliderNext = slider.querySelector('.glider-next'); 9828 9829 const glider = new Glider(gliderElement, { 9830 slidesToShow: 1, 9831 slidesToScroll: 1, 9832 scrollLock: true, 9833 scrollLockDelay: 250, 9834 draggable: true, 9835 dragVelocity: 2.5, 9836 dots: gliderDots, 9837 arrows: { 9838 prev: gliderPrev, 9839 next: gliderNext, 9840 }, 9841 }); 9842 9843 slider.classList.add('glider-initialized'); 9844 if (slider.dataset.showArrows === 'true') { 9845 gliderPrev.classList.remove('hidden'); 9846 gliderNext.classList.remove('hidden'); 9847 } 9848 9849 if (slider.dataset.autoplay !== 'false') { 9850 gliderAutoplay( 9851 glider, 9852 slider.dataset.autoplaySpeed, 9853 slider.dataset.infiniteLoop 9854 ); 9855 } 9856 }; 9857 9858 const gliderAutoplay = (glider, milliseconds, loop) => { 9859 const pagesCount = glider.track.childElementCount; 9860 let slideTimeout = null; 9861 let nextIndex = 1; 9862 let paused = false; 9863 9864 const slide = () => { 9865 slideTimeout = setTimeout( 9866 () => { 9867 if (loop && nextIndex >= pagesCount) { 9868 nextIndex = 0; 9869 } 9870 glider.scrollItem(nextIndex); 9871 }, 9872 parseInt(milliseconds) 9873 ); 9874 }; 9875 9876 glider.ele.addEventListener('glider-animated', () => { 9877 nextIndex = glider.slide + glider.opt.slidesToScroll; 9878 window.clearInterval(slideTimeout); 9879 if (!paused && (loop || nextIndex < pagesCount)) { 9880 slide(); 9881 } 9882 }); 9883 9884 const pause = () => { 9885 if (!paused) { 9886 clearInterval(slideTimeout); 9887 paused = true; 9888 } 9889 }; 9890 9891 const unpause = () => { 9892 if (paused) { 9893 slide(); 9894 paused = false; 9895 } 9896 }; 9897 9898 glider.ele.parentElement.addEventListener('mouseover', pause, {passive: true}); 9899 glider.ele.parentElement.addEventListener('touchstart', pause, {passive: true}); 9900 glider.ele.parentElement.addEventListener('mouseout', unpause, {passive: true}); 9901 glider.ele.parentElement.addEventListener('touchend', unpause, {passive: true}); 9902 9903 slide(); 9904 }; 9905 9906 elements.forEach(element => { 9907 if (element.dataset.contentType === 'products') { 9908 initProductCarousel(element); 9909 } 9910 if (element.dataset.contentType === 'slider') { 9911 initSliderCarousel(element); 9912 } 9913 }); 9914 }; 9915 9916 window.addEventListener('DOMContentLoaded', () => { 9917 const carouselElements = document.querySelectorAll( 9918 `[data-content-type="products"][data-appearance="carousel"], 9919 [data-content-type="slider"]` 9920 ); 9921 9922 if (carouselElements.length > 0) { 9923 const script = document.createElement('script'); 9924 script.type = 'text/javascript'; 9925 9926 script.addEventListener('load', () => { 9927 initCarousels(carouselElements); 9928 }); 9929 9930 window.addEventListener('init-external-scripts', () => { 9931 script.src = 'https\u003A\u002F\u002Fwww.flooringinc.com\u002Fstatic\u002Fversion1789462004\u002Ffrontend\u002FDcw\u002Fhyvadesktop\u002Fen_US\u002FMagento_PageBuilder\u002Fjs\u002Fglider.min.js'; 9932 }, {once: true, passive: true}); 9933 document.head.appendChild(script); 9934 } 9935 }); 9936 })(); 9937</script>
vendor: 1 bytes, line 9937
9937
9938<script> 9939 'use strict'; 9940 9941 (() => { 9942 const initMaps = (elements) => { 9943 const renderMap = (element) => { 9944 const dataLocations = element.dataset.locations; 9945 9946 // Hide map if no locations set 9947 if (!dataLocations || dataLocations === '[]') { 9948 element.classList.add('hidden'); 9949 return; 9950 } 9951 9952 const map = new google.maps.Map( 9953 element, 9954 getMapOptions( 9955 element.dataset.showControls !== 'true', 9956 element.dataset.showControls === 'true' 9957 ) 9958 ); 9959 const locations = JSON.parse(dataLocations); 9960 const latitudeLongitudeBounds = new google.maps.LatLngBounds(); 9961 const bounds = []; 9962 9963 locations.forEach(location => { 9964 const position = { 9965 lat: parseFloat(location.position.latitude), 9966 lng: parseFloat(location.position.longitude), 9967 }; 9968 bounds.push(position); 9969 9970 const infowindow = new google.maps.InfoWindow({ 9971 content: getInfoWindowContent(location), 9972 }); 9973 const marker = new google.maps.Marker({ 9974 position: position, 9975 map, 9976 title: location.location_name, 9977 }); 9978 9979 marker.addListener('click', () => { 9980 infowindow.open(map, marker); 9981 }); 9982 }); 9983 9984 // Set bounds if multiple locations 9985 if (bounds.length > 1) { 9986 bounds.forEach(function (bound) { 9987 latitudeLongitudeBounds.extend(bound); 9988 }); 9989 map.fitBounds(latitudeLongitudeBounds); 9990 } 9991 9992 // Center if single location 9993 if (bounds.length === 1) { 9994 map.setCenter(bounds[0]); 9995 } 9996 }; 9997 9998 const getMapOptions = (disableDefaultUI, mapTypeControl) => { 9999 const style = ''; 10000 return { 10001 zoom: 8, 10002 scrollwheel: false, 10003 disableDoubleClickZoom: false, 10004 mapTypeControlOptions: { 10005 style: google.maps.MapTypeControlStyle.DEFAULT, 10006 }, 10007 styles: style ? JSON.parse(style) : [], 10008 disableDefaultUI: disableDefaultUI, 10009 mapTypeControl: mapTypeControl, 10010 }; 10011 }; 10012 10013 const getInfoWindowContent = (location) => { 10014 const title = location.location_name ? 10015 `<h3 class="text-2xl font-medium text-gray-900 title-font">${location.location_name}</h3>` : ''; 10016 const comment = location.comment ? `<p class="px-1 pt-3 text-primary">${location.comment}</p>` : ''; 10017 const phone = location.phone ? `<p class="px-1 pt-3 text-primary">Phone: ${location.phone}</p>` : ''; 10018 const street = location.address ? `${location.address}<br/>` : ''; 10019 const city = location.city ? `${location.city}<br/>` : ''; 10020 const state = location.state ? `${location.state}<br/>` : ''; 10021 const zipCode = location.zipcode ? `${location.zipcode}<br/>` : ''; 10022 const country = location.country ? location.country : ''; 10023 10024 return `<div> 10025 ${title} 10026 ${comment} 10027 ${phone} 10028 <p class="px-1 pt-3 text-primary"> 10029 ${street} 10030 ${city} 10031 ${state} 10032 ${zipCode} 10033 ${country} 10034 </p> 10035 </div>`; 10036 }; 10037 10038 const hideAllMaps = () => { 10039 document.querySelectorAll('[data-content-type="map"]').forEach(element => { 10040 element.classList.add('hidden'); 10041 }); 10042 }; 10043 10044 window.gm_authFailure = () => { 10045 hideAllMaps(); 10046 }; 10047 10048 if (typeof google.maps === 'undefined') { 10049 hideAllMaps(); 10050 return; 10051 } 10052
10053 elements.forEach(element => { 10054 if (element.dataset.contentType === 'map') { 10055 renderMap(element); 10056 } 10057 }); 10058 }; 10059 10060 window.addEventListener('DOMContentLoaded', () => { 10061 const mapElements = document.querySelectorAll('[data-content-type="map"]'); 10062 10063 if (mapElements.length > 0) { 10064 const script = document.createElement('script'); 10065 script.type = 'text/javascript'; 10066 10067 script.addEventListener('load', () => { 10068 initMaps(mapElements); 10069 }); 10070 10071 script.src = 'https\u003A\u002F\u002Fmaps.googleapis.com\u002Fmaps\u002Fapi\u002Fjs\u003Fv\u003D3\u0026key\u003D'; 10072 document.head.appendChild(script); 10073 } 10074 }); 10075 })(); 10076</script>
vendor: 1 bytes, line 10076
10076
10077<script> 10078 'use strict'; 10079 10080 (() => { 10081 const initParallaxImage = (element) => { 10082 if (!window.jarallax) { 10083 return; 10084 } 10085 10086 element.classList.add('jarallax'); 10087 element.dataset.jarallax = ''; 10088 const parallaxSpeed = parseFloat(element.dataset.parallaxSpeed) || 0.5; 10089 const elementStyle = window.getComputedStyle(element); 10090 10091 window.jarallax(element, { 10092 imgPosition: elementStyle.backgroundPosition || '50% 50%', 10093 imgRepeat: elementStyle.backgroundRepeat || 'no-repeat', 10094 imgSize: elementStyle.backgroundSize || 'cover', 10095 speed: parallaxSpeed, 10096 }); 10097 }; 10098 10099 const initVideoBackground = (element) => { 10100 if (!window.jarallax) { 10101 return; 10102 } 10103 10104 let slider = null; 10105 10106 if (element.classList.contains('pagebuilder-slide-wrapper')) { 10107 const viewportElement = document.createElement('div'); 10108 slider = element.closest('[data-content-type=slider]'); 10109 viewportElement.classList.add('jarallax-viewport-element'); 10110 element.dataset.elementInViewport = '.jarallax-viewport-element'; 10111 element.appendChild(viewportElement); 10112 } 10113 10114 element.classList.add('jarallax'); 10115 element.dataset.jarallax = ''; 10116 const parallaxSpeed = parseFloat(element.dataset.parallaxSpeed) || 0.5; 10117 10118 window.jarallax(element, { 10119 imgSrc: element.dataset.videoFallbackSrc, 10120 speed: parallaxSpeed, 10121 videoLoop: element.dataset.videoLoop, 10122 videoPlayOnlyVisible: element.dataset.videoPlayOnlyVisible, 10123 videoLazyLoading: element.dataset.videoLazyLoad, 10124 disableVideo: false, 10125 elementInViewport: element.dataset.elementInViewport && 10126 element.querySelector(element.dataset.elementInViewport), 10127 }); 10128 10129 if (slider) { 10130 if (slider.dataset.afterChangeIsSet) { 10131 return; 10132 } 10133 10134 slider.addEventListener('glider-loaded', () => { 10135 slider.querySelectorAll('.jarallax').forEach(videoSlide => { 10136 videoSlide.jarallax && videoSlide.jarallax.onScroll(); 10137 }); 10138 }); 10139 10140 slider.addEventListener('glider-animated', () => { 10141 slider.querySelectorAll('.jarallax').forEach(videoSlide => { 10142 videoSlide.jarallax && videoSlide.jarallax.onScroll(); 10143 }); 10144 }); 10145 10146 slider.dataset.afterChangeIsSet = true; 10147 } 10148 }; 10149 10150 window.addEventListener('DOMContentLoaded', () => { 10151 const parallaxImageElements = document.querySelectorAll( 10152 `[data-content-type="row"][data-background-type="image"][data-enable-parallax="1"], 10153 [data-content-type="row"] > [data-background-type="image"][data-enable-parallax="1"]` 10154 ); 10155 10156 const videoBackgroundsElements = document.querySelectorAll( 10157 `[data-content-type="row"][data-background-type="video"][data-enable-parallax="1"], 10158 [data-content-type="row"] > [data-background-type="video"][data-enable-parallax="1"], 10159 [data-content-type="banner"] [data-background-type="video"], 10160 [data-content-type="slide"] [data-background-type="video"]` 10161 ); 10162 10163 if (parallaxImageElements.length > 0 || videoBackgroundsElements.length > 0) { 10164 const jarallaxScript = document.createElement('script'); 10165 jarallaxScript.type = 'text/javascript'; 10166 10167 jarallaxScript.addEventListener('load', () => { 10168 parallaxImageElements.forEach(row => { 10169 initParallaxImage(row); 10170 }); 10171 10172 const jarallaxVideoScript = document.createElement('script'); 10173 jarallaxVideoScript.type = 'text/javascript'; 10174 10175 jarallaxVideoScript.addEventListener('load', () => {
10176 videoBackgroundsElements.forEach(element => { 10177 initVideoBackground(element); 10178 }); 10179 }); 10180 10181 jarallaxVideoScript.src = 'https\u003A\u002F\u002Fwww.flooringinc.com\u002Fstatic\u002Fversion1789462004\u002Ffrontend\u002FDcw\u002Fhyvadesktop\u002Fen_US\u002FMagento_PageBuilder\u002Fjs\u002Fjarallax\u002Dvideo.min.js'; 10182 document.head.appendChild(jarallaxVideoScript); 10183 }); 10184 10185 jarallaxScript.src = 'https\u003A\u002F\u002Fwww.flooringinc.com\u002Fstatic\u002Fversion1789462004\u002Ffrontend\u002FDcw\u002Fhyvadesktop\u002Fen_US\u002FMagento_PageBuilder\u002Fjs\u002Fjarallax.min.js'; 10186 document.head.appendChild(jarallaxScript); 10187 } 10188 }); 10189 })(); 10190</script>
vendor: 1 bytes, line 10190
10190
10191<script> 10192 'use strict'; 10193 10194 (() => { 10195 const applyShowOnHover = (element) => { 10196 const showOverlayOnHover = (element) => { 10197 const overlay = element.querySelector('.pagebuilder-overlay'); 10198 const color = overlay.dataset.overlayColor; 10199 10200 element.addEventListener('mouseover', () => { 10201 overlay.style.backgroundColor = color; 10202 }); 10203 element.addEventListener('mouseout', () => { 10204 overlay.style.backgroundColor = 'transparent'; 10205 }); 10206 }; 10207 10208 const showButtonOnHover = (element) => { 10209 const button = element.querySelector('.pagebuilder-banner-button'); 10210 10211 element.addEventListener('mouseover', () => { 10212 button.style.opacity = '1'; 10213 button.style.visibility = 'visible'; 10214 }); 10215 element.addEventListener('mouseout', () => { 10216 button.style.opacity = '0'; 10217 button.style.visibility = 'hidden'; 10218 }); 10219 }; 10220 10221 if (element.dataset.showOverlay === 'hover') { 10222 showOverlayOnHover(element); 10223 } 10224 if (element.dataset.showButton === 'hover') { 10225 showButtonOnHover(element); 10226 } 10227 }; 10228 10229 window.addEventListener('DOMContentLoaded', () => { 10230 document.querySelectorAll('[data-content-type="banner"],[data-content-type="slider"]').forEach(element => { 10231 applyShowOnHover(element); 10232 }); 10233 }); 10234 })(); 10235</script>
vendor: 1 bytes, line 10235
10235
10236<script> 10237 'use strict'; 10238 10239 (() => { 10240 document.querySelectorAll('[data-content-type="tab-item"]').forEach(tabItem => { 10241 tabItem.setAttribute('x-show', `tab === '${tabItem.id}'`); 10242 }); 10243 10244 document.querySelectorAll('[data-content-type="tabs"]').forEach(tab => { 10245 const defaultActiveTab = parseInt(tab.dataset.activeTab) || 0; 10246 10247 tab.querySelectorAll('.tab-header').forEach((tabHeader, index) => { 10248 const tabLink = tabHeader.querySelector('a'); 10249 const tabId = tabLink.getAttribute('href').replace('#', ''); 10250 10251 tabHeader.setAttribute(':class', `{ 'active': tab === '${tabId}' }`); 10252 tabLink.setAttribute('x-on:click.prevent', `tab = '${tabId}'`); 10253 10254 if (index === defaultActiveTab) { 10255 tab.setAttribute('x-data', `{ tab: '${tabId}' }`); 10256 } 10257 }); 10258 }); 10259 })(); 10260</script>
vendor: 1 bytes, line 10260
10260
10261<script> 10262 'use strict'; 10263 10264 const grecaptchaV2LoadCallbacks = []; 10265 10266 function executeRecaptchaLoadCallbacks () { 10267 while (window.grecaptcha && grecaptchaV2LoadCallbacks.length > 0) { 10268 const callback = grecaptchaV2LoadCallbacks.pop(); 10269 typeof callback === 'string' ? window[callback]() : callback(); 10270 } 10271 } 10272 10273 (function() { 10274 const loadRecaptchaScript = (event) => { 10275 10276 if (window.grecaptcha || !event.target.form) { 10277 return; 10278 } 10279 10280 const url = 'https://www.google.com/recaptcha/api.js?onload=executeRecaptchaLoadCallbacks'; 10281 const siteKey = '6LdQFsgqAAAAAFaiT_SQ7C9UmCcxWxpMd6pIMAEO'; 10282 const script = document.createElement('script'); 10283 script.type = 'text/javascript'; 10284 script.src = siteKey ? `${url}&render=${siteKey}` : `${url}&render=explicit`; 10285 script.async = true; 10286 document.head.appendChild(script); 10287 10288 script.addEventListener('load', () => { 10289 Array.from(document.querySelectorAll('button[data-recaptcha-btn]:disabled')).forEach(btn => btn.removeAttribute('disabled')); 10290 }); 10291 } 10292 10293 window.forceLoadRecaptchaScript = (form) => { 10294 loadRecaptchaScript({target: {form: form || 'dummy'}}); 10295 executeRecaptchaLoadCallbacks(); 10296 }; 10297 10298 document.body.addEventListener('input', loadRecaptchaScript, { once: true }); 10299 document.body.addEventListener('focus', loadRecaptchaScript, { once: true }); 10300 10301 }()); 10302 10303</script>
vendor: 1 bytes, line 10303
10303
10304<script> 10305 window.addEventListener("scroll", function() { 10306 var header = document.querySelector('header.page-header'); 10307 var body = document.querySelector("body"); 10308 const header_top = document.querySelector('.header_top'); 10309 const notification4 = document.querySelector('.notification4'); 10310 var top_1 = document.querySelector("header.page-header > .panel.wrapper"); 10311 var content = document.getElementById("textContent"); 10312 10313 10314 if(header_top && notification4){ 10315 if ((header_top.textContent.length > 10) && (notification4.textContent.length > 10)) { 10316 if (window.pageYOffset > 76) { 10317 //document.querySelector("#header").style.cssText = "position:fixed;left:0;top:0;width:100%;transition: all ease-in-out 0.5s"; 10318 //document.querySelector(".page-wrapper").style.cssText = "padding-top:112px"; 10319 document.querySelector('body').classList.add('sticki'); 10320 } else { 10321 //document.querySelector("#header").style.cssText = "position:static;transition: all ease-in-out 0.5s"; 10322 //document.querySelector(".page-wrapper").style.cssText = "padding-top:0px"; 10323 document.querySelector('body').classList.remove('sticki'); 10324 } 10325 } 10326 } 10327 10328 if(header_top && notification4){ 10329 if ((header_top.textContent.length > 10) && (notification4.textContent.length < 10)) { 10330 if (window.pageYOffset > 36) { 10331 //document.querySelector("#header").style.cssText = "position:fixed;left:0;top:0;width:100%;transition: all ease-in-out 0.5s"; 10332 //document.querySelector(".page-wrapper").style.cssText = "padding-top:112px"; 10333 document.querySelector('body').classList.add('sticki'); 10334 } else { 10335 //document.querySelector("#header").style.cssText = "position:static;transition: all ease-in-out 0.5s"; 10336 //document.querySelector(".page-wrapper").style.cssText = "padding-top:0px"; 10337 document.querySelector('body').classList.remove('sticki'); 10338 } 10339 } 10340 } 10341 10342 if(header_top && !notification4){ 10343 if (header_top.textContent.length > 10) { 10344 if (window.pageYOffset > 36) { 10345 //document.querySelector("#header").style.cssText = "position:fixed;left:0;top:0;width:100%;transition: all ease-in-out 0.5s"; 10346 //document.querySelector(".page-wrapper").style.cssText = "padding-top:112px"; 10347 document.querySelector('body').classList.add('sticki'); 10348 } else { 10349 //document.querySelector("#header").style.cssText = "position:static;transition: all ease-in-out 0.5s"; 10350 //document.querySelector(".page-wrapper").style.cssText = "padding-top:0px"; 10351 document.querySelector('body').classList.remove('sticki'); 10352 } 10353 } 10354 } 10355 }); 10356 10357 window.addEventListener("DOMContentLoaded", function() { 10358 window.addEventListener("scroll", function() { 10359 // scroll for plp content sticky 10360 anchor_scroll(); 10361 }); 10362 function anchor_scroll() { 10363 var anchor_scroll = document.querySelector('.anchor-scroll'); 10364 if (!anchor_scroll) { 10365 return; // Exit if the element is not found 10366 } 10367 let sticky = anchor_scroll.offsetTop; 10368 10369 if (window.pageYOffset > sticky) { 10370 anchor_scroll.classList.add("scroll-fixed"); 10371 } else { 10372 anchor_scroll.classList.remove("scroll-fixed"); 10373 } 10374 } 10375 10376 document.querySelectorAll('.anchor-scroll a[href^="."], .at-glance-content a[href^="."]').forEach(anchor => { 10377 anchor.addEventListener('click', function (e) { 10378 e.preventDefault(); 10379 10380 const targetClass = this.getAttribute('href').substring(1); 10381 const targetElement = document.querySelector(`.${targetClass}`); 10382 let anchor_scroll = document.querySelector('.anchor-scroll > div'); 10383 var header_off = document.querySelector('#header').offsetHeight; 10384 if (anchor_scroll) { 10385 var header_off = document.querySelector('#header').offsetHeight + anchor_scroll.offsetHeight; 10386 } else { 10387 var header_off = document.querySelector('#header').offsetHeight; 10388 } 10389 10390 if (targetElement) { 10391 const offset = header_off; 10392 const bodyRect = document.body.getBoundingClientRect().top; 10393 const elementRect = targetElement.getBoundingClientRect().top; 10394 const elementPosition = elementRect - bodyRect; 10395 const offsetPosition = elementPosition - offset; 10396 10397 window.scrollTo({ 10398 top: offsetPosition, 10399 behavior: 'smooth' 10400 }); 10401 } 10402 }); 10403 }); 10404 }); 10405</script>
10405 10406 10407 <section x-cloak x-data="{isLoading: false}" 10408 @amcaptcha-loading-start.window="isLoading = true" @amcaptcha-loading-stop.window="isLoading = false"> 10409 <div class="flex flex-row justify-center items-center w-full h-full fixed select-none z-50" 10410 style="left: 50%;top: 50%;transform: translateX(-50%) translateY(-50%);background: rgba(255,255,255,0.7);" 10411 x-show="isLoading" 10412 x-transition:enter="ease-out duration-200" 10413 x-transition:enter-start="opacity-0" 10414 x-transition:enter-end="opacity-100" 10415 x-transition:leave="ease-in duration-200" 10416 x-transition:leave-start="opacity-100" 10417 x-transition:leave-end="opacity-0"> 10418 <!-- By Sam Herbert (@sherb), for everyone. More @ http://goo.gl/7AJzbL --> 10419<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 57 57" stroke="currentColor" class="text-primary" width="57" height="57" role="img"> 10420 <g fill="none" fill-rule="evenodd"> 10421 <g transform="translate(1 1)" stroke-width="2"> 10422 <circle cx="5" cy="50" r="5"> 10423 <animate attributeName="cy" begin="0s" dur="2.2s" values="50;5;50;50" calcMode="linear" repeatCount="indefinite"/> 10424 <animate attributeName="cx" begin="0s" dur="2.2s" values="5;27;49;5" calcMode="linear" repeatCount="indefinite"/> 10425 </circle> 10426 <circle cx="27" cy="5" r="5"> 10427 <animate attributeName="cy" begin="0s" dur="2.2s" from="5" to="5" values="5;50;50;5" calcMode="linear" repeatCount="indefinite"/> 10428 <animate attributeName="cx" begin="0s" dur="2.2s" from="27" to="27" values="27;49;5;27" calcMode="linear" repeatCount="indefinite"/> 10429 </circle> 10430 <circle cx="49" cy="50" r="5"> 10431 <animate attributeName="cy" begin="0s" dur="2.2s" values="50;50;5;50" calcMode="linear" repeatCount="indefinite"/> 10432 <animate attributeName="cx" from="49" to="49" begin="0s" dur="2.2s" values="49;5;27;49" calcMode="linear" repeatCount="indefinite"/> 10433 </circle> 10434 </g> 10435 </g> 10436<title>loader</title></svg> 10437 <div class="ml-10 text-primary text-xl"> 10438 Loading... </div> 10439</div> 10440 </section> 10441
10442<script> 10443 'use strict'; 10444 10445 function responseSerialize(response) { 10446 if (response.redirected) { 10447 window.location.href = response.url; 10448 } else if (response.ok) { 10449 return response.json(); 10450 } else { 10451 // Check if result is Promise then throw to new Error 10452 let defaultErrMsg = 'Something went wrong. Please contact the website admin for more information.', 10453 result; 10454 result = response.text(); 10455 if (typeof result?.then === 'function') { 10456 result.then(res => { 10457 let errorMessage; 10458 try { 10459 errorMessage = JSON.parse(res); 10460 errorMessage = errorMessage?.message ? errorMessage.message : defaultErrMsg; 10461 } catch (e) { 10462 errorMessage = defaultErrMsg; 10463 } 10464 window.dispatchMessages([ 10465 { 10466 type: 'error', 10467 text: errorMessage 10468 } 10469 ], 3000); 10470 }); 10471 } else { 10472 throw new Error(defaultErrMsg); 10473 } 10474 } 10475 } 10476 10477 if (typeof window.buildRestAPIUrl !== 'function') { 10478 window.buildRestAPIUrl = function (url, params = {}) { 10479 const method = 'rest', 10480 storeCode = 'default', 10481 version = 'V1', 10482 serviceUrl = ':method/:storeCode/:version'; 10483 10484 let urlParts; 10485 10486 params.method = method; 10487 params.storeCode = storeCode; 10488 params.version = version; 10489 10490 url = serviceUrl + url; 10491 10492 urlParts = url.split('/'); 10493 urlParts = urlParts.filter(Boolean); 10494 10495 Object.entries(urlParts).forEach (entry => { 10496 let [key, part] = entry; 10497 part = part.replace(':', ''); 10498 10499 if (params[part] !== undefined) { 10500 urlParts[key] = params[part]; 10501 } 10502 }); 10503 10504 return urlParts.join('/'); 10505 } 10506 } 10507 10508 if (typeof window.isObjectEmpty !== 'function') { 10509 window.isObjectEmpty = function (obj) { 10510 return ( 10511 Object.prototype.toString.call(obj) === '[object Object]' && 10512 JSON.stringify(obj) === '{}' 10513 ); 10514 } 10515 } 10516 10517 if (typeof window.mergeDeep !== 'function') { 10518 /** 10519 * Deep merge two objects. 10520 * 10521 * @param target 10522 * @param sources 10523 * @returns {*} 10524 */ 10525 window.mergeDeep = (target, ...sources) => { 10526 /** 10527 * Simple object check. 10528 * 10529 * @param item 10530 * @returns {boolean} 10531 */ 10532 const isObject = (item) => { 10533 return (item && typeof item === 'object' && !Array.isArray(item)); 10534 }; 10535 10536 if (!sources.length) return target; 10537 const source = sources.shift(); 10538 10539 if (isObject(target) && isObject(source)) { 10540 for (const key in source) { 10541 if (isObject(source[key])) { 10542 if (!target[key]) Object.assign(target, { [key]: {} }); 10543 mergeDeep(target[key], source[key]); 10544 } else { 10545 Object.assign(target, { [key]: source[key] }); 10546 } 10547 } 10548 } 10549 10550 return mergeDeep(target, ...sources); 10551 } 10552 } 10553</script>
10553 10554 10555<div x-data="{...hyva.modal(), ...initAmcartDialogPopup()}" 10556 x-init="initDialogPopup($dispatch)" 10557 x-spread="eventListeners" 10558 x-bind="eventListeners"> 10559 <div x-cloak x-spread="overlay('amcart-dialog-popup')" x-bind="overlay('amcart-dialog-popup')" 10560 class="fixed inset-0 flex items-center justify-center text-left bg-black bg-opacity-50 z-30"> 10561 <div x-ref="amcart-dialog-popup" role="dialog" aria-labelledby="amcart-dialog-popup-content" 10562 class="flex flex-col max-h-screen max-w-4xl overflow-auto bg-amcart-background shadow-xl rounded-lg p-4"> 10563 <div class="flex justify-between pb-4 border-b"> 10564 <div x-text="title" class="text-2xl font-extrabold text-amcart-text"></div> 10565 <button @click="$dispatch('amcart-close-dialog-popup')" 10566 aria-label="Close" 10567 class="text-gray-300 transition hover:text-black hover:drop-shadow-md"> 10568 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" class="h-6 w-6" width="24" height="24" role="img"> 10569 <path fill-rule="evenodd" d="M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z" clip-rule="evenodd"/> 10570<title>x</title></svg> 10571 </button> 10572 </div> 10573 <div id="amcart-dialog-popup-content" class="amcart-dialog-popup-content"></div> 10574 <div class="flex flex-row pt-3 border-t"> 10575 <template x-for="(button, index) in buttons" :key="index"> 10576 <button class="btn mr-4 last:mr-0 text-amcart-button hover:brightness-105 hover:shadow-lg" 10577 :class="{ 10578 'bg-amcart-continue-btn hover:bg-amcart-continue-btn': index === 0, 10579 'bg-amcart-view-cart-btn hover:bg-amcart-view-cart-btn': index === 1 10580 }" 10581 :aria-label="button.name" 10582 x-html="button.name" 10583 @click="dispatchButtonAction(button.action.name, button.action.payload)"></button> 10584 </template> 10585 </div> 10586 </div> 10587 </div> 10588</div> 10589
10590<script> 10591 'use strict'; 10592 10593 function initAmcartDialogPopup() { 10594 const dialogPopupName = 'amcart-dialog-popup'; 10595 const selectors = { 10596 addToCartForm: '.amcart-product-info #amcart_product_addtocart_form', 10597 ratingSummarySelector: '.amcart-product-info .rating-summary' 10598 } 10599 10600 return { 10601 eventListeners: { 10602 ['@amcart-open-dialog-popup.window']({detail: popupData}) { 10603 // Close any existing modal before opening 10604 window.hyva.modal.pop(); 10605 10606 this.initPopupWithData(popupData); 10607 this.$nextTick(() => { 10608 this.show(dialogPopupName); 10609 }); 10610 }, 10611 ['@amcart-close-dialog-popup']() { 10612 this.hide(dialogPopupName); 10613 }, 10614 ['@amcart-dialog-submit']({ detail: actionToDispatch }) { 10615 const form = document.querySelector(selectors.addToCartForm); 10616 10617 if (form.checkValidity()) { 10618 this.dispatch(actionToDispatch, form); 10619 this.hide(dialogPopupName); 10620 } else { 10621 form.reportValidity(); 10622 } 10623 }, 10624 ['@amcart-hide-popup']() { 10625 this.hide(dialogPopupName); 10626 } 10627 }, 10628 title: '', 10629 buttons: [], 10630 message: '', 10631 selected_options: null, 10632 dispatch: null, 10633 10634 /** 10635 * @param {Object} $dispatch 10636 * @return {void} 10637 */ 10638 initDialogPopup: function ($dispatch) { 10639 this.dispatch = $dispatch; 10640 }, 10641 10642 /** 10643 * @param {CartResponse} popupData 10644 * @return {void} 10645 */ 10646 initPopupWithData: function (popupData) { 10647 this.title = popupData.title; 10648 this.buttons = popupData.buttons; 10649 this.selected_options = popupData.selected_options; 10650 hyva.replaceDomElement('#amcart-dialog-popup-content', this.preprocessMessage(popupData.message)); 10651 this.$nextTick(() => { 10652 this.postProcessPopupContent(); 10653 }); 10654 }, 10655 10656 /** 10657 * @param {string} message 10658 * @return {string} 10659 */ 10660 preprocessMessage: function (message) { 10661 /** 10662 * Disable labels for input inside popup due to the possibility of their duplication on the page. 10663 * Because this can lead to unexpected behaviour. 10664 * 10665 * Make form id unique for popup 10666 */ 10667 return message 10668 .replaceAll(':for=', 'for-data=') 10669 .replaceAll('product_addtocart_form', 'amcart_product_addtocart_form'); 10670 }, 10671 10672 /** 10673 * @return {void} 10674 */ 10675 postProcessPopupContent: function () { 10676 this.disableRatingSummary(); 10677 this.clickSelectedOptions(); 10678 }, 10679 10680 /** 10681 * @return {void} 10682 */ 10683 disableRatingSummary: function () { 10684 const ratingSummaryElement = document.querySelector(selectors.ratingSummarySelector); 10685 10686 if (!!ratingSummaryElement) { 10687 ratingSummaryElement.removeAttribute('onClick'); 10688 ratingSummaryElement.classList.remove('cursor-pointer'); 10689 } 10690 }, 10691 10692 /** 10693 * @return {void} 10694 */ 10695 clickSelectedOptions: function () { 10696 if (!this.selected_options) { 10697 return; 10698 } 10699 10700 for(const [attributeId, attributeValue] of Object.entries(this.selected_options)) { 10701 const swatchOptionTemplate = document.querySelector( 10702 `.amcart-product-info template[x-for*="attributes[${attributeId}]"]` 10703 ); 10704 10705 if (!!swatchOptionTemplate && !!swatchOptionTemplate.parentElement) { 10706 const swatchInput = swatchOptionTemplate.parentElement 10707 .querySelector(`input[value="${attributeValue}"]`); 10708 swatchInput && swatchInput.click(); 10709 } 10710 } 10711 }, 10712 10713 /** 10714 * @param {string} name 10715 * @param {string|undefined} payload 10716 * @return {void} 10717 */ 10718 dispatchButtonAction: function (name, payload) { 10719 this.dispatch(name, payload); 10720 } 10721 }; 10722 } 10723</script>
10723 10724
10725<script> 10726 (function () { 10727 'use strict'; 10728 10729 const addToCartProductListFormSelector = '.product_addtocart_form'; 10730 const addToCartProductPageFormSelector = '#product_addtocart_form'; 10731 const setFormsEvent = function () { 10732 const productListForms = document.querySelectorAll(addToCartProductListFormSelector); 10733 const productPageForm = document.querySelector(addToCartProductPageFormSelector); 10734 10735 productPageForm && addDispatcher(productPageForm); 10736 productListForms.forEach((form) => { 10737 // disable html5 validation 10738 form.setAttribute('novalidate', ''); 10739 addDispatcher(form); 10740 }); 10741 } 10742 10743 const addDispatcher = function(form) { 10744 form.removeAttribute('@submit'); 10745 form.removeAttribute('@submit.prevent'); 10746 form.setAttribute('x-data', ''); 10747 form.setAttribute('x-on:submit.prevent', '$dispatch(\'amcart-add-to-cart-action\', $el)'); 10748 } 10749 10750 setFormsEvent(); 10751 10752 window.addEventListener('amcart-set-forms-event', setFormsEvent); 10753 })(); 10754</script>
10754 10755
10756<script> 10757 (function () { 10758 'use strict'; 10759 10760 /** 10761 * @typedef {Object} CartResponse 10762 * 10763 * Popup common props 10764 * @property {[ 10765 * name: string, 10766 * action: { 10767 * name: string, 10768 * payload: string|undefined 10769 * } 10770 * ]|undefined} buttons 10771 * @property {string|undefined} popup_action 10772 * @property {string|undefined} message 10773 * @property {string|undefined} title 10774 * 10775 * DialogPopup props 10776 * @property {string|null|undefined} selected_options 10777 * 10778 * ConfirmationPopup props 10779 * @property {string|undefined} align 10780 * @property {string|undefined} checkout 10781 * @property {string|undefined} product_id 10782 * @property {string|undefined} product_sku 10783 * @property {string|undefined} related 10784 * @property {number|undefined} timer 10785 * 10786 * Redirect props 10787 * @property {string|undefined} redirect url to redirect 10788 */ 10789 10790 let globalActionName; 10791 10792 const addToCartAction = ({detail: form}) => { 10793 const isProductForm = form.id === 'product_addtocart_form'; 10794 10795 globalActionName = getCartAction(form); 10796 10797 if (isProductForm) { 10798 window.dispatchEvent(new CustomEvent('amcart-trigger-grouped-form-validate')); 10799 10800 if (form.checkValidity()) { 10801 performRequest(form, isProductForm); 10802 } 10803 } else { 10804 performRequest(form, isProductForm) 10805 } 10806 }; 10807 10808 const performRequest = function (form, isProductForm) { 10809 const cartUrl = `${BASE_URL}amasty_cart/cart/${getCartAction(form)}`; 10810 const isProductPage = document.body.classList.contains('catalog-product-view'); 10811 const headers = { 10812 'content-type': 'application/x-www-form-urlencoded; charset=UTF-8' 10813 }; 10814 const formData = new FormData(form); 10815 formData.set('product_page', isProductPage && isProductForm); 10816 formData.set('last_category_id', hyva.getBrowserStorage().getItem('last_category_id')); 10817 formData.set('form_key', hyva.getFormKey()); 10818 !formData.get('id') && formData.get('item') && formData.set('id', formData.get('item')); 10819 10820 const body = new URLSearchParams(formData); 10821 10822 window.dispatchEvent(new CustomEvent('amcart-loading-start')); 10823 window.dispatchEvent(new CustomEvent('amcart-add-start', { detail: form })); 10824 10825 fetch(cartUrl, {headers: {...headers}, body: body, method: 'POST'}) 10826 .then(response => response.json()) 10827 .then((result) => { 10828 resultActionResolver.resolve(result); 10829 const relatedProductDialog = document.querySelector('.related-product-dialog-wrapper'); 10830 const cartLink = document.getElementById('menu-cart-icon'); 10831 const isRelatedProductForm = form.closest('.related-products-pdp-section'); 10832 if (relatedProductDialog && !isRelatedProductForm) { 10833 setTimeout(() => { 10834 window.dispatchEvent( 10835 new CustomEvent('hyva-modal-show', { detail: { dialog: 'related-product-slider-dialog' } }) 10836 ); 10837 }, 2000); 10838 } else if (cartLink) { 10839 cartLink.click(); 10840 } 10841 }).catch((error) => { 10842 typeof window.dispatchMessages !== "undefined" && window.dispatchMessages( 10843 [{ 10844 type: "error", 10845 text: error 10846 }], 5000 10847 ); 10848 }).finally(() => { 10849 window.dispatchEvent(new CustomEvent('amcart-loading-stop')); 10850 }); 10851 }; 10852 10853 const getCartAction = function(formNode) { 10854 return formNode.action.includes('updateItemOptions') 10855 ? `UpdateItemOptions` 10856 : 'add'; 10857 }; 10858 10859 const resultActionResolver = { 10860 /** 10861 * @param {CartResponse} result 10862 */ 10863 resolve: function (result) { 10864 10865 if(typeof result.is_add_to_cart != "undefined"){ 10866 var msg = result.message; 10867 /*if($($.parseHTML(result.message)).filter(".message.error").text()){ 10868 msg = $($.parseHTML(result.message)).filter(".message.error").text(); 10869 }*/ 10870 10871 var parser = new DOMParser(); 10872 var doc = parser.parseFromString(result.message, 'text/html'); 10873 var errorMsg = doc.querySelector('.message.error') ? doc.querySelector('.message.error').textContent : ''; 10874 10875 if (errorMsg) { 10876 msg = errorMsg; 10877 } 10878 10879 window.dispatchMessages && window.dispatchMessages([{ 10880 type: 'error', 10881 text: msg 10882 }]); 10883 10884 } 10885 switch (true) { 10886 case !!result.popup_action: 10887 var parser = new DOMParser(); 10888 var doc = parser.parseFromString(result.message, 'text/html'); 10889 var errorMsg = doc.querySelector('.message.error') ? doc.querySelector('.message.error').textContent : ''; 10890 if (errorMsg) { 10891 msg = errorMsg; 10892 window.dispatchMessages && window.dispatchMessages([{ 10893 type: 'error', 10894 text: msg 10895 }]); 10896 } else { 10897 window.dispatchEvent(new CustomEvent(result.popup_action, {detail: result})); 10898 window.dispatchEvent(new CustomEvent('reload-customer-section-data')); 10899 10900 if (globalActionName == 'UpdateItemOptions') { 10901 window.location.href = `${BASE_URL}checkout/cart`; 10902 } 10903 } 10904 break; 10905 case !!result.redirect: 10906 window.location.href = result.redirect; 10907 break; 10908 } 10909 } 10910 } 10911 10912 if (document.body.classList.contains('catalog-category-view')) { 10913 hyva.getBrowserStorage().setItem( 10914 'last_category_id', 10915 '' 10916 ); 10917 } 10918 10919 const groupedOptions = document.querySelector('div[x-data^=initGroupedOptions]'); 10920 10921 if (!!groupedOptions) { 10922 groupedOptions.setAttribute('x-on:amcart-trigger-grouped-form-validate.window', 'validateForm()'); 10923 } 10924 10925 window.addEventListener('amcart-add-to-cart-action', addToCartAction); 10926 })(); 10927</script>
10927<script> 10928 (function () { 10929 'use strict'; 10930 10931 const addToQuoteButtonSelector = '.amquote-addto-button:not(.amasty-quote-login):not(.amasty-quote-link)'; 10932 document.querySelectorAll(addToQuoteButtonSelector).forEach((button) => { 10933 if (!button.hasAttribute('x-data')) { 10934 button.setAttribute('x-data', ''); 10935 } 10936 10937 button.removeAttribute('@click.prevent'); 10938 button.setAttribute( 10939 'x-on:click.prevent', 10940 '$dispatch(\'amcart-add-to-quote-action\', $el)'); 10941 }); 10942 })(); 10943</script>
vendor: 1 bytes, line 10943
10943
10944<script> 10945 (function () { 10946 'use strict'; 10947 10948 const addToQuoteAction = ({ detail: element }) => { 10949 const formNode = element.nodeName === 'FORM' 10950 ? element 10951 : element.form ?? element.closest('form'); 10952 10953 window.dispatchEvent(new CustomEvent('amcart-trigger-grouped-form-validate')); 10954 if (!formNode || !formNode.checkValidity()) { 10955 return formNode?.reportValidity(); 10956 } 10957 10958 performRequest(formNode); 10959 } 10960 10961 const performRequest = (formNode) => { 10962 const url = `${BASE_URL}amasty_cart/quote/${getAction(formNode)}`; 10963 const headers = { 10964 'content-type': 'application/x-www-form-urlencoded; charset=UTF-8' 10965 }; 10966 const formData = new FormData(formNode); 10967 const isProductPage = formNode.id === 'product_addtocart_form' 10968 && document.body.classList.contains('catalog-product-view'); 10969 formData.set('product_page', isProductPage); 10970 formData.set('last_category_id', hyva.getBrowserStorage().getItem('last_category_id')); 10971 formData.set('id', formData.get('item')); 10972 10973 window.dispatchEvent(new CustomEvent('amcart-loading-start')); 10974 window.dispatchEvent(new CustomEvent('amcart-add-start', { detail: formNode })); 10975 10976 fetch(url, { headers: { ...headers }, body: new URLSearchParams(formData), method: 'POST' }) 10977 .then(response => response.json()) 10978 .then((result) => { 10979 switch (true) { 10980 case !!result.popup_action: 10981 window.dispatchEvent(new CustomEvent(result.popup_action, { detail: result })); 10982 window.dispatchEvent(new CustomEvent('reload-customer-section-data')); 10983 break; 10984 case !!result.redirect: 10985 window.location.href = result.redirect; 10986 break; 10987 } 10988 }).catch((error) => { 10989 typeof window.dispatchMessages !== "undefined" && window.dispatchMessages( 10990 [{ 10991 type: "error", 10992 text: error 10993 }], 5000 10994 ); 10995 }).finally(() => { 10996 window.dispatchEvent(new CustomEvent('amcart-loading-stop')); 10997 }); 10998 }; 10999 11000 const getAction = (formNode) => { 11001 return (formNode.action.includes('amasty_quote') && formNode.action.includes('updateItemOptions')) 11002 ? 'updateItemOptions' 11003 : 'add'; 11004 }; 11005 11006 window.addEventListener('amcart-add-to-quote-action', addToQuoteAction); 11007 })(); 11008</script>
11008 11009 11010 11011
11011<script> 11012 'use strict'; 11013 11014 (function () { 11015 const initCompareFunctions = ['initCompareOnProductList', 'initCompareOnProductView']; 11016 11017 initCompareFunctions.forEach(compareFunction => { 11018 window[compareFunction] = function () { 11019 return { 11020 addToCompare: function (productId) { 11021 var loader=document.getElementById('loading'); 11022 console.log("11111111"); 11023 loader.style.display='block'; 11024 console.log("Add To compare amasty ajax cart qqqqq"); 11025 const postUrl = BASE_URL + 'catalog/product_compare/add/'; 11026 const headers = { 11027 "content-type": "application/x-www-form-urlencoded; charset=UTF-8", 11028 }; 11029 const body = new URLSearchParams({ 11030 form_key: hyva.getFormKey(), 11031 product: productId, 11032 is_ajax: true 11033 }); 11034 11035 fetch(postUrl, {headers: headers, body: body, method: 'POST'}).then((response) => { 11036 if (response.redirected) { 11037 window.location.href = response.url; 11038 } else if (response.ok) { 11039 window.dispatchEvent(new CustomEvent('reload-customer-section-data')); 11040 } else { 11041 typeof window.dispatchMessages !== "undefined" && window.dispatchMessages( 11042 [{ 11043 type: "warning", 11044 text: "Could not add item to the comparison list." 11045 }], 11046 1000 11047 ); 11048 } 11049 }).catch((error) => { 11050 typeof window.dispatchMessages !== "undefined" && window.dispatchMessages( 11051 [{ 11052 type: 'error', 11053 text: error 11054 }], 11055 1000 11056 ); 11057 }); 11058 } 11059 }; 11060 }; 11061 }); 11062 })(); 11063 </script>
11063 11064 11065 11066 11067 11068 11069<section x-data="{isLoading: false}" x-cloak 11070 @amcart-loading-start.window="isLoading = true" 11071 @amcart-loading-stop.window="isLoading = false"> 11072 <div class="flex flex-row justify-center items-center w-full h-full fixed select-none z-50" 11073 style="left: 50%;top: 50%;transform: translateX(-50%) translateY(-50%);background: rgba(255,255,255,0.7);" 11074 x-show="isLoading" 11075 x-transition:enter="ease-out duration-200" 11076 x-transition:enter-start="opacity-0" 11077 x-transition:enter-end="opacity-100" 11078 x-transition:leave="ease-in duration-200" 11079 x-transition:leave-start="opacity-100" 11080 x-transition:leave-end="opacity-0"> 11081 <!-- By Sam Herbert (@sherb), for everyone. More @ http://goo.gl/7AJzbL --> 11082<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 57 57" stroke="currentColor" class="text-primary" width="57" height="57" role="img"> 11083 <g fill="none" fill-rule="evenodd"> 11084 <g transform="translate(1 1)" stroke-width="2"> 11085 <circle cx="5" cy="50" r="5"> 11086 <animate attributeName="cy" begin="0s" dur="2.2s" values="50;5;50;50" calcMode="linear" repeatCount="indefinite"/> 11087 <animate attributeName="cx" begin="0s" dur="2.2s" values="5;27;49;5" calcMode="linear" repeatCount="indefinite"/> 11088 </circle> 11089 <circle cx="27" cy="5" r="5"> 11090 <animate attributeName="cy" begin="0s" dur="2.2s" from="5" to="5" values="5;50;50;5" calcMode="linear" repeatCount="indefinite"/> 11091 <animate attributeName="cx" begin="0s" dur="2.2s" from="27" to="27" values="27;49;5;27" calcMode="linear" repeatCount="indefinite"/> 11092 </circle> 11093 <circle cx="49" cy="50" r="5"> 11094 <animate attributeName="cy" begin="0s" dur="2.2s" values="50;50;5;50" calcMode="linear" repeatCount="indefinite"/> 11095 <animate attributeName="cx" from="49" to="49" begin="0s" dur="2.2s" values="49;5;27;49" calcMode="linear" repeatCount="indefinite"/> 11096 </circle> 11097 </g> 11098 </g> 11099<title>loader</title></svg> 11100 <div class="ml-10 text-primary text-xl"> 11101 Loading... </div> 11102</div> 11103</section> 11104 11105<div x-data="prDataPrivacyCheckboxDetailModalComponent.create()" 11106 @set-is-show-modal.window="isShowModal = $event.detail" 11107 @keydown.escape="closeModal" 11108> 11109 <div x-ref="pr-data-privacy-checkbox-detail" x-show="isShowModal" x-cloak> 11110 <div class="inset-0 fixed z-50"> 11111 <div class="relative z-10 max-w-3xl sm:my-10 ml-10 sm:mx-auto bg-white p-7 h-full max-h-full sm:h-auto sm:max-h-[90%] flex rounded shadow-md" 11112 x-show="isShowModal" x-transition 11113 > 11114 <span class="absolute top-3 right-3 cursor-pointer hover:text-gray-700 p-1" @click="closeModal"> 11115 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" width="20" height="20" role="img"> 11116 <path fill-rule="evenodd" d="M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z" clip-rule="evenodd"/> 11117<title>x</title></svg> 11118 </span> 11119 <template x-if="data.checkbox"> 11120 <div id="prgdpr-consent-checkboxes-modal" class="flex flex-col"> 11121 <div class="modal-header flex flex-col flex-shrink-0 flex-grow-0 mb-5"> 11122 <h2 class="text-xl lg:text-2lx pb-3 mb-1 border-container border-b" x-html="data.checkbox.policy.title"></h2> 11123 <a data-contentid="prgdpr-print-content" 11124 class="ml-auto text-sm text-blue-600 hover:underline" 11125 href="#" 11126 @click.prevent="print()" 11127 > 11128 Print </a> 11129 </div> 11130 <div class="prgdpr-consent-checkboxes-item-content overflow-y-auto mb-5" id="prgdpr-print-content"> 11131 <div class="prose max-w-none" x-html="data.checkbox.policy.content"></div> 11132 </div> 11133 <div class="modal-footer flex-shrink-0 flex-grow-0 pt-5 mt-auto border-container border-t"> 11134 <button type="button" 11135 class="action iagree btn btn-primary" 11136 @click="data.checkbox.checked = data.checkbox.isAlreadyChecked = true;
11136 $dispatch('prgdpr-checkbox-agree', 'checkbox' + data.checkbox.consentId); closeModal();" 11137 > 11138 I agree </button> 11139 </div> 11140 </div> 11141</template> 11142 </div> 11143 11144 <div class="bg-gray-800 opacity-50 absolute inset-0" @click="closeModal"></div> 11145 </div> 11146 </div> 11147</div> 11148
11149<script> 11150 const prDataPrivacyCheckboxDetailModalComponent = { 11151 data: null, 11152 isShowModal: false, 11153 create: function () { 11154 this.data = Alpine.reactive({checkbox: null}); 11155 return this; 11156 }, 11157 setCheckbox: function (checkbox) { 11158 this.data.checkbox = checkbox; 11159 }, 11160 showModal: function () { 11161 this.isShowModal = true; 11162 }, 11163 closeModal() { 11164 this.isShowModal = false; 11165 }, 11166 print: function () { 11167 let printWindow = window.open('', 'Print', 'height=600,width=800'); 11168 printWindow.document.write( 11169 `<html><head><title>${this.data.checkbox.policy.title}</title></head><body>${this.data.checkbox.policy.content}</body></html` 11170 ); 11171 printWindow.document.close(); 11172 printWindow.focus(); 11173 printWindow.print(); 11174 printWindow.onafterprint = function () { 11175 printWindow.close(); 11176 }; 11177 11178 return true; 11179 } 11180 }; 11181</script>
vendor: 1 bytes, line 11181
11181
11182<script type="application/ld+json">{"@context":"https:\/\/schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"item":{"@id":"https:\/\/www.flooringinc.com\/","name":"Home","@type":"WebPage"}}]}</script>
11182<script type="application/ld+json">{"@context":"https:\/\/schema.org","@type":"WebSite","url":"https:\/\/www.flooringinc.com\/","name":"flooringinc","potentialAction":{"@type":"SearchAction","target":"https:\/\/www.flooringinc.com\/catalogsearch\/result\/?q={search_term_string}","query-input":"required name=search_term_string"}}</script>
11182<script type="application/ld+json">{"@context":"https:\/\/schema.org","@type":"Organization","url":"https:\/\/www.flooringinc.com\/","name":"Flooring Inc","logo":" https:\/\/www.flooringinc.com\/media\/logo\/stores\/1\/logo.webp","description":"FlooringInc is your online flooring superstore. We offer wood, laminate, carpet, vinyl, specialty flooring and more.","contactPoint":[{"@type":"ContactPoint","telephone":"(866) 416-6388","contactType":"customer service"}],"address":{"addressCountry":"US","postalCode":"85043","addressRegion":"Arizona","addressLocality":"Phoenix","streetAddress":"2429 S. 51st Ave. Ste 10"},"sameAs":["https:\/\/www.facebook.com\/FlooringInc","https:\/\/www.instagram.com\/flooringinccom\/","https:\/\/www.youtube.com\/user\/flooringincvideos","https:\/\/www.pinterest.com\/flooringinc\/"]}</script>
11182
11182<script defer src="https://www.dwin1.com/94345.js"></script>
11182 11183
11184<script nonce="YjZ2ZWQxdzRxcTd4ZGJzcGk4OGs3aXlybTNkOWF6ODk="> 11185 (() => { 11186 const updateSettingBar = () => { 11187 const intervalId = setInterval(() => { 11188 const bar = document.getElementById('pr-cookie-setting-bar'); 11189 if (! bar) { 11190 return; 11191 } 11192 11193 clearInterval(intervalId); 11194 bar.querySelectorAll('input[type="checkbox"], button.action') 11195 .forEach(el => el.disabled = true); 11196 11197 let notification = '\u003Cdiv\u0020class\u003D\u0022pr\u002Dgpc\u002Dnotification\u002Dwrap\u0022\u003E\u000A\u0020\u0020\u0020\u0020\u003Ch2\u003EYour\u0020Opt\u002DOut\u0020Preferences\u0020Honored\u003C\u002Fh2\u003E\u000D\u000A\u003Cp\u003EYour\u0020browser\u0027s\u0020privacy\u0020preference\u0020\u0028GPC\u0029\u0020has\u0020been\u0020detected.\u003C\u002Fp\u003E\u000D\u000A\u003Cp\u0020class\u003D\u0022pr\u002Dgpc\u002Dtext\u002Dwith\u002Dicon\u0022\u003E\u003Cimg\u0020src\u003D\u0022https\u003A\u002F\u002Fwww.flooringinc.com\u002Fstatic\u002Fversion1789462004\u002Ffrontend\u002FDcw\u002Fhyvadesktop\u002Fen_US\u002FPlumrocket_GlobalPrivacyControl\u002Fimages\u002Fcheck_circle.png\u0022\u0020alt\u003D\u0022GPC\u0020Icon\u0022\u0020width\u003D\u002218\u0022\u0020height\u003D\u002218\u0022\u003E\u0020Non\u002Dessential\u0020cookies\u0020have\u0020been\u0020disabled\u0020on\u0020our\u0020website.\u003C\u002Fp\u003E\u000A\u003C\u002Fdiv\u003E'; 11198 bar.querySelector('.pr-cookie-description') 11199 .insertAdjacentHTML('beforebegin', notification); 11200 }, 400); 11201 } 11202 11203 prGlobalPrivacyControlApi.signalHandlers.addHandler(updateSettingBar); 11204 })(); 11205</script>
vendor: 1 bytes, line 11205
11205
11206<script type="application/json" id="default-section-data"> 11207 {"messages":[],"customer":[],"compare-products":[],"last-ordered-items":[],"requisition":[],"cart":[],"directory-data":{"US":{"name":"United States","regions":{"3":{"code":"AL","name":"Alabama"},"6":{"code":"AK","name":"Alaska"},"9":{"code":"AS","name":"American Samoa"},"12":{"code":"AZ","name":"Arizona"},"15":{"code":"AR","name":"Arkansas"},"18":{"code":"AE","name":"Armed Forces Africa"},"21":{"code":"AA","name":"Armed Forces Americas"},"24":{"code":"AE","name":"Armed Forces Canada"},"27":{"code":"AE","name":"Armed Forces Europe"},"30":{"code":"AE","name":"Armed Forces Middle East"},"33":{"code":"AP","name":"Armed Forces Pacific"},"36":{"code":"CA","name":"California"},"39":{"code":"CO","name":"Colorado"},"42":{"code":"CT","name":"Connecticut"},"45":{"code":"DE","name":"Delaware"},"48":{"code":"DC","name":"District of Columbia"},"51":{"code":"FM","name":"Federated States Of Micronesia"},"54":{"code":"FL","name":"Florida"},"57":{"code":"GA","name":"Georgia"},"60":{"code":"GU","name":"Guam"},"63":{"code":"HI","name":"Hawaii"},"66":{"code":"ID","name":"Idaho"},"69":{"code":"IL","name":"Illinois"},"72":{"code":"IN","name":"Indiana"},"75":{"code":"IA","name":"Iowa"},"78":{"code":"KS","name":"Kansas"},"81":{"code":"KY","name":"Kentucky"},"84":{"code":"LA","name":"Louisiana"},"87":{"code":"ME","name":"Maine"},"90":{"code":"MH","name":"Marshall Islands"},"93":{"code":"MD","name":"Maryland"},"96":{"code":"MA","name":"Massachusetts"},"99":{"code":"MI","name":"Michigan"},"102":{"code":"MN","name":"Minnesota"},"105":{"code":"MS","name":"Mississippi"},"108":{"code":"MO","name":"Missouri"},"111":{"code":"MT","name":"Montana"},"114":{"code":"NE","name":"Nebraska"},"117":{"code":"NV","name":"Nevada"},"120":{"code":"NH","name":"New Hampshire"},"123":{"code":"NJ","name":"New Jersey"},"126":{"code":"NM","name":"New Mexico"},"129":{"code":"NY","name":"New York"},"132":{"code":"NC","name":"North Carolina"},"135":{"code":"ND","name":"North Dakota"},"138":{"code":"MP","name":"Northern Mariana Islands"},"141":{"code":"OH","name":"Ohio"},"144":{"code":"OK","name":"Oklahoma"},"147":{"code":"OR","name":"Oregon"},"150":{"code":"PW","name":"Palau"},"153":{"code":"PA","name":"Pennsylvania"},"156":{"code":"PR","name":"Puerto Rico"},"159":{"code":"RI","name":"Rhode Island"},"162":{"code":"SC","name":"South Carolina"},"165":{"code":"SD","name":"South Dakota"},"168":{"code":"TN","name":"Tennessee"},"171":{"code":"TX","name":"Texas"},"174":{"code":"UT","name":"Utah"},"177":{"code":"VT","name":"Vermont"},"180":{"code":"VI","name":"Virgin Islands"},"183":{"code":"VA","name":"Virginia"},"186":{"code":"WA","name":"Washington"},"189":{"code":"WV","name":"West Virginia"},"192":{"code":"WI","name":"Wisconsin"},"195":{"code":"WY","name":"Wyoming"}}},"data_id":1790344707},"captcha":[],"wishlist":{"items":[]},"company":[],"company_authorization":[],"negotiable_quote":[],"instant-purchase":[],"loggedAsCustomer":[],"multiplewishlist":[],"purchase_order":[],"persistent":[],"review":[],"amfacebook-pixel":[],"faq":[],"quotecart":[],"sociallogin":[],"data_privacy":[],"ccpa_data":[],"wp_ga4":[],"recently_viewed_product":[],"recently_compared_product":[],"product_data_storage":[],"paypal-billing-agreement":[]}</script>
11207 11208</div><div x-data="fpcTracking()" x-init="sendRequest()"></div>
11209<script> 11210 function fpcTracking() { 11211 return { 11212 url: 'https://www.flooringinc.com/amasty_fpc/reports/', 11213 sendRequest() { 11214 const ttfb = window.performance.timing.responseStart - window.performance.timing.fetchStart; 11215 fetch(`${this.url}?` + new URLSearchParams({ ttfb }), { 11216 method: 'GET', 11217 headers: { 11218 'Content-Type': 'application/json', 11219 'X-Requested-With': 'XMLHttpRequest', 11220 } 11221 }) 11222 } 11223 } 11224 } 11225</script>
11225 11226<!-- amasty-fpc-status -->
11226<script> 11227 const wpGA4ServerSide = { 11228 pushClick: function(productId, listId, listName, index, elm) { 11229 if (elm && elm.hasAttribute('onclick')) { 11230 var requestUrl = 'https://www.flooringinc.com/weltpixel_ga4/track/productclick/'; 11231 if (productId && listId && listName) { 11232 fetch(requestUrl, { 11233 method: 'POST', 11234 headers: { 11235 'Content-Type': 'application/x-www-form-urlencoded', 11236 'X-Requested-With': 'XMLHttpRequest' 11237 }, 11238 body: 'product_id=' + productId + '&list_id=' + listId +'&list_name=' + listName + '&index=' + index 11239 }) 11240 .then(res => res.json()) 11241 .then(data => { 11242 }); 11243 } 11244 } 11245 }, 11246 11247 pushViewItemList: function(hashId) { 11248 if (hashId && document.getElementById('wp_ga4_server_side_view_item_list')) { 11249 var requestUrl = 'https://www.flooringinc.com/weltpixel_ga4/track/viewitemlist/'; 11250 fetch(requestUrl, { 11251 method: 'POST', 11252 headers: { 11253 'Content-Type': 'application/x-www-form-urlencoded', 11254 'X-Requested-With': 'XMLHttpRequest' 11255 }, 11256 11257 body: 'hash_id='+hashId 11258 }) 11259 .then(res => res.json()) 11260 .then(data => { 11261 }); 11262 } 11263 } 11264 }; 11265 11266 window.wpGA4ServerSide = wpGA4ServerSide; 11267 11268 let allowGa4Services = window.ga4AllowServices ?? true; 11269 11270 if (allowGa4Services) { 11271 const {fetch: originalFetch} = window; 11272 window.fetch = async (...args) => { 11273 let [resource, config] = args; 11274 let response = await originalFetch(resource, config); 11275 11276 if ((typeof resource == 'string') && resource.search('/customer\/section\/load/') > 0) { 11277 response.clone().json().then(data => { 11278 if (data.wp_ga4.datalayer) { 11279 const dataLayerData = JSON.parse(data.wp_ga4.datalayer); 11280 dataLayerData.forEach((dataLayerItem) => { 11281 window.dataLayer.push({ecommerce: null}); 11282 window.dataLayer.push(dataLayerItem); 11283 }); 11284 } 11285 }); 11286 } 11287 return response; 11288 }; 11289 } 11290 11291 </script>
11291 11292
11292<script> 11293 let allowGa4ServicesMeta = window.ga4AllowServices ?? true; 11294 if (allowGa4ServicesMeta) { 11295 const {fetch: originalFetchMeta} = window; 11296 window.fetch = async (...args) => { 11297 let [resource, config] = args; 11298 let response = await originalFetchMeta(resource, config); 11299 11300 if ((typeof resource == 'string') && resource.search('/customer\/section\/load/') > 0) { 11301 response.clone().json().then(data => { 11302 if (data.wp_ga4 && data.wp_ga4.metapixel) { 11303 const metaPixel = JSON.parse(data.wp_ga4.metapixel); 11304 for (index in metaPixel) { 11305 fbq(metaPixel[index].track, metaPixel[index].eventName, metaPixel[index].eventData); 11306 } 11307 } 11308 }); 11309 } 11310 return response; 11311 }; 11312 } 11313 </script>
vendor: 1 bytes, line 11313
11313
11314<script type="text/javascript">window.NREUM||(NREUM={});NREUM.info={"beacon":"bam.nr-data.net","licenseKey":"NRJS-d3390ca2649c82069a5","applicationID":"1112615138","transactionName":"YwMDN0NXChZSVRBZWlpJIABFXwsLHFUJQxpEBwYGHkANAEQ=","queueTime":0,"applicationTime":689,"atts":"T0QAQQtNGRg=","errorBeacon":"bam.nr-data.net","agent":""}</script>
11314</body> 11315</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.