Variables
Buffer
Buffer: any
Defined in modules/tone.js:11
Const Color
Color: unique symbol = Symbol()
Defined in app/lib/parts/types/color.ts:8
Const CopyGenerators
Defined in app/lib/creator/creator.ts:43
CrossFade
CrossFade: any
Defined in modules/tone.js:12
Const DataAPI
DataAPI
: IMetaDefinition [] = [{type: 'function',name: 'refresh',verbose: _('PART_DATA_REFRESH', 'refresh'),}, {type: 'function',name: 'onUpdate',verbose: _('PART_DATA_WHEN_UDPATED', 'when updated'),parameters: [{type: 'parameter',name: 'callback',verbose: '',returnType: Function,}],blockly: {postProcess(block : Block) {addFlashField(block);block.setPreviousStatement(false);block.setNextStatement(false);},},}]
Defined in app/lib/parts/parts/data/api.ts:13
Const FieldAssetPicker
FieldAssetPicker: FieldAssetPicker = Blockly.FieldAssetPicker
Defined in app/lib/blockly/fields/asset-picker.js:76
Const FileLoaders
Defined in app/lib/editor/loader/loader.ts:13
Const Flags
Defined in app/lib/flags/flags-manager.ts:54
GifReader
GifReader: any
Defined in app/lib/gif-encoder/omggif/import.js:9
GifWriter
GifWriter: any
Defined in app/lib/gif-encoder/omggif/import.js:9
Loop
Loop: any
Defined in modules/tone.js:13
Const Msg$0
Defined in app/elements/msg/en-US.js:6
Const RESOURCE_CACHE_RESOLUTION_MULTIPLIER
RESOURCE_CACHE_RESOLUTION_MULTIPLIER: 2 = 2
Defined in app/lib/output/resources.ts:10
Sequence
Sequence: any
Defined in modules/tone.js:14
Const SpeakerAPI
SpeakerAPI
: IPartAPI = SpeakerAPIFactory(SpeakerPart)
Defined in app/lib/parts/parts/speaker/api.ts:9
Tone
Tone: any
Defined in modules/tone.js:17
Const TransformAPI
TransformAPI
: IMetaDefinition [] = [{type: 'function',name: 'moveAlong',verbose: _('PART_TRANSFORM_MOVE', 'move'),parameters: [{type: 'parameter',name: 'distance',verbose: _('PART_TRANSFORM_DISTANCE', 'distance'),returnType: Number,default: 0,}],},{type: 'function',name: 'turn',verbose: _('PART_TRANSFORM_TURN', 'turn'),parameters: [{type: 'parameter',name: 'type',verbose: '',returnType: 'Enum',enum: [['\u21BB', 'clockwise'],['\u21BA', 'counterclockwise'],[_('PART_TRANSFORM_TURN_TO', 'to'), 'to'],],default: 'clockwise',}, {type: 'parameter',name: 'rotation',verbose: _('PART_TRANSFORM_ROTATION', 'rotation'),returnType: Number,default: 0,blockly: {shadow(defaultValue: number) {return `<shadow type="angle"><field name="VALUE">${defaultValue}</field></shadow>`}}}],blockly: {javascript(Blockly : Blockly, block : Block, m : Meta) {const type = block.getFieldValue('TYPE');const value = Blockly.JavaScript.valueToCode(block, 'ROTATION', Blockly.JavaScript.ORDER_ASSIGNMENT) || 0;const prefix = m.getNameChain('.').replace(/\.turn$/, '');if (type === 'to') {return `${prefix}.rotation = ${value};\n`;} else if (type === 'clockwise') {return `${prefix}.turnCW(${value});\n`;} else {return `${prefix}.turnCCW(${value});\n`;}},},},{type: 'function',name: 'setScale',verbose: _('PART_TRANSFORM_SET_SCALE', 'set size to'),parameters: [{type: 'parameter',name: 'scale',verbose: _('PART_TRANSFORM_SCALE', 'scale'),returnType: Number,default: 100,}],},{type: 'function',name: 'moveTo',verbose: _('PART_TRANSFORM_MOVE_TO', 'move to'),parameters: [{type: 'parameter',name: 'x',verbose: _('PART_TRANSFORM_X', 'x'),returnType: Number,default: 0,}, {type: 'parameter',name: 'y',verbose: _('PART_TRANSFORM_Y', 'y'),returnType: Number,default: 0,}],},{type: 'variable',name: 'opacity',verbose: _('PART_TRANSFORM_OPACITY', 'opacity'),returnType: Number,default: 100,setter: true,},{type: 'variable',name: 'x',verbose: _('PART_TRANSFORM_X', 'x'),returnType: Number,},{type: 'variable',name: 'y',verbose: _('PART_TRANSFORM_Y', 'y'),returnType: Number,},{type: 'variable',name: 'scale',verbose: _('PART_TRANSFORM_SCALE', 'scale'),returnType: Number,},{type: 'variable',name: 'rotation',verbose: _('PART_TRANSFORM_ROTATION', 'rotation'),returnType: Number,},{type: 'function',name: 'onClick',verbose: _('PART_TRANSFORM_ON_CLICK', 'on click'),parameters: [{type: 'parameter',name: 'callback',verbose: '',returnType: Function,}],blockly: {postProcess(block : Block) {addFlashField(block);block.setPreviousStatement(false);block.setNextStatement(false);},},},]
Defined in app/lib/parts/parts/transform/api.ts:13
Transport
Transport: any
Defined in modules/tone.js:9
Const Wave
Wave: unique symbol = Symbol()
Defined in app/lib/parts/parts/oscillator/wave.ts:8
Const WebAudioTimestamp
WebAudioTimestamp: unique symbol = Symbol()
Defined in app/lib/types.ts:6
Const add
add: HTMLTemplateElement = svg`<svg viewBox="0 0 64 64" preserveAspectRatio="xMidYMid meet" focusable="false" style="pointer-events: none; display: block; width: 100%; height: 100%;"><g><path d="M25.94,35.92H18.09a2,2,0,0,1-1.5-.62,2.14,2.14,0,0,1-.64-1.52V30.29a2.14,2.14,0,0,1,.64-1.52,2,2,0,0,1,1.5-.62h7.85A2.18,2.18,0,0,0,28.1,26V18.14a2,2,0,0,1,.62-1.5A2.14,2.14,0,0,1,30.24,16h3.48a2.14,2.14,0,0,1,1.52.64,2,2,0,0,1,.62,1.5V26A2.18,2.18,0,0,0,38,28.15h7.85a2,2,0,0,1,1.5.62A2.14,2.14,0,0,1,48,30.29v3.48a2.14,2.14,0,0,1-.64,1.52,2,2,0,0,1-1.5.62H38a2.18,2.18,0,0,0-2.16,2.16v7.85a2,2,0,0,1-1.06,1.85,2.09,2.09,0,0,1-1.08.29H30.24a2.14,2.14,0,0,1-1.52-.64,2,2,0,0,1-.62-1.5V38.08a2.18,2.18,0,0,0-2.16-2.16Z"></path></g></svg>`
Defined in app/elements/kc-workspace-frame/icons.ts:8
Const blockExceptions
block
Exceptions: Map < string , IExceptionMapItem > = new Map<string, IExceptionMapItem>([['app', {blocks: new Map<string, string>([['app_onStart', 'onStart']]),}],['draw', {category: 'ctx',blocks: new Map<string, string>([['random', 'stamp_random']]),}],])
Defined in app/lib/source-editor/blockly/creator/block-exceptions.ts:14
Const button
button: HTMLTemplateElement = html`<style>button.tool {display: flex;flex-direction: row;align-items: center;justify-content: center;@apply --kano-button;background-color: rgba(255, 255, 255, 0.25);border-radius: 3px;margin: 0 8px 0 0;font-size: 12px;font-weight: normal;text-shadow: none;font-family: var(--font-body);width: 32px;height: 32px;padding: 0px;cursor: pointer;}button.tool:hover,button.tool:focus {background-color: #FF6900;outline: 0;}button.tool>* {margin: 0 auto;}</style>`
Defined in app/elements/kc-workspace-toolbar/style.js:8
Const challengeStyles
challengeStyles: CSSResult = css`.emoji {max-width: 18px;max-height: 18px;transform: translateY(4px);}kc-editor-banner {width: 272px;}@media only screen and (max-width: 980px) {kc-editor-banner {width: 195px;}}`
Defined in app/lib/challenge/styles.ts:8
Const clear
clear: HTMLTemplateElement = svg`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g><path d="M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"></path></g></svg>`
Defined in app/lib/creator/ui/icons.ts:10
Const create
Defined in app/lib/creator/index.ts:25
Parameters
Const debug
debug: log = logDecoratorFactory('DEBUG')
Defined in app/lib/decorators.ts:34
Const download
download: HTMLTemplateElement = svg`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g><path d="M19 9h-4V3H9v6H5l7 7 7-7zM5 18v2h14v-2H5z"></path></g></svg>`
Defined in app/lib/creator/ui/icons.ts:11
Const flash
flash: HTMLTemplateElement = svg`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 40 40"><polygon class="cls-1" points="17.59 23.26 17.61 22.78 6.36 22.78 16.8 0 28.82 0 23.61 11.39 35.22 11.39 17.59 39.9 17.59 23.26"/></svg>`
Defined in app/lib/plugins/flash/icons.ts:8
Const general
general: any [] = [{block: (part : any) => {return {id: 'set_background_color',message0: `${part.name}: ${_('DRAW_SET_BACKGROUND_COLOR', 'Set background color')} %1`,args0: [{type: "input_value",name: "COLOR",check: 'Colour'}],inlineInputs: true,previousStatement: null,nextStatement: null,};},javascript: () => {return function (block : Block) {let c = Blockly.JavaScript.valueToCode(block, 'COLOR', Blockly.JavaScript.ORDER_ASSIGNMENT) || `'#ffffff'`;return `ctx.background = ${c};\n`;};}}, {block: (part : any) => {return {id: 'set_transparency',message0: `${part.name}: ${_('DRAW_SET_TRANSPARENCY', 'Set transparency to')} %1`,args0: [{type: "input_value",name: "ALPHA",check: 'Number'}],inlineInputs: true,previousStatement: null,nextStatement: null,};},javascript: () => {return function (block : Block) {let a = Blockly.JavaScript.valueToCode(block, 'ALPHA', Blockly.JavaScript.ORDER_ASSIGNMENT) || '100';return `ctx.opacity = ${a};\n`;};}}]
Defined in app/lib/modules/draw/blocks/general.ts:9
Const next
next: HTMLTemplateElement = svg`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g><path d="M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z"></path></g></svg>`
Defined in app/lib/creator/ui/icons.ts:13
Const paths
paths: any [] = [{block: (part : any) => {return {id: 'line_to',lookup: 'lineTo(x, y)',message0: `${part.name}: ${Blockly.Msg.BLOCK_CANVAS_LINE_TO}`,args0: [{type: "input_value",name: "X",check: 'Number'},{type: "input_value",name: "Y",check: 'Number',align: 'RIGHT'}],inlineInputs: true,previousStatement: null,nextStatement: null,};},javascript: () => {return function (block : Block) {let x = Blockly.JavaScript.valueToCode(block, 'X', Blockly.JavaScript.ORDER_COMMA) || 'null',y = Blockly.JavaScript.valueToCode(block, 'Y', Blockly.JavaScript.ORDER_COMMA) || 'null';return `ctx.lineTo(${x}, ${y});\n`;};}},{block: (part : any) => {return {id: 'line',lookup: 'line(x, y)',message0: `${part.name}: ${Blockly.Msg.BLOCK_CANVAS_LINE_ALONG}`,args0: [{type: "input_value",name: "X",check: 'Number'},{type: "input_value",name: "Y",check: 'Number',align: 'RIGHT'}],inlineInputs: true,previousStatement: null,nextStatement: null,};},javascript: () => {return function (block : Block) {let x = Blockly.JavaScript.valueToCode(block, 'X', Blockly.JavaScript.ORDER_COMMA) || 'null',y = Blockly.JavaScript.valueToCode(block, 'Y', Blockly.JavaScript.ORDER_COMMA) || 'null';return `ctx.line(${x}, ${y});\n`;};},}]
Defined in app/lib/modules/draw/blocks/paths.ts:9
Const play
play: HTMLTemplateElement = svg`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g><path d="M8 5v14l11-7z"></path></g></svg>`
Defined in app/lib/creator/ui/icons.ts:8
Const previous
previous: HTMLTemplateElement = svg`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g><path d="M15.41 7.41L14 6l-6 6 6 6 1.41-1.41L10.83 12z"></path></g></svg>`
Defined in app/lib/creator/ui/icons.ts:14
Const prismTheme
prismTheme: CSSResult = css`code[class*="language-"],pre[class*="language-"] {color: black;background: none;text-shadow: 0 1px white;font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;text-align: left;white-space: pre;word-spacing: normal;word-break: normal;word-wrap: normal;line-height: 1.5;-moz-tab-size: 4;-o-tab-size: 4;tab-size: 4;-webkit-hyphens: none;-moz-hyphens: none;-ms-hyphens: none;hyphens: none;}pre[class*="language-"]::-moz-selection, pre[class*="language-"] ::-moz-selection,code[class*="language-"]::-moz-selection, code[class*="language-"] ::-moz-selection {text-shadow: none;background: #b3d4fc;}pre[class*="language-"]::selection, pre[class*="language-"] ::selection,code[class*="language-"]::selection, code[class*="language-"] ::selection {text-shadow: none;background: #b3d4fc;}@media print {code[class*="language-"],pre[class*="language-"] {text-shadow: none;}}/* Code blocks */pre[class*="language-"] {padding: 1em;margin: .5em 0;overflow: auto;}:not(pre) > code[class*="language-"],pre[class*="language-"] {background: #f5f2f0;}/* Inline code */:not(pre) > code[class*="language-"] {padding: .1em;border-radius: .3em;white-space: normal;}.token.comment,.token.prolog,.token.doctype,.token.cdata {color: slategray;}.token.punctuation {color: #fff;}.namespace {opacity: .7;}.token.property,.token.tag,.token.boolean,.token.number,.token.constant,.token.symbol,.token.deleted {color: #ff9800;;}.token.selector,.token.attr-name,.token.string,.token.char,.token.builtin,.token.inserted {color: #88c440;}.token.operator,.token.entity,.token.url,.language-css .token.string,.style .token.string {color: #E65544;}.token.atrule,.token.attr-value,.token.keyword {color: #ff9800;}.token.function {color: #21a6e6;}.token.regex,.token.important,.token.variable {color: #ff9800;}.token.important,.token.bold {font-weight: bold;}.token.italic {font-style: italic;}.token.entity {cursor: help;}`
Defined in app/elements/kano-code-display/kano-prism-theme.ts:8
Const samples
samples
: ISampleSet [] = [{label: 'Drum Machine',id: 'drum-machine',resources: [{id: 'claves',label: 'Claves',src: 'claves.wav',}, {id: 'bass-drum',label: 'Bass drum',src: 'bass_drum.wav',}, {src: 'closed_hi_hat.wav',label: 'Closed hi hat',id: 'closed_hi_hat',}, {src: 'cowbell.wav',label: 'Cowbell',id: 'cowbell',}, {src: 'cymbal.wav',label: 'Cymbal',id: 'cymbal',}, {src: 'hand_clap.wav',label: 'Hand clap',id: 'hand_clap',}, {src: 'hi_conga.wav',label: 'Hi conga',id: 'hi_conga',}, {src: 'hi_tom.wav',label: 'Hi tom',id: 'hi_tom',}, {src: 'low_conga.wav',label: 'Low conga',id: 'low_conga',}, {src: 'low_tom.wav',label: 'Low tom',id: 'low_tom',}, {src: 'maracas.wav',label: 'Maracas',id: 'maracas',}, {src: 'mid_conga.wav',label: 'Mid conga',id: 'mid_conga',}, {src: 'mid_tom.wav',label: 'Mid tom',id: 'mid_tom',}, {src: 'open_hi_hat.wav',label: 'Open hi hat',id: 'open_hi_hat',}, {src: 'rim_shot.wav',label: 'Rim shot',id: 'rim_shot',}, {src: 'snare_drum.wav',label: 'Snare drum',id: 'snare_drum',}],}, {label: 'Acoustic Guitar',id: 'acoustic-guitar',resources: [{src: 'guitar_1st_E.wav',id: 'guitar_1st_E',label: 'Note 1',}, {src: 'guitar_2nd_B.wav',id: 'guitar_2nd_B',label: 'Note 2',}, {src: 'guitar_3rd_G.wav',id: 'guitar_3rd_G',label: 'Note 3',}, {src: 'guitar_4th_D.wav',id: 'guitar_4th_D',label: 'Note 4',}, {src: 'guitar_5th_A.wav',id: 'guitar_5th_A',label: 'Note 5',}],}, {label: 'Electric Guitar',id: 'electric-guitar',resources: [{src: 'electric_guitar_1.wav',id: 'electric_guitar_1',label: 'Note 1',}, {src: 'electric_guitar_2.wav',id: 'electric_guitar_2',label: 'Note 2',}, {src: 'electric_guitar_3.wav',id: 'electric_guitar_3',label: 'Note 3',}, {src: 'electric_guitar_4.wav',id: 'electric_guitar_4',label: 'Note 4',}, {src: 'electric_guitar_5.wav',id: 'electric_guitar_5',label: 'Note 5',}]}, {label: 'Instruments',id: 'instruments',resources: [{src: 'ambi_piano.wav',id: 'ambi_piano',label: 'Ambi Piano',}, {src: 'bass_hit_c.wav',id: 'bass_hit_c',label: 'Bass Hit',}, {src: 'bass_voxy_hit_c.wav',id: 'bass_voxy_hit_c',label: 'Bass Voxy Hit',}, {src: 'drum_bass_hard.wav',id: 'drum_bass_hard',label: 'Drum Bass Hard',}, {src: 'bd_ada.wav',id: 'bd_ada',label: 'Drum Beat',}, {src: 'drum_cymbal_hard.wav',id: 'drum_cymbal_hard',label: 'Drum Cymbal Hard',}, {src: 'drum_roll.wav',id: 'drum_roll',label: 'Drum Roll',}, {src: 'joke_drum.wav',id: 'joke_drum',label: 'Joke Drum',}]}, {label: 'Kano',id: 'kano',resources: [{src: 'boot_up_v2.wav',id: 'boot_up_v2',label: 'Boot Up',}, {src: 'boot_up.wav',id: 'boot_up',label: 'Boot Up 2',}, {src: 'challenge_complete.wav',id: 'challenge_complete',label: 'Challenge Complete',}, {src: 'error2.wav',id: 'error2',label: 'Error',}, {src: 'error_v2.wav',id: 'error_v2',label: 'Error 2',}, {src: 'error.wav',id: 'error',label: 'Error 3',}, {src: 'grab.wav',id: 'grab',label: 'Grab',}, {src: 'make.wav',id: 'make',label: 'Make',}, {src: 'ungrab.wav',id: 'ungrab',label: 'Ungrab',}]}, {label: 'Loops',id: 'loops',resources: [{src: 'loop_amen_full.wav',id: 'loop_amen_full',label: 'Amen',}, {src: 'apache.wav',id: 'apache',label: 'Apache',}, {src: 'bass_loop.wav',id: 'bass_loop',label: 'Bass',}, {src: 'loop_compus.wav',id: 'loop_compus',label: 'Compus',}, {src: 'loop_mika.wav',id: 'loop_mika',label: 'Mika',}, {src: 'loop_mountain.wav',id: 'loop_mountain',label: 'Mountain',}, {src: 'loop_safari.wav',id: 'loop_safari',label: 'Safari',}],}, {label: 'Sounds',id: 'sounds',resources: [{src: 'perc_bell.wav',id: 'perc_bell',label: 'Bell',}, {src: 'misc_burp.wav',id: 'misc_burp',label: 'Burp',}, {src: 'misc_crow.wav',id: 'misc_crow',label: 'Crow',}, {src: 'air_horn.wav',id: 'air_horn',label: 'Air Horn',}, {src: 'short_fart.wav',id: 'short_fart',label: 'Fart',}, {src: 'frequency_sweep.wav',id: 'frequency_sweep',label: 'Frequency Sweep',}, {src: 'elec_ping.wav',id: 'elec_ping',label: 'Ping',}, {src: 'perc_snap.wav',id: 'perc_snap',label: 'Snap',}, {src: 'perc_swash.wav',id: 'perc_swash',label: 'Swash',}, {src: 'elec_twip.wav',id: 'elec_twip',label: 'Twip',}, {src: 'vinyl_backspin.wav',id: 'vinyl_backspin',label: 'Vinyl',}]}]
Defined in app/lib/parts/parts/speaker/data.ts:19
Const setters
setters: ( object | object ) [] = [{block: (part : any) => {return {id: 'color',lookup: 'fillColor(color)',message0: `${part.name}: ${Blockly.Msg.BLOCK_CANVAS_FILL_COLOR}`,args0: [{type: 'input_value',name: 'COLOR',check: 'Colour',}],previousStatement: null,nextStatement: null,};},javascript: () => {return function javascript(block : Block) {const color = Blockly.JavaScript.valueToCode(block, 'COLOR', Blockly.JavaScript.ORDER_NONE) || 'null';return `ctx.color(${color});\n`;};},}, {block: (part : any) => {return {id: 'no_fill',lookup: 'noFill',message0: `${part.name}: ${Blockly.Msg.BLOCK_CANVAS_NO_FILL}`,previousStatement: null,nextStatement: null};},javascript: () => {return function () {return `ctx.color('transparent');\n`;};}}, {block: (part : any) => {return {id: 'stroke',lookup: 'stroke(color, thickness)',message0: `${part.name}: ${Blockly.Msg.BLOCK_CANVAS_STROKE}`,args0: [{type: "input_value",name: "COLOR",check: 'Colour'},{type: "input_value",name: "SIZE",check: 'Number',align: 'RIGHT'}],previousStatement: null,nextStatement: null,};},javascript: () => {return function (block : Block) {let color = Blockly.JavaScript.valueToCode(block, 'COLOR', Blockly.JavaScript.ORDER_COMMA) || 'null',size = Blockly.JavaScript.valueToCode(block, 'SIZE', Blockly.JavaScript.ORDER_COMMA) || 'null';return `ctx.stroke(${color}, ${size});\n`;};},}]
Defined in app/lib/modules/draw/blocks/setters.ts:9
Const shapes
shapes: ( object | object ) [] = [{block: (part : any) => {return {id: 'circle',lookup: 'circle(radius)',message0: `${part.name}: ${Blockly.Msg.BLOCK_CANVAS_CIRCLE}`,args0: [{type: "input_value",name: "RADIUS",check: 'Number'}],previousStatement: null,nextStatement: null,};},javascript: () => {return function (block : Block) {let radius = Blockly.JavaScript.valueToCode(block, 'RADIUS', Blockly.JavaScript.ORDER_NONE) || 'null';return `ctx.circle(${radius});\n`;};}},{block: (part : any) => {return {id: 'ellipse',lookup: 'ellipse(rx, ry)',message0: `${part.name}: ${Blockly.Msg.BLOCK_CANVAS_ELIPSE}`,args0: [{type: "input_value",name: "RADIUSX",check: 'Number'},{type: "input_value",name: "RADIUSY",check: 'Number',align: 'RIGHT'}],previousStatement: null,nextStatement: null,};},javascript: () => {return function (block : Block) {let radiusx = Blockly.JavaScript.valueToCode(block, 'RADIUSX', Blockly.JavaScript.ORDER_COMMA) || 'null',radiusy = Blockly.JavaScript.valueToCode(block, 'RADIUSY', Blockly.JavaScript.ORDER_COMMA) || 'null';return `ctx.ellipse(${radiusx}, ${radiusy});`;};}},{block: (part : any) => {return {id: 'square',lookup: 'square(size)',message0: `${part.name}: ${Blockly.Msg.BLOCK_CANVAS_SQUARE}`,args0: [{type: "input_value",name: "SIZE",check: 'Number'}],previousStatement: null,nextStatement: null,};},javascript: (part : any) => {return function (block: Block) {let size = Blockly.JavaScript.valueToCode(block, 'SIZE', Blockly.JavaScript.ORDER_NONE) || 'null';return `ctx.square(${size});`;};}},{block: (part : any) => {return {id: 'rectangle',lookup: 'rectangle(width, height)',message0: `${part.name}: ${Blockly.Msg.BLOCK_CANVAS_RECTANGLE}`,args0: [{type: "input_value",name: "WIDTH",check: 'Number'},{type: "input_value",name: "HEIGHT",check: 'Number',align: 'RIGHT'}],previousStatement: null,nextStatement: null,};},javascript: (part : any) => {return function (block: Block) {let width = Blockly.JavaScript.valueToCode(block, 'WIDTH', Blockly.JavaScript.ORDER_COMMA) || 'null',height = Blockly.JavaScript.valueToCode(block, 'HEIGHT', Blockly.JavaScript.ORDER_COMMA) || 'null';return `ctx.rectangle(${width}, ${height});`;};}},{block: (part : any) => {return {id: 'triangle',lookup: 'triangle(width, height)',message0: `${part.name}: ${Blockly.Msg.BLOCK_CANVAS_TRIANGLE}`,args0: [{type: "input_value",name: "WIDTH",check: 'Number'},{type: "input_value",name: "HEIGHT",check: 'Number',align: 'RIGHT'}],previousStatement: null,nextStatement: null,};},javascript: (part : any) => {return function (block: Block) {let width = Blockly.JavaScript.valueToCode(block, 'WIDTH', Blockly.JavaScript.ORDER_COMMA) || 'null',height = Blockly.JavaScript.valueToCode(block, 'HEIGHT', Blockly.JavaScript.ORDER_COMMA) || 'null';return `ctx.triangle(${width}, ${height});`;};}},{block: (part : any) => {return {id: 'arc',lookup: 'arc(radius, start, end, close)',message0: `${part.name}: ${Blockly.Msg.BLOCK_CANVAS_ARC}`,args0: [{type: "input_value",name: "RADIUS",check: 'Number'},{type: "input_value",name: "START",check: 'Number'},{type: "input_value",name: "END",check: 'Number'},{type: "input_value",name: "CLOSE",check: 'Boolean'}],previousStatement: null,nextStatement: null,};},javascript: (part : any) => {return function (block: Block) {let radius = Blockly.JavaScript.valueToCode(block, 'RADIUS', Blockly.JavaScript.ORDER_COMMA) || 'null',start = Blockly.JavaScript.valueToCode(block, 'START', Blockly.JavaScript.ORDER_COMMA) || 'null',end = Blockly.JavaScript.valueToCode(block, 'END', Blockly.JavaScript.ORDER_COMMA) || 'null',close = block.getFieldValue('CLOSE') || false;return `ctx.arc(${radius}, ${start}, ${end}, ${close});`;};}},{block: (part : any) => {let id = 'shapes_polygon';Blockly.Blocks[`${part.id}_${id}`] = {init: function () {this.points = 1;this.workspace.addChangeListener((e : any) => {if (e.type === Blockly.Events.MOVE &&(e.newParentId === this.id || e.oldParentId === this.id)&& e.newInputName !== 'CLOSE') {this._updateShape();}});this.setColour(COLOUR);this.appendDummyInput().appendField(`${part.name}: ${Blockly.Msg.BLOCK_CANVAS_POLYGON}`);this.setNextStatement(true);this.setPreviousStatement(true);this._initShape();},/*** Populate the block with inputs mapping to the points*/_initShape () {let inputName;for (let i = 1; i <= this.points; i++) {inputName = `X${i}`;if (!this.getInput(inputName)) {this.appendValueInput(inputName).setCheck('Number').setAlign(Blockly.ALIGN_RIGHT).appendField(`x${i}`);}inputName = `Y${i}`;if (!this.getInput(inputName)) {this.appendValueInput(inputName).setCheck('Number').setAlign(Blockly.ALIGN_RIGHT).appendField(`y${i}`);}}if (!this.getInput('CLOSE')) {this.appendValueInput('CLOSE').setCheck('Boolean').setAlign(Blockly.ALIGN_RIGHT).appendField('close path');}},/*** Check the inputs for the last and before last points and add/delete inputs accordingly*/_updateShape () {let xInput = this.getInput(`X${this.points}`)if (this.getInput('CLOSE')) {this.removeInput('CLOSE');}if (!xInput) {this.appendValueInput(`X${this.points}`).setCheck('Number').setAlign(Blockly.ALIGN_RIGHT).appendField(`x${this.points}`);this.appendValueInput(`Y${this.points}`).setCheck('Number').setAlign(Blockly.ALIGN_RIGHT).appendField(`y${this.points}`);}xInput = this.getInput(`X${this.points}`);let yInput = this.getInput(`Y${this.points}`);if (xInput.connection.targetConnection || yInput.connection.targetConnection) {this.points++;this._updateShape();} else {xInput = this.getInput(`X${this.points - 1}`);yInput = this.getInput(`Y${this.points - 1}`);if (this.points > 1 && !xInput.connection.targetConnection && !yInput.connection.targetConnection) {this.removeInput(`X${this.points}`);this.removeInput(`Y${this.points}`);this.points--;this._updateShape();}}if (!this.getInput('CLOSE')) {this.appendValueInput('CLOSE').setCheck('Boolean').setAlign(Blockly.ALIGN_RIGHT).appendField(Blockly.Msg.BLOCK_CANVAS_CLOSE_PATH);}},mutationToDom (block: Block) {let container = document.createElement('mutation');container.setAttribute('points', this.points);return container;},domToMutation(xmlElement : HTMLElement) {this.points = xmlElement.getAttribute('points');this._initShape();}};return {id,lookup: 'polygon(x1, y1, x2, y2, ...)',doNotRegister: true,colour: COLOUR};},javascript: (part : any) => {return function (block : Block) {let points = [],close = Blockly.JavaScript.valueToCode(block, 'CLOSE', Blockly.JavaScript.ORDER_COMMA) || true;for (let i = 1; i <= (block as any).points; i++) {points.push(Blockly.JavaScript.valueToCode(block, `X${i}`, Blockly.JavaScript.ORDER_COMMA) || 0);points.push(Blockly.JavaScript.valueToCode(block, `Y${i}`, Blockly.JavaScript.ORDER_COMMA) || 0);}return `ctx.polygon(${points.join(', ')}, ${close});`;};}}]
Defined in app/lib/modules/draw/blocks/shapes.ts:10
Const space
space: object [] = [{block: (part : any) => {return {id: 'move_to',lookup: 'moveTo(x, y)',message0: `${part.name}: ${Blockly.Msg.BLOCK_CANVAS_MOVE_TO}`,args0: [{type: "input_value",name: "X",check: 'Number'},{type: "input_value",name: "Y",check: 'Number',align: 'RIGHT'}],inlineInputs: true,previousStatement: null,nextStatement: null,};},javascript: (part : any) => {return function (block: Block) {let x = Blockly.JavaScript.valueToCode(block, 'X', Blockly.JavaScript.ORDER_COMMA) || 'null',y = Blockly.JavaScript.valueToCode(block, 'Y', Blockly.JavaScript.ORDER_COMMA) || 'null';return `ctx.moveTo(${x}, ${y});\n`;};}},{block: (part : any) => {return {id: 'move_to_random',lookup: 'moveToRandom()',message0: `${part.name}: ${Blockly.Msg.BLOCK_CANVAS_MOVE_TO_RANDOM}`,args0: [],inlineInputs: false,previousStatement: null,nextStatement: null,shadow: {}};},javascript: (part : any) => {return function (block: Block) {return `ctx.moveToRandom();\n`;};}},{block: (part : any) => {return {id: 'move',lookup: 'move(x, y)',message0: `${part.name}: ${Blockly.Msg.BLOCK_CANVAS_MOVE_BY}`,args0: [{type: "input_value",name: "X",check: 'Number'},{type: "input_value",name: "Y",check: 'Number',align: 'RIGHT'}],inlineInputs: true,previousStatement: null,nextStatement: null,};},javascript: (part : any) => {return function (block: Block) {let x = Blockly.JavaScript.valueToCode(block, 'X', Blockly.JavaScript.ORDER_COMMA) || 'null',y = Blockly.JavaScript.valueToCode(block, 'Y', Blockly.JavaScript.ORDER_COMMA) || 'null';return `ctx.move(${x}, ${y});\n`;};},}]
Defined in app/lib/modules/draw/blocks/space.ts:8
Const stamp
stamp: object [] = [{block: (part : any) => {return {id: 'stamp',lookup: 'stamp(sticker, size, rotation)',message0: `Draw: ${Blockly.Msg.BLOCK_CANVAS_STAMP}`,args0: [{type: "input_value",name: "STICKER",check: 'Sticker',},{type: "input_value",name: "SIZE",check: 'Number',align: 'RIGHT'},{type: "input_value",name: "ROTATION",check: 'Number',align: 'RIGHT'}],previousStatement: null,nextStatement: null,}},javascript: (part : any) => {return function (block: Block) {const image = Blockly.JavaScript.valueToCode(block, 'STICKER', Blockly.JavaScript.ORDER_NONE) || 'null';const size = Blockly.JavaScript.valueToCode(block, 'SIZE', Blockly.JavaScript.ORDER_NONE) || 'null';const rotation = Blockly.JavaScript.valueToCode(block, 'ROTATION', Blockly.JavaScript.ORDER_NONE) || 'null';return `ctx.stamp(${image}, ${size}, ${rotation});`;}}}]
Defined in app/lib/modules/draw/blocks/stamp.ts:9
Const stop
stop: HTMLTemplateElement = svg`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g><path d="M6 6h12v12H6z"></path></g></svg>`
Defined in app/lib/creator/ui/icons.ts:9
Const templateContent
templateContent: (Anonymous function) = directive((template: HTMLTemplateElement) => (part: Part) => {if (templateMap.get(part) === template) {return;}templateMap.set(part, template)const content = (template.cloneNode(true) as HTMLTemplateElement).content;part.setValue(content);part.commit();})
Defined in app/lib/directives/template-content.ts:9
Const tick
tick: HTMLTemplateElement = svg`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" ><g><path d="M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z"></path></g></svg>`
Defined in app/lib/creator/ui/icons.ts:12
Const trace
trace: log = logDecoratorFactory('TRACE')
Defined in app/lib/decorators.ts:33
Const warning
warning: HTMLTemplateElement = svg`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><g id="warning" transform="translate(5.500000, 0.000000)"><path d="M2.61428571,11.8036364 C3.13404856,11.7673648 3.64329609,11.9649512 4.00753956,12.3442142 C4.37178303,12.7234773 4.55439279,13.2462769 4.50714286,13.7745455 C4.54795493,14.2993508 4.35780279,14.8155155 3.98808005,15.1835326 C3.61835732,15.5515497 3.10723494,15.7334243 2.59285714,15.68 C2.07901925,15.7281865 1.57090708,15.5401176 1.20741569,15.1672029 C0.843924308,14.7942881 0.663068346,14.2755276 0.714285714,13.7527273 C0.6631724,13.2241461 0.846322205,12.699905 1.21380204,12.3229305 C1.58128187,11.9459559 2.09477522,11.7555545 2.61428571,11.8036364 L2.61428571,11.8036364 Z" id="Shape"></path><path d="M1.15,1.26545455 C1.56284514,0.8757266 2.11746672,0.680454566 2.67857143,0.727272727 C3.24476188,0.687824497 3.80142374,0.890811893 4.21428571,1.28727273 C4.51225594,1.62649322 4.65501962,2.07842877 4.60714286,2.53090909 L4.1,8.94545455 C4.09162508,9.32804259 3.92779838,9.68996264 3.64755827,9.94497253 C3.36731816,10.1999824 2.99576214,10.3252442 2.62142857,10.2909091 C2.25332722,10.3192009 1.8902603,10.1902808 1.61926851,9.93505579 C1.34827672,9.67983079 1.19379455,9.32131374 1.19285714,8.94545455 L0.714285714,2.48727273 C0.682262373,2.03544263 0.840718181,1.59110516 1.15,1.26545455 L1.15,1.26545455 Z" id="Shape"></path></g></svg>`
Defined in app/elements/kano-alert/icons.ts:8