You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
venv/PyCharm 2025.2.1.1/plugins/javascript-debugger/webConsole/interop.js

61 lines
1.5 KiB

"use strict"
const PRINTABLE_TYPES = {
TEXT: "text",
TREE: "tree",
TREE_LINK: "tree-link",
MESSAGE_LINK: "message-link",
MESSAGE_TREE_NODE: "message-tree-node"
}
class Printable {
constructor() {
/** @member {number} */
this.id = undefined;
/** @member {PRINTABLE_TYPES} */
this.type = undefined;
/** @member {string[]} */
this.text = undefined;
/** @member {string[]} */
this.styleClasses = undefined;
/** @member {boolean} */
this.deferred = undefined;
/** @member {number} */
this.deferredID = undefined;
/** @member {string} */
this.iconURL = undefined;
}
}
var callbackMap = new Map();
var callbackCounter = 0;
function callJVM(funcName, args, callback, preserveCallback) {
if (callback != null) {
callbackMap.set(callbackCounter, {preserve: preserveCallback, callback: callback});
var callbackId = callbackCounter;
args.push(callbackCounter);
callbackCounter = (callbackCounter + 1) % 10000;
}
window.JSBridge[funcName](...args);
return callbackId;
}
window.callback = function (callbackId, args) {
let entry = callbackMap.get(callbackId);
entry.callback(args);
if (!entry.preserve) {
callbackMap.delete(callbackId);
}
}
//fixme: long running task freezes browser
window.processRequests = function(batch) {
let receiver = WebConsole.instance();
for (let request of batch) {
let method = request.first;
let args = request.second;
receiver[method](...args);
}
}