{"page":{"id":89715146834,"body_html":"\u003cstyle\u003e\n    #form-gdpr-edit-account-request,\n    #form-gdpr-requests-request,\n    #form-gdpr-personal-information-request,\n    #form-gdpr-orders-request,\n    #form-gdpr-personal-data-report-request,\n    #form-gdpr-delete-account-request {\n        display: none;\n    }\n    #gdpr_page button {\n      background-color: transparent;\n      border: 0;\n      border-bottom: 1px solid black;\n      padding: 0px;\n    }\n\n    \/* Modal background *\/\n    #data-verification-background {\n      display: none;\n      position: fixed;\n      z-index: 1;\n      padding-top: calc(50vh - 83px);\n      left: 0;\n      top: 0;\n      width: 100%;\n      height: 100%;\n      overflow: auto;\n      background-color: rgb(0,0,0);\n      background-color: rgba(0,0,0,0.4);\n      opacity: unset;\n      z-index: 9999;\n    }\n    \/* Modal Content *\/\n    #data-verification-modal {\n      background-color: #fefefe;\n      margin: auto;\n      padding: 16px;\n      border: 1px solid #888;\n      width: 38%;\n      opacity: 1;\n    }\n    \/* Modal Close Button *\/\n    .data-verification-close {\n      color: #aaaaaa;\n      float: right;\n      font-size: 28px;\n      font-weight: bold;\n      line-height: 17px;\n      background-color: transparent;\n      border: 0px;\n      padding: 0px;\n    }\n    .data-verification-close:hover {\n      color: #000;\n      text-decoration: none;\n      cursor: pointer;\n    }\n    \/* Checkbox Text *\/\n    #data-verification-container p {\n      display: inline-block;\n      padding: 0;\n      margin: 0;\n      line-height: 24px;\n      padding-left: 10px;\n      vertical-align: top;\n      width: calc(100% - 45px);\n    }\n    #data-verification-container a, #data-verification-container a:hover{\n      text-decoration: underline!important;\n      color: #4285f4;\n    }\n    #data-verification-container input {\n      opacity: 0;\n      width: 0;\n      height: 0;\n      margin: 0;\n      padding: 0;\n    }\n    \/* Checkbox Icon *\/\n    #data-verification-icon {\n      cursor: pointer;\n      position: relative;\n      margin: auto;\n      width: 18px;\n      height: 18px;\n      -webkit-tap-highlight-color: transparent;\n      transform: translate3d(0, 0, 0);\n      margin-top: 2px;\n    }\n    #data-verification-icon:before {\n      content: \"\";\n      position: absolute;\n      top: -7px;\n      left: -7px;\n      width: 32px;\n      height: 32px;\n      border-radius: 50%;\n      background: rgba(34,50,84,0.03);\n      opacity: 0;\n      transition: opacity 0.2s ease;\n    }\n    #data-verification-icon svg {\n      position: relative;\n      z-index: 1;\n      fill: none;\n      stroke-linecap: round;\n      stroke-linejoin: round;\n      stroke: #c8ccd4;\n      stroke-width: 1.5;\n      transform: translate3d(0, 0, 0);\n      transition: all 0.2s ease;\n    }\n    #data-verification-icon svg path {\n      stroke-dasharray: 60;\n      stroke-dashoffset: 0;\n    }\n    #data-verification-icon svg polyline {\n      stroke-dasharray: 22;\n      stroke-dashoffset: 66;\n    }\n    #data-verification-icon:hover:before {\n      opacity: 1;\n    }\n    #data-verification-container:hover #data-verification-icon svg {\n      stroke: #4285f4;\n    }\n    #data-verification-icon.clicked svg {\n      stroke: #4285f4;\n    }\n    #data-verification-icon.clicked svg path {\n      stroke-dashoffset: 60;\n      transition: all 0.3s linear;\n    }\n    #data-verification-icon.clicked svg polyline {\n      stroke-dashoffset: 42;\n      transition: all 0.2s linear;\n      transition-delay: 0.15s;\n    }\n\n    \/* Accessibility design *\/\n    #data-verification-icon:focus, .data-verification-close:focus, #data-verification-container input:focus ~ #data-verification-icon svg, #data-verification-container a:focus {\n      box-shadow: 0 0 0 3px rgba(21, 156, 228, 0.4);\n      transition: all 0.3s ease;\n      outline: none;\n      transform: scale(1.06);\n    }\n\n    \/* Loading Element *\/\n    .loading {\n        display: none;\n        top:50vh;\n        left:50vw;\n        position:fixed;\n    }\n    .loading:not(:required):after {\n      content: '';\n      display: block;\n      font-size: 10px;\n      width: 1em;\n      height: 1em;\n      margin-top: -0.5em;\n      -webkit-animation: spinner 1500ms infinite linear;\n      -moz-animation: spinner 1500ms infinite linear;\n      -ms-animation: spinner 1500ms infinite linear;\n      -o-animation: spinner 1500ms infinite linear;\n      animation: spinner 1500ms infinite linear;\n      border-radius: 0.5em;\n      -webkit-box-shadow: rgba(255,255,255, 1) 1.5em 0 0 0, rgba(255,255,255, 1) 1.1em 1.1em 0 0, rgba(255,255,255, 1) 0 1.5em 0 0, rgba(255,255,255, 1) -1.1em 1.1em 0 0, rgba(255,255,255, 1) -1.5em 0 0 0, rgba(255,255,255, 1) -1.1em -1.1em 0 0, rgba(255,255,255, 1) 0 -1.5em 0 0, rgba(255,255,255, 1) 1.1em -1.1em 0 0;\n      box-shadow: rgba(255,255,255, 1) 1.5em 0 0 0, rgba(255,255,255, 1) 1.1em 1.1em 0 0, rgba(255,255,255, 1) 0 1.5em 0 0, rgba(255,255,255, 1) -1.1em 1.1em 0 0, rgba(255,255,255, 1) -1.5em 0 0 0, rgba(255,255,255, 1) -1.1em -1.1em 0 0, rgba(255,255,255, 1) 0 -1.5em 0 0, rgba(255,255,255, 1) 1.1em -1.1em 0 0;\n    }\n    #gdpr_page .list-unstyled li button {\n      cursor: pointer;\n    }\n    .show-isense {\n      transition: opacity 400ms !important;\n    }\n    .hide-isense {\n      opacity: 0 !important;\n      transition: 0.4s ease-out;\n    }\n\n    \/* Modal changes on mobile resolution*\/\n    @media only screen and (max-width: 600px) {\n      #data-verification-modal {\n        width: 90%;\n      }\n    }\n\n    \/* Animation *\/\n    @-webkit-keyframes spinner {\n      0% {\n        -webkit-transform: rotate(0deg);\n        -moz-transform: rotate(0deg);\n        -ms-transform: rotate(0deg);\n        -o-transform: rotate(0deg);\n        transform: rotate(0deg);\n      }\n      100% {\n        -webkit-transform: rotate(360deg);\n        -moz-transform: rotate(360deg);\n        -ms-transform: rotate(360deg);\n        -o-transform: rotate(360deg);\n        transform: rotate(360deg);\n      }\n    }\n    @-moz-keyframes spinner {\n      0% {\n        -webkit-transform: rotate(0deg);\n        -moz-transform: rotate(0deg);\n        -ms-transform: rotate(0deg);\n        -o-transform: rotate(0deg);\n        transform: rotate(0deg);\n      }\n      100% {\n        -webkit-transform: rotate(360deg);\n        -moz-transform: rotate(360deg);\n        -ms-transform: rotate(360deg);\n        -o-transform: rotate(360deg);\n        transform: rotate(360deg);\n      }\n    }\n    @-o-keyframes spinner {\n      0% {\n        -webkit-transform: rotate(0deg);\n        -moz-transform: rotate(0deg);\n        -ms-transform: rotate(0deg);\n        -o-transform: rotate(0deg);\n        transform: rotate(0deg);\n      }\n      100% {\n        -webkit-transform: rotate(360deg);\n        -moz-transform: rotate(360deg);\n        -ms-transform: rotate(360deg);\n        -o-transform: rotate(360deg);\n        transform: rotate(360deg);\n      }\n    }\n    @keyframes spinner {\n      0% {\n        -webkit-transform: rotate(0deg);\n        -moz-transform: rotate(0deg);\n        -ms-transform: rotate(0deg);\n        -o-transform: rotate(0deg);\n        transform: rotate(0deg);\n      }\n      100% {\n        -webkit-transform: rotate(360deg);\n        -moz-transform: rotate(360deg);\n        -ms-transform: rotate(360deg);\n        -o-transform: rotate(360deg);\n        transform: rotate(360deg);\n      }\n    }\n\u003c\/style\u003e\n\u003cdiv id=\"gdpr_page\" class=\"col-sm-12\"\u003e\n    \u003cdiv\u003e\n    When you submit a Data Subject Access Request (DSAR) through our Compliance page, our compliance provider, Consentmo, processes your IP address and email solely to fulfill your request. For more details, see \u003ca href=\"https:\/\/www.consentmo.com\/end-user-dpa\" target=\"_blank\" aria-label=\"END-USER DATA PROCESSING ADDENDUM TO (opens in a new tab)\"\u003e Consentmo’s Data Processing Policy\u003c\/a\u003e\u003ca\u003e.\n    \u003c\/a\u003e\n\u003c\/div\u003e\n    \u003ch2\u003eData Rectification\u003c\/h2\u003e\n    \u003cp\u003eIf your account data is inaccurate, update or correct it using the link below.\u003c\/p\u003e\n    \u003cul id=\"gdpr_rectification_compliance_requests\" class=\"gdpr-compliance-requests list-unstyled\"\u003e\n        \u003cli\u003e\u003cbutton id=\"btn-gdpr-edit-account-request\" aria-label=\"edit your account information\" aria-controls=\"form-gdpr-edit-account-request\" aria-expanded=\"false\"\u003eEdit your account information\u003c\/button\u003e\u003c\/li\u003e\n    \u003c\/ul\u003e\n    \u003cdiv id=\"form-gdpr-edit-account-request\" class=\"form-gdpr-request\"\u003e\n        \u003cform\u003e\n            \u003clabel for=\"form-gdpr-edit-account-request-email\"\u003eEnter your email to confirm your identity\u003c\/label\u003e\n            \u003cinput type=\"email\" name=\"email\" id=\"form-gdpr-edit-account-request-email\" placeholder=\"example@email.com\" autocomplete=\"email\" autocorrect=\"off\" autocapitalize=\"off\" autofocus=\"\"\u003e\n            \u003cinput type=\"submit\" id=\"form-gdpr-edit-account-request-submit\" class=\"btn\" value=\"Submit\"\u003e\n        \u003c\/form\u003e\n    \u003c\/div\u003e\n    \u003ch2\u003eData Portability\u003c\/h2\u003e\n    \u003cp\u003eYou can use the links below to download all the data we store and use for a better experience in our store.\u003c\/p\u003e\n    \u003cul id=\"gdpr_portability_compliance_requests\" class=\"gdpr-compliance-requests list-unstyled\"\u003e\n      \u003cli\u003e\n        \u003cbutton id=\"btn-gdpr-requests-request\" aria-label=\"GDPR requests\" aria-controls=\"form-gdpr-requests-request\" aria-expanded=\"false\"\u003eGDPR Data requests\u003c\/button\u003e\n        \u003cdiv id=\"form-gdpr-requests-request\" class=\"form-gdpr-request\"\u003e\n            \u003cform\u003e\n                \u003clabel for=\"form-gdpr-requests-request-email\"\u003eEnter your email to confirm your identity\u003c\/label\u003e\n                \u003cinput type=\"email\" name=\"email\" id=\"form-gdpr-requests-request-email\" placeholder=\"example@email.com\" autocomplete=\"email\" autocorrect=\"off\" autocapitalize=\"off\" autofocus=\"\"\u003e\n                \u003cinput type=\"submit\" class=\"btn\" id=\"form-gdpr-requests-request-submit\" value=\"Submit\"\u003e\n            \u003c\/form\u003e\n        \u003c\/div\u003e\n      \u003c\/li\u003e\n      \u003cli\u003e\n        \u003cbutton id=\"btn-gdpr-personal-information-request\" aria-label=\"personal information\" aria-controls=\"form-gdpr-personal-information-request\" aria-expanded=\"false\"\u003ePersonal Information\u003c\/button\u003e\n        \u003cdiv id=\"form-gdpr-personal-information-request\" class=\"form-gdpr-request\"\u003e\n            \u003cform\u003e\n                \u003clabel for=\"form-gdpr-personal-information-request-email\"\u003eEnter your email to confirm your identity\u003c\/label\u003e\n                \u003cinput type=\"email\" name=\"email\" id=\"form-gdpr-personal-information-request-email\" placeholder=\"example@email.com\" autocomplete=\"email\" autocorrect=\"off\" autocapitalize=\"off\" autofocus=\"\"\u003e\n                \u003cinput type=\"submit\" class=\"btn\" id=\"form-gdpr-personal-information-request-submit\" value=\"Submit\"\u003e\n            \u003c\/form\u003e\n        \u003c\/div\u003e\n      \u003c\/li\u003e\n      \u003cli\u003e\n        \u003cbutton id=\"btn-gdpr-orders-request\" aria-label=\"orders\" aria-controls=\"form-gdpr-orders-request\" aria-expanded=\"false\"\u003eOrders Data\u003c\/button\u003e\n        \u003cdiv id=\"form-gdpr-orders-request\" class=\"form-gdpr-request\"\u003e\n            \u003cform\u003e\n                \u003clabel for=\"form-gdpr-orders-request-email\"\u003eEnter your email to confirm your identity\u003c\/label\u003e\n                \u003cinput type=\"email\" name=\"email\" id=\"form-gdpr-orders-request-email\" placeholder=\"example@email.com\" autocomplete=\"email\" autocorrect=\"off\" autocapitalize=\"off\" autofocus=\"\"\u003e\n                \u003cinput type=\"submit\" class=\"btn\" id=\"form-gdpr-orders-request-submit\" value=\"Submit\"\u003e\n            \u003c\/form\u003e\n        \u003c\/div\u003e\n      \u003c\/li\u003e\n    \u003c\/ul\u003e\n    \u003ch2\u003eAccess to Personal Data\u003c\/h2\u003e\n    \u003cp\u003eYou can use the link below to request a report which will contain all personal information that we store for you. We will respond within 30 days.\u003c\/p\u003e\n    \u003cul id=\"gdpr_personal_data_compliance_requests\" class=\"gdpr-compliance-requests list-unstyled\"\u003e\n      \u003cli\u003e\u003cbutton id=\"btn-gdpr-personal-data-report-request\" aria-label=\"request a report\" aria-controls=\"form-gdpr-personal-data-report-request\" aria-expanded=\"false\"\u003eRequest a report\u003c\/button\u003e\u003c\/li\u003e\n    \u003c\/ul\u003e\n    \u003cdiv id=\"form-gdpr-personal-data-report-request\" class=\"form-gdpr-request\"\u003e\n        \u003cform\u003e\n            \u003clabel for=\"form-gdpr-personal-data-report-request-email\"\u003eEnter your email to confirm your identity\u003c\/label\u003e\n            \u003cinput type=\"email\" name=\"email\" id=\"form-gdpr-personal-data-report-request-email\" placeholder=\"example@email.com\" autocomplete=\"email\" autocorrect=\"off\" autocapitalize=\"off\" autofocus=\"\"\u003e\n            \u003cinput type=\"submit\" class=\"btn\" id=\"form-gdpr-personal-data-report-request-submit\" value=\"Submit\"\u003e\n        \u003c\/form\u003e\n    \u003c\/div\u003e\n    \u003ch2\u003eRight to be Forgotten\u003c\/h2\u003e\n    \u003cp\u003eUse this option if you want to remove your personal and other data from our store. Keep in mind that this process will delete your account, so you will no longer be able to access or use it anymore.\u003c\/p\u003e\n    \u003cul id=\"gdpr_rtbf_compliance_requests\" class=\"gdpr-compliance-requests list-unstyled\"\u003e\n      \u003cli\u003e\u003cbutton id=\"btn-gdpr-delete-account-request\" aria-label=\"request personal data deletion\" aria-controls=\"form-gdpr-delete-account-request\" aria-expanded=\"false\"\u003eRequest personal data deletion\u003c\/button\u003e\u003c\/li\u003e\n    \u003c\/ul\u003e\n    \u003cdiv id=\"form-gdpr-delete-account-request\" class=\"form-gdpr-request\"\u003e\n        \u003cform\u003e\n            \u003clabel for=\"form-gdpr-delete-account-request-email\"\u003eEnter your email to confirm your identity\u003c\/label\u003e\n            \u003cinput type=\"email\" name=\"email\" id=\"form-gdpr-delete-account-request-email\" placeholder=\"example@email.com\" autocomplete=\"email\" autocorrect=\"off\" autocapitalize=\"off\" autofocus=\"\"\u003e\n            \u003cinput type=\"submit\" class=\"btn\" id=\"form-gdpr-delete-account-request-submit\" value=\"Submit\"\u003e\n        \u003c\/form\u003e\n    \u003c\/div\u003e\n    \u003ch2\u003eRight to Restrict Processing\u003c\/h2\u003e\n    \u003cp\u003eYou can request to limit or temporarily stop the processing of your personal data under certain circumstances. Please contact us at jay.byers@linen-sandhutch.shop for assistance.\u003c\/p\u003e\n    \u003ch2\u003eRight to Object\u003c\/h2\u003e\n    \u003cp\u003eYou have the right to object to certain types of data processing, including direct marketing or processing based on legitimate interests. Contact us to submit your objection at jay.byers@linen-sandhutch.shop.\u003c\/p\u003e\n    \u003cdiv id=\"form-gdpr-contact-information\" style=\"display: none;\"\u003e\n      \u003ch2\u003eContact Information\u003c\/h2\u003e\n      \u003cp\u003eFor questions regarding your personal data or privacy rights, contact our Data Protection Officer (DPO) at:\u003c\/p\u003e\n      \u003cp\u003e\u003cstrong\u003eEmail:\u003c\/strong\u003e jay.byers@linen-sandhutch.shop\u003c\/p\u003e\n      \u003cp\u003e\u003cstrong\u003eAddress:\u003c\/strong\u003e {company_address}\u003c\/p\u003e\n    \u003c\/div\u003e\n    \u003ch2\u003eRight to Lodge a Complaint\u003c\/h2\u003e\n    \u003cp\u003eIf you believe we have not addressed your concerns, you have the right to lodge a complaint with your national data protection authority.\u003c\/p\u003e\n\u003c\/div\u003e\n\n\u003cscript\u003e\n\n     \/* SLIDE UP *\/\n     let slideUp = (target, duration=500) =\u003e {\n        target.style.transitionProperty = 'height, margin, padding';\n        target.style.transitionDuration = duration + 'ms';\n        target.style.boxSizing = 'border-box';\n        target.style.height = target.offsetHeight + 'px';\n        target.offsetHeight;\n        target.style.overflow = 'hidden';\n        target.style.height = 0;\n        target.style.paddingTop = 0;\n        target.style.paddingBottom = 0;\n        target.style.marginTop = 0;\n        target.style.marginBottom = 0;\n        window.setTimeout( () =\u003e {\n            target.style.display = 'none';\n            target.style.removeProperty('height');\n            target.style.removeProperty('padding-top');\n            target.style.removeProperty('padding-bottom');\n            target.style.removeProperty('margin-top');\n            target.style.removeProperty('margin-bottom');\n            target.style.removeProperty('overflow');\n            target.style.removeProperty('transition-duration');\n            target.style.removeProperty('transition-property');\n        }, duration);\n    }\n\n    \/* SLIDE DOWN *\/\n    let slideDown = (target, duration=500) =\u003e {\n      setTimeout(function(){\n        target.style.removeProperty('display');\n        let display = window.getComputedStyle(target).display;\n        if (display === 'none') display = 'block';\n\n          target.style.display = display;\n          \n          let height = target.offsetHeight;\n          \n          target.style.overflow = 'hidden';\n          target.style.height = 0;\n          target.style.paddingTop = 0;\n          target.style.paddingBottom = 0;\n          target.style.marginTop = 0;\n          target.style.marginBottom = 0;\n          target.offsetHeight;\n          target.style.boxSizing = 'border-box';\n          target.style.transitionProperty = \"height, margin, padding\";\n          target.style.transitionDuration = duration + 'ms';\n          target.style.height = height + 'px';\n\n          target.style.removeProperty('padding-top');\n          target.style.removeProperty('padding-bottom');\n          target.style.removeProperty('margin-top');\n          target.style.removeProperty('margin-bottom');\n          \n          window.setTimeout( () =\u003e {\n              target.style.removeProperty('height');\n              target.style.removeProperty('overflow');\n              target.style.removeProperty('transition-duration');\n              target.style.removeProperty('transition-property');\n          }, duration);\n       }, 100)\n    }\n\n    \/* TOOGLE *\/\n    var slideToggle = (target, duration = 500) =\u003e {\n        if (window.getComputedStyle(target).display === 'none') {\n            return slideDown(target, duration);\n        } else {\n            return slideUp(target, duration);\n        }\n    }\n\n    \/* FADE *\/\n    var toggleFadeiSense = (elem, show) =\u003e {\n        if (show) {\n            elem.style.display = \"block\";\n            setTimeout(function(){\n                elem.classList.add('show-isense');\n                elem.classList.remove('hide-isense');\n            },20)\n        } else {\n            elem.classList.remove('show-isense');\n            elem.classList.add('hide-isense');\n            setTimeout(() =\u003e {\n                elem.style.display = 'none';\n            }, 400)\n        }\n    }\n\n    var gdprSlideUpAll = function() {\n        slideUp(document.querySelector('#form-gdpr-edit-account-request'), 100);\n        document.querySelector('#btn-gdpr-edit-account-request').setAttribute(\"aria-expanded\", \"false\");\n        slideUp(document.querySelector('#form-gdpr-requests-request'), 100);\n        document.querySelector('#btn-gdpr-requests-request').setAttribute(\"aria-expanded\", \"false\");\n        slideUp(document.querySelector('#form-gdpr-personal-information-request'), 100);\n        document.querySelector('#btn-gdpr-personal-information-request').setAttribute(\"aria-expanded\", \"false\");\n        slideUp(document.querySelector('#form-gdpr-orders-request'), 100);\n        document.querySelector('#btn-gdpr-orders-request').setAttribute(\"aria-expanded\", \"false\");\n        slideUp(document.querySelector('#form-gdpr-personal-data-report-request'), 100);\n        document.querySelector('#btn-gdpr-personal-data-report-request').setAttribute(\"aria-expanded\", \"false\");\n        slideUp(document.querySelector('#form-gdpr-delete-account-request'), 100);\n        document.querySelector('#btn-gdpr-delete-account-request').setAttribute(\"aria-expanded\", \"false\");\n        document.querySelector('#gdpr_page button').setAttribute(\"aria-expanded\", \"false\");\n    };\n\n    var email, type, consentGiven = false;\n    var verificationModalContent = '\u003cdiv id=\"data-verification-background\"\u003e\u003cdiv class=\"loading\"\u003e\u003c\/div\u003e\u003cdiv id=\"data-verification-modal\"\u003e\u003cbutton class=\"data-verification-close\" aria-label=\"Close\"\u003e\u0026times;\u003c\/button\u003e\u003cdiv id=\"data-verification-container\"\u003e\u003cinput type=\"checkbox\" aria-labelledby=\"gdpr-modal-container-text\"\u003e\u003clabel id=\"data-verification-icon\" aria-label=\"Data verification icon\"\u003e\u003csvg width=\"18px\" height=\"18px\" viewBox=\"0 0 18 18\"\u003e\u003cpath d=\"M1,9 L1,3.5 C1,2 2,1 3.5,1 L14.5,1 C16,1 17,2 17,3.5 L17,14.5 C17,16 16,17 14.5,17 L3.5,17 C2,17 1,16 1,14.5 L1,9 Z\"\u003e\u003c\/path\u003e\u003c\/path\u003e\u003cpolyline points=\"1 9 7 14 15 4\"\u003e\u003c\/polyline\u003e\u003c\/svg\u003e\u003c\/label\u003e\u003cp id=\"gdpr-modal-container-text\"\u003eI give my consent on collecting my email and IP address for the purpose of processing this request. For more check \u003ca href=\"https:\/\/www.consentmo.com\/privacy-policy-terms-of-service\/en\"  target=\"_blank\" aria-label=\"Privacy Policy \u0026amp Terms of Service link (opens in a new tab)\"\u003ePrivacy Policy \u0026amp Terms of Service\u003c\/a\u003e.\u003c\/p\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e';\n\n    var isEmailValid = function(email) {\n        let regex = \/^(([^\u003c\u003e()\\[\\]\\\\.,;:\\s@\"]+(\\.[^\u003c\u003e()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$\/;\n\n        if (email == '' || email == undefined) {\n            return false;\n        } else {\n            return regex.test(email);\n        }\n    }\n\n    var gdprSendRequest = function(callback) {\n        \n        fetch('https:\/\/www.cloudflare.com\/cdn-cgi\/trace', {\n            method: 'GET' ,\n            headers: {\n                'Content-Type': 'text\/plain',\n            },\n        })\n        .then(resp =\u003e resp.text())\n        .then(resp =\u003e {\n            if (!resp.error) {\n                let ipInfo = resp;\n\n                let formData = new FormData();\n\n                formData.append('shop', Shopify.shop);\n                formData.append('email', email);\n                formData.append('type', type);\n                formData.append('sourceOfRequest', 1);\n                formData.append('ipAddress', ipInfo);\n                formData.append('consentGiven', consentGiven);\n                formData.append('page', 'gdpr');\n                formData.append('lang', Shopify.locale ? Shopify.locale : '');\n                formData.append('gtranslateLang', isenseGDPR.Cookies.get('googtrans') ? isenseGDPR.Cookies.get('googtrans') : '');\n\n                fetch('https:\/\/gdpr.apps.isenselabs.com\/gdprRequests\/submitRequest', {\n                    method: 'POST',\n                    body: formData\n                })\n                .then(resp =\u003e resp.json())\n                .then(resp =\u003e {\n                    if (!resp.error) {\n                        gdprSlideUpAll();\n                        \n                        if (resp.message.length) {\n                          alert(resp.message);\n                        } else {\n                          alert('Your request has been submitted successfully. Please check your email for more information.');\n                        }\n                    } else {\n                        alert(resp.message);\n                    }\n                    if (typeof callback == 'function') {\n                        callback(resp);\n                    }\n                })\n                .catch(error =\u003e {\n                    alert(error.message);\n                })\n\n            } \n            else {\n                alert(resp.message);\n            }                        \n        })\n    }\n\n    \/\/Append modal to body, because otherwise it will not stay centered(even if position is fixed)\n    document.querySelector(\"body\").insertAdjacentHTML( 'beforeend', verificationModalContent);\n    \n    document.addEventListener(\"DOMContentLoaded\", function() {\n\n      \/\/ When the user clicks on \u003cspan\u003e (x), close the modal\n      document.querySelector('.data-verification-close').addEventListener('click', function(e) {\n          e.preventDefault();\n          closeVerificationModal();\n      });\n\n      document.querySelector('#data-verification-icon, #data-verification-container p').addEventListener('click', function(e) {\n          e.preventDefault();\n\n          \/\/ Detect a href's click, because it is overwritten.\n          if(e.target.tagName === \"A\") {\n            window.open(e.target.href, '_blank');\n            return;\n          }\n\n          document.querySelector('#data-verification-icon').classList.add(\"clicked\");\n          setTimeout(()=\u003e{\n            toggleFadeiSense(document.querySelector(\"#data-verification-modal\"), false);\n            document.querySelector('#data-verification-background .loading').style.display = 'inline-block';\n            consentGiven = true;\n            gdprSendRequest(function(resp) {\n                consentGiven = false;\n                closeVerificationModal();\n            });\n          }, 400);\n      });\n    });\n\n    function openVerificationModal(){\n        if(!isEmailValid(email)) {\n            alert('Invalid email');\n            return;\n        }   \n        toggleFadeiSense(document.querySelector(\"#data-verification-modal\"), true);\n        toggleFadeiSense(document.querySelector('#data-verification-background'), true);\n        document.querySelector('#data-verification-container input').focus();\n    }\n\n    function closeVerificationModal(){\n        toggleFadeiSense(document.querySelector(\"#data-verification-background\"), false);\n\n        document.querySelector('#data-verification-icon').classList.remove(\"clicked\");\n        document.querySelector('#data-verification-background .loading').style.display = 'none';\n\n        \/\/ Focus the button of the request type that was picked\n        let gdprForms = document.querySelectorAll('.form-gdpr-request');\n        gdprForms.forEach(function(gdprForm) {\n          if (gdprForm.style.display !== \"none\") {\n            let gdprFormLinks = gdprForm.previousElementSibling.querySelectorAll('li');\n            if (gdprFormLinks.length === 1) {\n              gdprFormLinks[0].querySelector('button').focus();\n            } else {\n              \/\/ Focus logic for Data Portability requests\n              gdprFormLinks = gdprForm.parentElement;\n              if (gdprFormLinks.nodeName === 'LI') {\n                gdprFormLinks.querySelector('button').focus();\n              }\n            }\n          }\n        });\n    }\n\n    document.querySelector('#btn-gdpr-edit-account-request').addEventListener('click', function(e) {\n        e.preventDefault();\n        let isExpanded = this.getAttribute('aria-expanded') === 'true' ? true : false;\n        gdprSlideUpAll();\n        if(!isExpanded) {\n          slideDown(document.querySelector('#form-gdpr-edit-account-request'), 200);\n          this.setAttribute(\"aria-expanded\", \"true\");\n        } else {\n          slideUp(document.querySelector('#form-gdpr-edit-account-request'), 200);\n          this.setAttribute(\"aria-expanded\", \"false\");\n        }\n    });\n\n    document.querySelector('#form-gdpr-edit-account-request-submit').addEventListener('click', function(e) {\n        e.preventDefault();\n        email = document.querySelector('#form-gdpr-edit-account-request-email').value;\n        type = 'customer\/edit';\n        gdprSendRequest(function(resp) {\n            consentGiven = true;\n        });\n    });\n\n    document.querySelector('#btn-gdpr-requests-request').addEventListener('click', function(e) {\n        e.preventDefault();\n        let isExpanded = this.getAttribute('aria-expanded') === 'true' ? true : false;\n        gdprSlideUpAll();\n        if(!isExpanded) {\n          slideDown(document.querySelector('#form-gdpr-requests-request'), 200);\n          this.setAttribute(\"aria-expanded\", \"true\");\n        } else {\n          slideUp(document.querySelector('#form-gdpr-requests-request'), 200);\n          this.setAttribute(\"aria-expanded\", \"false\");\n        }\n    });\n\n    document.querySelector('#form-gdpr-requests-request-submit').addEventListener('click', function(e) {\n        e.preventDefault();\n        email = document.querySelector('#form-gdpr-requests-request-email').value;\n        type = 'customer\/requests';\n        gdprSendRequest(function(resp) {\n            consentGiven = true;\n        });\n    });\n\n    document.querySelector('#btn-gdpr-personal-information-request').addEventListener('click', function(e) {\n        e.preventDefault();\n        let isExpanded = this.getAttribute('aria-expanded') === 'true' ? true : false;\n        gdprSlideUpAll();\n        if(!isExpanded) {\n          slideDown(document.querySelector('#form-gdpr-personal-information-request'), 200);\n          this.setAttribute(\"aria-expanded\", \"true\");\n        } else {\n          slideUp(document.querySelector('#form-gdpr-personal-information-request'), 200);\n          this.setAttribute(\"aria-expanded\", \"false\");\n        }\n    });\n\n    document.querySelector('#form-gdpr-personal-information-request-submit').addEventListener('click', function(e) {\n        e.preventDefault();\n        email = document.querySelector('#form-gdpr-personal-information-request-email').value;\n        type = 'customer\/personal_info';\n        gdprSendRequest(function(resp) {\n            consentGiven = true;\n        });\n    });\n\n    document.querySelector('#btn-gdpr-orders-request').addEventListener('click', function(e) {\n        e.preventDefault();\n        let isExpanded = this.getAttribute('aria-expanded') === 'true' ? true : false;\n        gdprSlideUpAll();\n        if(!isExpanded) {\n          slideDown(document.querySelector('#form-gdpr-orders-request'), 200);\n          this.setAttribute(\"aria-expanded\", \"true\");\n        } else {\n          slideUp(document.querySelector('#form-gdpr-orders-request'), 200);\n          this.setAttribute(\"aria-expanded\", \"false\");\n        }\n    });\n\n    document.querySelector('#form-gdpr-orders-request-submit').addEventListener('click', function(e) {\n        e.preventDefault();\n        email = document.querySelector('#form-gdpr-orders-request-email').value;\n        type = 'customer\/orders';\n        gdprSendRequest(function(resp) {\n            consentGiven = true;\n        });\n    });\n\n    document.querySelector('#btn-gdpr-personal-data-report-request').addEventListener('click', function(e) {\n        e.preventDefault();\n        let isExpanded = this.getAttribute('aria-expanded') === 'true' ? true : false;\n        gdprSlideUpAll();\n        if(!isExpanded) {\n          slideDown(document.querySelector('#form-gdpr-personal-data-report-request'), 200);\n          this.setAttribute(\"aria-expanded\", \"true\");\n        } else {\n          slideUp(document.querySelector('#form-gdpr-personal-data-report-request'), 200);\n          this.setAttribute(\"aria-expanded\", \"false\");\n        }\n    });\n\n    document.querySelector('#form-gdpr-personal-data-report-request-submit').addEventListener('click', function(e) {\n        e.preventDefault();\n        email = document.querySelector('#form-gdpr-personal-data-report-request-email').value;\n        type = 'customer\/report';\n        gdprSendRequest(function(resp) {\n            consentGiven = true;\n        });\n    });\n\n    document.querySelector('#btn-gdpr-delete-account-request').addEventListener('click', function(e) {\n        e.preventDefault();\n        let isExpanded = this.getAttribute('aria-expanded') === 'true' ? true : false;\n        gdprSlideUpAll();\n        if(!isExpanded) {\n          slideDown(document.querySelector('#form-gdpr-delete-account-request'), 200);\n          this.setAttribute(\"aria-expanded\", \"true\");\n        } else {\n          slideUp(document.querySelector('#form-gdpr-delete-account-request'), 200);\n          this.setAttribute(\"aria-expanded\", \"false\");\n        }\n    });\n\n    document.querySelector('#form-gdpr-delete-account-request-submit').addEventListener('click', function(e) {\n        e.preventDefault();\n        email = document.querySelector('#form-gdpr-delete-account-request-email').value;\n        type = 'customer\/delete';\n        gdprSendRequest(function(resp) {\n            consentGiven = true;\n        });\n    });\n\n    \/\/ Keyboard navigation in data verification modal for accesibility\n    document.querySelector('#data-verification-modal').addEventListener('keydown', function(e) {\n      let isTabPressed = e.keyCode === 9 || e.key === \"Tab\" || e.code === \"Tab\";\n      let isEscapePressed = e.keyCode === 27 || e.key === \"Escape\" || e.code === \"Escape\";\n      let isSpacePressed = event.keyCode === 32 || e.key === \" \" || event.code === \"Space\";\n      let isEnterPressed = event.keyCode === 13 || e.key === \"Enter\" || event.code === \"Enter\";\n      let dataVerificationCloseButton = document.querySelector('.data-verification-close');\n      let dataVerificationCheckbox = document.querySelector('#data-verification-container input');\n      let dataVerificationLink = document.querySelector('#data-verification-container a');\n      \/\/ This function saves us the trouble of calling e.preventDefault() after every focusing\n      let executeFocus = (focusElement) =\u003e {focusElement.focus();e.preventDefault();}\n\n      if (isEscapePressed) {\n        if (dataVerificationCloseButton) {\n          dataVerificationCloseButton.click();\n        }\n      }\n\n      if (isSpacePressed || isEnterPressed) {\n        if (document.activeElement === dataVerificationCheckbox) {\n          document.querySelector('#data-verification-container #data-verification-icon').click();\n        }\n      }\n\n      if (isTabPressed) {\n        if (e.shiftKey) {\n          if (dataVerificationCloseButton \u0026\u0026 document.activeElement === dataVerificationCloseButton) {\n            executeFocus(dataVerificationLink);\n          }\n        } else {\n          if (dataVerificationLink \u0026\u0026 document.activeElement === dataVerificationLink) {\n            executeFocus(dataVerificationCloseButton);\n          }\n        }\n      }\n  });\n\u003c\/script\u003e","created_at":"2025-05-05T11:32:08-04:00","published_at":"2025-05-05T11:32:08-04:00","updated_at":"2025-07-08T09:08:07-04:00","handle":"gdpr","title":"GDPR"}}