mirror of
https://github.com/node-red/node-red.git
synced 2023-10-10 13:36:53 +02:00
Merge pull request #3015 from Steve-Mcl/monaco-beta-bug-fix
Patches for Monaco editor
This commit is contained in:
commit
211ec104c2
@ -2776,7 +2776,6 @@ var buildingEditDialog = false;
|
||||
$("#node-dialog-cancel").trigger("click");
|
||||
$("#node-config-dialog-cancel").trigger("click");
|
||||
});
|
||||
//console.log("packages/node_modules/@node-red/editor-client/src/js/ui/editor.js ? init()") //TODO: Remove
|
||||
RED.editor.codeEditor.init();
|
||||
},
|
||||
edit: showEditDialog,
|
||||
|
@ -25,11 +25,14 @@
|
||||
function .selection.getRange();
|
||||
property .session //the editor object
|
||||
function .session.insert = function(position, text)
|
||||
function .setReadOnly(readOnly)
|
||||
property .renderer = {};
|
||||
function .renderer.updateFull()
|
||||
function setMode(mode, cb)
|
||||
function getRange();
|
||||
function replace(range, text)
|
||||
function selectAll
|
||||
function clearSelection
|
||||
function getSelectedText()
|
||||
function destroy()
|
||||
function resize()
|
||||
@ -120,7 +123,7 @@ RED.editor.codeEditor.monaco = (function() {
|
||||
const def = modulesCache[libPath];
|
||||
if( def ) {
|
||||
if(!preloadOnly) {
|
||||
loadedLibs.JS[libModule] = monaco.languages.typescript.javascriptDefaults.addExtraLib(def, `file://types/${libPackage}/${libModule}/index.d.ts`);
|
||||
loadedLibs.JS[libModule] = monaco.languages.typescript.javascriptDefaults.addExtraLib(def, "file://types/" + libPackage + "/" + libModule + "/index.d.ts");
|
||||
}
|
||||
if(cb) {
|
||||
setTimeout(function() {
|
||||
@ -133,7 +136,7 @@ RED.editor.codeEditor.monaco = (function() {
|
||||
.done(function(data) {
|
||||
modulesCache[libPath] = data;
|
||||
if(!preloadOnly) {
|
||||
loadedLibs.JS[libModule] = monaco.languages.typescript.javascriptDefaults.addExtraLib(data, `file://types/${libPackage}/${libModule}/index.d.ts`);
|
||||
loadedLibs.JS[libModule] = monaco.languages.typescript.javascriptDefaults.addExtraLib(data, "file://types/" + libPackage + "/" + libModule + "/index.d.ts");
|
||||
}
|
||||
if(cb) { cb(null, _module) }
|
||||
})
|
||||
@ -563,7 +566,7 @@ RED.editor.codeEditor.monaco = (function() {
|
||||
createMonacoCompletionItem("node.send", 'node.send(${1:msg});','async send a msg to the next node',range),
|
||||
createMonacoCompletionItem("node.send (multiple)", 'var ${1:msg1} = {payload:${2:1}};\nvar ${3:msg2} = {payload:${4:2}};\nnode.send([[${1:msg1}, ${3:msg2}]]);','send 1 or more messages out of 1 output',range),
|
||||
createMonacoCompletionItem("node.send (multiple outputs)", 'var ${1:msg1} = {payload:${2:1}};\nvar ${3:msg2} = {payload:${4:2}};\nnode.send([${1:msg1}, ${3:msg2}]);','send more than 1 message out of multiple outputs',range),
|
||||
createMonacoCompletionItem("node.status", 'node.status({fill:"${1:red}",shape:"${2:ring}",text:"${3:error}"});','Set the status icon and text underneath the function node',range),
|
||||
createMonacoCompletionItem("node.status", 'node.status({fill:"${1|red,green,yellow,blue,grey|}",shape:"${2|ring,dot|}",text:"${3:message}"});','Set the status icon and text underneath the function node',range),
|
||||
createMonacoCompletionItem("get (node context)", 'context.get("${1:name}");','Get a value from node context',range),
|
||||
createMonacoCompletionItem("set (node context)", 'context.set("${1:name}", ${1:value});','Set a value in node context',range),
|
||||
createMonacoCompletionItem("get (flow context)", 'flow.get("${1:name}");','Get a value from flow context',range),
|
||||
@ -645,6 +648,7 @@ RED.editor.codeEditor.monaco = (function() {
|
||||
strictPropertyInitialization: true,
|
||||
strictFunctionTypes: true,
|
||||
strictBindCallApply: true,
|
||||
useDefineForClassFields: true,//permit class static fields with private name to have initializer
|
||||
moduleResolution: monaco.languages.typescript.ModuleResolutionKind.NodeJs,
|
||||
module: monaco.languages.typescript.ModuleKind.CommonJS,
|
||||
typeRoots: ["types"],
|
||||
@ -666,6 +670,7 @@ RED.editor.codeEditor.monaco = (function() {
|
||||
2307, //Cannot find module 'xxx' or its corresponding type declarations
|
||||
2322, //Type 'unknown' is not assignable to type 'string'
|
||||
2339, //property does not exist on
|
||||
2345, //Argument of type xxx is not assignable to parameter of type 'DateTimeFormatOptions'
|
||||
7043, //i forget what this one is,
|
||||
80001, //Convert to ES6 module
|
||||
80004, //JSDoc types may be moved to TypeScript types.
|
||||
@ -881,7 +886,8 @@ RED.editor.codeEditor.monaco = (function() {
|
||||
if(!extraModuleLibs || extraModuleLibs.length == 0) {
|
||||
loadedLibs.JS[id] = monaco.languages.typescript.javascriptDefaults.addExtraLib(" ", file);
|
||||
} else {
|
||||
var loadList = [...extraModuleLibs];
|
||||
var loadList = [];
|
||||
Array.prototype.push.apply(loadList, extraModuleLibs);//Use this instead of spread operator to prevent IE syntax error
|
||||
var loadExtraModules = {};
|
||||
for (let index = 0; index < extraModuleLibs.length; index++) {
|
||||
const lib = extraModuleLibs[index];
|
||||
@ -990,6 +996,10 @@ RED.editor.codeEditor.monaco = (function() {
|
||||
_executeEdits(this,[op]);
|
||||
}
|
||||
|
||||
ed.setReadOnly = function setReadOnly(readOnly) {
|
||||
ed.updateOptions({ readOnly: readOnly })
|
||||
}
|
||||
|
||||
ed.session.replace = function replace(range, text) {
|
||||
var op = { range: range, text: text, forceMoveMarkers: true };
|
||||
_executeEdits(this,[op]);
|
||||
@ -1006,11 +1016,20 @@ RED.editor.codeEditor.monaco = (function() {
|
||||
}
|
||||
}
|
||||
|
||||
ed.selectAll = function selectAll() {
|
||||
const range = ed.getModel().getFullModelRange();
|
||||
ed.setSelection(range);
|
||||
}
|
||||
|
||||
ed.clearSelection = function clearSelection() {
|
||||
ed.setPosition({column:1,lineNumber:1});
|
||||
}
|
||||
|
||||
ed.getSelectedText = function getSelectedText() {
|
||||
return ed.getModel().getValueInRange(ed.getSelection());
|
||||
}
|
||||
|
||||
ed.insertSnippet = function editer_insertSnippet(s) {
|
||||
ed.insertSnippet = function insertSnippet(s) {
|
||||
//https://github.com/microsoft/monaco-editor/issues/1112#issuecomment-429580604
|
||||
//no great way of triggering snippets!
|
||||
let contribution = ed.getContribution("snippetController2");
|
||||
|
@ -27,7 +27,7 @@ interface NodeStatus {
|
||||
/** The shape property can be: ring or dot */
|
||||
shape?: string,
|
||||
/** The text to display */
|
||||
text?: string
|
||||
text?: string|boolean|number
|
||||
}
|
||||
|
||||
declare class node {
|
||||
@ -35,72 +35,230 @@ declare class node {
|
||||
* Send 1 or more messages asynchronously
|
||||
* @param {object | object[]} msg The msg object
|
||||
* @param {Boolean} [clone=true] Flag to indicate the `msg` should be cloned. Default = `true`
|
||||
* @example Send 1 msg to output 1
|
||||
* ```javascript
|
||||
* node.send({ payload: "a" });
|
||||
* ```
|
||||
* @example Send 2 msg to 2 outputs
|
||||
* ```javascript
|
||||
* node.send([{ payload: "output1" }, { payload: "output2" }]);
|
||||
* ```
|
||||
* @example Send 3 msg to output 1
|
||||
* ```javascript
|
||||
* node.send([[{ payload: 1 }, { payload: 2 }, { payload: 3 }]]);
|
||||
* ```
|
||||
* @see node-red documentation [writing-functions: sending messages asynchronously](https://nodered.org/docs/user-guide/writing-functions#sending-messages-asynchronously)
|
||||
*/
|
||||
static send(msg:object, clone?:Boolean);
|
||||
static send(msg:object|object[], clone?:Boolean): void;
|
||||
/** Inform runtime this instance has completed its operation */
|
||||
static done();
|
||||
/** Send an error to the console and debug side bar. Include `msg` in the 2nd parameter to trigger the catch node. */
|
||||
static error(err:string|Error, msg?:object);
|
||||
/** Log a warn message to the console and debug sidebar */
|
||||
static warn(warning:string|Object);
|
||||
static warn(warning:string|object);
|
||||
/** Log an info message to the console (not sent to sidebar)' */
|
||||
static log(info:string|Object);
|
||||
/** Set the status icon and text underneath the node.
|
||||
static log(info:string|object);
|
||||
/** Sets the status icon and text underneath the node.
|
||||
* @param {NodeStatus} status - The status object `{fill, shape, text}`
|
||||
* @example clear node status
|
||||
* ```javascript
|
||||
* node.status({});
|
||||
* ```
|
||||
* @example set node status to red ring with text
|
||||
* ```javascript
|
||||
* node.status({fill:"red",shape:"ring",text:"error"})
|
||||
* ```
|
||||
* @see node-red documentation [writing-functions: adding-status](https://nodered.org/docs/user-guide/writing-functions#adding-status)
|
||||
*/
|
||||
static status(status:NodeStatus);
|
||||
/** Sets the status text underneath the node.
|
||||
* @param {string} status - The status to display
|
||||
* @see node-red documentation [writing-functions: adding-status](https://nodered.org/docs/user-guide/writing-functions#adding-status)
|
||||
*/
|
||||
static status(status:string|boolean|number);
|
||||
/** the id of this node */
|
||||
public readonly id:string;
|
||||
/** the name of this node */
|
||||
public readonly name:string;
|
||||
/** the number of outputs of this node */
|
||||
public readonly outputCount:Number;
|
||||
public readonly outputCount:number;
|
||||
}
|
||||
declare class context {
|
||||
/** Get a value from context */
|
||||
static get(name:string, store?:string);
|
||||
/** Store a value in context */
|
||||
static set(name:string, value:any, store?:string);
|
||||
/**
|
||||
* Get one or multiple values from context (synchronous).
|
||||
* @param name - Name of context variable
|
||||
*/
|
||||
static get(name: string | string[]);
|
||||
/**
|
||||
* Get one or multiple values from context (asynchronous).
|
||||
* @param name - Name (or array of names) to get from context
|
||||
* @param {function} callback - (optional) Callback function (`(err,value) => {}`)
|
||||
*/
|
||||
static get(name: string | string[], callback: Function);
|
||||
/**
|
||||
* Get one or multiple values from context (synchronous).
|
||||
* @param name - Name (or array of names) to get from context
|
||||
* @param store - Name of context store
|
||||
*/
|
||||
static get(name: string | string[], store: string);
|
||||
/**
|
||||
* Get one or multiple values from context (asynchronous).
|
||||
* @param name - Name (or array of names) to get from context
|
||||
* @param store - Name of context store
|
||||
* @param {function} callback - (optional) Callback function (`(err,value) => {}`)
|
||||
*/
|
||||
static get(name: string | string[], store: string, callback: Function);
|
||||
|
||||
|
||||
/**
|
||||
* Set one or multiple values in context (synchronous).
|
||||
* @param name - Name (or array of names) to set in context
|
||||
* @param value - The value (or array of values) to store in context. If the value(s) are null/undefined, the context item(s) will be removed.
|
||||
*/
|
||||
static set(name: string | string[], value?: any | any[]);
|
||||
/**
|
||||
* Set one or multiple values in context (asynchronous).
|
||||
* @param name - Name (or array of names) to set in context
|
||||
* @param value - The value (or array of values) to store in context. If the value(s) are null/undefined, the context item(s) will be removed.
|
||||
* @param callback - (optional) Callback function (`(err) => {}`)
|
||||
*/
|
||||
static set(name: string | string[], value?: any | any[], callback?: Function);
|
||||
/**
|
||||
* Set one or multiple values in context (synchronous).
|
||||
* @param name - Name (or array of names) to set in context
|
||||
* @param value - The value (or array of values) to store in context. If the value(s) are null/undefined, the context item(s) will be removed.
|
||||
* @param store - (optional) Name of context store
|
||||
*/
|
||||
static set(name: string | string[], value?: any | any[], store?: string);
|
||||
/**
|
||||
* Set one or multiple values in context (asynchronous).
|
||||
* @param name - Name (or array of names) to set in context
|
||||
* @param value - The value (or array of values) to store in context. If the value(s) are null/undefined, the context item(s) will be removed.
|
||||
* @param store - (optional) Name of context store
|
||||
* @param callback - (optional) Callback function (`(err) => {}`)
|
||||
*/
|
||||
static set(name: string | string[], value?: any | any[], store?: string, callback?: Function);
|
||||
|
||||
/** Get an array of the keys in the context store */
|
||||
static keys(store?:string):Array<string> ;
|
||||
static keys(): Array<string>;
|
||||
/** Get an array of the keys in the context store */
|
||||
static keys(store: string): Array<string>;
|
||||
/** Get an array of the keys in the context store */
|
||||
static keys(callback: Function);
|
||||
/** Get an array of the keys in the context store */
|
||||
static keys(store: string, callback: Function);
|
||||
}
|
||||
declare class flow {
|
||||
/** Get a value from flow context */
|
||||
static get(name:string, store?:string);
|
||||
/** Store a value in flow context */
|
||||
static set(name:string, value:any, store?:string);
|
||||
/** Get an array of the keys in the flow context store */
|
||||
static keys(store?:string):Array<string> ;
|
||||
/**
|
||||
* Get one or multiple values from context (synchronous).
|
||||
* @param name - Name of context variable
|
||||
*/
|
||||
static get(name: string | string[]);
|
||||
/**
|
||||
* Get one or multiple values from context (asynchronous).
|
||||
* @param name - Name (or array of names) to get from context
|
||||
* @param {function} callback - (optional) Callback function (`(err,value) => {}`)
|
||||
*/
|
||||
static get(name: string | string[], callback: Function);
|
||||
/**
|
||||
* Get one or multiple values from context (synchronous).
|
||||
* @param name - Name (or array of names) to get from context
|
||||
* @param store - Name of context store
|
||||
*/
|
||||
static get(name: string | string[], store: string);
|
||||
/**
|
||||
* Get one or multiple values from context (asynchronous).
|
||||
* @param name - Name (or array of names) to get from context
|
||||
* @param store - Name of context store
|
||||
* @param {function} callback - (optional) Callback function (`(err,value) => {}`)
|
||||
*/
|
||||
static get(name: string | string[], store: string, callback: Function);
|
||||
|
||||
|
||||
/**
|
||||
* Set one or multiple values in context (synchronous).
|
||||
* @param name - Name (or array of names) to set in context
|
||||
* @param value - The value (or array of values) to store in context. If the value(s) are null/undefined, the context item(s) will be removed.
|
||||
*/
|
||||
static set(name: string | string[], value?: any | any[]);
|
||||
/**
|
||||
* Set one or multiple values in context (asynchronous).
|
||||
* @param name - Name (or array of names) to set in context
|
||||
* @param value - The value (or array of values) to store in context. If the value(s) are null/undefined, the context item(s) will be removed.
|
||||
* @param callback - (optional) Callback function (`(err) => {}`)
|
||||
*/
|
||||
static set(name: string | string[], value?: any | any[], callback?: Function);
|
||||
/**
|
||||
* Set one or multiple values in context (synchronous).
|
||||
* @param name - Name (or array of names) to set in context
|
||||
* @param value - The value (or array of values) to store in context. If the value(s) are null/undefined, the context item(s) will be removed.
|
||||
* @param store - (optional) Name of context store
|
||||
*/
|
||||
static set(name: string | string[], value?: any | any[], store?: string);
|
||||
/**
|
||||
* Set one or multiple values in context (asynchronous).
|
||||
* @param name - Name (or array of names) to set in context
|
||||
* @param value - The value (or array of values) to store in context. If the value(s) are null/undefined, the context item(s) will be removed.
|
||||
* @param store - (optional) Name of context store
|
||||
* @param callback - (optional) Callback function (`(err) => {}`)
|
||||
*/
|
||||
static set(name: string | string[], value?: any | any[], store?: string, callback?: Function);
|
||||
|
||||
/** Get an array of the keys in the context store */
|
||||
static keys(): Array<string>;
|
||||
/** Get an array of the keys in the context store */
|
||||
static keys(store: string): Array<string>;
|
||||
/** Get an array of the keys in the context store */
|
||||
static keys(callback: Function);
|
||||
/** Get an array of the keys in the context store */
|
||||
static keys(store: string, callback: Function);
|
||||
}
|
||||
|
||||
// @ts-ignore
|
||||
declare class global {
|
||||
/** Get a value from global context */
|
||||
static get(name:string, store?:string);
|
||||
/** Store a value in global context */
|
||||
static set(name:string, value:any, store?:string);
|
||||
/** Get an array of the keys in the global context store */
|
||||
static keys(store?:string):Array<string> ;
|
||||
/**
|
||||
* Get one or multiple values from context (synchronous).
|
||||
* @param name - Name of context variable
|
||||
*/
|
||||
static get(name: string | string[]);
|
||||
/**
|
||||
* Get one or multiple values from context (asynchronous).
|
||||
* @param name - Name (or array of names) to get from context
|
||||
* @param {function} callback - (optional) Callback function (`(err,value) => {}`)
|
||||
*/
|
||||
static get(name: string | string[], callback: Function);
|
||||
/**
|
||||
* Get one or multiple values from context (synchronous).
|
||||
* @param name - Name (or array of names) to get from context
|
||||
* @param store - Name of context store
|
||||
*/
|
||||
static get(name: string | string[], store: string);
|
||||
/**
|
||||
* Get one or multiple values from context (asynchronous).
|
||||
* @param name - Name (or array of names) to get from context
|
||||
* @param store - Name of context store
|
||||
* @param {function} callback - (optional) Callback function (`(err,value) => {}`)
|
||||
*/
|
||||
static get(name: string | string[], store: string, callback: Function);
|
||||
|
||||
|
||||
/**
|
||||
* Set one or multiple values in context (synchronous).
|
||||
* @param name - Name (or array of names) to set in context
|
||||
* @param value - The value (or array of values) to store in context. If the value(s) are null/undefined, the context item(s) will be removed.
|
||||
*/
|
||||
static set(name: string | string[], value?: any | any[]);
|
||||
/**
|
||||
* Set one or multiple values in context (asynchronous).
|
||||
* @param name - Name (or array of names) to set in context
|
||||
* @param value - The value (or array of values) to store in context. If the value(s) are null/undefined, the context item(s) will be removed.
|
||||
* @param callback - (optional) Callback function (`(err) => {}`)
|
||||
*/
|
||||
static set(name: string | string[], value?: any | any[], callback?: Function);
|
||||
/**
|
||||
* Set one or multiple values in context (synchronous).
|
||||
* @param name - Name (or array of names) to set in context
|
||||
* @param value - The value (or array of values) to store in context. If the value(s) are null/undefined, the context item(s) will be removed.
|
||||
* @param store - (optional) Name of context store
|
||||
*/
|
||||
static set(name: string | string[], value?: any | any[], store?: string);
|
||||
/**
|
||||
* Set one or multiple values in context (asynchronous).
|
||||
* @param name - Name (or array of names) to set in context
|
||||
* @param value - The value (or array of values) to store in context. If the value(s) are null/undefined, the context item(s) will be removed.
|
||||
* @param store - (optional) Name of context store
|
||||
* @param callback - (optional) Callback function (`(err) => {}`)
|
||||
*/
|
||||
static set(name: string | string[], value?: any | any[], store?: string, callback?: Function);
|
||||
|
||||
/** Get an array of the keys in the context store */
|
||||
static keys(): Array<string>;
|
||||
/** Get an array of the keys in the context store */
|
||||
static keys(store: string): Array<string>;
|
||||
/** Get an array of the keys in the context store */
|
||||
static keys(callback: Function);
|
||||
/** Get an array of the keys in the context store */
|
||||
static keys(store: string, callback: Function);
|
||||
}
|
||||
declare class env {
|
||||
/** Get an environment variable value */
|
||||
|
Loading…
Reference in New Issue
Block a user