PageSourceSearch

https://shop.matatastudio.com/cdn/shop/t/44/assets/sa-quote-button-position.js?v=4511749956738124381789548953

js matatastudio.com collected 2026-10-01 14:17:37 UTC 3,636 bytes, 2 lines download raw bytes

1(()=>{const SCOPE_SELECTORS=[".custom-buy-buttons","product-form.product-form",".product-form"],ANCHOR_SELECTORS=[".product__payment-icons",".product-form__express",".shopify-payment-button",'[data-shopify="payment-button"]'],QUOTE_SELECTORS=['[class*="add-to-quote" i]','[id*="add-to-quote" i]','[class*="add_to_quote" i]','[id*="add_to_quote" i]','[class*="request-a-quote" i]','[id*="request-a-quote" i]','[class*="request_a_quote" i]','[class*="sa-request" i]','[class*="sa_request" i]','[class*="smt-rq" i]','[class*="smt_rq" i]','[class*="rfq-btn" i]','[class*="rfq_btn" i]','[class*="btn-rfq" i]',"[data-sa-rfq]","[data-rfq]"],QUOTE_TEXT=/add\s*to\s*quote|request\s*(a\s*)?quote/i,SKIP_TEXT=/add\s*to\s*cart|buy\s*it\s*now|sold\s*out|unavailable/i,STRUCTURAL=".product-form__buttons, .buy-controls-row, .buy-controls-row__submit, .form, .custom-buy-buttons, product-form, form",IGNORE='.product-form__submit, [name="add"], .shopify-payment-button, [data-shopify="payment-button"], .main-product-extra-button, .main-product-extra-button-wrapper, .quantity, .quantity__button, .loading-overlay, .loading__spinner',moved=new WeakSet;function scopes(root=document){const found=[];return SCOPE_SELECTORS.forEach(sel=>{root.querySelectorAll(sel).forEach(el=>{found.includes(el)||found.push(el)})}),found}function isIgnorable(el){return!el||el.nodeType!==1||el.matches(IGNORE)}function matchesQuoteText(el){const text=(el.textContent||"").replace(/\s+/g," ").trim();return!text||SKIP_TEXT.test(text)?!1:QUOTE_TEXT.test(text)}function collectQuoteElements(scope){const set=new Set;return QUOTE_SELECTORS.forEach(sel=>{try{scope.querySelectorAll(sel).forEach(el=>{isIgnorable(el)||set.add(el)})}catch{}}),scope.querySelectorAll('button, a, [role="button"], input[type="button"]').forEach(el=>{!isIgnorable(el)&&matchesQuoteText(el)&&set.add(el)}),[...set]}function nodeToMove(el,scope){let node=el;for(;node.parentElement&&node.parentElement!==scope;){const parent=node.parentElement;if(parent.matches(STRUCTURAL))break;if(parent.children.length===1){node=parent;continue}break}return node}function insertionAnchor(scope){for(const sel of ANCHOR_SELECTORS){const el=scope.querySelector(sel);if(el)return el}return scope.querySelector(".buy-controls-row")}function relocateInScope(scope){const anchor=insertionAnchor(scope);if(!anchor)return;const parent=anchor.parentElement;parent&&collectQuoteElements(scope).forEach(el=>{const target=nodeToMove(el,scope);if(!(!target||moved.has(target))&&!(target===anchor||anchor.contains(target))){if(anchor.matches(".product__payment-icons")){if(target.parentElement===parent&&target.nextElementSibling===anchor){target.classList.add("sa-quote-relocated"),moved.add(target);return}parent.insertBefore(target,anchor)}else{if(target.parentElement===parent&&target.previousElementSibling===anchor){target.classList.add("sa-quote-relocated"),moved.add(target);return}parent.insertBefore(target,anchor.nextSibling)}target.classList.add("sa-quote-relocated"),moved.add(target)}})}function run(root=document){scopes(root).forEach(relocateInScope)}let scheduled=!1;function schedule(){scheduled||(scheduled=!0,requestAnimationFrame(()=>{scheduled=!1,run()}))}function init(){run(),new MutationObserver(schedule).observe(document.documentElement,{childList:!0,subtree:!0}),document.addEventListener("shopify:section:load",()=>run()),document.addEventListener("shopify:section:reorder",()=>run())}document.readyState==="loading"?document.addEventListener("DOMContentLoaded",init,{once:!0}):init()})();
2//# sourceMappingURL=/cdn/shop/t/44/assets/sa-quote-button-position.js.map?v=4511749956738124381789548953

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.