const categorySeparator = ''; const blockSeparator = ''; // At default scale, about 28px const motion = function (isStage, targetId) { return ` ${isStage ? ` ` : ` 10 15 15 ${blockSeparator} 0 0 1 1 0 0 ${blockSeparator} 90 ${blockSeparator} 10 0 10 0 ${blockSeparator} ${blockSeparator} ${blockSeparator} `} ${categorySeparator} `; }; const looks = function (isStage, targetId) { return ` ${isStage ? '' : ` Hello! 2 Hello! Hmm... 2 Hmm... ${blockSeparator} `} ${isStage ? ` ` : ` ${blockSeparator} 10 100 `} ${blockSeparator} 25 0 ${blockSeparator} ${isStage ? '' : ` ${blockSeparator} 1 `} ${isStage ? ` ` : ` `} ${categorySeparator} `; }; const sound = function (isStage, targetId) { return ` ${blockSeparator} 10 100 ${blockSeparator} -10 100 ${categorySeparator} `; }; const events = function (isStage) { return ` ${isStage ? ` ` : ` `} ${blockSeparator} 10 ${blockSeparator} ${categorySeparator} `; }; const control = function (isStage) { return ` 1 ${blockSeparator} 10 ${blockSeparator} ${blockSeparator} ${blockSeparator} ${isStage ? ` ` : ` `} ${categorySeparator} `; }; const sensing = function (isStage) { return ` ${isStage ? '' : ` ${blockSeparator} `} What's your name? ${blockSeparator} ${isStage ? '' : ` ${blockSeparator} ''+ ${blockSeparator} `} ${blockSeparator} ${blockSeparator} ${blockSeparator} ${blockSeparator} ${blockSeparator} ${categorySeparator} `; }; const operators = function () { return ` ${blockSeparator} 1 10 ${blockSeparator} 100 100 100 ${blockSeparator} ${blockSeparator} apple banana 1 apple apple apple a ${blockSeparator} ${blockSeparator} ${categorySeparator} `; }; const variables = function () { return ` `; }; const myBlocks = function () { return ` `; }; const xmlOpen = ''; const xmlClose = ''; /** * @param {!boolean} isStage - Whether the toolbox is for a stage-type target. * @param {?string} targetId - The current editing target * @param {string?} categoriesXML - null for default toolbox, or an XML string with elements. * @returns {string} - a ScratchBlocks-style XML document for the contents of the toolbox. */ const makeToolboxXML = function (isStage, targetId, categoriesXML) { const gap = [categorySeparator]; const everything = [ xmlOpen, motion(isStage, targetId), gap, looks(isStage, targetId), gap, sound(isStage, targetId), gap, events(isStage, targetId), gap, control(isStage, targetId), gap, sensing(isStage, targetId), gap, operators(isStage, targetId), gap, variables(isStage, targetId), gap, myBlocks(isStage, targetId) ]; if (categoriesXML) { everything.push(gap, categoriesXML); } everything.push(xmlClose); return everything.join('\n'); }; export default makeToolboxXML;