Home
All Products
Search
Pattern Kits
Gift Season - Countdown to the Holidays!
Island Yarn
Needles and Notions
Yarn - Lace
Yarn - Fingering
Yarn - Sport
Yarn - DK
Yarn - Worsted
Yarn - Aran
Yarn - Bulky
Yarn - Super Bulky
Sale Bin
Finished Items
Patterns
Classes
Blog
About us
Log in
Create account
Menu
Cart
Cart
(0)
Log in
Create account
Home
All Products
Search
Pattern Kits
Gift Season - Countdown to the Holidays!
Island Yarn
Needles and Notions
Yarn - Lace
Yarn - Fingering
Yarn - Sport
Yarn - DK
Yarn - Worsted
Yarn - Aran
Yarn - Bulky
Yarn - Super Bulky
Sale Bin
Finished Items
Patterns
Classes
Blog
About us
Log in
Create account
Noro Magazine, Issue #22, Spring/Summer 2023
Noro
$ 9.99
Default Title - $ 9.99 USD
Quantity
Add to Cart
30 amazing patterns for delicious spring Noro yarns!
Share
0
Tweet
Pin it
0
+1
Related Products
A Little Something Special - Pattern Only
$ 3.95
Annandale Sweater
$ 8.50
Aryia Sweater
$ 5.00
const selectVariantByClickingImage = { // Create variant images from productJson object _createVariantImage: function (product) { const variantImageObject = {}; product.variants.forEach((variant) => { if ( typeof variant.featured_image !== 'undefined' && variant.featured_image !== null ) { const variantImage = variant.featured_image.src .split('?')[0] .replace(/http(s)?:/, ''); variantImageObject[variantImage] = variantImageObject[variantImage] || {}; product.options.forEach((option, index) => { const optionValue = variant.options[index]; const optionKey = `option-${index}`; if ( typeof variantImageObject[variantImage][optionKey] === 'undefined' ) { variantImageObject[variantImage][optionKey] = optionValue; } else { const oldValue = variantImageObject[variantImage][optionKey]; if (oldValue !== null && oldValue !== optionValue) { variantImageObject[variantImage][optionKey] = null; } } }); } }); return variantImageObject; }, _updateVariant: function (event, id, product, variantImages) { const arrImage = event.target.src .split('?')[0] .replace(/http(s)?:/, '') .split('.'); const strExtention = arrImage.pop(); const strRemaining = arrImage.pop().replace(/_[a-zA-Z0-9@]+$/, ''); const strNewImage = `${arrImage.join('.')}.${strRemaining}.${strExtention}`; if (typeof variantImages[strNewImage] !== 'undefined') { product.variants.forEach((option, index) => { const optionValue = variantImages[strNewImage][`option-${index}`]; if (optionValue !== null && optionValue !== undefined) { const selects = document.querySelectorAll('#'+ id + ' [class*=single-option-selector]'); const options = selects[index].options; for (let option, n = 0; (option = options[n]); n += 1) { if (option.value === optionValue) { selects[index].selectedIndex = n; selects[index].dispatchEvent(new Event('change')); break; } } } }); } }, _selectVariant: function() { const productJson = document.querySelectorAll('[id^=ProductJson-'); if (productJson.length > 0) { productJson.forEach((product) => { const sectionId = product.id.replace("ProductJson-", "shopify-section-"); const thumbnails = document.querySelectorAll('#'+ sectionId + ' img[src*="/products/"]'); if (thumbnails.length > 1) { const productObject = JSON.parse(product.innerHTML); const variantImages = this._createVariantImage(productObject); // need to check variants > 1 if (productObject.variants.length > 1) { thumbnails.forEach((thumbnail) => { thumbnail.addEventListener('click', (e) => this._updateVariant(e, sectionId, productObject, variantImages), ); }); } } }); } }, }; if (document.readyState !== 'loading') { selectVariantByClickingImage._selectVariant(); } else { document.addEventListener( 'DOMContentLoaded', selectVariantByClickingImage._selectVariant(), ); }