{"version":3,"file":"js/900-c9164d45d903b6409032.js","mappings":"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","sources":["webpack:///./app/javascript/components/ sync ^\\.\\/.*$","webpack:///./app/javascript/components/BlockRemove.js","webpack:///./app/javascript/components/CircuitBlock.js","webpack:///./app/javascript/components/CodeBlock.js","webpack:///./app/javascript/components/ContentBlock.js","webpack:///./app/javascript/components/ContentBlockList.js","webpack:///./app/javascript/components/HelloWorld.js","webpack:///./app/javascript/components/MathBlock.js","webpack:///./app/javascript/components/ParagraphBlock.js","webpack:///./app/javascript/components/PhotoBlock.js","webpack:///./app/javascript/components/VideoBlock.js"],"sourcesContent":["var map = {\n\t\"./BlockRemove\": 878,\n\t\"./BlockRemove.js\": 878,\n\t\"./CircuitBlock\": 335,\n\t\"./CircuitBlock.js\": 335,\n\t\"./CodeBlock\": 625,\n\t\"./CodeBlock.js\": 625,\n\t\"./ContentBlock\": 913,\n\t\"./ContentBlock.js\": 913,\n\t\"./ContentBlockList\": 741,\n\t\"./ContentBlockList.js\": 741,\n\t\"./HelloWorld\": 831,\n\t\"./HelloWorld.js\": 831,\n\t\"./MathBlock\": 44,\n\t\"./MathBlock.js\": 44,\n\t\"./ParagraphBlock\": 436,\n\t\"./ParagraphBlock.js\": 436,\n\t\"./PhotoBlock\": 18,\n\t\"./PhotoBlock.js\": 18,\n\t\"./VideoBlock\": 759,\n\t\"./VideoBlock.js\": 759\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 = 900;","import React from \"react\"\nimport PropTypes from \"prop-types\"\n\nexport default class BlockRemove extends React.Component {\n\n render () {\n const className = this.props.class + \" block-remove\";\n return (\n x\n );\n }\n}\n\nBlockRemove.propTypes = {\n class: PropTypes.string,\n clickHandler: PropTypes.func,\n}\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\n\nimport BlockRemove from \"./BlockRemove\"\n\nexport default class CircuitBlock extends React.Component {\n\n constructor (props) {\n super(props);\n\n this.state = {\n published: this.props.published || false,\n circuit: \"\",\n label: \"\",\n }\n\n if(typeof this.props.circuit == \"string\" && this.props.circuit.length > 0) {\n this.state.circuit = this.props.circuit;\n }\n\n }\n\n componentDidMount () {\n\n var circuit_json = {\"width\": 600, \"height\": 200};\n var element = $(\"#circuit-simcir_\" + this.props.order);\n\n if (this.state.circuit) {\n circuit_json = JSON.parse(this.state.circuit);\n }\n\n /* Initialize circuits js library */\n simcir.setupSimcir(element, circuit_json);\n\n this.setState({\n element: element,\n circuit: JSON.stringify(circuit_json)\n })\n }\n\n storeCircuit(event) {\n var data = simcir.controller(\n this.state.element.find('.simcir-workspace')\n ).text();\n\n this.setState({circuit: data});\n\n event.stopPropagation();\n event.preventDefault();\n }\n\n onInputChange (event) {\n\n this.setState({\n circuit: event.target.value\n })\n }\n\n updateCircuit (event) {\n /* Update circuit on SimCir */\n simcir.setupSimcir(this.state.element, JSON.parse(this.state.circuit));\n }\n\n render () {\n const circuit = (\n
\n
\n
\n
\n )\n\n const form = (\n

\n

\n \n \n
\n
\n \n \n
\n

\n )\n\n if (this.state.published) {\n return circuit;\n } else {\n return form;\n }\n }\n}\n\nCircuitBlock.propTypes = {\n published: PropTypes.bool,\n circuit: PropTypes.string,\n}\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\nimport ReactDOM from \"react-dom\"\nimport { createRef } from \"react\"\n\nimport BlockRemove from \"./BlockRemove\"\n\nexport default class CodeBlock extends React.Component {\n\n blockRef = createRef(null);\n\n constructor (props) {\n super(props);\n this.state = {\n published: this.props.published || false,\n value: \"\"\n }\n\n this.TAB = 9;\n\n if (typeof this.props.code == \"string\" && this.props.code.length > 0) {\n\n this.state.value = this.props.code;\n }\n }\n\n indent (event) {\n\n const key = event.keyCode;\n\n if(key == this.TAB) {\n\n const value = event.target.value;\n const start = value.substring(0, event.target.selectionStart);\n const end = value.substring(event.target.selectionEnd);\n\n this.setState({value: start + \" \" + end});\n event.target.selectionStart = start + 4;\n event.preventDefault();\n }\n }\n\n change (event) {\n this.setState({value: event.target.value});\n }\n\n pageLoadCallback (event) {\n\n // Highlights current code block\n hljs.highlightBlock(this.blockRef.current);\n }\n\n /**\n * Highlights the code after the component has been mounted\n */\n componentDidMount () {\n\n window.addEventListener('load', this.pageLoadCallback.bind(this));\n window.addEventListener('turbolinks:load', this.pageLoadCallback.bind(this));\n }\n\n render () {\n\n const form = (\n

\n \n \n \n

\n );\n\n const source = (\n
\n        \n          {this.state.value}\n        \n      
\n );\n\n if(this.state.published) {\n return source;\n } else {\n return form;\n }\n }\n}\n\nCodeBlock.propTypes = {\n code: PropTypes.string,\n};\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\n\nimport ParagraphBlock from \"./ParagraphBlock\"\nimport CodeBlock from \"./CodeBlock\"\nimport PhotoBlock from \"./PhotoBlock\"\nimport VideoBlock from \"./VideoBlock\"\nimport CircuitBlock from \"./CircuitBlock\"\nimport MathBlock from \"./MathBlock\"\nimport ContentBlockList from \"./ContentBlockList\"\nimport BlockRemove from \"./BlockRemove\"\n\n\nexport default class ContentBlock extends React.Component {\n\n constructor (props) {\n\n super(props);\n\n this.state = {\n components: [],\n published: this.props.published || false,\n nextOrder: 0, // Initialize blocks order on form\n };\n\n this.handleClick = this.handleClick.bind(this);\n\n if(this.props.contentBlocks &&\n Object.keys(this.props.contentBlocks).length > 0) {\n this.createComponents();\n }\n }\n\n createComponents () {\n\n const objectKeys = Object.keys(this.props.contentBlocks);\n for (let i=0; i < objectKeys.length; i++) {\n\n const block = this.props.contentBlocks[ objectKeys[i] ];\n const key = Object.keys(block)[0];\n this.addBlock(key, i, block[key]);\n }\n }\n\n addBlock(blockType, index, value) {\n\n let component = undefined;\n switch (blockType) {\n case \"video\":\n component = ;\n break;\n case \"photo\":\n component = ;\n break;\n case \"paragraph\":\n component = ;\n break;\n case \"code\":\n component = ;\n break;\n case \"math\":\n component = ;\n break;\n case \"circuit\":\n component = ;\n break;\n default:\n console.log(\"Unknown block type\");\n }\n\n this.state.components.push(component);\n this.state.nextOrder++;\n }\n\n deleteBlock (index) {\n this.state.components.pop(index);\n this.forceUpdate();\n }\n\n handleClick (event) {\n\n event.preventDefault();\n event.stopPropagation();\n\n const blockType = event.currentTarget.className;\n const nBlocks = this.state.components.length;\n\n this.addBlock(blockType, nBlocks);\n this.setState({});\n }\n\n render () {\n\n const listBlocks = (\n
\n
    \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
\n
\n );\n\n return (\n
\n \n {this.state.published ? null : listBlocks}\n
\n );\n }\n}\n\nContentBlock.propTypes = {\n contentBlocks: PropTypes.object,\n published: PropTypes.bool,\n}\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\n\nimport BlockRemove from \"./BlockRemove\"\n\nexport default class ContentBlockList extends React.Component {\n\n render () {\n\n return (\n
\n {this.props.blocks.map(function (component) {\n return component\n })}\n
\n );\n }\n};\n\nContentBlockList.propTypes = {\n blocks: PropTypes.array,\n}\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\n\nimport BlockRemove from \"./BlockRemove\"\n\nexport default class HelloWorld extends React.Component {\n\n constructor (props) {\n super(props);\n }\n\n render () {\n return (\n \n Greeting: {this.props.greeting}\n \n )\n }\n}\n\nHelloWorld.propTypes = {\n greeting: PropTypes.string\n};\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\n\nimport BlockRemove from \"./BlockRemove\"\n\nexport default class MathBlock extends React.Component {\n\n constructor (props) {\n super(props);\n this.state = {\n published: this.props.published || false,\n value: \"\\\\begin{flalign}\\n & \\\\\\\\ \\n\\\\end{flalign}\"\n }\n\n if (typeof this.props.math == \"string\" && this.props.math.length > 0) {\n\n this.state.value = this.props.math;\n }\n }\n\n genTex () {\n\n var output = document.getElementById(\"math-block-\" + this.props.order);\n output.innerHTML = '';\n\n MathJax.texReset();\n var options = MathJax.getMetricsFor(output);\n\n MathJax.tex2chtmlPromise(this.state.value, options).then(function (node) {\n\n output.appendChild(node);\n MathJax.startup.document.clear();\n MathJax.startup.document.updateDocument();\n\n }).catch(function (err) {\n\n let preElm = document.createElement('pre');\n let txtElm = document.createTextNode(err.message);\n output.appendChild(preElm).appendChild(txtElm);\n })\n }\n\n change (event) {\n this.setState({value: event.target.value});\n }\n\n click (event) {\n\n this.genTex();\n\n event.preventDefault();\n event.stopPropagation();\n }\n\n blur (event) {\n\n this.genTex();\n event.stopPropagation();\n }\n\n pageLoadCallback (event) {\n\n this.genTex();\n }\n\n componentDidMount () {\n\n window.addEventListener('load', this.pageLoadCallback.bind(this));\n window.addEventListener('turbolinks:load', this.pageLoadCallback.bind(this));\n }\n\n render () {\n const form = (\n

\n \n \n \n \n\n

\n
\n

\n );\n\n const mathContent = (\n
\n
\n );\n\n if(this.state.published) {\n return mathContent;\n } else {\n return form;\n }\n }\n}\n\nMathBlock.propTypes = {\n math: PropTypes.string,\n}\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\n\nimport BlockRemove from \"./BlockRemove\"\n\nexport default class ParagraphBlock extends React.Component {\n\n constructor (props) {\n super(props);\n\n this.state = {\n published: this.props.published || false,\n ctrlPressed: false,\n anchor: false,\n value: this.props.text || \"\",\n focus: false\n }\n\n this.CTRL = 17;\n this.COMMA = 188;\n this.M = 77;\n this.currentAnchor = undefined;\n }\n\n /**\n * Set the state for CTRL key pressed\n */\n handleKeyDown (event) {\n\n const key = event.keyCode;\n\n if(key == this.CTRL) {\n this.state.ctrlPressed = true;\n }\n }\n\n /**\n * Handle B or I keys pressed. The selection start and end are also read.\n * For each key, bold or italic are used. If the key is CTRL the state is\n * updated.\n */\n handleKeyUp (event) {\n\n event.preventDefault();\n\n const key = event.keyCode;\n const selection = window.getSelection();\n const start = selection.anchorOffset;\n const end = selection.focusOffset;\n\n if(key == this.COMMA && this.state.ctrlPressed) {\n this.insertLinkInput(event);\n } else if (key == this.M && this.state.ctrlPressed) {\n this.insertTitle(event);\n }\n\n this.state.ctrlPressed = false;\n }\n\n\n /**\n * Inserts tag a after paragraph to use as link url\n */\n insertLinkInput (event) {\n\n if (window.getSelection().toString()) {\n\n this.currentAnchor = document.createElement('a');\n this.currentAnchor.target = \"_blank\";\n window.getSelection().getRangeAt(0).surroundContents(this.currentAnchor);\n\n this.setState({\n anchor: true\n });\n }\n\n event.preventDefault();\n }\n\n\n /**\n * Inserts a title using tag bold with styles\n */\n insertTitle (event) {\n\n var titleElm = document.createElement(\"h3\");\n titleElm.className = \"paragraph-title\";\n titleElm.onblur = this.closeEdition;\n titleElm.onclick = this.allowEdition;\n\n window.getSelection().getRangeAt(0).surroundContents(titleElm);\n this.updateState();\n\n event.preventDefault();\n }\n\n /**\n * Update paragraph div state\n */\n updateState () {\n\n\n const div = document.getElementById(\"div-paragraph-\" + this.props.order);\n\n this.setState({\n anchor: false,\n value: div.innerHTML,\n });\n\n div.click();\n div.focus();\n }\n\n /**\n * Sets the current anchor url based on input url\n */\n setLinkUrl (event) {\n\n const url = event.target.value;\n this.currentAnchor.href = url;\n this.currentAnchor = undefined;\n\n this.updateState();\n\n event.stopPropagation();\n }\n\n change (element) {\n\n let input = document.getElementById(\"paragraph-\" + this.props.order);\n input.value = element.innerHTML;\n }\n\n changeCallback (event) {\n\n this.change(event.target);\n }\n\n\n /**\n * Allows paragraph div edition\n */\n allowEdition (event) {\n\n const paragraphDivSelector = \"div-paragraph-\" + this.props.order;\n const paragraphDiv = document.getElementById(paragraphDivSelector);\n\n paragraphDiv.setAttribute(\"contenteditable\", true);\n\n for(var i=0; i < paragraphDiv.childNodes.length; i++) {\n\n const element = paragraphDiv.childNodes[i];\n if(element.nodeType === Node.ELEMENT_NODE) {\n element.setAttribute(\"contenteditable\", true);\n }\n }\n }\n\n\n /**\n * Closes paragraph div edition\n */\n closeEdition (event) {\n\n const paragraphDivSelector = \"div-paragraph-\" + this.props.order;\n const paragraphDiv = document.getElementById(paragraphDivSelector);\n\n paragraphDiv.removeAttribute(\"contenteditable\");\n\n for(var i=0; i < paragraphDiv.childNodes.length; i++) {\n\n const element = paragraphDiv.childNodes[i];\n if(element.nodeType === Node.ELEMENT_NODE) {\n element.removeAttribute(\"contenteditable\");\n }\n }\n\n this.change(paragraphDiv);\n }\n\n\n render () {\n\n let anchor = \"\";\n if(this.state.anchor) {\n anchor = (\n \n );\n }\n\n const form = (\n

\n \n \n \n {anchor}\n \n

\n );\n\n const paragraph = (\n

\n );\n\n if(this.state.published) {\n return paragraph;\n } else {\n return form;\n }\n }\n}\n\nParagraphBlock.propTypes = {\n published: PropTypes.bool,\n text: PropTypes.string,\n}\n\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\n\nimport BlockRemove from \"./BlockRemove\"\n\nexport default class PhotoBlock extends React.Component {\n\n constructor (props) {\n super(props);\n\n this.state = {\n visible: false,\n published: this.props.published || false,\n\n file: undefined,\n imageUrl: undefined,\n imagePreviewURL: undefined,\n imageAlt: undefined,\n }\n\n if(this.props.photo) {\n\n if (this.props.photo.path && typeof this.props.photo.path == \"string\") {\n this.state.imageUrl = this.props.photo.path;\n this.state.imagePreviewURL= this.state.imageUrl;\n }\n\n if (this.props.photo.caption && typeof this.props.photo.caption == \"string\") {\n this.state.imageAlt = this.props.photo.caption;\n }\n }\n }\n\n handleFileChoose (event) {\n\n let reader = new FileReader();\n let file = event.target.files[0];\n\n reader.onloadend = () => {\n this.setState({\n file: file,\n imagePreviewURL: reader.result\n });\n }\n\n reader.readAsDataURL(file);\n }\n\n /**\n * The form is correct. Rails does not put alt tag in its class for uploading\n * files\n */\n fillImageAlt(event) {\n\n const alternate = event.target.value;\n\n this.setState({\n imageAlt: alternate\n });\n\n event.stopPropagation();\n }\n\n render () {\n\n let preview = \"\";\n if(this.state.imagePreviewURL) {\n preview = (\n

\n {this.state.imageAlt}\n
\n );\n }\n\n let formFileInput = (\n\n \n );\n\n if(this.state.imageUrl) {\n\n formFileInput = (\n \n );\n }\n\n const form = (\n

\n \n {formFileInput}\n \n {preview}\n \n

\n );\n\n const photo = (\n \n \n {this.state.imageAlt}\n \n );\n\n if(this.state.published) {\n return photo;\n } else {\n return form;\n }\n }\n}\n\nPhotoBlock.propTypes = {\n path: PropTypes.string,\n caption: PropTypes.string,\n};\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\n\nimport BlockRemove from \"./BlockRemove\"\n\nexport default class VideoBlock extends React.Component {\n\n constructor (props) {\n super(props);\n\n this.state = {\n published: this.props.published || false,\n value: \"\",\n videoID: null,\n }\n\n this.youtube = {\n IMG_URL: \"https://img.youtube.com/vi/\",\n IMG_QUALITY: \"/0.jpg\",\n URL_PATTERN: /v=(\\w|-){11}/,\n ID_LENGTH: 11,\n YOUTUBE_EMBED_URL: \"https://www.youtube.com/embed/\",\n }\n\n if(typeof this.props.url == \"string\" && this.props.url.length > 0) {\n\n const videoID = this.getVideoID(this.props.url);\n\n this.state.value = this.props.url;\n this.state.videoID = videoID;\n }\n }\n\n getVideoID (url) {\n\n if(this.youtube.URL_PATTERN.test(url)) {\n return url.split(\"v=\")[1].substring(0, this.youtube.ID_LENGTH);\n }\n return null;\n }\n\n handleKeyUp (event) {\n\n const value = event.target.value;\n const videoID = this.getVideoID(value);\n this.setState({value: value, videoID: videoID});\n }\n\n render () {\n let image = \"\";\n if(this.state.videoID) {\n const videoThumbURL = this.youtube.IMG_URL + this.state.videoID + this.youtube.IMG_QUALITY;\n image = (\n
\n \n
\n );\n }\n\n const form = (\n

\n

\n \n \n \n
\n {image}\n

\n );\n\n const video = (\n
\n