IDE integration

Installation

npm install -s @bluepjs/vue3-ide

Ussage

Add IDE module to your Vue app

// main.js
// ...
import bluep from '@bluepjs/vue3-ide'
// ...
createApp(app)
  .use(bluep)
// ...

Your application should manage “communication” with Virtual Machine to get VM possibilities.

const vmInfo = vm.ideData()

Integrate Editor into page:

<BluepJsEditor
  :height="'100%'"
  :types="vmInfo.types"
  :nodes="vmInfo.nodes"
  :modules="vmInfo.modules"
  :actors="vmInfo.actors"
  :libraries="vmInfo.libraries"
  :options="editorOptions"
  @save="onSave"
  @run="onRun"
  @select="onSelect"
/>

Options

Options object used to configure editor icons and starting page, for example:

computed: {
  editorOptions () {
    return {
      icons: { ...iconsObject },
      select: { ...selectObject },
      features: { ...featuresObject },
      dialogs: { ...dialogsObject }
    }
  }
}

Options are:

  • icons - used “i class” style. Without icons some buttons right now are not visible (has no text, will be fixed in future)

  • select - object recieved on @select event to start editor with required element open

Icons

Default icons are preconfigured for font-awesome:

const defaultIcons = {
  enum: 'fas fa-list-ol',
  struct: 'fab fa-delicious',
  function: 'fas fa-scroll',
  class: 'fas fa-file-code',
  library: 'fas fa-book',
  event: 'fas fa-bell',
  chevronRight: 'fas fa-chevron-right',
  chevronDown: 'fas fa-chevron-down',
  view: 'far fa-eye',
  add: 'fas fa-plus',
  remove: 'fas fa-trash',
  edit: 'fas fa-pencil-alt',
  save: 'fas fa-save',
  run: 'fas fa-play',
  close: 'fas fa-times',
  fw: 'fa-fw'
}

Features

Features allows tune IDE

Note

Under development!

Not all features are implemented.

List and structure of features is not stable yet.

Default features are:

const defaultFeatures = {
  save: true,  // save button enabled
  run: true,   // run button enabled
  panels: {    // [not fully implemented]
    librarySelector: true, // library selector panel enabled
    libraryContent: true,  // library content panel enabled
    variablesBar: true,    // variables bar (function options) enabled
    variablePanel: true    // variable panel enabled
  },
  create: {    // [not implemented]
    libraries: false,      // allow clreate libraries
    classes: true,         // allow create classes
    functions: true,       // allow create functions
    events: true,          // allow create events
    structs: true,         // allow create structs
    enums: true,           // allow create enums
    consts: true           // allow create consts [consts are not implemented]
  },
  limit: {     // [not implemented]
    nodes: [],             // allowed nodes regexps
    types: []              // allowed types regexps
  }
}

Dialogs

To overwrite standart browser dialogs set dialogs settings:

const dialogsObject = {
  confirm: async (question) => { return Boolean },
  prompt: async (question) => { return String },
  alert: async (message) => { return }
}

Events

  • save - “SAVE” button clicked. $event is updated library

  • run - “RUN” buttn clicked. $event contains information about library and function codes to run

  • select - fires when some element is selected to edit