news

Saturday, December 9, 2023

Victoria Myers

Good morning lovely knitters!  I can't believe it is only two weeks until Christmas!  And Hannukah is in full swing!  Where does December go?  Maybe it is trapped in the dryer with my missing sock!

First - we had a FREE PATTERN FRIDAY yesterday in Instagram and FB!  If you missed it - make sure you follow us so that you can get in on the next one!  We choose a winner on both Instagram and FB, so you can double your chances to win by commenting on either.

Our 12-Days cowl is going fast!  We start shipping Friday, so place your order now so that you can give yourself the best holiday reward - knitting!!  :)

I had a brain mis-fire with one of our classes - which means, there IS a beginner cabling class tomorrow.  If you want to make our featured pattern this month - the Mason hat, but are new to cables, make sure you sign up TODAY and come to grab your yarn and supplies!

All of our winter classes are up!  A couple of these are filling up super fast, so don't delay in signing up!

I've got a BOATLOAD of awesome gifts for knitters in the shop right now!  Some are tiny - perfect for stocking stuffers, and some are bigger.  Pop in to see - they are in store only as most will be a limited time products!  Or send in your santa's so they can shop for you!

Don't forget to vote on our Shawl Showdown in this week's podcast!  We're getting close to the end and the ultimate pattern winner will be FREE for the month of January!

And of course - this is a good time of year to remind people that you love free yarn money!  A perfect way to remind them  - send them a link to our giftcards!  :)

I hope to see you all today - before the deluge of rain (and weirdly warm weather)!

Island Yarn 

189 Main Street
Maynard, MA  01754
Hours: Wednesday through Saturday, 12 - 5

Leave a Comment

Please note, comments must be approved before they are published

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(), ); }