{"version":3,"file":"882.js","mappings":"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","sources":["webpack://WebComponents/./runestone/codelens/js/codelens.js"],"sourcesContent":["/**\n * Created by bmiller on 5/10/15.\n */\n\n/*\n Since I don't want to modify the codelens code I'll attach the logging functionality this way.\n This actually seems like a better way to do it maybe across the board to separate logging\n from the real funcionality. It would also allow a better way of turning off/on logging..\n As long as Philip doesn't go and change the id values for the buttons and slider this will\n continue to work.... In the best of all worlds we might add a function to the visualizer to\n return the buttons, but I'm having a hard time thinking of any other use for that besides mine.\n */\n\nimport RunestoneBase from \"../../common/js/runestonebase.js\";\nimport \"./pytutor-embed.bundle.js\";\nimport \"./../css/pytutor.css\";\n\nfunction attachLoggers(codelens, divid) {\n let rb = new RunestoneBase();\n codelens.domRoot.find(\"#jmpFirstInstr\").click(function () {\n rb.logBookEvent({ event: \"codelens\", act: \"first\", div_id: divid });\n });\n codelens.domRoot.find(\"#jmpLastInstr\").click(function () {\n rb.logBookEvent({ event: \"codelens\", act: \"last\", div_id: divid });\n });\n codelens.domRoot.find(\"#jmpStepBack\").click(function () {\n rb.logBookEvent({ event: \"codelens\", act: \"back\", div_id: divid });\n });\n codelens.domRoot.find(\"#jmpStepFwd\").click(function () {\n rb.logBookEvent({ event: \"codelens\", act: \"fwd\", div_id: divid });\n });\n codelens.domRoot.find(\"#executionSlider\").bind(\"slide\", function (evt, ui) {\n rb.logBookEvent({ event: \"codelens\", act: \"slide\", div_id: divid });\n });\n // TODO: The component isn't quite fully initialized, but it also doesn't inherit from RunestoneBase. This is a convenient place to mark it ready for now, but it should be moved forward in time during a rewrite.\n rb.containerDiv = document.getElementById(divid);\n rb.indicate_component_ready();\n}\n\nfunction styleButtons(divid) {\n var myVis = $(\"#\" + divid);\n $(myVis).find(\"#jmpFirstInstr\").addClass(\"btn btn-default\");\n $(myVis).find(\"#jmpStepBack\").addClass(\"btn btn-danger\");\n $(myVis).find(\"#jmpStepFwd\").addClass(\"btn btn-success\");\n $(myVis).find(\"#jmpLastInstr\").addClass(\"btn btn-default\");\n}\n\nif (typeof allVsualizers === \"undefined\") {\n window.allVisualizers = [];\n}\n\nif (typeof window.component_factory === \"undefined\") {\n window.component_factory = {};\n}\n\nwindow.component_factory.codelens = function (opts) {\n // opts is an object that will contain a key referencing the orignal dom element\n // often it will also have a key for useRunestoneServices\n let el = opts.orig;\n let vel = el.querySelector(\".pytutorVisualizer\");\n let divid = vel.id;\n let lang = JSON.parse(vel.dataset.params).lang;\n // addVisualizerToPage comes from pytutor-embed\n // allTraceData is created by a series of script tags that when loaded create this\n // as a global object containing trace information.\n try {\n let vis = addVisualizerToPage(allTraceData[divid], divid, {\n startingInstruction: 0,\n editCodeBaseURL: null,\n hideCode: false,\n lang: lang,\n });\n attachLoggers(vis, divid);\n styleButtons(divid);\n window.allVisualizers.push(vis);\n } catch (err) {\n console.log(`Error rendering CodeLens Problem ${divid}`);\n console.log(err);\n }\n\n window.addEventListener(\"codelens:answer\", function (evt) {\n let rb = new RunestoneBase();\n rb.logBookEvent({\n event: \"codelens\",\n div_id: evt.detail.divid,\n act: `answer:${evt.detail.answer}`,\n correct: evt.detail.correct,\n });\n console.log(evt);\n });\n};\n\n// After all of the libraries are loaded...\n$(document).on(\"runestone:login-complete\", function () {\n if (typeof allTraceData !== \"undefined\") {\n for (let divid in allTraceData) {\n let cl = document.getElementById(divid);\n let lang = $(cl).data(\"params\").lang;\n try {\n if (divid in window.allTraceData) {\n var vis = addVisualizerToPage(allTraceData[divid], divid, {\n startingInstruction: 0,\n editCodeBaseURL: null,\n hideCode: false,\n lang: lang,\n });\n } else {\n alert(\n `${divid} is missing trace data. This is probably a build error. Please report it on github.`\n );\n }\n attachLoggers(vis, divid);\n styleButtons(divid);\n window.allVisualizers.push(vis);\n } catch (err) {\n console.log(`Error rendering CodeLens Problem ${divid}`);\n console.log(err);\n }\n }\n window.addEventListener(\"codelens:answer\", function (evt) {\n let rb = new RunestoneBase();\n rb.logBookEvent({\n event: \"codelens\",\n div_id: evt.detail.divid,\n act: `answer:${evt.detail.answer}`,\n correct: evt.detail.correct,\n });\n console.log(evt);\n });\n }\n});\n"],"names":["attachLoggers","codelens","divid","rb","domRoot","find","click","logBookEvent","event","act","div_id","bind","evt","ui","containerDiv","document","getElementById","indicate_component_ready","styleButtons","myVis","$","addClass","allVsualizers","window","allVisualizers","component_factory","opts","vel","orig","querySelector","id","lang","JSON","parse","dataset","params","vis","addVisualizerToPage","allTraceData","startingInstruction","editCodeBaseURL","hideCode","push","err","console","log","addEventListener","detail","answer","correct","on","cl","data","alert"],"sourceRoot":""}