{"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":""}