{
  "version": 3,
  "sources": ["/cdn/shop/t/1044/assets/generative-ai-image-modal.js?auto=format%2Ccompress"],
  "sourcesContent": ["$(function() {\n\tconst getImgSize = 10; // its in inches to get ai images.\n\tconst batchSize = 3;\n\tconst maxImages = 21;\n\tconst brandingName = `ninjatransfers.com`;\n\n\tconst host = 'https://www.rushordertees.com/design';\n\n\t$( document )\n\t.on('click', '#generative-ai-dialog > header > button', (event) => {\n\t\t$('#generative-ai-dialog')[0].close();\n\t})\n\t.on('submit', '#generative-ai-dialog form', async (event) => {\n\t\tlet existingImages = [];\n\t\tlet remainingSearches = Number.MAX_SAFE_INTEGER;\n\t\tconst prompt = $(this).find('input[name=\"prompt\"]').val();\n\n\t\tconst aiImages = $('#generative-ai-images');\n\t\tconst aiSearches = $('#generative-ai-remaining-searches');\n\t\tconst aiLoader = $('#generative-ai-dialog-loader');\n\t\tconst aiTips = $('#generative-ai-tips');\n\t\tconst aiGenerating = $('#generative-ai-generating');\n\n\t\tconst form = $('#generative-ai-dialog > form');\n\n\t\tevent.preventDefault();\n\n\t\taiLoader.addClass('show');\n\t\taiImages.empty();\n\t\taiSearches.empty();\n\t\taiTips.empty();\n\t\tform.attr('disabled', 'disabled');\n\n\t\ttry {\n\t\t\tlet statsPromise = fetch(`${host}/generative-stats.php?type=clipart`).then(response => response.json());\n\n\t\t\tlet existingPromise = fetch(`${host}/studio/getGenerativeAiUploads.php?prompt=` + encodeURIComponent(prompt), {\n\t\t\t\tcredentials: \"include\"\n\t\t\t}).then(response => response.json());\n\n\t\t\tlet allResults = await Promise.allSettled([statsPromise, existingPromise]);\n\t\t\tlet stats = allResults[0].status === 'fulfilled' ? allResults[0].value : {};\n\n\t\t\texistingImages = allResults[1].status === 'fulfilled' ? allResults[1].value : [];\n\t\t\tremainingSearches = stats.remainingRequest ?  Math.ceil(stats.remainingRequest / batchSize) : remainingSearches;\n\n\t\t\tgetAIData();\n\t\t} catch (e) {\n\t\t\tconsole.error('generative-ai-dialog - error', e);\n\t\t}\n\n\t\tif (remainingSearches > 0 && remainingSearches <= 5) {\n\t\t\taiSearches.text(`You have ${remainingSearches} more AI searches remaining.`);\n\t\t} else if (remainingSearches <= 0) {\n\t\t\taiSearches.text(`You have no more AI searches remaining. Please try again later.`);\n\t\t}\n\n\t\taiImages.append(existingImages.map(createImageFigure));\n\n\t\tif (remainingSearches > 0 && existingImages.length < maxImages) {\n\t\t\ttry {\n\t\t\t\tlet newImageCount = Math.min(maxImages - existingImages.length, batchSize);\n\n\t\t\t\taiGenerating.text(`(Generating ${newImageCount} New Images)`);\n\n\t\t\t\tlet newImages = await fetch(host + '/studio/postBatchGenerativeAiUpload.php', {method: 'POST', body: JSON.stringify({prompt, batchSize, brandingName})}).then(response => response.json());\n\n\t\t\t\taiGenerating.empty();\n\t\t\t\taiImages.append(newImages.map(createImageFigure));\n\t\t\t} catch (e) {\n\t\t\t\tconsole.error('generative-ai-dialog - error', e);\n\t\t\t}\n\t\t}\n\n\t\taiLoader.removeClass('show');\n\t\tform.removeAttr('disabled');\n\t})\n\t.on('click', '#generative-ai-images figure', async (event) => {\n\t\tconst aiLoader = $('#generative-ai-dialog-loader');\n\t\tconst form = $('#generative-ai-dialog > form');\n\n\t\taiLoader.addClass('show');\n\t\tform.attr('disabled', 'disabled');\n\n\t\ttry {\n\t\t\tconst figure = event.target.closest('figure');\n\n\t\t\tconst response = await fetch(figure.dataset.url);\n\t\t\tconst type = response.headers.get(\"Content-Type\");\n\t\t\tconst arrayBuffer = await response.arrayBuffer();\n\n\t\t\tlet blob = new Blob([arrayBuffer], {type: type});\n\t\t\tlet file = new File([blob], figure.dataset.fileName, {type: type});\n\t\t\tif($(\"upload-controls master-upload\").hasClass(\"hidden\")){\n\t\t\t\tawait singleFileAddToCart();\n\t\t\t\t// alert(\"im in singleFileAddToCart\")\n\t\t\t}\n\n\t\t\tconst isNewBySize = $( `upload-controls` ).length;\n\t\t\tif ( isNewBySize > 0 ) {\n\t\t\t\tfile.isAIImage = true;\n\t\t\t\tmanageFiles( [file] );\n\t\t\t} else {\n\t\t\t\tif($(\".step__2\").hasClass(\"hidden\")){\n\t\t\t\t\tuploadFile(file);\n\t\t\t\t}else{\n\t\t\t\t\tuploadFile(file, \"second_image\");\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tisAIImage = true;\n\n\t\t\t$('#generative-ai-dialog')[0].close();\n\t\t\t// $('.generative-ai-area').hide();\n\t\t} catch (e) {\n\t\t\tconsole.error('generative-ai-dialog - error', e);\n\t\t}\n\n\t\taiLoader.removeClass('show');\n\t\tform.removeAttr('disabled');\n\t})\n\t.on('click', '.generative-ai-area', function (event) {\n\t\tif ($('#generative-ai-dialog').length === 0) {\n\t\t\treturn;\n\t\t}\n\n\t\t$('#generative-ai-dialog')[0].showModal();\n\t})\n\t.on(`click`, `#generative-ai-dialog .searchCross`, function( e ) {\n\t\ttry {\n\t\t\te.stopImmediatePropagation();\n\t\t\t$( this ).prev( '[type=\"search\"]' ).val( '' );\n\t\t} catch ( err ) {\n\t\t\tconsole.log( `ERROR #generative-ai-dialog .searchCross`, err.message );\n\t\t}\n\t})\n\t.on(`change`, `#recentSearches`, function( e ) {\n\t\ttry {\n\t\t\te.stopImmediatePropagation();\n\t\t\tconsole.log ( 'this is click',);\n\t\t} catch ( err ) {\n\t\t\tconsole.log( `ERROR #recentSearches`, err.message );\n\t\t}\n\t})\n\t;\n\n\n\tfunction createImageFigure(image) {\n\t\tconst img = document.createElement('img');\n\t\tconst figure = document.createElement('figure');\n\t\tconst caption = document.createElement('figcaption');\n\n\t\timg.src = image.thumbnailUrl;\n\t\tcaption.textContent = 'Use this image';\n\n\t\tfigure.dataset.fileName = image.fileName;\n\t\tconst updateURL = image.url.replace( `/unsafe/`, `/unsafe/${ getImgSize * 300 }x0/` );\n\t\tfigure.dataset.url = updateURL;\n\t\t// figure.dataset.url = image.url;\n\n\t\tfigure.appendChild(img);\n\t\tfigure.appendChild(caption);\n\n\t\treturn figure;\n\t}\n\tgetAIData();\n\tasync function getAIData() {\n\t\tlet recentPromise = await fetch(`${host}/studio/getRecentGenerativeAiUploadPrompts.php`, {\n\t\t\tcredentials: \"include\"\n\t\t}).then(response => response.json());\n\t\tif ( typeof recentPromise !== 'undefined' && recentPromise.length > 0 ) {\n\t\t\tconsole.log ( 'recentPromise', recentPromise );\n\t\t\t$( `#AISearchMenu .AISearch__item, #AISearchMenu .AISearch__title` ).remove();\n\t\t\t$( `#generative-ai-dialog form #AISearchMenu` ).append( `<div class=\"AISearch__title\">Recent Searches</div>` );\n\t\t\trecentPromise.forEach(o => {\n\t\t\t\t$( `#generative-ai-dialog form #AISearchMenu` ).append( `<div class=\"AISearch__item\" val=\"${ o.prompt }\">${ o.prompt }</div>` );\n\t\t\t});\n\t\t}\n\t}\n});\n\n\n/*\n$( document ).mouseup(function( e ) {\n\ttry {\n\t\tconst container = $( `#generative-ai-dialog` );\n\t\tif (!container.is( e.target) && container.has( e.target ).length === 0 ) {\n\t\t\tcontainer.find( `header > button` ).click();\n\t\t}\n\t} catch ( err ) {\n\t\tconsole.log( `ERROR `, err.message );\n\t}\n});\n*/\n$(document).on('mouseup', function(e) {\n\ttry {\n\t\tconst container = $('#generative-ai-dialog');\n\t\tif (container.is(':visible') && !$(e.target).closest('#generative-ai-dialog').length) {\n\t\t\tcontainer.find('header > button').trigger('click');\n\t\t}\n\t} catch (err) {\n\t\tconsole.log('ERROR', err.message);\n\t}\n});\n\n$(document).ready(function () {\n\tconst inputAI = $(\"#AISearchInput\");\n\tlet activeIndex = -1;\n\n\t// Show the menu when input is focused\n\tinputAI.on(\"focus\", function () {\n\t\t$(\"#AISearchMenu\").addClass( `active` );\n\t});\n\n\t// Hide the menu when input loses focus\n\tinputAI.on(\"blur\", function () {\n\t\tsetTimeout(() => $(\"#AISearchMenu\").removeClass( `active` ), 300); // Delay for click event to register\n\t});\n\n\t// Arrow key navigation and enter selection\n\tinputAI.on(\"keydown\", function (event) {\n\t\tif (event.key === \"ArrowDown\") {\n\t\t\t$(\"#AISearchMenu\").addClass( `active` );\n\t\t\tactiveIndex = (activeIndex + 1) % $(\".AISearch__item\").length; // Cycle down\n\t\t\tupdateActiveItem();\n\t\t\tevent.preventDefault();\n\t\t} else if (event.key === \"ArrowUp\") {\n\t\t\t$(\"#AISearchMenu\").addClass( `active` );\n\t\t\tactiveIndex = (activeIndex - 1 + $(\".AISearch__item\").length) % $(\".AISearch__item\").length; // Cycle up\n\t\t\tupdateActiveItem();\n\t\t\tevent.preventDefault();\n\t\t} else if (event.key === \"Enter\") {\n\t\t\tif (activeIndex >= 0) {\n\t\t\t\tinputAI.val($($(\".AISearch__item\")[activeIndex]).text());\n\t\t\t\tsetTimeout(() => $(\"#AISearchMenu\").removeClass( `active` ), 300);\n\t\t\t\tevent.preventDefault();\n\t\t\t}\n\t\t}\n\t});\n\n\t// Update active item visually\n\tfunction updateActiveItem() {\n\t\t$(\".AISearch__item\").removeClass(\"active\");\n\t\tif (activeIndex >= 0) {\n\t\t\tconst currentItem = $($(\".AISearch__item\")[activeIndex]);\n\t\t\tcurrentItem.addClass(\"active\");\n\n\t\t\t// Ensure the active item is visible\n\t\t\t$(\"#AISearchMenu\").scrollTop(\n\t\t\t\tcurrentItem.position().top + $(\"#AISearchMenu\").scrollTop() - $(\"#AISearchMenu\").height() / 2 + currentItem.height() / 2\n\t\t\t);\n\t\t}\n\t}\n\n\t// Reset active index when input is clicked\n\tinputAI.on(\"click\", function () {\n\t\tactiveIndex = -1;\n\t\tupdateActiveItem();\n\t});\n})\n\n.on(`click`, `.AISearch__item`, function( e ) {\n\ttry {\n\t\te.stopImmediatePropagation();\n\t\t\tconsole.log ( '$(this).attr( `val` )', $(this).attr( `val` ) );\n\t\t\t$(\"#AISearchInput\").val($(this).attr( `val` ));\n\t\t\tsetTimeout(() => $(\"#AISearchMenu\").removeClass( `active` ), 300);\n\t} catch ( err ) {\n\t\tconsole.log( `ERROR .AISearch__item`, err.message );\n\t}\n})\n\n;\n"],
  "mappings": "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",
  "names": []
}
