Spaces:
Build error
Build error
const BlockType = require('../../extension-support/block-type'); | |
const ArgumentType = require('../../extension-support/argument-type'); | |
const UI = require('./helper.js'); | |
const Cast = require('../../util/cast'); | |
const Icons = { | |
Mouse: require('./mouse.png'), | |
Button: require('./button.png'), | |
Text: require('./text.png'), | |
Textarea: require('./textarea.png'), | |
Box: require('./box.png'), | |
ScrollingBox: require('./scrollingbox.png'), | |
Checkbox: require('./checkbox.png'), | |
Dropdown: require('./dropdown.png'), | |
Multiselect: require('./multiselect.png'), | |
Slider: require('./slider.png'), | |
} | |
/** | |
* Class | |
* @constructor | |
*/ | |
class jgAdvancedText { | |
constructor(runtime) { | |
/** | |
* The runtime instantiating this block package. | |
* @type {runtime} | |
*/ | |
this.runtime = runtime; | |
this.UIClient = new UI(runtime); | |
} | |
/** | |
* @returns {object} metadata for this extension and its blocks. | |
*/ | |
getInfo() { | |
return { | |
id: 'jgInterfaces', | |
name: 'Interfaces', | |
color1: '#ac96b5', | |
color2: '#8e7a96', | |
blocks: [ | |
{ | |
opcode: 'createButton', | |
text: 'create button named: [NAME] with text: [TEXT]', | |
blockIconURI: Icons.Button, | |
arguments: { | |
NAME: { | |
type: ArgumentType.STRING, | |
defaultValue: 'Button' | |
}, | |
TEXT: { | |
type: ArgumentType.STRING, | |
defaultValue: 'Click me' | |
} | |
}, | |
blockType: BlockType.COMMAND | |
}, | |
{ | |
opcode: 'createTextInput', | |
text: 'create text input named: [NAME] with placeholder: [PLACEHOLDER] and default: [DEFAULT]', | |
blockIconURI: Icons.Text, | |
arguments: { | |
NAME: { | |
type: ArgumentType.STRING, | |
defaultValue: 'TextInput' | |
}, | |
PLACEHOLDER: { | |
type: ArgumentType.STRING, | |
defaultValue: 'Type here...' | |
}, | |
DEFAULT: { | |
type: ArgumentType.STRING, | |
defaultValue: ' ' | |
} | |
}, | |
blockType: BlockType.COMMAND | |
}, | |
{ | |
opcode: 'createTextBox', | |
text: 'create textbox named: [NAME] with placeholder: [PLACEHOLDER] and default: [DEFAULT] being resizable? [RESIZE]', | |
blockIconURI: Icons.Textarea, | |
arguments: { | |
NAME: { | |
type: ArgumentType.STRING, | |
defaultValue: 'Textbox' | |
}, | |
PLACEHOLDER: { | |
type: ArgumentType.STRING, | |
defaultValue: 'Type here...' | |
}, | |
DEFAULT: { | |
type: ArgumentType.STRING, | |
defaultValue: ' ' | |
}, | |
RESIZE: { | |
type: ArgumentType.BOOLEAN | |
} | |
}, | |
blockType: BlockType.COMMAND | |
}, | |
{ | |
opcode: 'createDropdown', | |
text: 'create dropdown menu named: [NAME] with label: [LABEL]', | |
blockIconURI: Icons.Dropdown, | |
arguments: { | |
NAME: { | |
type: ArgumentType.STRING, | |
defaultValue: 'Dropdown' | |
}, | |
LABEL: { | |
type: ArgumentType.STRING, | |
defaultValue: 'Click me' | |
} | |
}, | |
blockType: BlockType.COMMAND | |
}, | |
{ | |
opcode: 'createCheckbox', | |
text: 'create checkbox named: [NAME] with label: [LABEL]', | |
blockIconURI: Icons.Checkbox, | |
arguments: { | |
NAME: { | |
type: ArgumentType.STRING, | |
defaultValue: 'Checkbox' | |
}, | |
LABEL: { | |
type: ArgumentType.STRING, | |
defaultValue: ' ' | |
} | |
}, | |
blockType: BlockType.COMMAND | |
}, | |
{ | |
opcode: 'createSlider', | |
text: 'create slider named: [NAME] minimum number: [MIN] maximum number: [MAX]', | |
blockIconURI: Icons.Slider, | |
arguments: { | |
NAME: { | |
type: ArgumentType.STRING, | |
defaultValue: 'Slider' | |
}, | |
MIN: { | |
type: ArgumentType.NUMBER, | |
defaultValue: 0 | |
}, | |
MAX: { | |
type: ArgumentType.NUMBER, | |
defaultValue: 100 | |
} | |
}, | |
blockType: BlockType.COMMAND | |
}, | |
{ | |
opcode: 'createScrollingArea', | |
text: 'create scrolling box named: [NAME]', | |
blockIconURI: Icons.ScrollingBox, | |
arguments: { | |
NAME: { | |
type: ArgumentType.STRING, | |
defaultValue: 'Scroll area' | |
} | |
}, | |
blockType: BlockType.COMMAND | |
}, | |
{ | |
opcode: 'createMultiselect', | |
text: 'create multiselect box named: [NAME]', | |
blockIconURI: Icons.Multiselect, | |
arguments: { | |
NAME: { | |
type: ArgumentType.STRING, | |
defaultValue: 'Multi-select' | |
} | |
}, | |
blockType: BlockType.COMMAND | |
}, | |
{ | |
opcode: 'createGroup', | |
text: 'create group box named: [NAME]', | |
blockIconURI: Icons.Box, | |
arguments: { | |
NAME: { | |
type: ArgumentType.STRING, | |
defaultValue: 'Box' | |
} | |
}, | |
blockType: BlockType.COMMAND | |
}, | |
] | |
}; | |
} | |
// util | |
createElement(type, properties) { | |
const element = new UI.Button(this.UIClient, properties); | |
} | |
// blocks | |
createButton(args) { | |
this.createElement('Button', { | |
id: Cast.toString(args.NAME), | |
label: Cast.toString(args.TEXT), | |
shown: true | |
}) | |
} | |
createTextInput(args) { | |
} | |
createTextBox(args) { | |
} | |
createDropdown(args) { | |
} | |
createCheckbox(args) { | |
} | |
createScrollingArea(args) { | |
} | |
createMultiselect(args) { | |
} | |
createGroup(args) { | |
} | |
} | |
module.exports = jgAdvancedText; | |