mirror of
https://github.com/ocogeclub/ocoge.git
synced 2024-11-24 16:39:49 +00:00
1 line
132 KiB
Plaintext
1 line
132 KiB
Plaintext
{"version":3,"sources":["generators/javascript.js","generators/javascript/variables.js","generators/javascript/variables_dynamic.js","generators/javascript/text.js","generators/javascript/procedures.js","generators/javascript/math.js","generators/javascript/loops.js","generators/javascript/logic.js","generators/javascript/lists.js","generators/javascript/colour.js","generators/javascript/all.js"],"names":["Variables","objectUtils","stringUtils","Generator","inputTypes","Names","NameType","JavaScript","addReservedWords","Object","getOwnPropertyNames","globalThis","join","ORDER_ATOMIC","ORDER_NEW","ORDER_MEMBER","ORDER_FUNCTION_CALL","ORDER_INCREMENT","ORDER_DECREMENT","ORDER_BITWISE_NOT","ORDER_UNARY_PLUS","ORDER_UNARY_NEGATION","ORDER_LOGICAL_NOT","ORDER_TYPEOF","ORDER_VOID","ORDER_DELETE","ORDER_AWAIT","ORDER_EXPONENTIATION","ORDER_MULTIPLICATION","ORDER_DIVISION","ORDER_MODULUS","ORDER_SUBTRACTION","ORDER_ADDITION","ORDER_BITWISE_SHIFT","ORDER_RELATIONAL","ORDER_IN","ORDER_INSTANCEOF","ORDER_EQUALITY","ORDER_BITWISE_AND","ORDER_BITWISE_XOR","ORDER_BITWISE_OR","ORDER_LOGICAL_AND","ORDER_LOGICAL_OR","ORDER_CONDITIONAL","ORDER_ASSIGNMENT","ORDER_YIELD","ORDER_COMMA","ORDER_NONE","ORDER_OVERRIDES","isInitialized","init","JavaScript.init","workspace","getPrototypeOf","call","nameDB_","reset","RESERVED_WORDS_","setVariableMap","getVariableMap","populateVariables","populateProcedures","defvars","devVarList","allDeveloperVariables","i","length","push","getName","DEVELOPER_VARIABLE","variables","allUsedVarModels","getId","VARIABLE","definitions_","finish","JavaScript.finish","code","definitions","values","scrubNakedValue","JavaScript.scrubNakedValue","line","quote_","JavaScript.quote_","string","replace","multiline_quote_","JavaScript.multiline_quote_","split","map","lines","scrub_","JavaScript.scrub_","block","opt_thisOnly","commentCode","outputConnection","targetConnection","comment","getCommentText","wrap","COMMENT_WRAP","prefixLines","inputList","type","VALUE","childBlock","connection","targetBlock","allNestedComments","nextBlock","nextConnection","nextCode","blockToCode","getAdjusted","JavaScript.getAdjusted","atId","opt_delta","opt_negate","opt_order","delta","order","options","oneBasedIndex","defaultAtIndex","innerOrder","outerOrder","at","valueToCode","isNumber","Number","Math","floor","getFieldValue","argument0","varName","strRegExp","forceString","value","test","getSubstringIndex","stringName","where","opt_at","indexOf","itemCount_","element","codeAndOrder","element0","element1","elements","Array","operator","substring","text","textOrder","provideFunction_","functionName","FUNCTION_NAME_PLACEHOLDER_","Error","where1","where2","requiresLengthCall","match","at1","at2","wherePascalCase","at1Param","at2Param","OPERATORS","getField","msg","sub","from","to","funcName","PROCEDURE","xfix1","STATEMENT_PREFIX","injectId","STATEMENT_SUFFIX","INDENT","loopTrap","INFINITE_LOOP_TRAP","branch","statementToCode","returnValue","xfix2","args","getVars","tuple","hasReturnValue_","argument1","arg","CONSTANTS","PROPERTIES","dropdownProperty","suffix","inputOrder","outputOrder","numberToCheck","divisor","func","list","argument2","repeats","String","addLoopTrap","loopVar","getDistinctName","endVar","until","variable0","increment","up","step","abs","startVar","incVar","listVar","indexVar","xfix","loop","getSurroundLoop","suppressPrefixSuffix","n","conditionCode","branchCode","getInput","defaultArgument","value_if","value_then","value_else","repeatCount","item","mode","listOrder","cacheList","xVar","listName","direction","getCompareFunctionName","input","delimiter","red","green","blue","c1","c2","ratio","exports","moduleExports"],"mappings":"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","file":"javascript_compressed.js","sourcesContent":["/**\n * @license\n * Copyright 2012 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/**\n * @fileoverview Helper functions for generating JavaScript for blocks.\n * @suppress {checkTypes|globalThis}\n */\n'use strict';\n\ngoog.module('Blockly.JavaScript');\n\nconst Variables = goog.require('Blockly.Variables');\nconst objectUtils = goog.require('Blockly.utils.object');\nconst stringUtils = goog.require('Blockly.utils.string');\nconst {Block} = goog.requireType('Blockly.Block');\nconst {Generator} = goog.require('Blockly.Generator');\nconst {inputTypes} = goog.require('Blockly.inputTypes');\nconst {Names, NameType} = goog.require('Blockly.Names');\nconst {Workspace} = goog.requireType('Blockly.Workspace');\n\n\n/**\n * JavaScript code generator.\n * @type {!Generator}\n */\nconst JavaScript = new Generator('JavaScript');\n\n/**\n * List of illegal variable names.\n * This is not intended to be a security feature. Blockly is 100% client-side,\n * so bypassing this list is trivial. This is intended to prevent users from\n * accidentally clobbering a built-in object or function.\n */\nJavaScript.addReservedWords(\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Lexical_grammar#Keywords\n 'break,case,catch,class,const,continue,debugger,default,delete,do,else,export,extends,finally,for,function,if,import,in,instanceof,new,return,super,switch,this,throw,try,typeof,var,void,while,with,yield,' +\n 'enum,' +\n 'implements,interface,let,package,private,protected,public,static,' +\n 'await,' +\n 'null,true,false,' +\n // Magic variable.\n 'arguments,' +\n // Everything in the current environment (835 items in Chrome, 104 in Node).\n Object.getOwnPropertyNames(globalThis).join(','));\n\n/**\n * Order of operation ENUMs.\n * https://developer.mozilla.org/en/JavaScript/Reference/Operators/Operator_Precedence\n */\nJavaScript.ORDER_ATOMIC = 0; // 0 \"\" ...\nJavaScript.ORDER_NEW = 1.1; // new\nJavaScript.ORDER_MEMBER = 1.2; // . []\nJavaScript.ORDER_FUNCTION_CALL = 2; // ()\nJavaScript.ORDER_INCREMENT = 3; // ++\nJavaScript.ORDER_DECREMENT = 3; // --\nJavaScript.ORDER_BITWISE_NOT = 4.1; // ~\nJavaScript.ORDER_UNARY_PLUS = 4.2; // +\nJavaScript.ORDER_UNARY_NEGATION = 4.3; // -\nJavaScript.ORDER_LOGICAL_NOT = 4.4; // !\nJavaScript.ORDER_TYPEOF = 4.5; // typeof\nJavaScript.ORDER_VOID = 4.6; // void\nJavaScript.ORDER_DELETE = 4.7; // delete\nJavaScript.ORDER_AWAIT = 4.8; // await\nJavaScript.ORDER_EXPONENTIATION = 5.0; // **\nJavaScript.ORDER_MULTIPLICATION = 5.1; // *\nJavaScript.ORDER_DIVISION = 5.2; // /\nJavaScript.ORDER_MODULUS = 5.3; // %\nJavaScript.ORDER_SUBTRACTION = 6.1; // -\nJavaScript.ORDER_ADDITION = 6.2; // +\nJavaScript.ORDER_BITWISE_SHIFT = 7; // << >> >>>\nJavaScript.ORDER_RELATIONAL = 8; // < <= > >=\nJavaScript.ORDER_IN = 8; // in\nJavaScript.ORDER_INSTANCEOF = 8; // instanceof\nJavaScript.ORDER_EQUALITY = 9; // == != === !==\nJavaScript.ORDER_BITWISE_AND = 10; // &\nJavaScript.ORDER_BITWISE_XOR = 11; // ^\nJavaScript.ORDER_BITWISE_OR = 12; // |\nJavaScript.ORDER_LOGICAL_AND = 13; // &&\nJavaScript.ORDER_LOGICAL_OR = 14; // ||\nJavaScript.ORDER_CONDITIONAL = 15; // ?:\nJavaScript.ORDER_ASSIGNMENT = 16; // = += -= **= *= /= %= <<= >>= ...\nJavaScript.ORDER_YIELD = 17; // yield\nJavaScript.ORDER_COMMA = 18; // ,\nJavaScript.ORDER_NONE = 99; // (...)\n\n/**\n * List of outer-inner pairings that do NOT require parentheses.\n * @type {!Array<!Array<number>>}\n */\nJavaScript.ORDER_OVERRIDES = [\n // (foo()).bar -> foo().bar\n // (foo())[0] -> foo()[0]\n [JavaScript.ORDER_FUNCTION_CALL, JavaScript.ORDER_MEMBER],\n // (foo())() -> foo()()\n [JavaScript.ORDER_FUNCTION_CALL, JavaScript.ORDER_FUNCTION_CALL],\n // (foo.bar).baz -> foo.bar.baz\n // (foo.bar)[0] -> foo.bar[0]\n // (foo[0]).bar -> foo[0].bar\n // (foo[0])[1] -> foo[0][1]\n [JavaScript.ORDER_MEMBER, JavaScript.ORDER_MEMBER],\n // (foo.bar)() -> foo.bar()\n // (foo[0])() -> foo[0]()\n [JavaScript.ORDER_MEMBER, JavaScript.ORDER_FUNCTION_CALL],\n\n // !(!foo) -> !!foo\n [JavaScript.ORDER_LOGICAL_NOT, JavaScript.ORDER_LOGICAL_NOT],\n // a * (b * c) -> a * b * c\n [JavaScript.ORDER_MULTIPLICATION, JavaScript.ORDER_MULTIPLICATION],\n // a + (b + c) -> a + b + c\n [JavaScript.ORDER_ADDITION, JavaScript.ORDER_ADDITION],\n // a && (b && c) -> a && b && c\n [JavaScript.ORDER_LOGICAL_AND, JavaScript.ORDER_LOGICAL_AND],\n // a || (b || c) -> a || b || c\n [JavaScript.ORDER_LOGICAL_OR, JavaScript.ORDER_LOGICAL_OR]\n];\n\n/**\n * Whether the init method has been called.\n * @type {?boolean}\n */\nJavaScript.isInitialized = false;\n\n/**\n * Initialise the database of variable names.\n * @param {!Workspace} workspace Workspace to generate code from.\n */\nJavaScript.init = function(workspace) {\n // Call Blockly.Generator's init.\n Object.getPrototypeOf(this).init.call(this);\n\n if (!this.nameDB_) {\n this.nameDB_ = new Names(this.RESERVED_WORDS_);\n } else {\n this.nameDB_.reset();\n }\n\n this.nameDB_.setVariableMap(workspace.getVariableMap());\n this.nameDB_.populateVariables(workspace);\n this.nameDB_.populateProcedures(workspace);\n\n const defvars = [];\n // Add developer variables (not created or named by the user).\n const devVarList = Variables.allDeveloperVariables(workspace);\n for (let i = 0; i < devVarList.length; i++) {\n defvars.push(\n this.nameDB_.getName(devVarList[i], NameType.DEVELOPER_VARIABLE));\n }\n\n // Add user variables, but only ones that are being used.\n const variables = Variables.allUsedVarModels(workspace);\n for (let i = 0; i < variables.length; i++) {\n defvars.push(this.nameDB_.getName(variables[i].getId(), NameType.VARIABLE));\n }\n\n // Declare all of the variables.\n if (defvars.length) {\n this.definitions_['variables'] = 'var ' + defvars.join(', ') + ';';\n }\n this.isInitialized = true;\n};\n\n/**\n * Prepend the generated code with the variable definitions.\n * @param {string} code Generated code.\n * @return {string} Completed code.\n */\nJavaScript.finish = function(code) {\n // Convert the definitions dictionary into a list.\n const definitions = objectUtils.values(this.definitions_);\n // Call Blockly.Generator's finish.\n code = Object.getPrototypeOf(this).finish.call(this, code);\n this.isInitialized = false;\n\n this.nameDB_.reset();\n return definitions.join('\\n\\n') + '\\n\\n\\n' + code;\n};\n\n/**\n * Naked values are top-level blocks with outputs that aren't plugged into\n * anything. A trailing semicolon is needed to make this legal.\n * @param {string} line Line of generated code.\n * @return {string} Legal line of code.\n */\nJavaScript.scrubNakedValue = function(line) {\n return line + ';\\n';\n};\n\n/**\n * Encode a string as a properly escaped JavaScript string, complete with\n * quotes.\n * @param {string} string Text to encode.\n * @return {string} JavaScript string.\n * @protected\n */\nJavaScript.quote_ = function(string) {\n // Can't use goog.string.quote since Google's style guide recommends\n // JS string literals use single quotes.\n string = string.replace(/\\\\/g, '\\\\\\\\')\n .replace(/\\n/g, '\\\\\\n')\n .replace(/'/g, '\\\\\\'');\n return '\\'' + string + '\\'';\n};\n\n/**\n * Encode a string as a properly escaped multiline JavaScript string, complete\n * with quotes.\n * @param {string} string Text to encode.\n * @return {string} JavaScript string.\n * @protected\n */\nJavaScript.multiline_quote_ = function(string) {\n // Can't use goog.string.quote since Google's style guide recommends\n // JS string literals use single quotes.\n const lines = string.split(/\\n/g).map(this.quote_);\n return lines.join(' + \\'\\\\n\\' +\\n');\n};\n\n/**\n * Common tasks for generating JavaScript from blocks.\n * Handles comments for the specified block and any connected value blocks.\n * Calls any statements following this block.\n * @param {!Block} block The current block.\n * @param {string} code The JavaScript code created for this block.\n * @param {boolean=} opt_thisOnly True to generate code for only this statement.\n * @return {string} JavaScript code with comments and subsequent blocks added.\n * @protected\n */\nJavaScript.scrub_ = function(block, code, opt_thisOnly) {\n let commentCode = '';\n // Only collect comments for blocks that aren't inline.\n if (!block.outputConnection || !block.outputConnection.targetConnection) {\n // Collect comment for this block.\n let comment = block.getCommentText();\n if (comment) {\n comment = stringUtils.wrap(comment, this.COMMENT_WRAP - 3);\n commentCode += this.prefixLines(comment + '\\n', '// ');\n }\n // Collect comments for all value arguments.\n // Don't collect comments for nested statements.\n for (let i = 0; i < block.inputList.length; i++) {\n if (block.inputList[i].type === inputTypes.VALUE) {\n const childBlock = block.inputList[i].connection.targetBlock();\n if (childBlock) {\n comment = this.allNestedComments(childBlock);\n if (comment) {\n commentCode += this.prefixLines(comment, '// ');\n }\n }\n }\n }\n }\n const nextBlock = block.nextConnection && block.nextConnection.targetBlock();\n const nextCode = opt_thisOnly ? '' : this.blockToCode(nextBlock);\n return commentCode + code + nextCode;\n};\n\n/**\n * Gets a property and adjusts the value while taking into account indexing.\n * @param {!Block} block The block.\n * @param {string} atId The property ID of the element to get.\n * @param {number=} opt_delta Value to add.\n * @param {boolean=} opt_negate Whether to negate the value.\n * @param {number=} opt_order The highest order acting on this value.\n * @return {string|number}\n */\nJavaScript.getAdjusted = function(\n block, atId, opt_delta, opt_negate, opt_order) {\n let delta = opt_delta || 0;\n let order = opt_order || this.ORDER_NONE;\n if (block.workspace.options.oneBasedIndex) {\n delta--;\n }\n const defaultAtIndex = block.workspace.options.oneBasedIndex ? '1' : '0';\n\n let innerOrder;\n let outerOrder = order;\n if (delta > 0) {\n outerOrder = this.ORDER_ADDITION;\n innerOrder = this.ORDER_ADDITION;\n } else if (delta < 0) {\n outerOrder = this.ORDER_SUBTRACTION;\n innerOrder = this.ORDER_SUBTRACTION;\n } else if (opt_negate) {\n outerOrder = this.ORDER_UNARY_NEGATION;\n innerOrder = this.ORDER_UNARY_NEGATION;\n }\n\n let at = this.valueToCode(block, atId, outerOrder) || defaultAtIndex;\n\n if (stringUtils.isNumber(at)) {\n // If the index is a naked number, adjust it right now.\n at = Number(at) + delta;\n if (opt_negate) {\n at = -at;\n }\n } else {\n // If the index is dynamic, adjust it in code.\n if (delta > 0) {\n at = at + ' + ' + delta;\n } else if (delta < 0) {\n at = at + ' - ' + -delta;\n }\n if (opt_negate) {\n if (delta) {\n at = '-(' + at + ')';\n } else {\n at = '-' + at;\n }\n }\n innerOrder = Math.floor(innerOrder);\n order = Math.floor(order);\n if (innerOrder && order >= innerOrder) {\n at = '(' + at + ')';\n }\n }\n return at;\n};\n\nexports.javascriptGenerator = JavaScript;\n","/**\n * @license\n * Copyright 2012 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/**\n * @fileoverview Generating JavaScript for variable blocks.\n */\n'use strict';\n\ngoog.module('Blockly.JavaScript.variables');\n\nconst {NameType} = goog.require('Blockly.Names');\nconst {javascriptGenerator: JavaScript} = goog.require('Blockly.JavaScript');\n\n\nJavaScript['variables_get'] = function(block) {\n // Variable getter.\n const code = JavaScript.nameDB_.getName(block.getFieldValue('VAR'),\n NameType.VARIABLE);\n return [code, JavaScript.ORDER_ATOMIC];\n};\n\nJavaScript['variables_set'] = function(block) {\n // Variable setter.\n const argument0 = JavaScript.valueToCode(\n block, 'VALUE', JavaScript.ORDER_ASSIGNMENT) || '0';\n const varName = JavaScript.nameDB_.getName(\n block.getFieldValue('VAR'), NameType.VARIABLE);\n return varName + ' = ' + argument0 + ';\\n';\n};\n","/**\n * @license\n * Copyright 2018 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/**\n * @fileoverview Generating JavaScript for dynamic variable blocks.\n */\n'use strict';\n\ngoog.module('Blockly.JavaScript.variablesDynamic');\n\nconst {javascriptGenerator: JavaScript} = goog.require('Blockly.JavaScript');\n/** @suppress {extraRequire} */\ngoog.require('Blockly.JavaScript.variables');\n\n\n// JavaScript is dynamically typed.\nJavaScript['variables_get_dynamic'] = JavaScript['variables_get'];\nJavaScript['variables_set_dynamic'] = JavaScript['variables_set'];\n","/**\n * @license\n * Copyright 2012 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/**\n * @fileoverview Generating JavaScript for text blocks.\n */\n'use strict';\n\ngoog.module('Blockly.JavaScript.texts');\n\nconst {NameType} = goog.require('Blockly.Names');\nconst {javascriptGenerator: JavaScript} = goog.require('Blockly.JavaScript');\n\n\n/**\n * Regular expression to detect a single-quoted string literal.\n */\nconst strRegExp = /^\\s*'([^']|\\\\')*'\\s*$/;\n\n/**\n * Enclose the provided value in 'String(...)' function.\n * Leave string literals alone.\n * @param {string} value Code evaluating to a value.\n * @return {Array<string|number>} Array containing code evaluating to a string\n * and the order of the returned code.[string, number]\n */\nconst forceString = function(value) {\n if (strRegExp.test(value)) {\n return [value, JavaScript.ORDER_ATOMIC];\n }\n return ['String(' + value + ')', JavaScript.ORDER_FUNCTION_CALL];\n};\n\n/**\n * Returns an expression calculating the index into a string.\n * @param {string} stringName Name of the string, used to calculate length.\n * @param {string} where The method of indexing, selected by dropdown in Blockly\n * @param {string=} opt_at The optional offset when indexing from start/end.\n * @return {string|undefined} Index expression.\n */\nconst getSubstringIndex = function(stringName, where, opt_at) {\n if (where === 'FIRST') {\n return '0';\n } else if (where === 'FROM_END') {\n return stringName + '.length - 1 - ' + opt_at;\n } else if (where === 'LAST') {\n return stringName + '.length - 1';\n } else {\n return opt_at;\n }\n};\n\nJavaScript['text'] = function(block) {\n // Text value.\n const code = JavaScript.quote_(block.getFieldValue('TEXT'));\n return [code, JavaScript.ORDER_ATOMIC];\n};\n\nJavaScript['text_multiline'] = function(block) {\n // Text value.\n const code = JavaScript.multiline_quote_(block.getFieldValue('TEXT'));\n const order = code.indexOf('+') !== -1 ? JavaScript.ORDER_ADDITION :\n JavaScript.ORDER_ATOMIC;\n return [code, order];\n};\n\nJavaScript['text_join'] = function(block) {\n // Create a string made up of any number of elements of any type.\n switch (block.itemCount_) {\n case 0:\n return [\"''\", JavaScript.ORDER_ATOMIC];\n case 1: {\n const element = JavaScript.valueToCode(block, 'ADD0',\n JavaScript.ORDER_NONE) || \"''\";\n const codeAndOrder = forceString(element);\n return codeAndOrder;\n }\n case 2: {\n const element0 = JavaScript.valueToCode(block, 'ADD0',\n JavaScript.ORDER_NONE) || \"''\";\n const element1 = JavaScript.valueToCode(block, 'ADD1',\n JavaScript.ORDER_NONE) || \"''\";\n const code = forceString(element0)[0] +\n ' + ' + forceString(element1)[0];\n return [code, JavaScript.ORDER_ADDITION];\n }\n default: {\n const elements = new Array(block.itemCount_);\n for (let i = 0; i < block.itemCount_; i++) {\n elements[i] = JavaScript.valueToCode(block, 'ADD' + i,\n JavaScript.ORDER_NONE) || \"''\";\n }\n const code = '[' + elements.join(',') + '].join(\\'\\')';\n return [code, JavaScript.ORDER_FUNCTION_CALL];\n }\n }\n};\n\nJavaScript['text_append'] = function(block) {\n // Append to a variable in place.\n const varName = JavaScript.nameDB_.getName(\n block.getFieldValue('VAR'), NameType.VARIABLE);\n const value = JavaScript.valueToCode(block, 'TEXT',\n JavaScript.ORDER_NONE) || \"''\";\n const code = varName + ' += ' +\n forceString(value)[0] + ';\\n';\n return code;\n};\n\nJavaScript['text_length'] = function(block) {\n // String or array length.\n const text = JavaScript.valueToCode(block, 'VALUE',\n JavaScript.ORDER_MEMBER) || \"''\";\n return [text + '.length', JavaScript.ORDER_MEMBER];\n};\n\nJavaScript['text_isEmpty'] = function(block) {\n // Is the string null or array empty?\n const text = JavaScript.valueToCode(block, 'VALUE',\n JavaScript.ORDER_MEMBER) || \"''\";\n return ['!' + text + '.length', JavaScript.ORDER_LOGICAL_NOT];\n};\n\nJavaScript['text_indexOf'] = function(block) {\n // Search the text for a substring.\n const operator = block.getFieldValue('END') === 'FIRST' ?\n 'indexOf' : 'lastIndexOf';\n const substring = JavaScript.valueToCode(block, 'FIND',\n JavaScript.ORDER_NONE) || \"''\";\n const text = JavaScript.valueToCode(block, 'VALUE',\n JavaScript.ORDER_MEMBER) || \"''\";\n const code = text + '.' + operator + '(' + substring + ')';\n // Adjust index if using one-based indices.\n if (block.workspace.options.oneBasedIndex) {\n return [code + ' + 1', JavaScript.ORDER_ADDITION];\n }\n return [code, JavaScript.ORDER_FUNCTION_CALL];\n};\n\nJavaScript['text_charAt'] = function(block) {\n // Get letter at index.\n // Note: Until January 2013 this block did not have the WHERE input.\n const where = block.getFieldValue('WHERE') || 'FROM_START';\n const textOrder = (where === 'RANDOM') ? JavaScript.ORDER_NONE :\n JavaScript.ORDER_MEMBER;\n const text = JavaScript.valueToCode(block, 'VALUE', textOrder) || \"''\";\n switch (where) {\n case 'FIRST': {\n const code = text + '.charAt(0)';\n return [code, JavaScript.ORDER_FUNCTION_CALL];\n }\n case 'LAST': {\n const code = text + '.slice(-1)';\n return [code, JavaScript.ORDER_FUNCTION_CALL];\n }\n case 'FROM_START': {\n const at = JavaScript.getAdjusted(block, 'AT');\n // Adjust index if using one-based indices.\n const code = text + '.charAt(' + at + ')';\n return [code, JavaScript.ORDER_FUNCTION_CALL];\n }\n case 'FROM_END': {\n const at = JavaScript.getAdjusted(block, 'AT', 1, true);\n const code = text + '.slice(' + at + ').charAt(0)';\n return [code, JavaScript.ORDER_FUNCTION_CALL];\n }\n case 'RANDOM': {\n const functionName = JavaScript.provideFunction_('textRandomLetter', `\nfunction ${JavaScript.FUNCTION_NAME_PLACEHOLDER_}(text) {\n var x = Math.floor(Math.random() * text.length);\n return text[x];\n}\n`);\n const code = functionName + '(' + text + ')';\n return [code, JavaScript.ORDER_FUNCTION_CALL];\n }\n }\n throw Error('Unhandled option (text_charAt).');\n};\n\nJavaScript['text_getSubstring'] = function(block) {\n // Get substring.\n const where1 = block.getFieldValue('WHERE1');\n const where2 = block.getFieldValue('WHERE2');\n const requiresLengthCall = (where1 !== 'FROM_END' && where1 !== 'LAST' &&\n where2 !== 'FROM_END' && where2 !== 'LAST');\n const textOrder = requiresLengthCall ? JavaScript.ORDER_MEMBER :\n JavaScript.ORDER_NONE;\n const text = JavaScript.valueToCode(block, 'STRING', textOrder) || \"''\";\n let code;\n if (where1 === 'FIRST' && where2 === 'LAST') {\n code = text;\n return [code, JavaScript.ORDER_NONE];\n } else if (text.match(/^'?\\w+'?$/) || requiresLengthCall) {\n // If the text is a variable or literal or doesn't require a call for\n // length, don't generate a helper function.\n let at1;\n switch (where1) {\n case 'FROM_START':\n at1 = JavaScript.getAdjusted(block, 'AT1');\n break;\n case 'FROM_END':\n at1 = JavaScript.getAdjusted(block, 'AT1', 1, false,\n JavaScript.ORDER_SUBTRACTION);\n at1 = text + '.length - ' + at1;\n break;\n case 'FIRST':\n at1 = '0';\n break;\n default:\n throw Error('Unhandled option (text_getSubstring).');\n }\n let at2;\n switch (where2) {\n case 'FROM_START':\n at2 = JavaScript.getAdjusted(block, 'AT2', 1);\n break;\n case 'FROM_END':\n at2 = JavaScript.getAdjusted(block, 'AT2', 0, false,\n JavaScript.ORDER_SUBTRACTION);\n at2 = text + '.length - ' + at2;\n break;\n case 'LAST':\n at2 = text + '.length';\n break;\n default:\n throw Error('Unhandled option (text_getSubstring).');\n }\n code = text + '.slice(' + at1 + ', ' + at2 + ')';\n } else {\n const at1 = JavaScript.getAdjusted(block, 'AT1');\n const at2 = JavaScript.getAdjusted(block, 'AT2');\n const wherePascalCase = {'FIRST': 'First', 'LAST': 'Last',\n 'FROM_START': 'FromStart', 'FROM_END': 'FromEnd'};\n // The value for 'FROM_END' and'FROM_START' depends on `at` so\n // we add it as a parameter.\n const at1Param =\n (where1 === 'FROM_END' || where1 === 'FROM_START') ? ', at1' : '';\n const at2Param =\n (where2 === 'FROM_END' || where2 === 'FROM_START') ? ', at2' : '';\n const functionName = JavaScript.provideFunction_(\n 'subsequence' + wherePascalCase[where1] + wherePascalCase[where2], `\nfunction ${JavaScript.FUNCTION_NAME_PLACEHOLDER_}(sequence${at1Param}${at2Param}) {\n var start = ${getSubstringIndex('sequence', where1, 'at1')};\n var end = ${getSubstringIndex('sequence', where2, 'at2')} + 1;\n return sequence.slice(start, end);\n}\n`);\n code = functionName + '(' + text +\n // The value for 'FROM_END' and 'FROM_START' depends on `at` so we\n // pass it.\n ((where1 === 'FROM_END' || where1 === 'FROM_START') ? ', ' + at1 : '') +\n ((where2 === 'FROM_END' || where2 === 'FROM_START') ? ', ' + at2 : '') +\n ')';\n }\n return [code, JavaScript.ORDER_FUNCTION_CALL];\n};\n\nJavaScript['text_changeCase'] = function(block) {\n // Change capitalization.\n const OPERATORS = {\n 'UPPERCASE': '.toUpperCase()',\n 'LOWERCASE': '.toLowerCase()',\n 'TITLECASE': null,\n };\n const operator = OPERATORS[block.getFieldValue('CASE')];\n const textOrder = operator ? JavaScript.ORDER_MEMBER : JavaScript.ORDER_NONE;\n const text = JavaScript.valueToCode(block, 'TEXT', textOrder) || \"''\";\n let code;\n if (operator) {\n // Upper and lower case are functions built into JavaScript.\n code = text + operator;\n } else {\n // Title case is not a native JavaScript function. Define one.\n const functionName = JavaScript.provideFunction_('textToTitleCase', `\nfunction ${JavaScript.FUNCTION_NAME_PLACEHOLDER_}(str) {\n return str.replace(/\\\\S+/g,\n function(txt) {return txt[0].toUpperCase() + txt.substring(1).toLowerCase();});\n}\n`);\n code = functionName + '(' + text + ')';\n }\n return [code, JavaScript.ORDER_FUNCTION_CALL];\n};\n\nJavaScript['text_trim'] = function(block) {\n // Trim spaces.\n const OPERATORS = {\n 'LEFT': \".replace(/^[\\\\s\\\\xa0]+/, '')\",\n 'RIGHT': \".replace(/[\\\\s\\\\xa0]+$/, '')\",\n 'BOTH': '.trim()',\n };\n const operator = OPERATORS[block.getFieldValue('MODE')];\n const text = JavaScript.valueToCode(block, 'TEXT',\n JavaScript.ORDER_MEMBER) || \"''\";\n return [text + operator, JavaScript.ORDER_FUNCTION_CALL];\n};\n\nJavaScript['text_print'] = function(block) {\n // Print statement.\n const msg = JavaScript.valueToCode(block, 'TEXT',\n JavaScript.ORDER_NONE) || \"''\";\n return 'window.alert(' + msg + ');\\n';\n};\n\nJavaScript['text_prompt_ext'] = function(block) {\n // Prompt function.\n let msg;\n if (block.getField('TEXT')) {\n // Internal message.\n msg = JavaScript.quote_(block.getFieldValue('TEXT'));\n } else {\n // External message.\n msg = JavaScript.valueToCode(block, 'TEXT', JavaScript.ORDER_NONE) || \"''\";\n }\n let code = 'window.prompt(' + msg + ')';\n const toNumber = block.getFieldValue('TYPE') === 'NUMBER';\n if (toNumber) {\n code = 'Number(' + code + ')';\n }\n return [code, JavaScript.ORDER_FUNCTION_CALL];\n};\n\nJavaScript['text_prompt'] = JavaScript['text_prompt_ext'];\n\nJavaScript['text_count'] = function(block) {\n const text = JavaScript.valueToCode(block, 'TEXT',\n JavaScript.ORDER_NONE) || \"''\";\n const sub = JavaScript.valueToCode(block, 'SUB',\n JavaScript.ORDER_NONE) || \"''\";\n const functionName = JavaScript.provideFunction_('textCount', `\nfunction ${JavaScript.FUNCTION_NAME_PLACEHOLDER_}(haystack, needle) {\n if (needle.length === 0) {\n return haystack.length + 1;\n } else {\n return haystack.split(needle).length - 1;\n }\n}\n`);\n const code = functionName + '(' + text + ', ' + sub + ')';\n return [code, JavaScript.ORDER_FUNCTION_CALL];\n};\n\nJavaScript['text_replace'] = function(block) {\n const text = JavaScript.valueToCode(block, 'TEXT',\n JavaScript.ORDER_NONE) || \"''\";\n const from = JavaScript.valueToCode(block, 'FROM',\n JavaScript.ORDER_NONE) || \"''\";\n const to = JavaScript.valueToCode(block, 'TO', JavaScript.ORDER_NONE) || \"''\";\n // The regex escaping code below is taken from the implementation of\n // goog.string.regExpEscape.\n const functionName = JavaScript.provideFunction_('textReplace', `\nfunction ${JavaScript.FUNCTION_NAME_PLACEHOLDER_}(haystack, needle, replacement) {\n needle = needle.replace(/([-()\\\\[\\\\]{}+?*.$\\\\^|,:#<!\\\\\\\\])/g, '\\\\\\\\$1')\n .replace(/\\\\x08/g, '\\\\\\\\x08');\n return haystack.replace(new RegExp(needle, 'g'), replacement);\n}\n`);\n const code = functionName + '(' + text + ', ' + from + ', ' + to + ')';\n return [code, JavaScript.ORDER_FUNCTION_CALL];\n};\n\nJavaScript['text_reverse'] = function(block) {\n const text = JavaScript.valueToCode(block, 'TEXT',\n JavaScript.ORDER_MEMBER) || \"''\";\n const code = text + \".split('').reverse().join('')\";\n return [code, JavaScript.ORDER_FUNCTION_CALL];\n};\n","/**\n * @license\n * Copyright 2012 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/**\n * @fileoverview Generating JavaScript for procedure blocks.\n */\n'use strict';\n\ngoog.module('Blockly.JavaScript.procedures');\n\nconst {NameType} = goog.require('Blockly.Names');\nconst {javascriptGenerator: JavaScript} = goog.require('Blockly.JavaScript');\n\n\nJavaScript['procedures_defreturn'] = function(block) {\n // Define a procedure with a return value.\n const funcName = JavaScript.nameDB_.getName(\n block.getFieldValue('NAME'), NameType.PROCEDURE);\n let xfix1 = '';\n if (JavaScript.STATEMENT_PREFIX) {\n xfix1 += JavaScript.injectId(JavaScript.STATEMENT_PREFIX, block);\n }\n if (JavaScript.STATEMENT_SUFFIX) {\n xfix1 += JavaScript.injectId(JavaScript.STATEMENT_SUFFIX, block);\n }\n if (xfix1) {\n xfix1 = JavaScript.prefixLines(xfix1, JavaScript.INDENT);\n }\n let loopTrap = '';\n if (JavaScript.INFINITE_LOOP_TRAP) {\n loopTrap = JavaScript.prefixLines(\n JavaScript.injectId(JavaScript.INFINITE_LOOP_TRAP, block),\n JavaScript.INDENT);\n }\n const branch = JavaScript.statementToCode(block, 'STACK');\n let returnValue =\n JavaScript.valueToCode(block, 'RETURN', JavaScript.ORDER_NONE) || '';\n let xfix2 = '';\n if (branch && returnValue) {\n // After executing the function body, revisit this block for the return.\n xfix2 = xfix1;\n }\n if (returnValue) {\n returnValue = JavaScript.INDENT + 'return ' + returnValue + ';\\n';\n }\n const args = [];\n const variables = block.getVars();\n for (let i = 0; i < variables.length; i++) {\n args[i] = JavaScript.nameDB_.getName(variables[i], NameType.VARIABLE);\n }\n let code = 'function ' + funcName + '(' + args.join(', ') + ') {\\n' + xfix1 +\n loopTrap + branch + xfix2 + returnValue + '}';\n code = JavaScript.scrub_(block, code);\n // Add % so as not to collide with helper functions in definitions list.\n JavaScript.definitions_['%' + funcName] = code;\n return null;\n};\n\n// Defining a procedure without a return value uses the same generator as\n// a procedure with a return value.\nJavaScript['procedures_defnoreturn'] = JavaScript['procedures_defreturn'];\n\nJavaScript['procedures_callreturn'] = function(block) {\n // Call a procedure with a return value.\n const funcName = JavaScript.nameDB_.getName(\n block.getFieldValue('NAME'), NameType.PROCEDURE);\n const args = [];\n const variables = block.getVars();\n for (let i = 0; i < variables.length; i++) {\n args[i] = JavaScript.valueToCode(block, 'ARG' + i, JavaScript.ORDER_NONE) ||\n 'null';\n }\n const code = funcName + '(' + args.join(', ') + ')';\n return [code, JavaScript.ORDER_FUNCTION_CALL];\n};\n\nJavaScript['procedures_callnoreturn'] = function(block) {\n // Call a procedure with no return value.\n // Generated code is for a function call as a statement is the same as a\n // function call as a value, with the addition of line ending.\n const tuple = JavaScript['procedures_callreturn'](block);\n return tuple[0] + ';\\n';\n};\n\nJavaScript['procedures_ifreturn'] = function(block) {\n // Conditionally return value from a procedure.\n const condition =\n JavaScript.valueToCode(block, 'CONDITION', JavaScript.ORDER_NONE) ||\n 'false';\n let code = 'if (' + condition + ') {\\n';\n if (JavaScript.STATEMENT_SUFFIX) {\n // Inject any statement suffix here since the regular one at the end\n // will not get executed if the return is triggered.\n code += JavaScript.prefixLines(\n JavaScript.injectId(JavaScript.STATEMENT_SUFFIX, block),\n JavaScript.INDENT);\n }\n if (block.hasReturnValue_) {\n const value =\n JavaScript.valueToCode(block, 'VALUE', JavaScript.ORDER_NONE) || 'null';\n code += JavaScript.INDENT + 'return ' + value + ';\\n';\n } else {\n code += JavaScript.INDENT + 'return;\\n';\n }\n code += '}\\n';\n return code;\n};\n","/**\n * @license\n * Copyright 2012 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/**\n * @fileoverview Generating JavaScript for math blocks.\n * @suppress {missingRequire}\n */\n'use strict';\n\ngoog.module('Blockly.JavaScript.math');\n\nconst {NameType} = goog.require('Blockly.Names');\nconst {javascriptGenerator: JavaScript} = goog.require('Blockly.JavaScript');\n\n\nJavaScript['math_number'] = function(block) {\n // Numeric value.\n const code = Number(block.getFieldValue('NUM'));\n const order = code >= 0 ? JavaScript.ORDER_ATOMIC :\n JavaScript.ORDER_UNARY_NEGATION;\n return [code, order];\n};\n\nJavaScript['math_arithmetic'] = function(block) {\n // Basic arithmetic operators, and power.\n const OPERATORS = {\n 'ADD': [' + ', JavaScript.ORDER_ADDITION],\n 'MINUS': [' - ', JavaScript.ORDER_SUBTRACTION],\n 'MULTIPLY': [' * ', JavaScript.ORDER_MULTIPLICATION],\n 'DIVIDE': [' / ', JavaScript.ORDER_DIVISION],\n 'POWER': [null, JavaScript.ORDER_NONE], // Handle power separately.\n };\n const tuple = OPERATORS[block.getFieldValue('OP')];\n const operator = tuple[0];\n const order = tuple[1];\n const argument0 = JavaScript.valueToCode(block, 'A', order) || '0';\n const argument1 = JavaScript.valueToCode(block, 'B', order) || '0';\n let code;\n // Power in JavaScript requires a special case since it has no operator.\n if (!operator) {\n code = 'Math.pow(' + argument0 + ', ' + argument1 + ')';\n return [code, JavaScript.ORDER_FUNCTION_CALL];\n }\n code = argument0 + operator + argument1;\n return [code, order];\n};\n\nJavaScript['math_single'] = function(block) {\n // Math operators with single operand.\n const operator = block.getFieldValue('OP');\n let code;\n let arg;\n if (operator === 'NEG') {\n // Negation is a special case given its different operator precedence.\n arg = JavaScript.valueToCode(block, 'NUM',\n JavaScript.ORDER_UNARY_NEGATION) || '0';\n if (arg[0] === '-') {\n // --3 is not legal in JS.\n arg = ' ' + arg;\n }\n code = '-' + arg;\n return [code, JavaScript.ORDER_UNARY_NEGATION];\n }\n if (operator === 'SIN' || operator === 'COS' || operator === 'TAN') {\n arg = JavaScript.valueToCode(block, 'NUM',\n JavaScript.ORDER_DIVISION) || '0';\n } else {\n arg = JavaScript.valueToCode(block, 'NUM',\n JavaScript.ORDER_NONE) || '0';\n }\n // First, handle cases which generate values that don't need parentheses\n // wrapping the code.\n switch (operator) {\n case 'ABS':\n code = 'Math.abs(' + arg + ')';\n break;\n case 'ROOT':\n code = 'Math.sqrt(' + arg + ')';\n break;\n case 'LN':\n code = 'Math.log(' + arg + ')';\n break;\n case 'EXP':\n code = 'Math.exp(' + arg + ')';\n break;\n case 'POW10':\n code = 'Math.pow(10,' + arg + ')';\n break;\n case 'ROUND':\n code = 'Math.round(' + arg + ')';\n break;\n case 'ROUNDUP':\n code = 'Math.ceil(' + arg + ')';\n break;\n case 'ROUNDDOWN':\n code = 'Math.floor(' + arg + ')';\n break;\n case 'SIN':\n code = 'Math.sin(' + arg + ' / 180 * Math.PI)';\n break;\n case 'COS':\n code = 'Math.cos(' + arg + ' / 180 * Math.PI)';\n break;\n case 'TAN':\n code = 'Math.tan(' + arg + ' / 180 * Math.PI)';\n break;\n }\n if (code) {\n return [code, JavaScript.ORDER_FUNCTION_CALL];\n }\n // Second, handle cases which generate values that may need parentheses\n // wrapping the code.\n switch (operator) {\n case 'LOG10':\n code = 'Math.log(' + arg + ') / Math.log(10)';\n break;\n case 'ASIN':\n code = 'Math.asin(' + arg + ') / Math.PI * 180';\n break;\n case 'ACOS':\n code = 'Math.acos(' + arg + ') / Math.PI * 180';\n break;\n case 'ATAN':\n code = 'Math.atan(' + arg + ') / Math.PI * 180';\n break;\n default:\n throw Error('Unknown math operator: ' + operator);\n }\n return [code, JavaScript.ORDER_DIVISION];\n};\n\nJavaScript['math_constant'] = function(block) {\n // Constants: PI, E, the Golden Ratio, sqrt(2), 1/sqrt(2), INFINITY.\n const CONSTANTS = {\n 'PI': ['Math.PI', JavaScript.ORDER_MEMBER],\n 'E': ['Math.E', JavaScript.ORDER_MEMBER],\n 'GOLDEN_RATIO': ['(1 + Math.sqrt(5)) / 2', JavaScript.ORDER_DIVISION],\n 'SQRT2': ['Math.SQRT2', JavaScript.ORDER_MEMBER],\n 'SQRT1_2': ['Math.SQRT1_2', JavaScript.ORDER_MEMBER],\n 'INFINITY': ['Infinity', JavaScript.ORDER_ATOMIC],\n };\n return CONSTANTS[block.getFieldValue('CONSTANT')];\n};\n\nJavaScript['math_number_property'] = function(block) {\n // Check if a number is even, odd, prime, whole, positive, or negative\n // or if it is divisible by certain number. Returns true or false.\n const PROPERTIES = {\n 'EVEN': [' % 2 === 0', JavaScript.ORDER_MODULUS, JavaScript.ORDER_EQUALITY],\n 'ODD': [' % 2 === 1', JavaScript.ORDER_MODULUS, JavaScript.ORDER_EQUALITY],\n 'WHOLE': [' % 1 === 0', JavaScript.ORDER_MODULUS,\n JavaScript.ORDER_EQUALITY],\n 'POSITIVE': [' > 0', JavaScript.ORDER_RELATIONAL,\n JavaScript.ORDER_RELATIONAL],\n 'NEGATIVE': [' < 0', JavaScript.ORDER_RELATIONAL,\n JavaScript.ORDER_RELATIONAL],\n 'DIVISIBLE_BY': [null, JavaScript.ORDER_MODULUS, JavaScript.ORDER_EQUALITY],\n 'PRIME': [null, JavaScript.ORDER_NONE, JavaScript.ORDER_FUNCTION_CALL],\n };\n const dropdownProperty = block.getFieldValue('PROPERTY');\n const [suffix, inputOrder, outputOrder] = PROPERTIES[dropdownProperty];\n const numberToCheck = JavaScript.valueToCode(block, 'NUMBER_TO_CHECK',\n inputOrder) || '0';\n let code;\n if (dropdownProperty === 'PRIME') {\n // Prime is a special case as it is not a one-liner test.\n const functionName = JavaScript.provideFunction_('mathIsPrime', `\nfunction ${JavaScript.FUNCTION_NAME_PLACEHOLDER_}(n) {\n // https://en.wikipedia.org/wiki/Primality_test#Naive_methods\n if (n == 2 || n == 3) {\n return true;\n }\n // False if n is NaN, negative, is 1, or not whole.\n // And false if n is divisible by 2 or 3.\n if (isNaN(n) || n <= 1 || n % 1 !== 0 || n % 2 === 0 || n % 3 === 0) {\n return false;\n }\n // Check all the numbers of form 6k +/- 1, up to sqrt(n).\n for (var x = 6; x <= Math.sqrt(n) + 1; x += 6) {\n if (n % (x - 1) === 0 || n % (x + 1) === 0) {\n return false;\n }\n }\n return true;\n}\n`);\n code = functionName + '(' + numberToCheck + ')';\n } else if (dropdownProperty === 'DIVISIBLE_BY') {\n const divisor = JavaScript.valueToCode(block, 'DIVISOR',\n JavaScript.ORDER_MODULUS) || '0';\n code = numberToCheck + ' % ' + divisor + ' === 0';\n } else {\n code = numberToCheck + suffix;\n }\n return [code, outputOrder];\n};\n\nJavaScript['math_change'] = function(block) {\n // Add to a variable in place.\n const argument0 = JavaScript.valueToCode(block, 'DELTA',\n JavaScript.ORDER_ADDITION) || '0';\n const varName = JavaScript.nameDB_.getName(\n block.getFieldValue('VAR'), NameType.VARIABLE);\n return varName + ' = (typeof ' + varName + ' === \\'number\\' ? ' + varName +\n ' : 0) + ' + argument0 + ';\\n';\n};\n\n// Rounding functions have a single operand.\nJavaScript['math_round'] = JavaScript['math_single'];\n// Trigonometry functions have a single operand.\nJavaScript['math_trig'] = JavaScript['math_single'];\n\nJavaScript['math_on_list'] = function(block) {\n // Math functions for lists.\n const func = block.getFieldValue('OP');\n let list;\n let code;\n switch (func) {\n case 'SUM':\n list = JavaScript.valueToCode(block, 'LIST',\n JavaScript.ORDER_MEMBER) || '[]';\n code = list + '.reduce(function(x, y) {return x + y;}, 0)';\n break;\n case 'MIN':\n list = JavaScript.valueToCode(block, 'LIST',\n JavaScript.ORDER_NONE) || '[]';\n code = 'Math.min.apply(null, ' + list + ')';\n break;\n case 'MAX':\n list = JavaScript.valueToCode(block, 'LIST',\n JavaScript.ORDER_NONE) || '[]';\n code = 'Math.max.apply(null, ' + list + ')';\n break;\n case 'AVERAGE': {\n // mathMean([null,null,1,3]) === 2.0.\n const functionName = JavaScript.provideFunction_('mathMean', `\nfunction ${JavaScript.FUNCTION_NAME_PLACEHOLDER_}(myList) {\n return myList.reduce(function(x, y) {return x + y;}, 0) / myList.length;\n}\n`);\n list = JavaScript.valueToCode(block, 'LIST',\n JavaScript.ORDER_NONE) || '[]';\n code = functionName + '(' + list + ')';\n break;\n }\n case 'MEDIAN': {\n // mathMedian([null,null,1,3]) === 2.0.\n const functionName = JavaScript.provideFunction_('mathMedian', `\nfunction ${JavaScript.FUNCTION_NAME_PLACEHOLDER_}(myList) {\n var localList = myList.filter(function (x) {return typeof x === 'number';});\n if (!localList.length) return null;\n localList.sort(function(a, b) {return b - a;});\n if (localList.length % 2 === 0) {\n return (localList[localList.length / 2 - 1] + localList[localList.length / 2]) / 2;\n } else {\n return localList[(localList.length - 1) / 2];\n }\n}\n`);\n list = JavaScript.valueToCode(block, 'LIST',\n JavaScript.ORDER_NONE) || '[]';\n code = functionName + '(' + list + ')';\n break;\n }\n case 'MODE': {\n // As a list of numbers can contain more than one mode,\n // the returned result is provided as an array.\n // Mode of [3, 'x', 'x', 1, 1, 2, '3'] -> ['x', 1].\n const functionName = JavaScript.provideFunction_('mathModes', `\nfunction ${JavaScript.FUNCTION_NAME_PLACEHOLDER_}(values) {\n var modes = [];\n var counts = [];\n var maxCount = 0;\n for (var i = 0; i < values.length; i++) {\n var value = values[i];\n var found = false;\n var thisCount;\n for (var j = 0; j < counts.length; j++) {\n if (counts[j][0] === value) {\n thisCount = ++counts[j][1];\n found = true;\n break;\n }\n }\n if (!found) {\n counts.push([value, 1]);\n thisCount = 1;\n }\n maxCount = Math.max(thisCount, maxCount);\n }\n for (var j = 0; j < counts.length; j++) {\n if (counts[j][1] === maxCount) {\n modes.push(counts[j][0]);\n }\n }\n return modes;\n}\n`);\n list = JavaScript.valueToCode(block, 'LIST',\n JavaScript.ORDER_NONE) || '[]';\n code = functionName + '(' + list + ')';\n break;\n }\n case 'STD_DEV': {\n const functionName = JavaScript.provideFunction_('mathStandardDeviation', `\nfunction ${JavaScript.FUNCTION_NAME_PLACEHOLDER_}(numbers) {\n var n = numbers.length;\n if (!n) return null;\n var mean = numbers.reduce(function(x, y) {return x + y;}) / n;\n var variance = 0;\n for (var j = 0; j < n; j++) {\n variance += Math.pow(numbers[j] - mean, 2);\n }\n variance = variance / n;\n return Math.sqrt(variance);\n}\n`);\n list = JavaScript.valueToCode(block, 'LIST',\n JavaScript.ORDER_NONE) || '[]';\n code = functionName + '(' + list + ')';\n break;\n }\n case 'RANDOM': {\n const functionName = JavaScript.provideFunction_('mathRandomList', `\nfunction ${JavaScript.FUNCTION_NAME_PLACEHOLDER_}(list) {\n var x = Math.floor(Math.random() * list.length);\n return list[x];\n}\n`);\n list = JavaScript.valueToCode(block, 'LIST',\n JavaScript.ORDER_NONE) || '[]';\n code = functionName + '(' + list + ')';\n break;\n }\n default:\n throw Error('Unknown operator: ' + func);\n }\n return [code, JavaScript.ORDER_FUNCTION_CALL];\n};\n\nJavaScript['math_modulo'] = function(block) {\n // Remainder computation.\n const argument0 = JavaScript.valueToCode(block, 'DIVIDEND',\n JavaScript.ORDER_MODULUS) || '0';\n const argument1 = JavaScript.valueToCode(block, 'DIVISOR',\n JavaScript.ORDER_MODULUS) || '0';\n const code = argument0 + ' % ' + argument1;\n return [code, JavaScript.ORDER_MODULUS];\n};\n\nJavaScript['math_constrain'] = function(block) {\n // Constrain a number between two limits.\n const argument0 = JavaScript.valueToCode(block, 'VALUE',\n JavaScript.ORDER_NONE) || '0';\n const argument1 = JavaScript.valueToCode(block, 'LOW',\n JavaScript.ORDER_NONE) || '0';\n const argument2 = JavaScript.valueToCode(block, 'HIGH',\n JavaScript.ORDER_NONE) || 'Infinity';\n const code = 'Math.min(Math.max(' + argument0 + ', ' + argument1 + '), ' +\n argument2 + ')';\n return [code, JavaScript.ORDER_FUNCTION_CALL];\n};\n\nJavaScript['math_random_int'] = function(block) {\n // Random integer between [X] and [Y].\n const argument0 = JavaScript.valueToCode(block, 'FROM',\n JavaScript.ORDER_NONE) || '0';\n const argument1 = JavaScript.valueToCode(block, 'TO',\n JavaScript.ORDER_NONE) || '0';\n const functionName = JavaScript.provideFunction_('mathRandomInt', `\nfunction ${JavaScript.FUNCTION_NAME_PLACEHOLDER_}(a, b) {\n if (a > b) {\n // Swap a and b to ensure a is smaller.\n var c = a;\n a = b;\n b = c;\n }\n return Math.floor(Math.random() * (b - a + 1) + a);\n}\n`);\n const code = functionName + '(' + argument0 + ', ' + argument1 + ')';\n return [code, JavaScript.ORDER_FUNCTION_CALL];\n};\n\nJavaScript['math_random_float'] = function(block) {\n // Random fraction between 0 and 1.\n return ['Math.random()', JavaScript.ORDER_FUNCTION_CALL];\n};\n\nJavaScript['math_atan2'] = function(block) {\n // Arctangent of point (X, Y) in degrees from -180 to 180.\n const argument0 = JavaScript.valueToCode(block, 'X',\n JavaScript.ORDER_NONE) || '0';\n const argument1 = JavaScript.valueToCode(block, 'Y',\n JavaScript.ORDER_NONE) || '0';\n return ['Math.atan2(' + argument1 + ', ' + argument0 + ') / Math.PI * 180',\n JavaScript.ORDER_DIVISION];\n};\n","/**\n * @license\n * Copyright 2012 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/**\n * @fileoverview Generating JavaScript for loop blocks.\n */\n'use strict';\n\ngoog.module('Blockly.JavaScript.loops');\n\nconst stringUtils = goog.require('Blockly.utils.string');\nconst {NameType} = goog.require('Blockly.Names');\nconst {javascriptGenerator: JavaScript} = goog.require('Blockly.JavaScript');\n\n\nJavaScript['controls_repeat_ext'] = function(block) {\n // Repeat n times.\n let repeats;\n if (block.getField('TIMES')) {\n // Internal number.\n repeats = String(Number(block.getFieldValue('TIMES')));\n } else {\n // External number.\n repeats =\n JavaScript.valueToCode(block, 'TIMES', JavaScript.ORDER_ASSIGNMENT) ||\n '0';\n }\n let branch = JavaScript.statementToCode(block, 'DO');\n branch = JavaScript.addLoopTrap(branch, block);\n let code = '';\n const loopVar =\n JavaScript.nameDB_.getDistinctName('count', NameType.VARIABLE);\n let endVar = repeats;\n if (!repeats.match(/^\\w+$/) && !stringUtils.isNumber(repeats)) {\n endVar =\n JavaScript.nameDB_.getDistinctName('repeat_end', NameType.VARIABLE);\n code += 'var ' + endVar + ' = ' + repeats + ';\\n';\n }\n code += 'for (var ' + loopVar + ' = 0; ' + loopVar + ' < ' + endVar + '; ' +\n loopVar + '++) {\\n' + branch + '}\\n';\n return code;\n};\n\nJavaScript['controls_repeat'] = JavaScript['controls_repeat_ext'];\n\nJavaScript['controls_whileUntil'] = function(block) {\n // Do while/until loop.\n const until = block.getFieldValue('MODE') === 'UNTIL';\n let argument0 =\n JavaScript.valueToCode(\n block, 'BOOL',\n until ? JavaScript.ORDER_LOGICAL_NOT : JavaScript.ORDER_NONE) ||\n 'false';\n let branch = JavaScript.statementToCode(block, 'DO');\n branch = JavaScript.addLoopTrap(branch, block);\n if (until) {\n argument0 = '!' + argument0;\n }\n return 'while (' + argument0 + ') {\\n' + branch + '}\\n';\n};\n\nJavaScript['controls_for'] = function(block) {\n // For loop.\n const variable0 =\n JavaScript.nameDB_.getName(block.getFieldValue('VAR'), NameType.VARIABLE);\n const argument0 =\n JavaScript.valueToCode(block, 'FROM', JavaScript.ORDER_ASSIGNMENT) || '0';\n const argument1 =\n JavaScript.valueToCode(block, 'TO', JavaScript.ORDER_ASSIGNMENT) || '0';\n const increment =\n JavaScript.valueToCode(block, 'BY', JavaScript.ORDER_ASSIGNMENT) || '1';\n let branch = JavaScript.statementToCode(block, 'DO');\n branch = JavaScript.addLoopTrap(branch, block);\n let code;\n if (stringUtils.isNumber(argument0) && stringUtils.isNumber(argument1) &&\n stringUtils.isNumber(increment)) {\n // All arguments are simple numbers.\n const up = Number(argument0) <= Number(argument1);\n code = 'for (' + variable0 + ' = ' + argument0 + '; ' + variable0 +\n (up ? ' <= ' : ' >= ') + argument1 + '; ' + variable0;\n const step = Math.abs(Number(increment));\n if (step === 1) {\n code += up ? '++' : '--';\n } else {\n code += (up ? ' += ' : ' -= ') + step;\n }\n code += ') {\\n' + branch + '}\\n';\n } else {\n code = '';\n // Cache non-trivial values to variables to prevent repeated look-ups.\n let startVar = argument0;\n if (!argument0.match(/^\\w+$/) && !stringUtils.isNumber(argument0)) {\n startVar = JavaScript.nameDB_.getDistinctName(\n variable0 + '_start', NameType.VARIABLE);\n code += 'var ' + startVar + ' = ' + argument0 + ';\\n';\n }\n let endVar = argument1;\n if (!argument1.match(/^\\w+$/) && !stringUtils.isNumber(argument1)) {\n endVar = JavaScript.nameDB_.getDistinctName(\n variable0 + '_end', NameType.VARIABLE);\n code += 'var ' + endVar + ' = ' + argument1 + ';\\n';\n }\n // Determine loop direction at start, in case one of the bounds\n // changes during loop execution.\n const incVar = JavaScript.nameDB_.getDistinctName(\n variable0 + '_inc', NameType.VARIABLE);\n code += 'var ' + incVar + ' = ';\n if (stringUtils.isNumber(increment)) {\n code += Math.abs(increment) + ';\\n';\n } else {\n code += 'Math.abs(' + increment + ');\\n';\n }\n code += 'if (' + startVar + ' > ' + endVar + ') {\\n';\n code += JavaScript.INDENT + incVar + ' = -' + incVar + ';\\n';\n code += '}\\n';\n code += 'for (' + variable0 + ' = ' + startVar + '; ' + incVar +\n ' >= 0 ? ' + variable0 + ' <= ' + endVar + ' : ' + variable0 +\n ' >= ' + endVar + '; ' + variable0 + ' += ' + incVar + ') {\\n' +\n branch + '}\\n';\n }\n return code;\n};\n\nJavaScript['controls_forEach'] = function(block) {\n // For each loop.\n const variable0 =\n JavaScript.nameDB_.getName(block.getFieldValue('VAR'), NameType.VARIABLE);\n const argument0 =\n JavaScript.valueToCode(block, 'LIST', JavaScript.ORDER_ASSIGNMENT) ||\n '[]';\n let branch = JavaScript.statementToCode(block, 'DO');\n branch = JavaScript.addLoopTrap(branch, block);\n let code = '';\n // Cache non-trivial values to variables to prevent repeated look-ups.\n let listVar = argument0;\n if (!argument0.match(/^\\w+$/)) {\n listVar = JavaScript.nameDB_.getDistinctName(\n variable0 + '_list', NameType.VARIABLE);\n code += 'var ' + listVar + ' = ' + argument0 + ';\\n';\n }\n const indexVar = JavaScript.nameDB_.getDistinctName(\n variable0 + '_index', NameType.VARIABLE);\n branch = JavaScript.INDENT + variable0 + ' = ' + listVar + '[' + indexVar +\n '];\\n' + branch;\n code += 'for (var ' + indexVar + ' in ' + listVar + ') {\\n' + branch + '}\\n';\n return code;\n};\n\nJavaScript['controls_flow_statements'] = function(block) {\n // Flow statements: continue, break.\n let xfix = '';\n if (JavaScript.STATEMENT_PREFIX) {\n // Automatic prefix insertion is switched off for this block. Add manually.\n xfix += JavaScript.injectId(JavaScript.STATEMENT_PREFIX, block);\n }\n if (JavaScript.STATEMENT_SUFFIX) {\n // Inject any statement suffix here since the regular one at the end\n // will not get executed if the break/continue is triggered.\n xfix += JavaScript.injectId(JavaScript.STATEMENT_SUFFIX, block);\n }\n if (JavaScript.STATEMENT_PREFIX) {\n const loop = block.getSurroundLoop();\n if (loop && !loop.suppressPrefixSuffix) {\n // Inject loop's statement prefix here since the regular one at the end\n // of the loop will not get executed if 'continue' is triggered.\n // In the case of 'break', a prefix is needed due to the loop's suffix.\n xfix += JavaScript.injectId(JavaScript.STATEMENT_PREFIX, loop);\n }\n }\n switch (block.getFieldValue('FLOW')) {\n case 'BREAK':\n return xfix + 'break;\\n';\n case 'CONTINUE':\n return xfix + 'continue;\\n';\n }\n throw Error('Unknown flow statement.');\n};\n","/**\n * @license\n * Copyright 2012 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/**\n * @fileoverview Generating JavaScript for logic blocks.\n */\n'use strict';\n\ngoog.module('Blockly.JavaScript.logic');\n\nconst {javascriptGenerator: JavaScript} = goog.require('Blockly.JavaScript');\n\n\nJavaScript['controls_if'] = function(block) {\n // If/elseif/else condition.\n let n = 0;\n let code = '';\n if (JavaScript.STATEMENT_PREFIX) {\n // Automatic prefix insertion is switched off for this block. Add manually.\n code += JavaScript.injectId(JavaScript.STATEMENT_PREFIX, block);\n }\n do {\n const conditionCode =\n JavaScript.valueToCode(block, 'IF' + n, JavaScript.ORDER_NONE) ||\n 'false';\n let branchCode = JavaScript.statementToCode(block, 'DO' + n);\n if (JavaScript.STATEMENT_SUFFIX) {\n branchCode = JavaScript.prefixLines(\n JavaScript.injectId(JavaScript.STATEMENT_SUFFIX, block),\n JavaScript.INDENT) +\n branchCode;\n }\n code += (n > 0 ? ' else ' : '') + 'if (' + conditionCode + ') {\\n' +\n branchCode + '}';\n n++;\n } while (block.getInput('IF' + n));\n\n if (block.getInput('ELSE') || JavaScript.STATEMENT_SUFFIX) {\n let branchCode = JavaScript.statementToCode(block, 'ELSE');\n if (JavaScript.STATEMENT_SUFFIX) {\n branchCode = JavaScript.prefixLines(\n JavaScript.injectId(JavaScript.STATEMENT_SUFFIX, block),\n JavaScript.INDENT) +\n branchCode;\n }\n code += ' else {\\n' + branchCode + '}';\n }\n return code + '\\n';\n};\n\nJavaScript['controls_ifelse'] = JavaScript['controls_if'];\n\nJavaScript['logic_compare'] = function(block) {\n // Comparison operator.\n const OPERATORS =\n {'EQ': '==', 'NEQ': '!=', 'LT': '<', 'LTE': '<=', 'GT': '>', 'GTE': '>='};\n const operator = OPERATORS[block.getFieldValue('OP')];\n const order = (operator === '==' || operator === '!=') ?\n JavaScript.ORDER_EQUALITY :\n JavaScript.ORDER_RELATIONAL;\n const argument0 = JavaScript.valueToCode(block, 'A', order) || '0';\n const argument1 = JavaScript.valueToCode(block, 'B', order) || '0';\n const code = argument0 + ' ' + operator + ' ' + argument1;\n return [code, order];\n};\n\nJavaScript['logic_operation'] = function(block) {\n // Operations 'and', 'or'.\n const operator = (block.getFieldValue('OP') === 'AND') ? '&&' : '||';\n const order = (operator === '&&') ? JavaScript.ORDER_LOGICAL_AND :\n JavaScript.ORDER_LOGICAL_OR;\n let argument0 = JavaScript.valueToCode(block, 'A', order);\n let argument1 = JavaScript.valueToCode(block, 'B', order);\n if (!argument0 && !argument1) {\n // If there are no arguments, then the return value is false.\n argument0 = 'false';\n argument1 = 'false';\n } else {\n // Single missing arguments have no effect on the return value.\n const defaultArgument = (operator === '&&') ? 'true' : 'false';\n if (!argument0) {\n argument0 = defaultArgument;\n }\n if (!argument1) {\n argument1 = defaultArgument;\n }\n }\n const code = argument0 + ' ' + operator + ' ' + argument1;\n return [code, order];\n};\n\nJavaScript['logic_negate'] = function(block) {\n // Negation.\n const order = JavaScript.ORDER_LOGICAL_NOT;\n const argument0 = JavaScript.valueToCode(block, 'BOOL', order) || 'true';\n const code = '!' + argument0;\n return [code, order];\n};\n\nJavaScript['logic_boolean'] = function(block) {\n // Boolean values true and false.\n const code = (block.getFieldValue('BOOL') === 'TRUE') ? 'true' : 'false';\n return [code, JavaScript.ORDER_ATOMIC];\n};\n\nJavaScript['logic_null'] = function(block) {\n // Null data type.\n return ['null', JavaScript.ORDER_ATOMIC];\n};\n\nJavaScript['logic_ternary'] = function(block) {\n // Ternary operator.\n const value_if =\n JavaScript.valueToCode(block, 'IF', JavaScript.ORDER_CONDITIONAL) ||\n 'false';\n const value_then =\n JavaScript.valueToCode(block, 'THEN', JavaScript.ORDER_CONDITIONAL) ||\n 'null';\n const value_else =\n JavaScript.valueToCode(block, 'ELSE', JavaScript.ORDER_CONDITIONAL) ||\n 'null';\n const code = value_if + ' ? ' + value_then + ' : ' + value_else;\n return [code, JavaScript.ORDER_CONDITIONAL];\n};\n","/**\n * @license\n * Copyright 2012 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/**\n * @fileoverview Generating JavaScript for list blocks.\n * @suppress {missingRequire}\n */\n'use strict';\n\ngoog.module('Blockly.JavaScript.lists');\n\nconst {NameType} = goog.require('Blockly.Names');\nconst {javascriptGenerator: JavaScript} = goog.require('Blockly.JavaScript');\n\n\nJavaScript['lists_create_empty'] = function(block) {\n // Create an empty list.\n return ['[]', JavaScript.ORDER_ATOMIC];\n};\n\nJavaScript['lists_create_with'] = function(block) {\n // Create a list with any number of elements of any type.\n const elements = new Array(block.itemCount_);\n for (let i = 0; i < block.itemCount_; i++) {\n elements[i] =\n JavaScript.valueToCode(block, 'ADD' + i, JavaScript.ORDER_NONE) ||\n 'null';\n }\n const code = '[' + elements.join(', ') + ']';\n return [code, JavaScript.ORDER_ATOMIC];\n};\n\nJavaScript['lists_repeat'] = function(block) {\n // Create a list with one element repeated.\n const functionName = JavaScript.provideFunction_('listsRepeat', `\nfunction ${JavaScript.FUNCTION_NAME_PLACEHOLDER_}(value, n) {\n var array = [];\n for (var i = 0; i < n; i++) {\n array[i] = value;\n }\n return array;\n}\n`);\n const element =\n JavaScript.valueToCode(block, 'ITEM', JavaScript.ORDER_NONE) || 'null';\n const repeatCount =\n JavaScript.valueToCode(block, 'NUM', JavaScript.ORDER_NONE) || '0';\n const code = functionName + '(' + element + ', ' + repeatCount + ')';\n return [code, JavaScript.ORDER_FUNCTION_CALL];\n};\n\nJavaScript['lists_length'] = function(block) {\n // String or array length.\n const list =\n JavaScript.valueToCode(block, 'VALUE', JavaScript.ORDER_MEMBER) || '[]';\n return [list + '.length', JavaScript.ORDER_MEMBER];\n};\n\nJavaScript['lists_isEmpty'] = function(block) {\n // Is the string null or array empty?\n const list =\n JavaScript.valueToCode(block, 'VALUE', JavaScript.ORDER_MEMBER) || '[]';\n return ['!' + list + '.length', JavaScript.ORDER_LOGICAL_NOT];\n};\n\nJavaScript['lists_indexOf'] = function(block) {\n // Find an item in the list.\n const operator =\n block.getFieldValue('END') === 'FIRST' ? 'indexOf' : 'lastIndexOf';\n const item =\n JavaScript.valueToCode(block, 'FIND', JavaScript.ORDER_NONE) || \"''\";\n const list =\n JavaScript.valueToCode(block, 'VALUE', JavaScript.ORDER_MEMBER) || '[]';\n const code = list + '.' + operator + '(' + item + ')';\n if (block.workspace.options.oneBasedIndex) {\n return [code + ' + 1', JavaScript.ORDER_ADDITION];\n }\n return [code, JavaScript.ORDER_FUNCTION_CALL];\n};\n\nJavaScript['lists_getIndex'] = function(block) {\n // Get element at index.\n // Note: Until January 2013 this block did not have MODE or WHERE inputs.\n const mode = block.getFieldValue('MODE') || 'GET';\n const where = block.getFieldValue('WHERE') || 'FROM_START';\n const listOrder =\n (where === 'RANDOM') ? JavaScript.ORDER_NONE : JavaScript.ORDER_MEMBER;\n const list = JavaScript.valueToCode(block, 'VALUE', listOrder) || '[]';\n\n switch (where) {\n case ('FIRST'):\n if (mode === 'GET') {\n const code = list + '[0]';\n return [code, JavaScript.ORDER_MEMBER];\n } else if (mode === 'GET_REMOVE') {\n const code = list + '.shift()';\n return [code, JavaScript.ORDER_MEMBER];\n } else if (mode === 'REMOVE') {\n return list + '.shift();\\n';\n }\n break;\n case ('LAST'):\n if (mode === 'GET') {\n const code = list + '.slice(-1)[0]';\n return [code, JavaScript.ORDER_MEMBER];\n } else if (mode === 'GET_REMOVE') {\n const code = list + '.pop()';\n return [code, JavaScript.ORDER_MEMBER];\n } else if (mode === 'REMOVE') {\n return list + '.pop();\\n';\n }\n break;\n case ('FROM_START'): {\n const at = JavaScript.getAdjusted(block, 'AT');\n if (mode === 'GET') {\n const code = list + '[' + at + ']';\n return [code, JavaScript.ORDER_MEMBER];\n } else if (mode === 'GET_REMOVE') {\n const code = list + '.splice(' + at + ', 1)[0]';\n return [code, JavaScript.ORDER_FUNCTION_CALL];\n } else if (mode === 'REMOVE') {\n return list + '.splice(' + at + ', 1);\\n';\n }\n break;\n }\n case ('FROM_END'): {\n const at = JavaScript.getAdjusted(block, 'AT', 1, true);\n if (mode === 'GET') {\n const code = list + '.slice(' + at + ')[0]';\n return [code, JavaScript.ORDER_FUNCTION_CALL];\n } else if (mode === 'GET_REMOVE') {\n const code = list + '.splice(' + at + ', 1)[0]';\n return [code, JavaScript.ORDER_FUNCTION_CALL];\n } else if (mode === 'REMOVE') {\n return list + '.splice(' + at + ', 1);';\n }\n break;\n }\n case ('RANDOM'): {\n const functionName = JavaScript.provideFunction_('listsGetRandomItem', `\nfunction ${JavaScript.FUNCTION_NAME_PLACEHOLDER_}(list, remove) {\n var x = Math.floor(Math.random() * list.length);\n if (remove) {\n return list.splice(x, 1)[0];\n } else {\n return list[x];\n }\n}\n`);\n const code = functionName + '(' + list + ', ' + (mode !== 'GET') + ')';\n if (mode === 'GET' || mode === 'GET_REMOVE') {\n return [code, JavaScript.ORDER_FUNCTION_CALL];\n } else if (mode === 'REMOVE') {\n return code + ';\\n';\n }\n break;\n }\n }\n throw Error('Unhandled combination (lists_getIndex).');\n};\n\nJavaScript['lists_setIndex'] = function(block) {\n // Set element at index.\n // Note: Until February 2013 this block did not have MODE or WHERE inputs.\n let list =\n JavaScript.valueToCode(block, 'LIST', JavaScript.ORDER_MEMBER) || '[]';\n const mode = block.getFieldValue('MODE') || 'GET';\n const where = block.getFieldValue('WHERE') || 'FROM_START';\n const value =\n JavaScript.valueToCode(block, 'TO', JavaScript.ORDER_ASSIGNMENT) ||\n 'null';\n // Cache non-trivial values to variables to prevent repeated look-ups.\n // Closure, which accesses and modifies 'list'.\n function cacheList() {\n if (list.match(/^\\w+$/)) {\n return '';\n }\n const listVar =\n JavaScript.nameDB_.getDistinctName('tmpList', NameType.VARIABLE);\n const code = 'var ' + listVar + ' = ' + list + ';\\n';\n list = listVar;\n return code;\n }\n switch (where) {\n case ('FIRST'):\n if (mode === 'SET') {\n return list + '[0] = ' + value + ';\\n';\n } else if (mode === 'INSERT') {\n return list + '.unshift(' + value + ');\\n';\n }\n break;\n case ('LAST'):\n if (mode === 'SET') {\n let code = cacheList();\n code += list + '[' + list + '.length - 1] = ' + value + ';\\n';\n return code;\n } else if (mode === 'INSERT') {\n return list + '.push(' + value + ');\\n';\n }\n break;\n case ('FROM_START'): {\n const at = JavaScript.getAdjusted(block, 'AT');\n if (mode === 'SET') {\n return list + '[' + at + '] = ' + value + ';\\n';\n } else if (mode === 'INSERT') {\n return list + '.splice(' + at + ', 0, ' + value + ');\\n';\n }\n break;\n }\n case ('FROM_END'): {\n const at = JavaScript.getAdjusted(\n block, 'AT', 1, false, JavaScript.ORDER_SUBTRACTION);\n let code = cacheList();\n if (mode === 'SET') {\n code += list + '[' + list + '.length - ' + at + '] = ' + value + ';\\n';\n return code;\n } else if (mode === 'INSERT') {\n code += list + '.splice(' + list + '.length - ' + at + ', 0, ' + value +\n ');\\n';\n return code;\n }\n break;\n }\n case ('RANDOM'): {\n let code = cacheList();\n const xVar =\n JavaScript.nameDB_.getDistinctName('tmpX', NameType.VARIABLE);\n code += 'var ' + xVar + ' = Math.floor(Math.random() * ' + list +\n '.length);\\n';\n if (mode === 'SET') {\n code += list + '[' + xVar + '] = ' + value + ';\\n';\n return code;\n } else if (mode === 'INSERT') {\n code += list + '.splice(' + xVar + ', 0, ' + value + ');\\n';\n return code;\n }\n break;\n }\n }\n throw Error('Unhandled combination (lists_setIndex).');\n};\n\n/**\n * Returns an expression calculating the index into a list.\n * @param {string} listName Name of the list, used to calculate length.\n * @param {string} where The method of indexing, selected by dropdown in Blockly\n * @param {string=} opt_at The optional offset when indexing from start/end.\n * @return {string|undefined} Index expression.\n */\nconst getSubstringIndex = function(listName, where, opt_at) {\n if (where === 'FIRST') {\n return '0';\n } else if (where === 'FROM_END') {\n return listName + '.length - 1 - ' + opt_at;\n } else if (where === 'LAST') {\n return listName + '.length - 1';\n } else {\n return opt_at;\n }\n};\n\nJavaScript['lists_getSublist'] = function(block) {\n // Get sublist.\n const list =\n JavaScript.valueToCode(block, 'LIST', JavaScript.ORDER_MEMBER) || '[]';\n const where1 = block.getFieldValue('WHERE1');\n const where2 = block.getFieldValue('WHERE2');\n let code;\n if (where1 === 'FIRST' && where2 === 'LAST') {\n code = list + '.slice(0)';\n } else if (\n list.match(/^\\w+$/) ||\n (where1 !== 'FROM_END' && where2 === 'FROM_START')) {\n // If the list is a variable or doesn't require a call for length, don't\n // generate a helper function.\n let at1;\n switch (where1) {\n case 'FROM_START':\n at1 = JavaScript.getAdjusted(block, 'AT1');\n break;\n case 'FROM_END':\n at1 = JavaScript.getAdjusted(\n block, 'AT1', 1, false, JavaScript.ORDER_SUBTRACTION);\n at1 = list + '.length - ' + at1;\n break;\n case 'FIRST':\n at1 = '0';\n break;\n default:\n throw Error('Unhandled option (lists_getSublist).');\n }\n let at2;\n switch (where2) {\n case 'FROM_START':\n at2 = JavaScript.getAdjusted(block, 'AT2', 1);\n break;\n case 'FROM_END':\n at2 = JavaScript.getAdjusted(\n block, 'AT2', 0, false, JavaScript.ORDER_SUBTRACTION);\n at2 = list + '.length - ' + at2;\n break;\n case 'LAST':\n at2 = list + '.length';\n break;\n default:\n throw Error('Unhandled option (lists_getSublist).');\n }\n code = list + '.slice(' + at1 + ', ' + at2 + ')';\n } else {\n const at1 = JavaScript.getAdjusted(block, 'AT1');\n const at2 = JavaScript.getAdjusted(block, 'AT2');\n const wherePascalCase = {\n 'FIRST': 'First',\n 'LAST': 'Last',\n 'FROM_START': 'FromStart',\n 'FROM_END': 'FromEnd',\n };\n // The value for 'FROM_END' and'FROM_START' depends on `at` so\n // we add it as a parameter.\n const at1Param =\n (where1 === 'FROM_END' || where1 === 'FROM_START') ? ', at1' : '';\n const at2Param =\n (where2 === 'FROM_END' || where2 === 'FROM_START') ? ', at2' : '';\n const functionName = JavaScript.provideFunction_(\n 'subsequence' + wherePascalCase[where1] + wherePascalCase[where2], `\nfunction ${JavaScript.FUNCTION_NAME_PLACEHOLDER_}(sequence${at1Param}${at2Param}) {\n var start = ${getSubstringIndex('sequence', where1, 'at1')};\n var end = ${getSubstringIndex('sequence', where2, 'at2')} + 1;\n return sequence.slice(start, end);\n}\n`);\n code = functionName + '(' + list +\n // The value for 'FROM_END' and 'FROM_START' depends on `at` so we\n // pass it.\n ((where1 === 'FROM_END' || where1 === 'FROM_START') ? ', ' + at1 : '') +\n ((where2 === 'FROM_END' || where2 === 'FROM_START') ? ', ' + at2 : '') +\n ')';\n }\n return [code, JavaScript.ORDER_FUNCTION_CALL];\n};\n\nJavaScript['lists_sort'] = function(block) {\n // Block for sorting a list.\n const list =\n JavaScript.valueToCode(block, 'LIST', JavaScript.ORDER_FUNCTION_CALL) ||\n '[]';\n const direction = block.getFieldValue('DIRECTION') === '1' ? 1 : -1;\n const type = block.getFieldValue('TYPE');\n const getCompareFunctionName =\n JavaScript.provideFunction_('listsGetSortCompare', `\nfunction ${JavaScript.FUNCTION_NAME_PLACEHOLDER_}(type, direction) {\n var compareFuncs = {\n 'NUMERIC': function(a, b) {\n return Number(a) - Number(b); },\n 'TEXT': function(a, b) {\n return a.toString() > b.toString() ? 1 : -1; },\n 'IGNORE_CASE': function(a, b) {\n return a.toString().toLowerCase() > b.toString().toLowerCase() ? 1 : -1; },\n };\n var compare = compareFuncs[type];\n return function(a, b) { return compare(a, b) * direction; };\n}\n `);\n return [\n list + '.slice().sort(' + getCompareFunctionName + '(\"' + type + '\", ' +\n direction + '))',\n JavaScript.ORDER_FUNCTION_CALL\n ];\n};\n\nJavaScript['lists_split'] = function(block) {\n // Block for splitting text into a list, or joining a list into text.\n let input = JavaScript.valueToCode(block, 'INPUT', JavaScript.ORDER_MEMBER);\n const delimiter =\n JavaScript.valueToCode(block, 'DELIM', JavaScript.ORDER_NONE) || \"''\";\n const mode = block.getFieldValue('MODE');\n let functionName;\n if (mode === 'SPLIT') {\n if (!input) {\n input = \"''\";\n }\n functionName = 'split';\n } else if (mode === 'JOIN') {\n if (!input) {\n input = '[]';\n }\n functionName = 'join';\n } else {\n throw Error('Unknown mode: ' + mode);\n }\n const code = input + '.' + functionName + '(' + delimiter + ')';\n return [code, JavaScript.ORDER_FUNCTION_CALL];\n};\n\nJavaScript['lists_reverse'] = function(block) {\n // Block for reversing a list.\n const list =\n JavaScript.valueToCode(block, 'LIST', JavaScript.ORDER_FUNCTION_CALL) ||\n '[]';\n const code = list + '.slice().reverse()';\n return [code, JavaScript.ORDER_FUNCTION_CALL];\n};\n","/**\n * @license\n * Copyright 2012 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/**\n * @fileoverview Generating JavaScript for colour blocks.\n */\n'use strict';\n\ngoog.module('Blockly.JavaScript.colour');\n\nconst {javascriptGenerator: JavaScript} = goog.require('Blockly.JavaScript');\n\n\nJavaScript['colour_picker'] = function(block) {\n // Colour picker.\n const code = JavaScript.quote_(block.getFieldValue('COLOUR'));\n return [code, JavaScript.ORDER_ATOMIC];\n};\n\nJavaScript['colour_random'] = function(block) {\n // Generate a random colour.\n const functionName = JavaScript.provideFunction_('colourRandom', `\nfunction ${JavaScript.FUNCTION_NAME_PLACEHOLDER_}() {\n var num = Math.floor(Math.random() * Math.pow(2, 24));\n return '#' + ('00000' + num.toString(16)).substr(-6);\n}\n`);\n const code = functionName + '()';\n return [code, JavaScript.ORDER_FUNCTION_CALL];\n};\n\nJavaScript['colour_rgb'] = function(block) {\n // Compose a colour from RGB components expressed as percentages.\n const red = JavaScript.valueToCode(block, 'RED', JavaScript.ORDER_NONE) || 0;\n const green =\n JavaScript.valueToCode(block, 'GREEN', JavaScript.ORDER_NONE) || 0;\n const blue =\n JavaScript.valueToCode(block, 'BLUE', JavaScript.ORDER_NONE) || 0;\n const functionName = JavaScript.provideFunction_('colourRgb', `\nfunction ${JavaScript.FUNCTION_NAME_PLACEHOLDER_}(r, g, b) {\n r = Math.max(Math.min(Number(r), 100), 0) * 2.55;\n g = Math.max(Math.min(Number(g), 100), 0) * 2.55;\n b = Math.max(Math.min(Number(b), 100), 0) * 2.55;\n r = ('0' + (Math.round(r) || 0).toString(16)).slice(-2);\n g = ('0' + (Math.round(g) || 0).toString(16)).slice(-2);\n b = ('0' + (Math.round(b) || 0).toString(16)).slice(-2);\n return '#' + r + g + b;\n}\n`);\n const code = functionName + '(' + red + ', ' + green + ', ' + blue + ')';\n return [code, JavaScript.ORDER_FUNCTION_CALL];\n};\n\nJavaScript['colour_blend'] = function(block) {\n // Blend two colours together.\n const c1 = JavaScript.valueToCode(block, 'COLOUR1', JavaScript.ORDER_NONE) ||\n \"'#000000'\";\n const c2 = JavaScript.valueToCode(block, 'COLOUR2', JavaScript.ORDER_NONE) ||\n \"'#000000'\";\n const ratio =\n JavaScript.valueToCode(block, 'RATIO', JavaScript.ORDER_NONE) || 0.5;\n const functionName = JavaScript.provideFunction_('colourBlend', `\nfunction ${JavaScript.FUNCTION_NAME_PLACEHOLDER_}(c1, c2, ratio) {\n ratio = Math.max(Math.min(Number(ratio), 1), 0);\n var r1 = parseInt(c1.substring(1, 3), 16);\n var g1 = parseInt(c1.substring(3, 5), 16);\n var b1 = parseInt(c1.substring(5, 7), 16);\n var r2 = parseInt(c2.substring(1, 3), 16);\n var g2 = parseInt(c2.substring(3, 5), 16);\n var b2 = parseInt(c2.substring(5, 7), 16);\n var r = Math.round(r1 * (1 - ratio) + r2 * ratio);\n var g = Math.round(g1 * (1 - ratio) + g2 * ratio);\n var b = Math.round(b1 * (1 - ratio) + b2 * ratio);\n r = ('0' + (r || 0).toString(16)).slice(-2);\n g = ('0' + (g || 0).toString(16)).slice(-2);\n b = ('0' + (b || 0).toString(16)).slice(-2);\n return '#' + r + g + b;\n}\n`);\n const code = functionName + '(' + c1 + ', ' + c2 + ', ' + ratio + ')';\n return [code, JavaScript.ORDER_FUNCTION_CALL];\n};\n","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/**\n * @fileoverview Complete helper functions for generating JavaScript for\n * blocks. This is the entrypoint for javascript_compressed.js.\n * @suppress {extraRequire}\n */\n'use strict';\n\ngoog.module('Blockly.JavaScript.all');\n\nconst moduleExports = goog.require('Blockly.JavaScript');\ngoog.require('Blockly.JavaScript.colour');\ngoog.require('Blockly.JavaScript.lists');\ngoog.require('Blockly.JavaScript.logic');\ngoog.require('Blockly.JavaScript.loops');\ngoog.require('Blockly.JavaScript.math');\ngoog.require('Blockly.JavaScript.procedures');\ngoog.require('Blockly.JavaScript.texts');\ngoog.require('Blockly.JavaScript.variables');\ngoog.require('Blockly.JavaScript.variablesDynamic');\n\nexports = moduleExports;\n"]} |