{"version":3,"file":"789.js","mappings":"mIAeIA,EAAS,CAAC,EAEd,MAAMC,UAAiB,IACnB,WAAAC,CAAYC,GACRC,MAAMD,GACN,IAAIE,EAAOF,EAAKE,KAChBC,KAAKC,SAAWF,EAChBC,KAAKE,MAAQH,EAAKI,GAClBH,KAAKI,UAAW,EAChBJ,KAAKK,QAAUC,EAAEP,GAAMQ,KAAK,WAC5BP,KAAKQ,SAAWF,EAAEP,GAAMQ,KAAK,aACS,IAAlCD,EAAEN,KAAKC,UAAUM,KAAK,UACtBP,KAAKI,UAAW,GAEpBJ,KAAKS,aAAe,QAChBH,EAAEN,KAAKC,UAAUS,GAAG,mBACpBV,KAAKS,aAAe,QAGxBT,KAAKW,aAAeL,EAAEN,KAAKC,UAAUM,KAAK,QAC1CP,KAAKY,aAAeN,EAAEN,KAAKC,UAAUM,KAAK,QACrCP,KAAKK,UACFL,KAAKI,SACLJ,KAAKa,iBAELb,KAAKc,YAELd,KAAKQ,WACLR,KAAKe,aAAaC,QAAQC,SAAWjB,KAAKQ,WAGlDR,KAAKkB,0BACT,CAKA,SAAAJ,GACId,KAAKe,aAAeI,SAASC,cAAc,OAC3CpB,KAAKe,aAAaZ,GAAKH,KAAKE,MAC5BI,EAAEN,KAAKe,cAAcM,KAAK,CAAEC,MAAO,YAActB,KAAKS,eACtDT,KAAKe,aAAaQ,UAAYvB,KAAKC,SAASsB,UAC5CjB,EAAEN,KAAKC,UAAUuB,YAAYxB,KAAKe,aACtC,CACA,cAAAF,GACIb,KAAKe,aAAeI,SAASC,cAAc,YAC3CpB,KAAKe,aAAaZ,GAAKH,KAAKE,MAC5BF,KAAKe,aAAaU,KAAOzB,KAAKW,aAC9BX,KAAKe,aAAaW,KAAO1B,KAAKY,aAC9BZ,KAAKe,aAAaQ,UAAYvB,KAAKC,SAASsB,UAC5CjB,EAAEN,KAAKe,cAAcY,SAAS,qBAC9BrB,EAAEN,KAAKC,UAAUuB,YAAYxB,KAAKe,aACtC,EAOJT,GAAE,WACEA,EAAE,6BAA6BsB,MAAK,SAAUC,GAC1C,IACInC,EAAOM,KAAKG,IAAM,IAAIR,EAAS,CAAEI,KAAMC,MAC3C,CAAE,MAAO8B,GACLC,QAAQC,IAAI,4BAA4BhC,KAAKG,KACjD,CACJ,GACJ,SAEwC,IAA7B8B,OAAOC,oBACdD,OAAOC,kBAAoB,CAAC,GAGhCD,OAAOC,kBAAkBC,SAAW,SAAUtC,GAC1C,OAAO,IAAIF,EAASE,EACxB,C","sources":["webpack://WebComponents/./runestone/datafile/js/datafile.js"],"sourcesContent":["/*==========================================\n=======     Master datafile.js      ========\n============================================\n===     This file contains the JS for    ===\n===   the Runestone Datafile component.  ===\n============================================\n===              Created by              ===\n===           Isaiah Mayerchak           ===\n===                6/8/15                ===\n==========================================*/\n\"use strict\";\n\nimport RunestoneBase from \"../../common/js/runestonebase\";\nimport \"../css/datafile.css\";\n\nvar dfList = {}; // Dictionary that contains all instances of Datafile objects\n\nclass DataFile extends RunestoneBase {\n    constructor(opts) {\n        super(opts);\n        var orig = opts.orig; // entire <pre> element that will be replaced by new HTML\n        this.origElem = orig;\n        this.divid = orig.id;\n        this.dataEdit = false;\n        this.isImage = $(orig).data(\"isimage\");\n        this.fileName = $(orig).data(\"filename\");\n        if ($(this.origElem).data(\"edit\") === true) {\n            this.dataEdit = true;\n        }\n        this.displayClass = \"block\"; // Users can specify the non-edit component to be hidden--default is not hidden\n        if ($(this.origElem).is(\"[data-hidden]\")) {\n            this.displayClass = \"none\";\n        }\n        // Users can specify numbers of rows/columns when editing is true\n        this.numberOfRows = $(this.origElem).data(\"rows\");\n        this.numberOfCols = $(this.origElem).data(\"cols\");\n        if (!this.isImage) {\n            if (this.dataEdit) {\n                this.createTextArea();\n            } else {\n                this.createPre();\n            }\n            if (this.fileName) {\n                this.containerDiv.dataset.filename = this.fileName\n            }\n        }\n        this.indicate_component_ready();\n    }\n    /*=====================================\n    == Create either <pre> or <textarea> ==\n    ==  depending on if editing is true  ==\n    ==================================*/\n    createPre() {\n        this.containerDiv = document.createElement(\"pre\");\n        this.containerDiv.id = this.divid;\n        $(this.containerDiv).attr({ style: \"display: \" + this.displayClass });\n        this.containerDiv.innerHTML = this.origElem.innerHTML;\n        $(this.origElem).replaceWith(this.containerDiv);\n    }\n    createTextArea() {\n        this.containerDiv = document.createElement(\"textarea\");\n        this.containerDiv.id = this.divid;\n        this.containerDiv.rows = this.numberOfRows;\n        this.containerDiv.cols = this.numberOfCols;\n        this.containerDiv.innerHTML = this.origElem.innerHTML;\n        $(this.containerDiv).addClass(\"datafiletextfield\");\n        $(this.origElem).replaceWith(this.containerDiv);\n    }\n}\n\n/*=================================\n== Find the custom HTML tags and ==\n==   execute our code on them    ==\n=================================*/\n$(function () {\n    $(\"[data-component=datafile]\").each(function (index) {\n        try {\n            dfList[this.id] = new DataFile({ orig: this });\n        } catch (err) {\n            console.log(`Error rendering DataFile ${this.id}`);\n        }\n    });\n});\n\nif (typeof window.component_factory === \"undefined\") {\n    window.component_factory = {};\n}\n\nwindow.component_factory.datafile = function (opts) {\n    return new DataFile(opts);\n};\n"],"names":["dfList","DataFile","constructor","opts","super","orig","this","origElem","divid","id","dataEdit","isImage","$","data","fileName","displayClass","is","numberOfRows","numberOfCols","createTextArea","createPre","containerDiv","dataset","filename","indicate_component_ready","document","createElement","attr","style","innerHTML","replaceWith","rows","cols","addClass","each","index","err","console","log","window","component_factory","datafile"],"sourceRoot":""}