[blockly] Add multi-select plugin (#2419)
Signed-off-by: Jimmy Tanagra <jcode@tanagra.id.au>pull/2430/head
parent
d99d3bfc86
commit
50c43afc3b
|
@ -18,6 +18,7 @@
|
|||
"@jsep-plugin/object": "^1.2.1",
|
||||
"@jsep-plugin/regex": "^1.0.3",
|
||||
"@jsep-plugin/template": "^1.0.2",
|
||||
"@mit-app-inventor/blockly-plugin-workspace-multiselect": "^0.1.11",
|
||||
"blockly": "^10.4.2",
|
||||
"cronstrue": "^1.100.0",
|
||||
"crypto-browserify": "^3.12.0",
|
||||
|
@ -2767,6 +2768,20 @@
|
|||
"integrity": "sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/@mit-app-inventor/blockly-plugin-workspace-multiselect": {
|
||||
"version": "0.1.11",
|
||||
"resolved": "https://registry.npmjs.org/@mit-app-inventor/blockly-plugin-workspace-multiselect/-/blockly-plugin-workspace-multiselect-0.1.11.tgz",
|
||||
"integrity": "sha512-SEuyHi43qY7hOfSBzBFzeK8lUWtqnMtfxAe4xSrdelYRSZBoBX6ihFSkexLb8x3OtOubSTfe6cKHOV/0hKiz8A==",
|
||||
"dependencies": {
|
||||
"dragselect": "^2.7.4"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=8.17.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"blockly": "^10.2.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@nicolo-ribaudo/eslint-scope-5-internals": {
|
||||
"version": "5.1.1-v1",
|
||||
"resolved": "https://registry.npmjs.org/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz",
|
||||
|
@ -8437,6 +8452,11 @@
|
|||
"integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/dragselect": {
|
||||
"version": "2.7.4",
|
||||
"resolved": "https://registry.npmjs.org/dragselect/-/dragselect-2.7.4.tgz",
|
||||
"integrity": "sha512-j0qFl4xvsyImlSTn9erDCCT4SSPUMssgKAYuKqhsPr8WPphLghHfjDd4WR2jLjL91fTQQlbbIJ/7T2qwD2hghQ=="
|
||||
},
|
||||
"node_modules/duplexer": {
|
||||
"version": "0.1.2",
|
||||
"resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz",
|
||||
|
@ -24259,6 +24279,14 @@
|
|||
"integrity": "sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==",
|
||||
"dev": true
|
||||
},
|
||||
"@mit-app-inventor/blockly-plugin-workspace-multiselect": {
|
||||
"version": "0.1.11",
|
||||
"resolved": "https://registry.npmjs.org/@mit-app-inventor/blockly-plugin-workspace-multiselect/-/blockly-plugin-workspace-multiselect-0.1.11.tgz",
|
||||
"integrity": "sha512-SEuyHi43qY7hOfSBzBFzeK8lUWtqnMtfxAe4xSrdelYRSZBoBX6ihFSkexLb8x3OtOubSTfe6cKHOV/0hKiz8A==",
|
||||
"requires": {
|
||||
"dragselect": "^2.7.4"
|
||||
}
|
||||
},
|
||||
"@nicolo-ribaudo/eslint-scope-5-internals": {
|
||||
"version": "5.1.1-v1",
|
||||
"resolved": "https://registry.npmjs.org/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz",
|
||||
|
@ -28728,6 +28756,11 @@
|
|||
}
|
||||
}
|
||||
},
|
||||
"dragselect": {
|
||||
"version": "2.7.4",
|
||||
"resolved": "https://registry.npmjs.org/dragselect/-/dragselect-2.7.4.tgz",
|
||||
"integrity": "sha512-j0qFl4xvsyImlSTn9erDCCT4SSPUMssgKAYuKqhsPr8WPphLghHfjDd4WR2jLjL91fTQQlbbIJ/7T2qwD2hghQ=="
|
||||
},
|
||||
"duplexer": {
|
||||
"version": "0.1.2",
|
||||
"resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz",
|
||||
|
|
|
@ -67,6 +67,7 @@
|
|||
"@blockly/shadow-block-converter": "^5.0.0",
|
||||
"@blockly/theme-dark": "^6.0.5",
|
||||
"@blockly/zoom-to-fit": "^5.0.11",
|
||||
"@mit-app-inventor/blockly-plugin-workspace-multiselect": "^0.1.11",
|
||||
"@jsep-plugin/arrow": "^1.0.5",
|
||||
"@jsep-plugin/object": "^1.2.1",
|
||||
"@jsep-plugin/regex": "^1.0.3",
|
||||
|
@ -186,4 +187,4 @@
|
|||
"webpack-stats-plugin": "^1.1.3",
|
||||
"workbox-webpack-plugin": "^7.0.0"
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1091,6 +1091,7 @@ import { javascriptGenerator } from 'blockly/javascript.js'
|
|||
import DarkTheme from '@blockly/theme-dark'
|
||||
import { ZoomToFitControl } from '@blockly/zoom-to-fit'
|
||||
import { shadowBlockConversionChangeListener } from '@blockly/shadow-block-converter'
|
||||
import { Multiselect, MultiselectBlockDragger } from '@mit-app-inventor/blockly-plugin-workspace-multiselect'
|
||||
|
||||
import Vue from 'vue'
|
||||
|
||||
|
@ -1198,8 +1199,11 @@ export default {
|
|||
}, this.isGraalJs)
|
||||
this.addLibraryToToolbox(libraryDefinitions || [])
|
||||
|
||||
this.workspace = Blockly.inject(this.$refs.blocklyEditor, {
|
||||
const options = {
|
||||
toolbox: this.$refs.toolbox,
|
||||
plugins: {
|
||||
'blockDragger': MultiselectBlockDragger
|
||||
},
|
||||
horizontalLayout: !this.$device.desktop,
|
||||
theme: this.$f7.data.themeOptions.dark === 'dark' ? DarkTheme : undefined,
|
||||
zoom: {
|
||||
|
@ -1217,8 +1221,20 @@ export default {
|
|||
},
|
||||
trashcan: false,
|
||||
showLabels: false,
|
||||
|
||||
// Multi-select-options
|
||||
multiselectCopyPaste: {
|
||||
crossTab: true,
|
||||
menu: true
|
||||
},
|
||||
multiselectIcon: {
|
||||
hideIcon: true // hide it because it doesn't work in v0.1.11
|
||||
},
|
||||
multiFieldUpdate: true,
|
||||
|
||||
renderer: this.getCurrentRenderer()
|
||||
})
|
||||
}
|
||||
this.workspace = Blockly.inject(this.$refs.blocklyEditor, options)
|
||||
this.workspace.addChangeListener(shadowBlockConversionChangeListener)
|
||||
const workspaceSearch = new WorkspaceSearch(this.workspace)
|
||||
workspaceSearch.init()
|
||||
|
@ -1229,6 +1245,9 @@ export default {
|
|||
const zoomToFit = new ZoomToFitControl(this.workspace)
|
||||
zoomToFit.init()
|
||||
|
||||
const multiselectPlugin = new Multiselect(this.workspace)
|
||||
multiselectPlugin.init(options)
|
||||
|
||||
this.registerLibraryCallbacks(libraryDefinitions)
|
||||
const xml = Blockly.utils.xml.textToDom(this.blocks)
|
||||
Blockly.Xml.domToWorkspace(xml, this.workspace)
|
||||
|
|
Loading…
Reference in New Issue