{"id":607750,"date":"2026-07-18T22:25:38","date_gmt":"2026-07-18T22:25:38","guid":{"rendered":"https:\/\/ruthsapparel.com\/?page_id=607750"},"modified":"2026-07-18T22:31:57","modified_gmt":"2026-07-18T22:31:57","slug":"sublimation","status":"publish","type":"page","link":"https:\/\/ruthsapparel.com\/index.php\/sublimation\/","title":{"rendered":"Sublimation"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"607750\" class=\"elementor elementor-607750\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-6f616e4 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"6f616e4\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-54e1f0c\" data-id=\"54e1f0c\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-62e1d9d elementor-widget elementor-widget-shortcode\" data-id=\"62e1d9d\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\">\n<style>\n    body,\n    html {\n        overflow: initial !important;\n        overscroll-behavior: initial !important;\n    }\n\n    .store-front {\n        height: auto !important;\n    }\n\n    #loaderAlign {\n        height: 100vh;\n        display: flex;\n        justify-content: center;\n        align-items: center;\n    }\n\n    .loader {\n        border: 16px solid #f3f3f3;\n        border-radius: 50%;\n        border-top: 16px solid #3498db;\n        width: 120px;\n        height: 120px;\n        -webkit-animation: spin 2s linear infinite;\n        \/* Safari *\/\n        animation: spin 2s linear infinite;\n    }\n\n    \/* Safari *\/\n    @-webkit-keyframes spin {\n        0% {\n            -webkit-transform: rotate(0deg);\n        }\n\n        100% {\n            -webkit-transform: rotate(360deg);\n        }\n    }\n\n    @keyframes spin {\n        0% {\n            transform: rotate(0deg);\n        }\n\n        100% {\n            transform: rotate(360deg);\n        }\n    }\n<\/style>\n\n<div id=\"loaderAlign\">\n    <div class=\"loader\"><\/div>\n<\/div>\n<div id=\"iframediv\" style=\"display: none;height: 2905px;min-height: 600px;background: #FFFFFF;\">\n    <iframe id=\"myIframe\" scrolling=\"no\" height=\"100%\" width=\"100%\">\n    <\/iframe>\n<\/div>\n\n<script>\n    var src = \"https:\/\/www.momentecbrands.com\/custom-sublimation\";\n\n    var asbFSPluginVersion = \"20260605-1300\";\n    var pageUrl = location.href;\n    var domainUrl = document.domain;\n    var pageQuery = null;\n    var iframeHasSameDomainUrl = true;\n\n    var sublimationUrl = 'custom-sublimation';\n    var headwearUrl = 'freestyle-custom-headwear';\n    var headwearCatUrl = 'headwear-custom';\n    var sublimationType = 'sublimation';\n    var headwearType = 'headwear';\n    var defaultSublimationCategoryMapper = 'freestyle sublimation';\n    var defaultSublimationCategory = 'default-page';\n    var defaultHeadwearCategoryMapper = 'custom headwear';\n    var defaultHeadwearCategory = 'custom-headwear';\n    var configurator = 'Configurator';\n    var capConfigurator = 'CapConfigurator';\n\n    var defaultConfig = {\n        'discount': 10,\n        'addlLeadTime': 2\n    };\n\n    var optionalConfig = {\n        'hideBackButton': false,\n        'customBackButtonLink': false,\n        'customArtWorkUpload': false,\n        'hideAddRush': false,\n        'hideLearnMore': false,\n        'hideShareButton': false,\n        'hideLeadTime': false,\n        'hideBrand': false,\n        'hideRosterTab': false,\n        'hideCategoryTitle': false,\n        'hideCategoryFilter': false,\n        'hideCategorySorting': false,\n        'customLabel': '',\n        'editCustomLabel': '',\n        'customSuccessLabel': '',\n        'builderV2': false,\n        'hideRibbon': false,\n        'hideHeader': true,\n        'hideProductBrand': false,\n        'savedContextPath': ''\n    };\n\n    if (optionalConfig.builderV2) {\n        sublimationUrl = 'builder-v2';\n        configurator = 'ConfiguratorV2';\n    }\n\n    var categoryArray = [\n        {\n            'catalogCategory': 'fanwear',\n            'discount': defaultConfig.discount,\n            'addlLeadTime': defaultConfig.addlLeadTime,\n            'type': sublimationType\n        },\n        {\n            'catalogCategory': 'lacrosse',\n            'discount': defaultConfig.discount,\n            'addlLeadTime': defaultConfig.addlLeadTime,\n            'type': sublimationType\n        },\n        {\n            'catalogCategory': 'baseball',\n            'discount': defaultConfig.discount,\n            'addlLeadTime': defaultConfig.addlLeadTime,\n            'type': sublimationType\n        },\n        {\n            'catalogCategory': 'basketball',\n            'discount': defaultConfig.discount,\n            'addlLeadTime': defaultConfig.addlLeadTime,\n            'type': sublimationType\n        },\n        {\n            'catalogCategory': 'soccer',\n            'discount': defaultConfig.discount,\n            'addlLeadTime': defaultConfig.addlLeadTime,\n            'type': sublimationType\n        },\n        {\n            'catalogCategory': 'football',\n            'discount': defaultConfig.discount,\n            'addlLeadTime': defaultConfig.addlLeadTime,\n            'type': sublimationType\n        },\n        {\n            'catalogCategory': 'fleece',\n            'discount': defaultConfig.discount,\n            'addlLeadTime': defaultConfig.addlLeadTime,\n            'type': sublimationType\n        },\n        {\n            'catalogCategory': 'track',\n            'discount': defaultConfig.discount,\n            'addlLeadTime': defaultConfig.addlLeadTime,\n            'type': sublimationType\n        },\n        {\n            'catalogCategory': 'training',\n            'discount': defaultConfig.discount,\n            'addlLeadTime': defaultConfig.addlLeadTime,\n            'type': sublimationType\n        },\n        {\n            'catalogCategory': 'softball',\n            'discount': defaultConfig.discount,\n            'addlLeadTime': defaultConfig.addlLeadTime,\n            'type': sublimationType\n        },\n        {\n            'catalogCategory': 'polo',\n            'discount': defaultConfig.discount,\n            'addlLeadTime': defaultConfig.addlLeadTime,\n            'type': sublimationType\n        },\n        {\n            'catalogCategory': 'training-turbo',\n            'discount': defaultConfig.discount,\n            'addlLeadTime': defaultConfig.addlLeadTime,\n            'type': sublimationType\n        },\n        {\n            'catalogCategory': 'volleyball',\n            'discount': defaultConfig.discount,\n            'addlLeadTime': defaultConfig.addlLeadTime,\n            'type': sublimationType\n        },\n        {\n            'catalogCategory': 'accessories',\n            'discount': defaultConfig.discount,\n            'addlLeadTime': defaultConfig.addlLeadTime,\n            'type': sublimationType\n        },\n        {\n            'catalogCategory': 'cheer',\n            'discount': defaultConfig.discount,\n            'addlLeadTime': defaultConfig.addlLeadTime,\n            'type': sublimationType\n        },\n        {\n            'catalogCategory': 'hockey',\n            'discount': defaultConfig.discount,\n            'addlLeadTime': defaultConfig.addlLeadTime,\n            'type': sublimationType\n        },\n        {\n            'catalogCategory': 'compression',\n            'discount': defaultConfig.discount,\n            'addlLeadTime': defaultConfig.addlLeadTime,\n            'type': sublimationType\n        },\n        {\n            'catalogCategory': 'semi-sublimated',\n            'discount': defaultConfig.discount,\n            'addlLeadTime': defaultConfig.addlLeadTime,\n            'type': sublimationType\n        },\n        {\n            'catalogCategory': 'pop-warner',\n            'discount': defaultConfig.discount,\n            'addlLeadTime': defaultConfig.addlLeadTime,\n            'type': sublimationType\n        },\n        {\n            'catalogCategory': 'off-field',\n            'discount': defaultConfig.discount,\n            'addlLeadTime': defaultConfig.addlLeadTime,\n            'type': sublimationType\n        },\n        {\n            'catalogCategory': 'uniforms',\n            'discount': defaultConfig.discount,\n            'addlLeadTime': defaultConfig.addlLeadTime,\n            'type': sublimationType\n        },\n        {\n            'catalogCategory': 'babe-ruth',\n            'discount': defaultConfig.discount,\n            'addlLeadTime': defaultConfig.addlLeadTime,\n            'type': sublimationType\n        },\n        {\n            'catalogCategory': defaultSublimationCategory,\n            'discount': defaultConfig.discount,\n            'addlLeadTime': defaultConfig.addlLeadTime,\n            'type': sublimationType\n        },\n        {\n            'catalogCategory': 'get-sublimation-design',\n            'discount': defaultConfig.discount,\n            'addlLeadTime': defaultConfig.addlLeadTime\n        },\n        {\n            'catalogCategory': 'search-display-view-tags',\n            'tag': 'search-display-view-tags',\n            'discount': defaultConfig.discount,\n            'addlLeadTime': defaultConfig.addlLeadTime\n        },\n        {\n            'catalogCategory': 'search-display-view-term',\n            'searchTerm': 'search-display-view-tags',\n            'discount': defaultConfig.discount,\n            'addlLeadTime': defaultConfig.addlLeadTime\n        },\n        {\n            'catalogCategory': defaultHeadwearCategory,\n            'discount': defaultConfig.discount,\n            'addlLeadTime': defaultConfig.addlLeadTime,\n            'type': headwearType\n        },\n        {\n            'catalogCategory': 'running-hats',\n            'discount': defaultConfig.discount,\n            'addlLeadTime': defaultConfig.addlLeadTime,\n            'type': headwearType\n        },\n        {\n            'catalogCategory': 'beanies-knits',\n            'discount': defaultConfig.discount,\n            'addlLeadTime': defaultConfig.addlLeadTime,\n            'type': headwearType\n        },\n        {\n            'catalogCategory': 'camo-hats',\n            'discount': defaultConfig.discount,\n            'addlLeadTime': defaultConfig.addlLeadTime,\n            'type': headwearType\n        },\n        {\n            'catalogCategory': 'on-field-hats',\n            'discount': defaultConfig.discount,\n            'addlLeadTime': defaultConfig.addlLeadTime,\n            'type': headwearType\n        },\n        {\n            'catalogCategory': 'lifestyle-outdoor-hats',\n            'discount': defaultConfig.discount,\n            'addlLeadTime': defaultConfig.addlLeadTime,\n            'type': headwearType\n        },\n        {\n            'catalogCategory': 'sideline-coaches-hats',\n            'discount': defaultConfig.discount,\n            'addlLeadTime': defaultConfig.addlLeadTime,\n            'type': headwearType\n        },\n        {\n            'catalogCategory': 'trucker-hats',\n            'discount': defaultConfig.discount,\n            'addlLeadTime': defaultConfig.addlLeadTime,\n            'type': headwearType\n        },\n        {\n            'catalogCategory': 'visors',\n            'discount': defaultConfig.discount,\n            'addlLeadTime': defaultConfig.addlLeadTime,\n            'type': headwearType\n        },\n        {\n            'catalogCategory': 'boonie-hats',\n            'discount': defaultConfig.discount,\n            'addlLeadTime': defaultConfig.addlLeadTime,\n            'type': headwearType\n        },\n        {\n            'catalogCategory': 'flexfit-hats',\n            'discount': defaultConfig.discount,\n            'addlLeadTime': defaultConfig.addlLeadTime,\n            'type': headwearType\n        },\n        {\n            'catalogCategory': 'snapback-hats',\n            'discount': defaultConfig.discount,\n            'addlLeadTime': defaultConfig.addlLeadTime,\n            'type': headwearType\n        },\n        {\n            'catalogCategory': 'structured-hats',\n            'discount': defaultConfig.discount,\n            'addlLeadTime': defaultConfig.addlLeadTime,\n            'type': headwearType\n        },\n        {\n            'catalogCategory': 'unstructured-hats',\n            'discount': defaultConfig.discount,\n            'addlLeadTime': defaultConfig.addlLeadTime,\n            'type': headwearType\n        },\n        {\n            'catalogCategory': 'styles',\n            'discount': defaultConfig.discount,\n            'addlLeadTime': defaultConfig.addlLeadTime,\n            'type': headwearType\n        },\n        {\n            'catalogCategory': 'features',\n            'discount': defaultConfig.discount,\n            'addlLeadTime': defaultConfig.addlLeadTime,\n            'type': headwearType\n        },\n        {\n            'catalogCategory': 'elite-series',\n            'discount': defaultConfig.discount,\n            'addlLeadTime': defaultConfig.addlLeadTime,\n            'type': headwearType\n        }\n    ];\n\n    var categoryShareMapper = {\n        'fanwear': 'fanwear',\n        'lacrosse': 'lacrosse',\n        'baseball': 'baseball',\n        'basketball': 'basketball',\n        'soccer': 'soccer',\n        'football': 'football',\n        'fleece': 'fleece',\n        'outerwear': 'fleece',\n        'track': 'track',\n        'training': 'training',\n        'softball': 'softball',\n        'polos': 'polo',\n        'volleyball': 'volleyball',\n        'accessories': 'accessories',\n        'compression': 'compression',\n        'semi-sublimated': 'semi-sublimated',\n        'uniforms': 'uniforms',\n        'pop-warner': 'pop-warner',\n        'pop warner': 'pop-warner',\n        'off-field': 'off-field',\n        'cheer': 'cheer',\n        'cheer\/dance': 'cheer',\n        'hockey': 'hockey',\n        'babe ruth': 'babe-ruth',\n        'freestyle sublimation': defaultSublimationCategory,\n        'sublimation': defaultSublimationCategory,\n        'search-display-view-tags': 'search-display-view-tags',\n        'get-sublimation-design': 'get-sublimation-design',\n        'search-display-view-term': 'search-display-view-term',\n        'custom headwear': defaultHeadwearCategory,\n        'active\/lightweight': 'running-hats',\n        'beanies': 'beanies-knits',\n        'camo': 'camo-hats',\n        'styles': 'styles',\n        'features': 'features',\n        'on-field': 'on-field-hats',\n        'outdoor': 'lifestyle-outdoor-hats',\n        'sideline': 'sideline-coaches-hats',\n        'truckers \/ mesh back': 'trucker-hats',\n        'elite series': 'elite-series',\n        'visors': 'visors',\n        'wide brim \/ boonie': 'boonie-hats',\n        'flexfit': 'flexfit-hats',\n        'snapback': 'snapback-hats',\n        'structured': 'structured-hats',\n        'unstructured': 'unstructured-hats',\n        'training (turbo)': 'training-turbo'\n    };\n\n    function getMessageString(data) {\n        return typeof data === 'string' ? data : '';\n    }\n\n    function handleCartNavigation(payload, isStringMessage) {\n        var queryString = getCurrentUrlParams();\n        var categoryName = queryString['categoryName'];\n        if (categoryName) {\n            categoryName = categoryName.toLowerCase();\n        } else {\n            categoryName = defaultSublimationCategoryMapper;\n        }\n        var path = location.origin + location.pathname;\n        var objList = '';\n\n        if (isStringMessage) {\n            var obj = payload.split(\"#\");\n            objList = obj[1] || '';\n        } else {\n            localStorage.setItem(\"cartData\", JSON.stringify(payload));\n            objList = payload;\n        }\n\n        localStorage.setItem(\"cartObject\", typeof objList === 'string' ? objList : JSON.stringify(objList));\n        localStorage.setItem(\"cartCategoryName\", categoryName);\n        localStorage.setItem(\"cartPath\", path);\n        window.location = '\/cart.html';\n    }\n\n    function applyIframeHeight(messageString) {\n        var iframeHeight = messageString.split(\":\");\n        if (iframeHeight.length > 1) {\n            document.getElementById('iframediv').style.height = iframeHeight[1] + 'px';\n        }\n    }\n\n    window.addEventListener(\"message\", (e) => {\n        var data = e.data;\n        var messageString = getMessageString(data);\n        var isStringMessage = messageString !== '';\n\n        if (data && data.domainUrl) {\n            iframeHasSameDomainUrl = false;\n            pageUrl = data.pageUrl;\n            pageQuery = data.pageQuery;\n            var domain = data.domainUrl;\n            domainUrl = domain.replace(\/^https?:\\\/\\\/\/, '');\n            setIframeSrc();\n            getIframeSrc();\n        }\n\n        if (messageString.indexOf('asgIframeHeight') > -1) {\n            applyIframeHeight(messageString);\n        }\n\n        if (messageString.indexOf('reLoadIframe') > -1) {\n            setIframeSrc();\n        }\n\n        if (messageString.indexOf('scrollToTop') > -1) {\n            window.scrollTo({ top: 0, left: 0, behavior: 'smooth' });\n        }\n\n        if (messageString.indexOf('asgPageName') > -1) {\n            var pageName = messageString.split(\":\");\n            if (pageName[1] == configurator.toLowerCase())\n                document.getElementById(\"myIframe\").setAttribute(\"scrolling\", \"yes\");\n            else\n                document.getElementById(\"myIframe\").setAttribute(\"scrolling\", \"no\");\n        }\n\n        if (messageString.indexOf('cartData') > -1) {\n            handleCartNavigation(messageString, true);\n            return;\n        }\n\n        if (!data || typeof data !== 'object') {\n            return;\n        }\n\n        if (data.type === \"cartData\") {\n            handleCartNavigation(data.payload, false);\n            return;\n        }\n\n        if (data.type === \"backToframe\") {\n            history.go(-1);\n            return;\n        }\n\n        if (data.type === \"webRefData\") {\n            let webRef = data.payload;\n            window.location = optionalConfig.savedContextPath + '?view=design&webRef=' + webRef;\n            return;\n        }\n\n        if (data.type === \"DESIGN_VIEW\") {\n            let webRef = data.webRef;\n            window.location = optionalConfig.savedContextPath + '?view=design&webRef=' + webRef;\n            return;\n        }\n\n        if (data.type === \"LOAD_PAGE\") {\n            let webRef = data.webRef;\n            let link = optionalConfig.savedContextPath;\n            if (webRef)\n                link += '?webRef=' + webRef;\n            window.location = link;\n            return;\n        }\n\n        if (data.type === \"DETAILS_PAGE\") {\n            let webRef = data.webRef;\n            let styleId = data.styleId;\n            let designid = data.designid;\n            let partNumber = data.partNumber;\n            if (designid)\n                window.location = optionalConfig.savedContextPath + '?sNumber=' + designid + '&webRef=' + webRef + '&isEdit=true';\n            else\n                window.location = optionalConfig.savedContextPath + '?sNumber=' + styleId + '&partNumber=' + partNumber + '&webRef=' + webRef;\n            return;\n        }\n\n        if (data.type === \"PRODUCT_SPECIFIC_PAGE\") {\n            let webRef = data.webRef;\n            let styleId = data.styleId;\n            window.location = optionalConfig.savedContextPath + '?styleId=' + styleId + '&webRef=' + webRef;\n            return;\n        }\n\n        var iframe = document.getElementById('myIframe');\n\n        if (data.type === 'modalOpen') {\n            iframe.style.position = 'fixed';\n            iframe.style.top = '0';\n            iframe.style.left = '0';\n            iframe.style.width = '100%';\n            iframe.style.height = '100vh';\n            iframe.style.zIndex = '9999';\n            document.body.style.overflow = 'hidden';\n            return;\n        }\n\n        if (data.type === 'modalClose') {\n            iframe.style.position = '';\n            iframe.style.top = '';\n            iframe.style.left = '';\n            iframe.style.width = '';\n            iframe.style.zIndex = '';\n            document.body.style.overflow = '';\n            return;\n        }\n\n        if (data.type === 'resize') {\n            iframe.style.height = data.height + 'px';\n            return;\n        }\n    }, false);\n\n    document.querySelector('#myIframe').addEventListener(\"load\", e => {\n        sendParentHeightToChild();\n\n    })\n\n    function sendParentHeightToChild() {\n        var fullURL = window.parent.location.href;\n        var child = document.getElementById(\"myIframe\").contentWindow;\n        var elemTop = document.getElementById(\"iframediv\").offsetTop;\n        var windowHeight = document.documentElement.clientHeight || document.body.clientHeight || window.innerHeight;\n        var calcHeight = windowHeight - elemTop;\n        if (child.postMessage) {\n            child.postMessage(\"parentHeight:\" + calcHeight, '*');\n            child.postMessage({ type: 'fullURL', value: fullURL }, '*');\n            child.postMessage(\"parentDomain:\" + domainUrl, '*');\n        }\n    }\n\n    function sendDataToChild() {\n        var child = document.getElementById(\"myIframe\").contentWindow;\n        if (child.postMessage) {\n            child.postMessage(\"loadNextPageIframe\", '*');\n        }\n    }\n\n    function getFullUrl() {\n        var searchLocation = false;\n        if (window.location) {\n            if (window.location.search) {\n                if (window.location.search.substr(1)) {\n                    searchLocation = true;\n                }\n            }\n        }\n        if (searchLocation) {\n            return window.location.search.substr(1);\n        } else {\n            var baseUrl = window.document.baseURI;\n            var baseUrlData = baseUrl.split(\"?\");\n            if (baseUrlData[1] != undefined) {\n                return baseUrlData[1];\n            }\n            return \"\";\n        }\n    }\n\n    function getCurrentUrlParams() {\n        if (iframeHasSameDomainUrl === false) {\n            return pageQuery;\n        } else {\n\n            var operator = '&';\n            var getUrl = getFullUrl();\n            var queryString = (function (params) {\n                if (params === \"\") return {};\n                var obj = {};\n                for (var i = 0; i < params.length; ++i) {\n                    var value = params[i].split('=', 2);\n                    if (value.length === 1)\n                        obj[value[0]] = \"\";\n                    else\n                        obj[value[0]] = decodeURIComponent(value[1].replace(\/\\+\/g, \" \"));\n                }\n                return obj;\n            })(getUrl.split(operator));\n\n            return queryString;\n        }\n    }\n\n    function findIndex(arr) {\n        var selectedIndex = 0;\n        for (i = 0; i < arr.length; i++) {\n            var ele = arr[i];\n            var designLineFullImage = ele.designLineFullImage;\n            var designLineFullImageArray = designLineFullImage.split(\"\/\");\n            var designLineFullImageArrayLength = designLineFullImageArray.length - 1;\n            var imageName = designLineFullImageArray[designLineFullImageArrayLength];\n\n            if (imageName) {\n                if (imageName != \"null\") {\n                    selectedIndex = i;\n                    break;\n                }\n            }\n        }\n        return selectedIndex;\n    }\n\n    function addParameter(currentIframeUrl) {\n        var queryString = getCurrentUrlParams();\n        var params = {};\n\n        if (defaultConfig.discount) {\n            params.discount = defaultConfig.discount;\n        }\n        if (defaultConfig.addlLeadTime) {\n            params.addlLeadTime = defaultConfig.addlLeadTime;\n        }\n        if (optionalConfig.customLabel) {\n            params.customLabel = optionalConfig.customLabel;\n        }\n        if (optionalConfig.editCustomLabel) {\n            params.editCustomLabel = optionalConfig.editCustomLabel;\n        }\n        if (optionalConfig.customSuccessLabel) {\n            params.customSuccessLabel = optionalConfig.customSuccessLabel;\n        }\n        if (optionalConfig.hideBackButton) {\n            params.hideBackButton = optionalConfig.hideBackButton;\n        }\n        if (optionalConfig.customBackButtonLink) {\n            params.customBackButtonLink = optionalConfig.customBackButtonLink;\n        }\n        if (optionalConfig.customArtWorkUpload) {\n            params.customArtWorkUpload = optionalConfig.customArtWorkUpload;\n        }\n        if (optionalConfig.hideAddRush) {\n            params.hideAddRush = optionalConfig.hideAddRush;\n        }\n        if (optionalConfig.hideLearnMore) {\n            params.hideLearnMore = optionalConfig.hideLearnMore;\n        }\n        if (optionalConfig.hideShareButton) {\n            params.hideShareButton = optionalConfig.hideShareButton;\n        }\n        if (optionalConfig.hideLeadTime) {\n            params.hideLeadTime = optionalConfig.hideLeadTime;\n        }\n        if (optionalConfig.hideBrand) {\n            params.hideBrand = optionalConfig.hideBrand;\n        }\n        if (optionalConfig.hideRosterTab) {\n            params.hideRosterTab = optionalConfig.hideRosterTab;\n        }\n        if (queryString['webRef']) {\n            params.webRef = queryString['webRef'];\n        }\n        if (optionalConfig.hideCategoryTitle) {\n            params.hideCategoryTitle = optionalConfig.hideCategoryTitle;\n        }\n        if (optionalConfig.hideCategoryFilter) {\n            params.hideCategoryFilter = optionalConfig.hideCategoryFilter;\n        }\n        if (optionalConfig.hideCategorySorting) {\n            params.hideCategorySorting = optionalConfig.hideCategorySorting;\n        }\n        if (optionalConfig.hideRibbon) {\n            params.hideRibbon = optionalConfig.hideRibbon;\n        }\n        if (optionalConfig.hideHeader) {\n            params.hideHeader = optionalConfig.hideHeader;\n        }\n\n        return appendParams(currentIframeUrl, params);\n    }\n\n    function appendParams(url, params) {\n        var separator = url.indexOf('?') === -1 ? '?' : '&';\n        for (var key in params) {\n            if (params.hasOwnProperty(key) && params[key] !== undefined && params[key] !== null && params[key] !== '') {\n                url += separator + key + '=' + encodeURIComponent(params[key]);\n                separator = '&';\n            }\n        }\n        return url;\n    }\n\n    function setIframeSrc() {\n        var queryString = getCurrentUrlParams();\n        var iframe = document.getElementById('myIframe');\n\n        if (validate(queryString, 'styleId')) {\n            var styleId = queryString['styleId'];\n\n            if (optionalConfig.builderV2) {\n                var currentIframeUrl = src.substring(0, src.lastIndexOf('\/')) + '\/ConfiguratorV2';\n                currentIframeUrl += '?catalogId=10601&styleId=' + styleId + '&storeId=10251&langId=-1';\n                iframe.src = addParameter(currentIframeUrl);\n                updateIframeState(iframe.src);\n                return;\n            }\n\n            var url = new URL('https:\/\/n4nf1c.a.searchspring.io\/api\/search\/autocomplete.json');\n            url.searchParams.set('siteId', 'n4nf1c');\n            url.searchParams.set('q', styleId);\n            url.searchParams.set('resultsPerPage', '1');\n            url.searchParams.set('resultsFormat', 'native');\n            url.searchParams.set('filter.is_search_enabled', 'true');\n\n            fetch(url.toString())\n                .then(function (response) {\n                    if (!response.ok) {\n                        console.log('Network response was not ok');\n                    }\n                    return response.json();\n                })\n                .then(function (resultObj) {\n                    var results = resultObj.results || [];\n                    var currentIframeUrl = src;\n                    var replaceText = sublimationUrl;\n\n                    if (results.length) {\n                        var result = results[0];\n                        var product_category = result.product_category;\n                        var colorImagesObj = result.color_images.replace(\/&quot;\/g, '\"');\n                        var colorImagesArray = JSON.parse(colorImagesObj || []);\n                        var product_number = result.product_number;\n\n                        if (product_category == \"Sublimated\") {\n                            var index = findIndex(colorImagesArray);\n                            var childColorImage = colorImagesArray[index];\n                            var designLineEntites = childColorImage.designLineName;\n                            var designLine = encodeURI(designLineEntites.toLowerCase());\n                            var designLinePartNumber = childColorImage.designLinePartNumber;\n                            var designLinePartNumberArray = designLinePartNumber.split(\".\");\n                            var partNumber = designLinePartNumberArray[0];\n                            var designLineFullImage = childColorImage.designLineFullImage;\n                            var designLineFullImageArray = designLineFullImage.split(\"\/\");\n                            var designLineFullImageArrayLength = designLineFullImageArray.length - 1;\n                            var imageName = designLineFullImageArray[designLineFullImageArrayLength];\n                            var imageNameArray = imageName.split(\"_\");\n                            var sNumber = imageNameArray[0];\n                            var sNumberValue = sNumber.slice(1);\n                            var designLineLowerEntites = designLineEntites.toLowerCase();\n                            var designLineEntitesArray = designLineLowerEntites.split(\" \");\n                            for (var i = 0; i < designLineEntitesArray.length; i++) {\n                                designLineEntitesArray[i] = designLineEntitesArray[i].charAt(0).toUpperCase() + designLineEntitesArray[i].slice(1);\n                            }\n                            var designLineFormatted = designLineEntitesArray.join(\" \");\n                            var encodedDesignLineEntites = encodeURI(designLineFormatted)\n                            var iNumber = product_number + \"_\" + encodedDesignLineEntites + \"_\" + sNumberValue;\n\n                            replaceText = configurator;\n                            currentIframeUrl = currentIframeUrl + \"?storeId=10251&catalogId=10151&langId=-1&configuratorType=uniforms&partNumber=\" + partNumber + \"&iNumber=\" + iNumber + \"&designLine=\" + designLine;\n\n                        } else if (product_category == \"Stock\") {\n\n                            var childColorImage = colorImagesArray[0];\n                            var colorCOde = childColorImage.colorCode;\n                            replaceText = capConfigurator;\n                            currentIframeUrl = currentIframeUrl + \"?storeId=10251&catalogId=10601&langId=-1&partNumber=\" + product_number + \"&capColorCode=\" + colorCOde;\n                        }\n                    }\n\n                    var generatedUrl = buildEmbedUrl(currentIframeUrl, replaceText);\n                    iframe.src = generatedUrl;\n                    updateIframeState(generatedUrl);\n                })\n                .catch(function (error) {\n                    console.error('Failed to fetch style info:', error);\n                    iframe.src = src;\n                    updateIframeState(src);\n                });\n        } else {\n            var url = getIframeSrc() || src;\n            iframe.src = url;\n            updateIframeState(url);\n        }\n    }\n\n    function buildEmbedUrl(currentIframeUrl, replaceText) {\n        var urlParts = currentIframeUrl.split('?');\n        var path = urlParts[0];\n        var query = urlParts[1] ? '?' + urlParts[1] : '';\n        var urlHrefArray = path.split('\/');\n        var urlHrefReplaceEntity = urlHrefArray[urlHrefArray.length - 1];\n        var newPath = path.replace(urlHrefReplaceEntity, replaceText);\n        var href = new URL(newPath + query);\n        return addParameter(href.toString());\n    }\n\n    function updateIframeState(url) {\n        window.history.replaceState({ iframeUrl: url }, '', location.pathname + location.search);\n        setTimeout(function () {\n            document.getElementById('iframediv').style.display = 'block';\n            document.getElementById('loaderAlign').style.display = 'none';\n        }, 1000);\n    }\n\n    function validate(queryString, type) {\n        if (queryString) {\n            if (queryString[type]) {\n                return true;\n            }\n            return false;\n        }\n        return false;\n    }\n\n    function getIframeSrc() {\n        var queryString = getCurrentUrlParams();\n\n        if (validate(queryString, 'categoryName')) {\n            var categoryName = queryString['categoryName'];\n            return generateUrl((categoryName.toLowerCase()).trim(), true)\n        } else if (validate(queryString, 'searchTerm')) {\n            var searchTerm = queryString['searchTerm'];\n            return generateUrl('search-display-view-term', false)\n        } else if (validate(queryString, 'tag')) {\n            var tag = queryString['tag'];\n            return generateUrl('search-display-view-tags', false)\n        } else if (validate(queryString, 'view')) {\n            return generateUrl('get-sublimation-design', false)\n        }\n        else {\n            var currentURL = pageUrl;\n            var url = currentURL.split(\"?\");\n            var urlArray = url[0];\n            var urlHrefArray = urlArray.split('\/');\n            var categoryName = null;\n            urlHrefArray.forEach(function (urlEntity) {\n                categoryArray.forEach(function (category) {\n                    if ((urlEntity.toLowerCase()).trim() === ((category.catalogCategory).toLowerCase()).trim()) {\n                        categoryName = ((category.catalogCategory).toLowerCase()).trim();\n                    }\n                })\n            })\n            return generateUrl(categoryName);\n        }\n    }\n\n    function isConfiguratorPage(queryString) {\n        return validate(queryString, 'sNumber');\n    }\n\n    function isCapConfiguratorPage(queryString) {\n        return validate(queryString, 'dNumber');\n    }\n\n    function isWebRef(queryString) {\n        return validate(queryString, 'webRef');\n    }\n\n    function checkCategory(categoryName) {\n        return categoryArray.some((item) => item.catalogCategory === categoryName);\n    }\n\n    const categoryReplaceMap = {\n        'semi-sublimated': function (embedType, categoryName) { return categoryName; },\n        'cheer': function (embedType, categoryName) { return 'custom-' + categoryName; },\n        'pop-warner': function (embedType, categoryName) { return categoryName + '-sublimation'; },\n        'training-turbo': function (embedType, categoryName) { return categoryName + '-sublimation'; },\n        'off-field': function (embedType, categoryName) { return categoryName + '-turbo-sublimation'; },\n        'uniforms': function (embedType, categoryName) { return 'uniforms--1'; },\n        'babe-ruth': function (embedType, categoryName) { return 'custom-sublimation-babe-ruth-turbo'; },\n        'styles': function (embedType, categoryName) { return 'headwear-' + categoryName; },\n        'features': function (embedType, categoryName) { return 'headwear-' + categoryName; },\n        'elite-series': function (embedType, categoryName) { return 'headwear-' + categoryName; }\n    };\n\n    function getReplaceText(categoryName, embedType, isCategoryName, queryString) {\n        if (!categoryName) return embedType;\n\n        var catLower = categoryName.toLowerCase();\n        var cat = categoryShareMapper[categoryName] || categoryName;\n        categoryName = cat.toLowerCase().trim();\n\n        if (catLower === defaultSublimationCategoryMapper || catLower === defaultSublimationCategory) {\n            return embedType;\n        }\n        if (catLower === defaultHeadwearCategoryMapper || catLower === defaultHeadwearCategory) {\n            return embedType;\n        }\n\n        if (categoryReplaceMap[categoryName]) {\n            return categoryReplaceMap[categoryName](embedType, categoryName);\n        }\n\n        if (!isCategoryName) {\n            if (validate(queryString, 'view')) {\n                return queryString['view'] === 'design' ? 'saved-design' : 'get-sublimation-design';\n            }\n            return 'SearchDisplayView';\n        }\n\n        return !checkCategory(categoryName) ? embedType : embedType + '-' + categoryName;\n    }\n\n    const getType = (value, categoryName) => {\n        if (categoryName) {\n            let category = categoryShareMapper[categoryName];\n            let categoryObj = categoryArray.find((obj) => obj.catalogCategory === category);\n            let type = categoryObj && categoryObj.type ? categoryObj.type : null;\n            return type === headwearType ? headwearCatUrl : sublimationUrl;\n        }\n        return value === headwearType ? headwearUrl : sublimationUrl;\n    };\n\n    function generateUrl(categoryName, isCategoryName) {\n        var currentIframeUrl = src;\n        var queryString = getCurrentUrlParams();\n        var fetchType = validate(queryString, 'type') ? queryString['type'] : null;\n        var embedType = getType(fetchType, categoryName);\n\n        var isConfigurator = isConfiguratorPage(queryString);\n        var isCapConfigurator = isCapConfiguratorPage(queryString);\n        var isWebRefPresent = isWebRef(queryString);\n        var isAdditionFlagRequired = !(!isCategoryName && validate(queryString, 'view'));\n\n        var normalizedCategory = categoryName || defaultSublimationCategory;\n        var catLower = normalizedCategory.toLowerCase();\n\n        if (catLower === defaultSublimationCategoryMapper || catLower === defaultSublimationCategory) {\n            normalizedCategory = defaultSublimationCategory;\n        } else if (catLower === defaultHeadwearCategoryMapper || catLower === defaultHeadwearCategory) {\n            normalizedCategory = defaultHeadwearCategory;\n        } else if (isConfigurator || isCapConfigurator) {\n            normalizedCategory = categoryShareMapper[normalizedCategory] || normalizedCategory;\n        } else if (!isCategoryName && categoryShareMapper[normalizedCategory]) {\n            normalizedCategory = categoryShareMapper[normalizedCategory];\n        } else if (!checkCategory(normalizedCategory) && categoryName) {\n            if (fetchType === headwearType || catLower === defaultHeadwearCategoryMapper) {\n                normalizedCategory = defaultHeadwearCategory;\n            } else if (categoryShareMapper[normalizedCategory]) {\n                normalizedCategory = categoryShareMapper[normalizedCategory];\n            } else {\n                normalizedCategory = defaultSublimationCategory;\n            }\n        }\n\n        if (!categoryName && (isConfigurator || isCapConfigurator)) {\n            normalizedCategory = isCapConfigurator ? defaultHeadwearCategory : defaultSublimationCategory;\n        }\n\n        var replaceText = isConfigurator ? configurator : isCapConfigurator ? capConfigurator : getReplaceText(categoryName, embedType, isCategoryName, queryString);\n\n        var urlParts = currentIframeUrl.split('?');\n        var urlArray = urlParts[0];\n        var urlHrefArray = urlArray.split('\/');\n        var urlHrefReplaceEntity = urlHrefArray[urlHrefArray.length - 1];\n        urlArray = urlArray.replace(urlHrefReplaceEntity, replaceText);\n        var newUrl = urlArray + (urlParts[1] ? '?' + urlParts[1] : '');\n\n        var href = new URL(newUrl);\n        var categoryIndex = categoryArray.findIndex(x => ((x.catalogCategory).toLowerCase()).trim() === normalizedCategory);\n        var categoryObj = categoryArray[categoryIndex];\n\n        if (categoryObj && isAdditionFlagRequired) {\n            Object.keys(categoryObj).forEach(function (key) {\n                if (key === 'tag') {\n                    href.searchParams.set(key, queryString['tag'] || categoryObj[key]);\n                } else if (key === 'searchTerm') {\n                    href.searchParams.set(key, queryString['searchTerm'] || categoryObj[key]);\n                } else {\n                    href.searchParams.set(key, categoryObj[key]);\n                }\n            });\n        }\n\n        if (isConfigurator || isCapConfigurator || isWebRefPresent) {\n            Object.keys(queryString).forEach(function (key) {\n                href.searchParams.set(key, queryString[key]);\n            });\n        }\n\n        if (isAdditionFlagRequired) {\n            var uiParams = {\n                customLabel: optionalConfig.customLabel,\n                editCustomLabel: optionalConfig.editCustomLabel,\n                customSuccessLabel: optionalConfig.customSuccessLabel,\n                hideBackButton: optionalConfig.hideBackButton,\n                customBackButtonLink: optionalConfig.customBackButtonLink,\n                customArtWorkUpload: optionalConfig.customArtWorkUpload,\n                hideAddRush: optionalConfig.hideAddRush,\n                hideLearnMore: optionalConfig.hideLearnMore,\n                hideShareButton: optionalConfig.hideShareButton,\n                hideLeadTime: optionalConfig.hideLeadTime,\n                hideBrand: optionalConfig.hideBrand,\n                hideRosterTab: optionalConfig.hideRosterTab,\n                hideCategoryTitle: optionalConfig.hideCategoryTitle,\n                hideCategoryFilter: optionalConfig.hideCategoryFilter,\n                hideCategorySorting: optionalConfig.hideCategorySorting,\n                hideRibbon: optionalConfig.hideRibbon\n            };\n\n            if (queryString['webRef']) {\n                uiParams.webRef = queryString['webRef'];\n            }\n            if (optionalConfig.hideHeader) {\n                uiParams.hideHeader = optionalConfig.hideHeader;\n            }\n\n            Object.keys(uiParams).forEach(function (key) {\n                if (uiParams[key]) {\n                    href.searchParams.set(key, uiParams[key]);\n                }\n            });\n        }\n\n        return href.toString();\n    }\n\n    function isScrolledIntoView(elem) {\n        if (!elem) return false;\n        var rect = elem.getBoundingClientRect();\n        var viewBottom = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight;\n        return rect.bottom <= viewBottom;\n    }\n\n    (function () {\n        var rafScheduled = false;\n        var iframediv = null;\n\n        function onScrollOrResize() {\n            if (!rafScheduled) {\n                rafScheduled = true;\n                requestAnimationFrame(function () {\n                    if (isScrolledIntoView(iframediv)) sendDataToChild();\n                    rafScheduled = false;\n                });\n            }\n        }\n\n        function initPage() {\n            iframediv = document.getElementById('iframediv');\n            setIframeSrc();\n            requestAnimationFrame(function () { if (isScrolledIntoView(iframediv)) sendDataToChild(); });\n\n            if (window.addEventListener) {\n                window.addEventListener('scroll', onScrollOrResize, { passive: true });\n                window.addEventListener('resize', onScrollOrResize, { passive: true });\n            } else if (window.attachEvent) {\n                window.attachEvent('onscroll', onScrollOrResize);\n                window.attachEvent('onresize', onScrollOrResize);\n            }\n        }\n\n        if (typeof $ !== 'undefined' && $.fn && $.fn.ready) {\n            $(document).ready(initPage);\n        } else if (document.readyState === 'complete' || document.readyState === 'interactive') {\n            setTimeout(initPage, 0);\n        } else if (document.addEventListener) {\n            document.addEventListener('DOMContentLoaded', initPage, false);\n        } else {\n            window.onload = initPage;\n        }\n    })();\n<\/script>\n\n                            \n                                \n                                                       \n\n                            <\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"site-sidebar-layout":"no-sidebar","site-content-layout":"page-builder","ast-site-content-layout":"full-width-container","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"disabled","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"set","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"class_list":["post-607750","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/ruthsapparel.com\/index.php\/wp-json\/wp\/v2\/pages\/607750","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ruthsapparel.com\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/ruthsapparel.com\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/ruthsapparel.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/ruthsapparel.com\/index.php\/wp-json\/wp\/v2\/comments?post=607750"}],"version-history":[{"count":4,"href":"https:\/\/ruthsapparel.com\/index.php\/wp-json\/wp\/v2\/pages\/607750\/revisions"}],"predecessor-version":[{"id":607755,"href":"https:\/\/ruthsapparel.com\/index.php\/wp-json\/wp\/v2\/pages\/607750\/revisions\/607755"}],"wp:attachment":[{"href":"https:\/\/ruthsapparel.com\/index.php\/wp-json\/wp\/v2\/media?parent=607750"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}