{"version":3,"file":"js/application-f26435fc3bb8c042439f.js","mappings":"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","sources":["webpack://chefsimon/./app/javascript/controllers/ sync \\.js$","webpack://chefsimon/./app/javascript/controllers/fragment_controller.js","webpack://chefsimon/./app/javascript/controllers/image_util_controller.js","webpack://chefsimon/./app/javascript/controllers/index.js","webpack://chefsimon/./app/javascript/controllers/question_controller.js","webpack://chefsimon/./app/javascript/controllers/recipe_form_controller.js","webpack://chefsimon/./app/javascript/controllers/recipe_show_controller.js","webpack://chefsimon/./app/javascript/packs/application.js"],"sourcesContent":["var map = {\n\t\"./fragment_controller.js\": 110,\n\t\"./image_util_controller.js\": 828,\n\t\"./index.js\": 663,\n\t\"./question_controller.js\": 162,\n\t\"./recipe_form_controller.js\": 401,\n\t\"./recipe_show_controller.js\": 952,\n\t\"controllers/fragment_controller.js\": 110,\n\t\"controllers/image_util_controller.js\": 828,\n\t\"controllers/index.js\": 663,\n\t\"controllers/question_controller.js\": 162,\n\t\"controllers/recipe_form_controller.js\": 401,\n\t\"controllers/recipe_show_controller.js\": 952\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 461;","import { Controller } from \"stimulus\"\n\n\nexport default class extends Controller {\n\n static targets = [\"fragmentIds\", \"initialFragmentIds\", \"fragmentTitle\", \"initialFragmentTitle\", \"fragmentType\", \"finalJson\", \"fragmentText\", \"initialFragmentText\", \"fragmentLegend\", \"initialFragmentLegend\"]\n\n\n addId(event) {\n console.log(\"addid called\")\n const itemId = event.currentTarget.dataset.itemId;\n const itemType = event.currentTarget.dataset.itemType;\n const parser = new URL(window.location)\n const c_comma = this.fragmentIdsTarget.value == '' ? \"\" : \", \"\n\n switch (this.fragmentTypeTarget.value) {\n case 'recette':\n parser.searchParams.set(\"ids\", \"[\" + itemId + \"]\")\n break\n\n case 'selection':\n parser.searchParams.set(\"ids\", \"[\" + itemId + \"]\")\n break\n\n case 'quiz':\n parser.searchParams.set(\"ids\", \"[\" + itemId + \"]\")\n break\n\n case 'article':\n parser.searchParams.set(\"ids\", \"[\" + itemId + \"]\")\n break\n\n case 'recettes_techniques' :\n parser.searchParams.set(\"ids\", \"[\" + this.fragmentIdsTarget.value + c_comma + \"{\\\"id\\\":\" + itemId + \"}]\")\n break\n\n case 'voir_aussi':\n parser.searchParams.set(\"ids\", \"[\" + this.fragmentIdsTarget.value + c_comma + \"{\\\"id\\\":\" + itemId + \",\\\"model\\\":\\\"\" + itemType + \"\\\"\" + \"}]\")\n break\n\n default:\n parser.searchParams.set(\"ids\", \"[\" + this.fragmentIdsTarget.value + c_comma + itemId + \"]\")\n }\n\n window.location = parser.href\n }\n\n changeFragmentType(event) {\n console.log(\"changeFragmentType called\")\n const parser = new URL(window.location)\n parser.searchParams.set(\"type\", this.fragmentTypeTarget.value)\n parser.searchParams.set(\"ids\", \"[]\")\n window.location = parser.href\n }\n\n\n changeFragmentTitle(event) {\n console.log(\"changeFragmentTitle called\")\n if(this.initialFragmentTitleTarget.value !== this.fragmentTitleTarget.value) {\n const parser = new URL(window.location)\n parser.searchParams.set(\"title\", this.fragmentTitleTarget.value)\n window.location = parser.href\n }\n }\n\n changeFragmentIds(event) {\n console.log(\"changeFragmentIds called\")\n if(this.initialFragmentIdsTarget.value !== this.fragmentIdsTarget.value) {\n const parser = new URL(window.location)\n parser.searchParams.set(\"ids\", \"[\" + this.fragmentIdsTarget.value + \"]\")\n window.location = parser.href\n }\n }\n\n changeFragmentText(event) {\n console.log(\"changeFragmentText called\")\n\n if(this.initialFragmentTextTarget.value !== this.fragmentTextTarget.value) {\n const parser = new URL(window.location)\n parser.searchParams.set(\"text\", encodeURIComponent(this.fragmentTextTarget.value))\n window.location = parser.href\n }\n }\n changeFragmentLegend(event) {\n console.log(\"changeFragmentLegend called\")\n\n if(this.initialFragmentLegendTarget.value !== this.fragmentLegendTarget.value) {\n const parser = new URL(window.location)\n parser.searchParams.set(\"legend\", encodeURIComponent(this.fragmentLegendTarget.value))\n window.location = parser.href\n }\n }\n\n\n}\n","import { Controller } from \"stimulus\"\n\n\nexport default class extends Controller {\n\n static targets = ['selectedFileToUpload', 'storeName', 'resultS3Url', 'resultUploadImg', 'linksBloc', 'imageToolbox', 'defaultNoImage']\n static values = { formToken: String }\n\n\n upload(event) {\n console.log(\"Upload image\")\n\n if(this.fileNameToUpload === \"\") {\n return\n }\n\n // get presign url\n fetch('/image_direct_upload/presign?' + new URLSearchParams({\n store_name: this.storeNameTarget.value,\n file_name: this.fileNameToUpload,\n })).then(response => response.text()).then(s3_url => {\n console.log('We have a presign url')\n fetch(s3_url, {\n method: 'PUT',\n body: this.selectedFileToUploadTarget.files[0],\n headers: { 'Content-Type': 'application/octet-stream' }\n }).then( () => {\n this.resultUploadImgTarget.src = removeUrlParameters(s3_url)\n this.resultUploadImgTarget.style.visibility = \"visible\"\n\n this.linksBlocTarget.style.visibility = \"visible\"\n this.resultS3UrlTarget.value = removeUrlParameters(s3_url)\n this.selectedFileToUploadTarget.classList.remove(\"select_file_default_image\")\n this.selectedFileToUploadTarget.classList.add(\"select_file_toolbar\")\n\n this.imageToolboxTarget.style.visibility = \"visible\"\n\n this.defaultNoImageTarget.style.visibility = \"hidden\"\n })\n }).catch((error) => {\n console.error('Error catching presign url from server:', error)\n });\n }\n\n selectFile(event) {\n console.log(\"Select an image to download\")\n alert(\"select\")\n this.selectedFileToUploadTarget.click()\n }\n\n remove(event) {\n console.log(\"Remove an uploaded image\")\n\n const formData = new FormData()\n formData.append('store_name', this.storeNameTarget.value)\n formData.append('file_name', this.fileNameToUpload)\n formData.append('authenticity_token', this.formTokenValue)\n\n fetch('/image_direct_upload/delete/',{ method: 'POST', body: formData }).then( () => {\n this.resultUploadImgTarget.style.visibility = \"hidden\"\n this.linksBlocTarget.style.visibility = \"hidden\"\n this.imageToolboxTarget.style.visibility = \"hidden\"\n this.defaultNoImageTarget.style.visibility = \"visible\"\n this.selectedFileToUploadTarget.classList.remove(\"select_file_toolbar\")\n this.selectedFileToUploadTarget.classList.add(\"select_file_default_image\")\n this.selectedFileToUploadTarget.files.value = \"\"\n }).catch((error) => {\n console.error('Error delete S3 object:', error)\n });\n }\n\n\n\n // return the checkbox element with correct id\n get fileNameToUpload() {\n return this.selectedFileToUploadTarget.value.split('\\\\').pop().split('/').pop()\n }\n\n}\n\nfunction removeUrlParameters(url) {\n return url.split(\"?\")[0]\n}\n","\n\nimport { Application } from \"stimulus\"\nimport { definitionsFromContext } from \"stimulus/webpack-helpers\"\n\nconst application = Application.start()\nconst context = require.context(\"controllers\", true, /\\.js$/)\napplication.load(definitionsFromContext(context))\n\n\napplication.debug = process.env.NODE_ENV === 'development'\n","import { Controller } from \"stimulus\"\n\n\nexport default class extends Controller {\n\n static targets = [ \"checkbox\", \"explanation\", \"navigation\", \"goodanswerid\", \"message\", \"button\", \"linkCorrect\", \"linkWrong\", \"terminateLinkWrong\", \"terminateLinkCorrect\"]\n static values = { score: Number }\n\n\n answer() {\n console.log(\"question#answer called\")\n var isOneCheckboxChecked = false\n\n // check if the user gives an answser\n this.checkboxTargets.forEach( element => {\n if(element.checked) {\n isOneCheckboxChecked = true\n }\n })\n\n if(!isOneCheckboxChecked) {\n console.log(\"No checkbox checked\")\n return\n }\n\n this.buttonTarget.disabled = true\n this.correctAnswerCheckbox.nextElementSibling.classList.add(\"bg-green-good\")\n\n if(this.correctAnswerCheckbox.checked) {\n\n this.messageTarget.textContent = \"Bonne réponse\"\n\n // the last answer, we do not have links but we have a terminate link\n if(this.hasLinkCorrectTarget){\n this.linkCorrectTarget.style.visibility = \"visible\"\n }\n\n if(this.hasTerminateLinkCorrectTarget){\n this.terminateLinkCorrectTarget.style.visibility = \"visible\"\n }\n\n } else {\n this.messageTarget.textContent = \"Mauvaise réponse\"\n // the last answer, we do not have links\n if(this.hasLinkWrongTarget) {\n this.linkWrongTarget.style.visibility = \"visible\"\n }\n if(this.hasTerminateLinkWrongTarget){\n this.terminateLinkWrongTarget.style.visibility = \"visible\"\n }\n }\n\n // disable all checkbox (TODO: disable the answer button)\n this.checkboxTargets.forEach( element => {\n element.disabled = true\n })\n\n this.messageTarget.style.visibility = \"visible\";\n this.explanationTarget.style.visibility = \"visible\";\n this.navigationTarget.style.visibility = \"visible\";\n }\n\n\n update(event) {\n console.log(\"question#update called\")\n var selectedElement = event.target\n\n if(!selectedElement.checked) {\n console.log(\"unchecked -> we do nothing\")\n return\n }\n\n console.log(\"checked -> we unchecked all other checkbox\")\n this.checkboxTargets.forEach( element => {\n if(element.value != selectedElement.value) {\n element.checked = false\n }\n })\n\n }\n\n\n\n // return the checkbox element with correct id\n get correctAnswerCheckbox() {\n var result = null\n this.checkboxTargets.forEach( element => {\n if(element.value === this.goodansweridTarget.id) {\n result = element\n }\n })\n return result\n }\n\n}\n","import { Controller } from \"stimulus\"\n\n\n\nexport default class extends Controller {\n\n static targets = [ 'forms', 'ingredientsOutput', 'ingredientInput', 'preparationInput', 'preparationsOutput', 'externalLink' ]\n static values = { nbSteps: Number }\n\n addIngredientLine(event) {\n var step = event.currentTarget.dataset.ingredientStep\n\n var lastIngredientIndex = this.getIngredientLinesPerStep(step).length-1\n\n console.log(\"Step: \" + step + \" - Last ingredient index:\" + lastIngredientIndex)\n\n var lastIngredientLine = this.getIngredientLinesPerStep(step)[lastIngredientIndex]\n\n var cloned_ingredient_line = lastIngredientLine.cloneNode(true)\n\n // reset value\n //cloned_ingredient_line.querySelector(\"input\").setAttribute(\"value\", \"\")\n cloned_ingredient_line.querySelector(\"input\").value = \"\"\n\n // we want the delete button present\n cloned_ingredient_line.querySelector(\"button\").classList.remove(\"hidden\")\n cloned_ingredient_line.querySelector(\"button\").disabled = false\n\n lastIngredientLine.insertAdjacentElement('afterend', cloned_ingredient_line)\n\n event.preventDefault() //no form submit\n }\n\n\n deleteIngredientLine(event) {\n console.log(\"Delete ingredient line\")\n var ingredientLineToRemove = event.currentTarget.parentElement.parentElement\n ingredientLineToRemove.remove()\n event.preventDefault()\n }\n\n\n addPreparationLine(event) {\n let lastPreparationIndex = this.preparationLines.length-1\n\n console.log(\"Last preparation index:\" + lastPreparationIndex)\n\n let lastPreparationLine = this.preparationLines[lastPreparationIndex]\n\n let cloned_preparation_line = lastPreparationLine.cloneNode(true)\n\n cloned_preparation_line.querySelector(\"textarea\").value = \"\" //setAttribute(\"value\", \"\")\n cloned_preparation_line.querySelector(\"button\").classList.remove(\"hidden\")\n cloned_preparation_line.querySelector(\"button\").disabled = false\n\n lastPreparationLine.insertAdjacentElement('afterend', cloned_preparation_line)\n\n this.renumberPreparationLines()\n event.preventDefault() //no form submit\n }\n\n deletePreparationLine(event) {\n console.log(\"Delete preparation line\")\n var preparationLineToRemove = event.currentTarget.parentElement.parentElement.parentElement\n preparationLineToRemove.remove()\n this.renumberPreparationLines()\n event.preventDefault()\n }\n\n\n // Pick all ingredient and preparation forms, compile them in ingredient and preparation text fields\n saveRecipe(event){\n console.log(\"Save recipe\")\n var ingredientsOutputText = \"\"\n this.ingredientInputTargets.forEach( element => {\n //alert(element)\n if(element.value != \"\") {\n ingredientsOutputText = ingredientsOutputText + element.value + \"\\r\\n\"\n }\n })\n //alert(ingredientsOutputText)\n this.ingredientsOutputTarget.value = ingredientsOutputText\n\n var preparationsOutputText = \"\"\n this.preparationInputTargets.forEach( element => {\n //alert(element)\n if(element.value != \"\") {\n preparationsOutputText = preparationsOutputText + element.value + \"\\r\\n\"\n }\n })\n this.preparationsOutputTarget.value = preparationsOutputText\n }\n\n\n // we use the same class for all ingredient lines in the same step (class_<% nb_step%>)\n getIngredientLinesPerStep(step) {\n return this.formsTarget.getElementsByClassName('class_i_' + step)\n }\n\n get preparationLines() {\n return this.formsTarget.getElementsByClassName('preparation_line')\n }\n\n renumberPreparationLines() {\n let preparation_step_numbers = this.formsTarget.getElementsByClassName('preparation_step_number')\n var step = 1\n // because preparation_step_numbers is an HTMLCollection\n Array.prototype.forEach.call(preparation_step_numbers, function(element) {\n element.textContent = step.toString()\n step = step + 1\n });\n }\n\n showOrHideExternalLinks(event) {\n\n Array.prototype.forEach.call(this.externalLinkTargets, function (element) {\n if(element.className == \"hidden\") {\n element.className=\"\"\n } else {\n element.className=\"hidden\"\n }\n });\n\n\n }\n\n}","import { Controller } from \"stimulus\"\n\n\nexport default class extends Controller {\n\n static targets = [ 'ingredientsBloc', 'nbPersons' ]\n static values = { nbPersons: Number, initialValues: Array }\n\n\n incrementNbPersons(event) {\n console.log(\"Increment number of persons. Nb persons=\" + this.nbPersonsValue ); //+ nbPersons + \" to \" + (nbPersons+1) )\n this.nbPersonsValue = this.nbPersonsValue + 1\n this.updateQuantities(this.nbPersonsValue)\n }\n\n decrementNbPersons(event) {\n console.log(\"Decrement number of persons\");\n if(this.nbPersonsValue == 1) {\n return;\n }\n this.nbPersonsValue = this.nbPersonsValue - 1\n this.updateQuantities(this.nbPersonsValue)\n }\n\n updateQuantities(newNbPersonsValue) {\n console.log(\"Update quantities to \" + newNbPersonsValue + \" persons\");\n let ingredient_amounts = this.ingredientsBlocTarget.getElementsByClassName('ingredient_amount')\n let initValues = this.initialValuesValue\n var index = 0\n Array.prototype.forEach.call(ingredient_amounts, function(element) {\n let amountForOnePerson = initValues[index]\n let newAmount = amountForOnePerson*newNbPersonsValue\n element.textContent = roundToTwo(newAmount)\n index ++\n });\n this.nbPersonsTarget.textContent = newNbPersonsValue.toString() + (newNbPersonsValue==1?' personne':' personnes')\n }\n}\n\n// function myParseFloat(amountStr) {\n// if(amountStr.includes('/')){\n// console.log(\"we have a fraction\")\n// let amountArray = amountStr.split(\"/\");\n// return parseInt(amountArray[0])/parseInt(amountArray[1])\n// }\n// return parseFloat(amountStr)\n// }\n\nfunction roundToTwo(num) {\n return +(Math.round(num + \"e+1\") + \"e-1\");\n}","\n\n/* eslint no-console:0 */\n// This file is automatically compiled by Webpack, along with any other files\n// present in this directory. You're encouraged to place your actual application logic in\n// a relevant structure within app/packs and only use these pack files to reference\n// that code so it'll be compiled.\n//\n// To reference this file, add <%= javascript_pack_tag 'application' %> to the appropriate\n// layout file, like app/views/layouts/application.html.erb\n\n// Uncomment to copy all static images under ../images to the output folder and reference\n// them with the image_pack_tag helper in views (e.g <%= image_pack_tag 'rails.png' %>)\n// or the `imagePath` JavaScript helper below.\n//\n// const images = require.context('../images', true)\n// const imagePath = (name) => images(name, true)\n\n//import 'core-js/stable'\n//import 'regenerator-runtime/runtime'\n\n// Patch pour réussir à faire fonctionner lien supprimer photo recette. A revoir.\n//import \"./add_jquery\"\n//import {} from 'jquery-ujs'\n//import './jquery-ui'\n//import 'jquery-ui/ui/widgets/dialog';\n\nwindow.Rails = require(\"@rails/ujs\")\n//require(\"@hotwired/turbo-rails\")\n\n//Turbo.session.drive = false\n\n//require(\"@rails/ujs\").start()\n// Start Rails UJS\nRails.start()\n\nimport \"../stylesheets/fonts.css\"; // Ajout de l'importation des polices\n\nimport \"../stylesheets/application.scss\";\n\n// Stimulus\nimport \"controllers\""],"names":["map","webpackContext","req","id","webpackContextResolve","__webpack_require__","o","e","Error","code","keys","Object","resolve","module","exports","_default","_Controller","apply","arguments","_proto","prototype","addId","event","console","log","itemId","currentTarget","dataset","itemType","parser","URL","window","location","c_comma","this","fragmentIdsTarget","value","fragmentTypeTarget","searchParams","set","href","changeFragmentType","changeFragmentTitle","initialFragmentTitleTarget","fragmentTitleTarget","changeFragmentIds","initialFragmentIdsTarget","changeFragmentText","initialFragmentTextTarget","fragmentTextTarget","encodeURIComponent","changeFragmentLegend","initialFragmentLegendTarget","fragmentLegendTarget","Controller","targets","upload","_this","fileNameToUpload","fetch","URLSearchParams","store_name","storeNameTarget","file_name","then","response","text","s3_url","method","body","selectedFileToUploadTarget","files","headers","resultUploadImgTarget","src","removeUrlParameters","style","visibility","linksBlocTarget","resultS3UrlTarget","classList","remove","add","imageToolboxTarget","defaultNoImageTarget","error","selectFile","alert","click","_this2","formData","FormData","append","formTokenValue","_createClass","key","get","split","pop","url","values","formToken","String","application","Application","start","context","require","load","definitionsFromContext","debug","process","answer","isOneCheckboxChecked","checkboxTargets","forEach","element","checked","buttonTarget","disabled","correctAnswerCheckbox","nextElementSibling","messageTarget","textContent","hasLinkCorrectTarget","linkCorrectTarget","hasTerminateLinkCorrectTarget","terminateLinkCorrectTarget","hasLinkWrongTarget","linkWrongTarget","hasTerminateLinkWrongTarget","terminateLinkWrongTarget","explanationTarget","navigationTarget","update","selectedElement","target","result","goodansweridTarget","score","Number","addIngredientLine","step","ingredientStep","lastIngredientIndex","getIngredientLinesPerStep","length","lastIngredientLine","cloned_ingredient_line","cloneNode","querySelector","insertAdjacentElement","preventDefault","deleteIngredientLine","parentElement","addPreparationLine","lastPreparationIndex","preparationLines","lastPreparationLine","cloned_preparation_line","renumberPreparationLines","deletePreparationLine","saveRecipe","ingredientsOutputText","ingredientInputTargets","ingredientsOutputTarget","preparationsOutputText","preparationInputTargets","preparationsOutputTarget","formsTarget","getElementsByClassName","preparation_step_numbers","Array","call","toString","showOrHideExternalLinks","externalLinkTargets","className","nbSteps","incrementNbPersons","nbPersonsValue","updateQuantities","decrementNbPersons","newNbPersonsValue","ingredient_amounts","ingredientsBlocTarget","initValues","initialValuesValue","index","num","newAmount","Math","round","nbPersonsTarget","nbPersons","initialValues","Rails"],"sourceRoot":""}