@deephaven/console 0.15.5 → 0.15.6-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/Console.d.ts CHANGED
@@ -76,7 +76,7 @@ export declare class Console extends PureComponent<ConsoleProps, ConsoleState> {
76
76
  /**
77
77
  * Check if the provided log level is output level
78
78
  * @param logLevel The LogLevel being checked
79
- * @return true if the log level should be output to the console
79
+ * @returns true if the log level should be output to the console
80
80
  */
81
81
  static isOutputLevel(logLevel: string): boolean;
82
82
  constructor(props: ConsoleProps);
package/dist/Console.js CHANGED
@@ -42,7 +42,7 @@ export class Console extends PureComponent {
42
42
  /**
43
43
  * Check if the provided log level is output level
44
44
  * @param logLevel The LogLevel being checked
45
- * @return true if the log level should be output to the console
45
+ * @returns true if the log level should be output to the console
46
46
  */
47
47
 
48
48
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/Console.tsx"],"names":["React","PureComponent","ContextActions","vsCheck","classNames","memoize","throttle","dh","Log","assertNotNull","Pending","PromiseUtils","ConsoleHistory","SHORTCUTS","LogLevel","ConsoleInput","CsvOverlay","CsvInputBar","ConsoleStatusBar","log","module","DEFAULT_SETTINGS","isAutoLaunchPanelsEnabled","isPrintStdOutEnabled","isClosePanelsOnDisconnectEnabled","Console","isErrorLevel","logLevel","STDERR","ERROR","FATAL","isOutputLevel","STDOUT","constructor","props","scrollConsoleHistoryToBottom","setState","state","debug2","queuedLogMessages","length","consoleHistory","concat","LOG_THROTTLE","objectMap","values","actions","action","handleClearShortcut","shortcut","CONSOLE","CLEAR","handleFocusHistory","FOCUS_HISTORY","handleCommandResult","bind","handleCommandStarted","handleCommandSubmit","handleLogMessage","handleOverflowActions","handleScrollPaneScroll","handleToggleAutoLaunchPanels","handleToggleClosePanelsOnDisconnect","handleTogglePrintStdout","handleUploadCsv","handleHideCsv","handleCsvFileCanceled","handleCsvFileOpened","handleCsvPaste","handleDragEnter","handleDragLeave","handleClearDragError","handleOpenCsvTable","handleCsvUpdate","handleCsvError","handleCsvInProgress","consolePane","createRef","consoleInput","consoleHistoryScrollPane","pending","settings","consoleHeight","isScrollDecorationShown","objectHistoryMap","Map","showCsvOverlay","csvFile","csvPaste","dragError","csvUploadInProgress","componentDidMount","initConsoleLogging","session","addEventListener","IdeSession","EVENT_COMMANDSTARTED","updateDimensions","componentDidUpdate","prevProps","prevState","sendSettingsChange","updateObjectMap","componentWillUnmount","removeEventListener","cancel","processLogMessageQueue","deinitConsoleLogging","cancelListener","onLogMessage","undefined","event","preventDefault","stopPropagation","current","clear","code","result","detail","wrappedResult","add","historyItem","command","disabledObjects","startTime","Date","now","cancelResult","commandHistoryStorage","language","scope","workspaceItemPromise","addItem","toJSON","catch","err","debug","then","resolved","error","handleCommandError","historyItemParam","updateHistory","updateKnownObjects","updateWorkspaceHistoryItem","closeRemovedItems","changes","openUpdatedItems","isCanceled","history","index","lastIndexOf","endTime","focusCommandHistory","message","queueLogMessage","push","openObject","created","updated","forEach","object","removed","closeObject","itemIndex","disableOldObject","isRemoved","title","oldIndex","get","set","delete","promise","workspaceItem","updatedItem","data","updateItem","warn","force","pane","scrollTop","scrollHeight","offsetHeight","window","requestAnimationFrame","scrollPane","clientHeight","file","value","e","dataTransfer","items","kind","MULTIPLE_FILE_ERROR","item","isValidDropItem","FILE_TYPE_ERROR","currentTarget","Element","relatedTarget","contains","name","type","VariableType","TABLE","isExistingObject","has","addConsoleHistoryMessage","group","groups","high","icon","order","clearConsoleHistory","runCode","keys","map","addCommand","focus","execute","setConsoleText","checkIfChanged","Object","hasChanges","i","key","setting","prevSetting","onSettingsChange","render","historyChildren","statusBarChildren","timeZone","disabled","unzip","consoleMenuObjects","getObjects","inputMaxHeight","Math","round","contextActions","getContextActions","handleDragOver","INPUT_CLASS_NAME"],"mappings":";;;;;;AAAA;AACA;AACA;AACA,OAAOA,KAAP,IAEEC,aAFF,QAMO,OANP;AAOA,SAASC,cAAT,QAA+C,uBAA/C;AACA,SAASC,OAAT,QAAwB,kBAAxB;AACA,OAAOC,UAAP,MAAuB,YAAvB;AACA,OAAOC,OAAP,MAAoB,aAApB;AACA,OAAOC,QAAP,MAAqB,iBAArB;AAEA,OAAOC,EAAP,MAKO,uBALP;AAMA,OAAOC,GAAP,MAAgB,gBAAhB;AACA,SAASC,aAAT,EAAwBC,OAAxB,EAAiCC,YAAjC,QAAqD,kBAArD;OACOC,c;OAEAC,S;OACAC,Q;OACAC,Y;OACAC,U;OACAC,W;;OAEAC,gB;AAMP,IAAMC,GAAG,GAAGX,GAAG,CAACY,MAAJ,CAAW,SAAX,CAAZ;AAQA,IAAMC,gBAA0B,GAAG;AACjCC,EAAAA,yBAAyB,EAAE,IADM;AAEjCC,EAAAA,oBAAoB,EAAE,IAFW;AAGjCC,EAAAA,gCAAgC,EAAE;AAHD,CAAnC;AA2DA,OAAO,MAAMC,OAAN,SAAsBxB,aAAtB,CAAgE;AAgBrE;AACF;AACA;AACA;AACA;AACqB,SAAZyB,YAAY,CACjBC,QADiB,EAER;AACT,WACEA,QAAQ,KAAKb,QAAQ,CAACc,MAAtB,IACAD,QAAQ,KAAKb,QAAQ,CAACe,KADtB,IAEAF,QAAQ,KAAKb,QAAQ,CAACgB,KAHxB;AAKD;AAED;AACF;AACA;AACA;AACA;;;AACsB,SAAbC,aAAa,CAACJ,QAAD,EAA4B;AAC9C;AACA;AACA,WAAOA,QAAQ,KAAKb,QAAQ,CAACkB,MAAtB,IAAgCP,OAAO,CAACC,YAAR,CAAqBC,QAArB,CAAvC;AACD;;AAEDM,EAAAA,WAAW,CAACC,KAAD,EAAsB;AAC/B,UAAMA,KAAN;;AAD+B;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA,oDAiRR5B,QAAQ,CAAC,MAAM;AACtC,WAAK6B,4BAAL;AAEA,WAAKC,QAAL,CAAcC,KAAK,IAAI;AACrBlB,QAAAA,GAAG,CAACmB,MAAJ,CACE,wBADF,EAEE,KAAKC,iBAAL,CAAuBC,MAFzB,EAGE,QAHF;AAMA,YAAI;AAAEC,UAAAA;AAAF,YAAqBJ,KAAzB;AACAI,QAAAA,cAAc,GAAGA,cAAc,CAACC,MAAf,CAAsB,KAAKH,iBAA3B,CAAjB;AACA,aAAKA,iBAAL,GAAyB,EAAzB;AAEA,eAAO;AAAEE,UAAAA;AAAF,SAAP;AACD,OAZD;AAaD,KAhBgC,EAgB9BhB,OAAO,CAACkB,YAhBsB,CAjRA;;AAAA,wCAqrBpBtC,OAAO,CAACuC,SAAS,IAAI,CAAC,GAAGA,SAAS,CAACC,MAAV,EAAJ,CAAd,CArrBa;;AAAA,+CAurBbxC,OAAO,CAACyC,OAAO,IAAI,CACrC,GAAGA,OADkC,EAErC;AACEC,MAAAA,MAAM,EAAE,KAAKC,mBADf;AAEEC,MAAAA,QAAQ,EAAEpC,SAAS,CAACqC,OAAV,CAAkBC;AAF9B,KAFqC,EAMrC;AACEJ,MAAAA,MAAM,EAAE,KAAKK,kBADf;AAEEH,MAAAA,QAAQ,EAAEpC,SAAS,CAACqC,OAAV,CAAkBG;AAF9B,KANqC,CAAZ,CAvrBM;;AAG/B,SAAKC,mBAAL,GAA2B,KAAKA,mBAAL,CAAyBC,IAAzB,CAA8B,IAA9B,CAA3B;AACA,SAAKC,oBAAL,GAA4B,KAAKA,oBAAL,CAA0BD,IAA1B,CAA+B,IAA/B,CAA5B;AACA,SAAKE,mBAAL,GAA2B,KAAKA,mBAAL,CAAyBF,IAAzB,CAA8B,IAA9B,CAA3B;AACA,SAAKP,mBAAL,GAA2B,KAAKA,mBAAL,CAAyBO,IAAzB,CAA8B,IAA9B,CAA3B;AACA,SAAKH,kBAAL,GAA0B,KAAKA,kBAAL,CAAwBG,IAAxB,CAA6B,IAA7B,CAA1B;AACA,SAAKG,gBAAL,GAAwB,KAAKA,gBAAL,CAAsBH,IAAtB,CAA2B,IAA3B,CAAxB;AACA,SAAKI,qBAAL,GAA6B,KAAKA,qBAAL,CAA2BJ,IAA3B,CAAgC,IAAhC,CAA7B;AACA,SAAKK,sBAAL,GAA8B,KAAKA,sBAAL,CAA4BL,IAA5B,CAAiC,IAAjC,CAA9B;AACA,SAAKM,4BAAL,GAAoC,KAAKA,4BAAL,CAAkCN,IAAlC,CAClC,IADkC,CAApC;AAGA,SAAKO,mCAAL,GAA2C,KAAKA,mCAAL,CAAyCP,IAAzC,CACzC,IADyC,CAA3C;AAGA,SAAKQ,uBAAL,GAA+B,KAAKA,uBAAL,CAA6BR,IAA7B,CAAkC,IAAlC,CAA/B;AACA,SAAKS,eAAL,GAAuB,KAAKA,eAAL,CAAqBT,IAArB,CAA0B,IAA1B,CAAvB;AACA,SAAKU,aAAL,GAAqB,KAAKA,aAAL,CAAmBV,IAAnB,CAAwB,IAAxB,CAArB;AACA,SAAKW,qBAAL,GAA6B,KAAKA,qBAAL,CAA2BX,IAA3B,CAAgC,IAAhC,CAA7B;AACA,SAAKY,mBAAL,GAA2B,KAAKA,mBAAL,CAAyBZ,IAAzB,CAA8B,IAA9B,CAA3B;AACA,SAAKa,cAAL,GAAsB,KAAKA,cAAL,CAAoBb,IAApB,CAAyB,IAAzB,CAAtB;AACA,SAAKc,eAAL,GAAuB,KAAKA,eAAL,CAAqBd,IAArB,CAA0B,IAA1B,CAAvB;AACA,SAAKe,eAAL,GAAuB,KAAKA,eAAL,CAAqBf,IAArB,CAA0B,IAA1B,CAAvB;AACA,SAAKgB,oBAAL,GAA4B,KAAKA,oBAAL,CAA0BhB,IAA1B,CAA+B,IAA/B,CAA5B;AACA,SAAKiB,kBAAL,GAA0B,KAAKA,kBAAL,CAAwBjB,IAAxB,CAA6B,IAA7B,CAA1B;AACA,SAAKkB,eAAL,GAAuB,KAAKA,eAAL,CAAqBlB,IAArB,CAA0B,IAA1B,CAAvB;AACA,SAAKmB,cAAL,GAAsB,KAAKA,cAAL,CAAoBnB,IAApB,CAAyB,IAAzB,CAAtB;AACA,SAAKoB,mBAAL,GAA2B,KAAKA,mBAAL,CAAyBpB,IAAzB,CAA8B,IAA9B,CAA3B;AAEA,SAAKqB,WAAL,gBAAmB5E,KAAK,CAAC6E,SAAN,EAAnB;AACA,SAAKC,YAAL,gBAAoB9E,KAAK,CAAC6E,SAAN,EAApB;AACA,SAAKE,wBAAL,gBAAgC/E,KAAK,CAAC6E,SAAN,EAAhC;AACA,SAAKG,OAAL,GAAe,IAAItE,OAAJ,EAAf;AACA,SAAK6B,iBAAL,GAAyB,EAAzB;AAEA,QAAM;AAAEK,MAAAA,SAAS,EAATA,UAAF;AAAaqC,MAAAA;AAAb,QAA0B,KAAK/C,KAArC;AAEA,SAAKG,KAAL;AACE;AACAI,MAAAA,cAAc,EAAE,EAFlB;AAIE;AACAyC,MAAAA,aAAa,EAAE,CALjB;AAOEC,MAAAA,uBAAuB,EAAE,KAP3B;AASE;AACAC,MAAAA,gBAAgB,EAAE,IAAIC,GAAJ,EAVpB;AAYE;AACAzC,MAAAA,SAAS,EAAE,IAAIyC,GAAJ,CAAQzC,UAAR,CAbb;AAeE0C,MAAAA,cAAc,EAAE,KAflB;AAgBEC,MAAAA,OAAO,EAAE,IAhBX;AAiBEC,MAAAA,QAAQ,EAAE,IAjBZ;AAkBEC,MAAAA,SAAS,EAAE,IAlBb;AAmBEC,MAAAA,mBAAmB,EAAE;AAnBvB,OAqBKrE,gBArBL,GAsBK4D,QAtBL;AAwBD;;AAEDU,EAAAA,iBAAiB,GAAS;AACxB,SAAKC,kBAAL;AAEA,QAAM;AAAEC,MAAAA;AAAF,QAAc,KAAK3D,KAAzB;AACA2D,IAAAA,OAAO,CAACC,gBAAR,CACEvF,EAAE,CAACwF,UAAH,CAAcC,oBADhB,EAEE,KAAKxC,oBAFP;AAKA,SAAKyC,gBAAL;AACD;;AAEDC,EAAAA,kBAAkB,CAACC,SAAD,EAA0BC,SAA1B,EAAyD;AACzE,QAAM;AAAElE,MAAAA,KAAF;AAASG,MAAAA;AAAT,QAAmB,IAAzB;AACA,SAAKgE,kBAAL,CAAwBD,SAAxB,EAAmC/D,KAAnC;;AAEA,QAAIH,KAAK,CAACU,SAAN,KAAoBuD,SAAS,CAACvD,SAAlC,EAA6C;AAC3C,WAAK0D,eAAL;AACD;AACF;;AAEDC,EAAAA,oBAAoB,GAAS;AAC3B,QAAM;AAAEV,MAAAA;AAAF,QAAc,KAAK3D,KAAzB;AAEA2D,IAAAA,OAAO,CAACW,mBAAR,CACEjG,EAAE,CAACwF,UAAH,CAAcC,oBADhB,EAEE,KAAKxC,oBAFP;AAKA,SAAKwB,OAAL,CAAayB,MAAb;AACA,SAAKC,sBAAL,CAA4BD,MAA5B;AAEA,SAAKE,oBAAL;AACD;;AAcDf,EAAAA,kBAAkB,GAAS;AACzB,QAAM;AAAEC,MAAAA;AAAF,QAAc,KAAK3D,KAAzB;AACA,SAAK0E,cAAL,GAAsBf,OAAO,CAACgB,YAAR,CAAqB,KAAKnD,gBAA1B,CAAtB;AACD;;AAEDiD,EAAAA,oBAAoB,GAAS;AAC3B,QAAI,KAAKC,cAAL,IAAuB,IAA3B,EAAiC;AAC/B,WAAKA,cAAL;AACA,WAAKA,cAAL,GAAsBE,SAAtB;AACD;AACF;;AAED9D,EAAAA,mBAAmB,CAAC+D,KAAD,EAA2B;AAAA;;AAC5CA,IAAAA,KAAK,CAACC,cAAN;AACAD,IAAAA,KAAK,CAACE,eAAN;AAEA,kCAAKnC,YAAL,CAAkBoC,OAAlB,gFAA2BC,KAA3B;AACD;;AAED3D,EAAAA,oBAAoB,CAACuD,KAAD,EAA2B;AAC7C,QAAM;AAAEK,MAAAA,IAAF;AAAQC,MAAAA;AAAR,QAAmBN,KAAK,CAACO,MAA/B;AACA,QAAMC,aAAa,GAAG,KAAKvC,OAAL,CAAawC,GAAb,CAAiBH,MAAjB,CAAtB;AACA,QAAMI,WAAW,GAAG;AAClBC,MAAAA,OAAO,EAAEN,IADS;AAElBO,MAAAA,eAAe,EAAE,EAFC;AAGlBC,MAAAA,SAAS,EAAEC,IAAI,CAACC,GAAL,EAHO;AAIlBC,MAAAA,YAAY,EAAE,MAAM;AAClBV,QAAAA,MAAM,CAACZ,MAAP;AACD,OANiB;AAOlBc,MAAAA;AAPkB,KAApB;AAUA,QAAM;AAAES,MAAAA,qBAAF;AAAyBC,MAAAA,QAAzB;AAAmCC,MAAAA;AAAnC,QAA6C,KAAKhG,KAAxD;AACA,QAAMiG,oBAAoB,GAAGH,qBAAqB,CAACI,OAAtB,CAC3BH,QAD2B,EAE3BC,KAF2B,EAG3Bd,IAH2B,EAI3B;AACEM,MAAAA,OAAO,EAAEN,IADX;AAEEQ,MAAAA,SAAS,EAAE,IAAIC,IAAJ,GAAWQ,MAAX;AAFb,KAJ2B,CAA7B;AASAF,IAAAA,oBAAoB,CAACG,KAArB,CAA2BC,GAAG,IAAI;AAChCpH,MAAAA,GAAG,CAACqH,KAAJ,CAAU,6BAAV,EAAyCD,GAAzC;AACD,KAFD;AAIA,SAAKnG,QAAL,CACEC,KAAK,KAAK;AACRI,MAAAA,cAAc,EAAEJ,KAAK,CAACI,cAAN,CAAqBC,MAArB,CAA4B+E,WAA5B;AADR,KAAL,CADP,EAIE,MAAM;AACJ,WAAKtF,4BAAL,CAAkC,IAAlC;AACD,KANH;AASAoF,IAAAA,aAAa,CACVkB,IADH,CACQC,QAAQ,IAAI;AAChB,WAAKpF,mBAAL,CAAyBoF,QAAzB,EAAmCjB,WAAnC,EAAgDU,oBAAhD;AACD,KAHH,EAIGG,KAJH,CAISK,KAAK,IAAI;AACd,WAAKC,kBAAL,CAAwBD,KAAxB,EAA+BlB,WAA/B,EAA4CU,oBAA5C;AACD,KANH;AAOD;;AAED7E,EAAAA,mBAAmB,CACjB+D,MADiB,EAQjBwB,gBARiB,EASjBV,oBATiB,EAUX;AACN,QAAMV,WAAW,GAAGoB,gBAApB;AACApB,IAAAA,WAAW,CAACF,aAAZ,GAA4BT,SAA5B;AACAW,IAAAA,WAAW,CAACM,YAAZ,GAA2BjB,SAA3B;;AAEA,QAAI,CAACO,MAAL,EAAa;AACX;AACD;;AAEDI,IAAAA,WAAW,CAACJ,MAAZ,GAAqBA,MAArB;AAEA,SAAKyB,aAAL,CAAmBzB,MAAnB,EAA2BI,WAA3B;AACA,SAAKsB,kBAAL,CAAwBtB,WAAxB;AACA,SAAKuB,0BAAL,CACE;AAAEL,MAAAA,KAAK,EAAEtB,MAAM,CAACsB;AAAhB,KADF,EAEER,oBAFF;AAKA,SAAKc,iBAAL,CAAuB5B,MAAM,CAAC6B,OAA9B;AACA,SAAKC,gBAAL,CAAsB9B,MAAM,CAAC6B,OAA7B;AACD;;AAEDN,EAAAA,kBAAkB,CAChBD,KADgB,EAEhBE,gBAFgB,EAGhBV,oBAHgB,EAIV;AACN,QAAMV,WAAW,GAAGoB,gBAApB;AACApB,IAAAA,WAAW,CAACF,aAAZ,GAA4BT,SAA5B;AACAW,IAAAA,WAAW,CAACM,YAAZ,GAA2BjB,SAA3B;;AAEA,QAAInG,YAAY,CAACyI,UAAb,CAAwBT,KAAxB,CAAJ,EAAoC;AAClCxH,MAAAA,GAAG,CAACqH,KAAJ,CAAU,yDAAV;AACA;AACD;;AAED,SAAKQ,0BAAL,CACE;AAAEL,MAAAA,KAAK,YAAKA,KAAL;AAAP,KADF,EAEER,oBAFF;AAKA,SAAK/F,QAAL,CAAcC,KAAK,IAAI;AACrB,UAAMgH,OAAO,GAAGhH,KAAK,CAACI,cAAN,CAAqBC,MAArB,EAAhB;AACA,UAAM4G,KAAK,GAAGD,OAAO,CAACE,WAAR,CAAoB9B,WAApB,CAAd;AACAA,MAAAA,WAAW,CAAC+B,OAAZ,GAAsB3B,IAAI,CAACC,GAAL,EAAtB;AACAL,MAAAA,WAAW,CAACJ,MAAZ,GAAqB;AAAEsB,QAAAA;AAAF,OAArB;AACAU,MAAAA,OAAO,CAACC,KAAD,CAAP,qBAAsB7B,WAAtB;AACA,aAAO;AACLhF,QAAAA,cAAc,EAAE4G;AADX,OAAP;AAGD,KATD;AAUD;;AAEDjG,EAAAA,kBAAkB,CAAC2D,KAAD,EAA2B;AAC3CA,IAAAA,KAAK,CAACC,cAAN;AACAD,IAAAA,KAAK,CAACE,eAAN;AAEA,QAAM;AAAEwC,MAAAA;AAAF,QAA0B,KAAKvH,KAArC;AACAuH,IAAAA,mBAAmB;AACpB;;AAED/F,EAAAA,gBAAgB,CAACgG,OAAD,EAAyB;AACvC,QAAM;AAAEnI,MAAAA;AAAF,QAA2B,KAAKc,KAAtC;;AACA,QAAI,CAACd,oBAAL,EAA2B;AACzB;AACD;;AAED,QAAIE,OAAO,CAACM,aAAR,CAAsB2H,OAAO,CAAC/H,QAA9B,CAAJ,EAA6C;AAC3C,WAAKgI,eAAL,CAAqBD,OAAO,CAACA,OAA7B,EAAsCA,OAAO,CAAC/H,QAA9C;AACD;AACF;;AAEDgI,EAAAA,eAAe,CAACD,OAAD,EAAkB/H,QAAlB,EAA0C;AACvD,QAAM0F,MAA8B,GAAG,EAAvC;;AACA,QAAI5F,OAAO,CAACC,YAAR,CAAqBC,QAArB,CAAJ,EAAoC;AAClC0F,MAAAA,MAAM,CAACsB,KAAP,GAAee,OAAf;AACD,KAFD,MAEO;AACLrC,MAAAA,MAAM,CAACqC,OAAP,GAAiBA,OAAjB;AACD;;AAED,QAAMjC,WAAW,GAAG;AAAEC,MAAAA,OAAO,EAAEZ,SAAX;AAAsBO,MAAAA;AAAtB,KAApB;AAEA,SAAK9E,iBAAL,CAAuBqH,IAAvB,CAA4BnC,WAA5B;AAEA,SAAKf,sBAAL;AACD;;AAoBDyC,EAAAA,gBAAgB,CAACD,OAAD,EAAiC;AAC/C,QAAM;AAAE5H,MAAAA;AAAF,QAAgC,KAAKe,KAA3C;;AACA,QAAI,CAAC6G,OAAD,IAAY,CAAC5H,yBAAjB,EAA4C;AAC1C;AACD;;AAED,QAAM;AAAEuI,MAAAA;AAAF,QAAiB,KAAK3H,KAA5B;AACA,KAAC,GAAGgH,OAAO,CAACY,OAAZ,EAAqB,GAAGZ,OAAO,CAACa,OAAhC,EAAyCC,OAAzC,CAAiDC,MAAM,IACrDJ,UAAU,CAACI,MAAD,CADZ;AAGD;;AAEDhB,EAAAA,iBAAiB,CAACC,OAAD,EAAiC;AAChD,QAAI,CAACA,OAAD,IAAY,CAACA,OAAO,CAACgB,OAArB,IAAgChB,OAAO,CAACgB,OAAR,CAAgB1H,MAAhB,KAA2B,CAA/D,EAAkE;AAChE;AACD;;AAED,QAAM;AAAE2H,MAAAA;AAAF,QAAkB,KAAKjI,KAA7B;AACA,QAAM;AAAEgI,MAAAA;AAAF,QAAchB,OAApB;AACAgB,IAAAA,OAAO,CAACF,OAAR,CAAgBC,MAAM,IAAIE,WAAW,CAACF,MAAD,CAArC;AACD;;AAEDnB,EAAAA,aAAa,CACXzB,MADW,EAEXwB,gBAFW,EAGL;AACN,QAAMpB,WAAW,GAAGoB,gBAApB;;AACA,QAAI,CAACxB,MAAD,IAAW,CAACA,MAAM,CAAC6B,OAAnB,IAA8B,CAACzB,WAAnC,EAAgD;AAC9C;AACD;;AAEDA,IAAAA,WAAW,CAAC+B,OAAZ,GAAsB3B,IAAI,CAACC,GAAL,EAAtB;AAEA,SAAK3F,4BAAL,GARM,CAUN;;AACA,SAAKC,QAAL,CAAcC,KAAK,IAAI;AACrB,UAAMI,cAAc,GAAGJ,KAAK,CAACI,cAAN,CAAqBC,MAArB,EAAvB;AACA,aAAO;AAAED,QAAAA;AAAF,OAAP;AACD,KAHD;AAID;;AAEDsG,EAAAA,kBAAkB,CAACtB,WAAD,EAA8C;AAC9D,QAAIyB,OAAJ;;AACA,QAAIzB,WAAW,CAACJ,MAAhB,EAAwB;AACtB6B,MAAAA,OAAO,GAAGzB,WAAW,CAACJ,MAAZ,CAAmB6B,OAA7B;AACD;;AACD,QACE,CAACA,OAAD,IACC,CAAC,CAACA,OAAO,CAACY,OAAT,IAAoBZ,OAAO,CAACY,OAAR,CAAgBtH,MAAhB,KAA2B,CAAhD,MACE,CAAC0G,OAAO,CAACa,OAAT,IAAoBb,OAAO,CAACa,OAAR,CAAgBvH,MAAhB,KAA2B,CADjD,MAEE,CAAC0G,OAAO,CAACgB,OAAT,IAAoBhB,OAAO,CAACgB,OAAR,CAAgB1H,MAAhB,KAA2B,CAFjD,CAFH,EAKE;AACArB,MAAAA,GAAG,CAACmB,MAAJ,CAAW,+BAAX;AACA;AACD;;AAED,SAAKF,QAAL,CAAcC,KAAK,IAAI;AAAA;;AACrB,UAAMgH,OAAO,GAAGhH,KAAK,CAACI,cAAN,CAAqBC,MAArB,EAAhB;AACA,UAAM0H,SAAS,GAAGf,OAAO,CAACE,WAAR,CAAoB9B,WAApB,CAAlB;;AACA,UAAI2C,SAAS,GAAG,CAAhB,EAAmB;AACjBjJ,QAAAA,GAAG,CAACwH,KAAJ;AACA,eAAO,IAAP;AACD;;AAED,UAAMvD,gBAAgB,GAAG,IAAIC,GAAJ,CAAQhD,KAAK,CAAC+C,gBAAd,CAAzB;AACA,UAAMxC,SAAS,GAAG,IAAIyC,GAAJ,CAAQhD,KAAK,CAACO,SAAd,CAAlB;;AAEA,UAAMyH,gBAAgB,GAAG,SAAnBA,gBAAmB,CACvBJ,MADuB,EAGpB;AAAA,YADHK,SACG,uEADS,KACT;AACH,YAAM;AAAEC,UAAAA;AAAF,YAAYN,MAAlB;AACAxJ,QAAAA,aAAa,CAAC8J,KAAD,CAAb;AACA,YAAMC,QAAQ,GAAGpF,gBAAgB,CAACqF,GAAjB,CAAqBF,KAArB,CAAjB,CAHG,CAIH;AACA;;AAEA,YAAIC,QAAQ,IAAI,IAAZ,IAAoBA,QAAQ,IAAI,CAApC,EAAuC;AAAA;;AACrC;AACAnB,UAAAA,OAAO,CAACmB,QAAD,CAAP,CAAkB7C,eAAlB,GAAoC,CAClC,6BAAI0B,OAAO,CAACmB,QAAD,CAAP,CAAkB7C,eAAtB,yEAAyC,EAAzC,CADkC,EAElC4C,KAFkC,CAApC;AAID;;AACDnF,QAAAA,gBAAgB,CAACsF,GAAjB,CAAqBH,KAArB,EAA4BH,SAA5B;;AACA,YAAIE,SAAJ,EAAe;AACb1H,UAAAA,SAAS,CAAC+H,MAAV,CAAiBJ,KAAjB;AACD,SAFD,MAEO;AACL3H,UAAAA,SAAS,CAAC8H,GAAV,CAAcH,KAAd,EAAqBN,MAArB;AACD;AACF,OAvBD;;AAyBA,kBAAAf,OAAO,UAAP,4CAASa,OAAT,CAAiBC,OAAjB,CAAyBC,MAAM,IAAII,gBAAgB,CAACJ,MAAD,CAAnD;AACA,mBAAAf,OAAO,UAAP,8CAASgB,OAAT,CAAiBF,OAAjB,CAAyBC,MAAM,IAAII,gBAAgB,CAACJ,MAAD,EAAS,IAAT,CAAnD,EArCqB,CAuCrB;AACA;;AACA,mBAAAf,OAAO,UAAP,8CAASY,OAAT,CAAiBE,OAAjB,CAAyBC,MAAM,IAAI;AACjC,YAAM;AAAEM,UAAAA;AAAF,YAAYN,MAAlB;AACAxJ,QAAAA,aAAa,CAAC8J,KAAD,CAAb;AACAnF,QAAAA,gBAAgB,CAACsF,GAAjB,CAAqBH,KAArB,EAA4BH,SAA5B;AACAxH,QAAAA,SAAS,CAAC8H,GAAV,CAAcH,KAAd,EAAqBN,MAArB;AACD,OALD;AAOA,aAAO;AAAE7E,QAAAA,gBAAF;AAAoBxC,QAAAA,SAApB;AAA+BH,QAAAA,cAAc,EAAE4G;AAA/C,OAAP;AACD,KAjDD;AAkDD;;AAED/C,EAAAA,eAAe,GAAS;AACtB,QAAM;AAAE1D,MAAAA;AAAF,QAAgB,KAAKV,KAA3B;AACA,SAAKE,QAAL,CAAc;AAAEQ,MAAAA;AAAF,KAAd;AACD;AAED;AACF;AACA;AACA;AACA;;;AACEoG,EAAAA,0BAA0B,CACxB3B,MADwB,EAExBc,oBAFwB,EAGlB;AACN,QAAMyC,OAAO,GAAG,KAAK5F,OAAL,CAAawC,GAAb,CAAiBW,oBAAjB,CAAhB;AAEA,QAAMqB,OAAO,GAAG,IAAI3B,IAAJ,GAAWQ,MAAX,EAAhB;AACAuC,IAAAA,OAAO,CACJnC,IADH,CACQoC,aAAa,IAAI;AACrB,UAAMC,WAAW,mCACZD,aADY;AAEfE,QAAAA,IAAI,kCACCF,aAAa,CAACE,IADf;AAEFvB,UAAAA,OAFE;AAGFnC,UAAAA;AAHE;AAFW,QAAjB;;AASA,UAAM;AAAEW,QAAAA,qBAAF;AAAyBC,QAAAA;AAAzB,UAAsC,KAAK/F,KAAjD;AACA8F,MAAAA,qBAAqB,CAACgD,UAAtB,CAAiC/C,QAAjC,EAA2C6C,WAA3C,EAAwDxC,KAAxD,CAA8DC,GAAG,IAAI;AACnEpH,QAAAA,GAAG,CAAC8J,IAAJ,CAAS,wCAAT,EAAmD1C,GAAnD;AACD,OAFD;AAGD,KAfH,EAgBGD,KAhBH,CAgBSC,GAAG,IAAI;AACZpH,MAAAA,GAAG,CAACqH,KAAJ,CAAU,uCAAV,EAAmDD,GAAnD;AACD,KAlBH;AAmBD;;AAEDpG,EAAAA,4BAA4B,GAAsB;AAAA,QAArB+I,KAAqB,uEAAb,KAAa;AAChD,QAAMC,IAAI,GAAG,KAAKpG,wBAAL,CAA8BmC,OAA3C;AACAzG,IAAAA,aAAa,CAAC0K,IAAD,CAAb;;AACA,QAAI,CAACD,KAAD,IAAUC,IAAI,CAACC,SAAL,GAAiBD,IAAI,CAACE,YAAL,GAAoBF,IAAI,CAACG,YAAxD,EAAsE;AACpE;AACD;;AAEDC,IAAAA,MAAM,CAACC,qBAAP,CAA6B,MAAM;AACjCL,MAAAA,IAAI,CAACC,SAAL,GAAiBD,IAAI,CAACE,YAAtB;AACD,KAFD;AAGD;;AAEDzH,EAAAA,sBAAsB,GAAS;AAC7B,QAAM6H,UAAU,GAAG,KAAK1G,wBAAL,CAA8BmC,OAAjD;AACAzG,IAAAA,aAAa,CAACgL,UAAD,CAAb;;AACA,QACEA,UAAU,CAACL,SAAX,GAAuB,CAAvB,IACAK,UAAU,CAACJ,YAAX,GAA0BI,UAAU,CAACC,YAFvC,EAGE;AACA,WAAKtJ,QAAL,CAAc;AAAE+C,QAAAA,uBAAuB,EAAE;AAA3B,OAAd;AACD,KALD,MAKO;AACL,WAAK/C,QAAL,CAAc;AAAE+C,QAAAA,uBAAuB,EAAE;AAA3B,OAAd;AACD;AACF;;AAEDtB,EAAAA,4BAA4B,GAAS;AACnC,SAAKzB,QAAL,CAAcC,KAAK,KAAK;AACtBf,MAAAA,yBAAyB,EAAE,CAACe,KAAK,CAACf;AADZ,KAAL,CAAnB;AAGD;;AAEDwC,EAAAA,mCAAmC,GAAS;AAC1C,SAAK1B,QAAL,CAAcC,KAAK,KAAK;AACtBb,MAAAA,gCAAgC,EAAE,CAACa,KAAK,CAACb;AADnB,KAAL,CAAnB;AAGD;;AAEDuC,EAAAA,uBAAuB,GAAS;AAC9B,SAAK3B,QAAL,CAAcC,KAAK,KAAK;AACtBd,MAAAA,oBAAoB,EAAE,CAACc,KAAK,CAACd;AADP,KAAL,CAAnB;AAGD;;AAEDyC,EAAAA,eAAe,GAAS;AACtB,SAAK5B,QAAL,CAAc;AACZkD,MAAAA,cAAc,EAAE,IADJ;AAEZG,MAAAA,SAAS,EAAE,IAFC;AAGZC,MAAAA,mBAAmB,EAAE;AAHT,KAAd;AAKD;;AAEDzB,EAAAA,aAAa,GAAS;AACpB,SAAK7B,QAAL,CAAc;AACZkD,MAAAA,cAAc,EAAE,KADJ;AAEZC,MAAAA,OAAO,EAAE,IAFG;AAGZC,MAAAA,QAAQ,EAAE,IAHE;AAIZC,MAAAA,SAAS,EAAE,IAJC;AAKZC,MAAAA,mBAAmB,EAAE;AALT,KAAd;AAOD;;AAEDxB,EAAAA,qBAAqB,GAAS;AAC5B,SAAK9B,QAAL,CAAc;AAAEmD,MAAAA,OAAO,EAAE,IAAX;AAAiBC,MAAAA,QAAQ,EAAE;AAA3B,KAAd;AACD;;AAEDrB,EAAAA,mBAAmB,CAACwH,IAAD,EAAmB;AACpC,SAAKvJ,QAAL,CAAc;AAAEmD,MAAAA,OAAO,EAAEoG,IAAX;AAAiBnG,MAAAA,QAAQ,EAAE;AAA3B,KAAd;AACD;;AAEDpB,EAAAA,cAAc,CAACwH,KAAD,EAAsB;AAClC,SAAKxJ,QAAL,CAAc;AAAEmD,MAAAA,OAAO,EAAE,IAAX;AAAiBC,MAAAA,QAAQ,EAAEoG;AAA3B,KAAd;AACD;;AAEDvH,EAAAA,eAAe,CAACwH,CAAD,EAAqC;AAClD,QACE,CAACA,CAAC,CAACC,YAAH,IACA,CAACD,CAAC,CAACC,YAAF,CAAeC,KADhB,IAEAF,CAAC,CAACC,YAAF,CAAeC,KAAf,CAAqBvJ,MAArB,KAAgC,CAFhC,IAGAqJ,CAAC,CAACC,YAAF,CAAeC,KAAf,CAAqB,CAArB,EAAwBC,IAAxB,KAAiC,QAJnC,EAKE;AACA;AACD;;AACDH,IAAAA,CAAC,CAAC7E,cAAF;AACA6E,IAAAA,CAAC,CAAC5E,eAAF;AACA,SAAK7E,QAAL,CAAc;AAAEkD,MAAAA,cAAc,EAAE;AAAlB,KAAd;AAEA,QAAM;AAAEyG,MAAAA;AAAF,QAAYF,CAAC,CAACC,YAApB;;AACA,QAAIC,KAAK,CAACvJ,MAAN,GAAe,CAAnB,EAAsB;AACpB,WAAKJ,QAAL,CAAc;AAAEqD,QAAAA,SAAS,EAAEzE,UAAU,CAACiL;AAAxB,OAAd;AACA;AACD;;AAED,QAAMC,IAAI,GAAGH,KAAK,CAAC,CAAD,CAAlB;;AACA,QAAI/K,UAAU,CAACmL,eAAX,CAA2BD,IAA3B,CAAJ,EAAsC;AACpC,WAAK9J,QAAL,CAAc;AAAEqD,QAAAA,SAAS,EAAE;AAAb,OAAd;AACD,KAFD,MAEO;AACL,WAAKrD,QAAL,CAAc;AAAEqD,QAAAA,SAAS,EAAEzE,UAAU,CAACoL;AAAxB,OAAd;AACD;AACF;;AAED9H,EAAAA,eAAe,CAACuH,CAAD,EAAqC;AAClD;AACA,QACE,CAACA,CAAC,CAACQ,aAAH,IACCR,CAAC,CAACQ,aAAF,YAA2BC,OAA3B,IACCT,CAAC,CAACU,aAAF,YAA2BD,OAD5B,IAECT,CAAC,CAACQ,aAAF,CAAgBG,QAAhB,CAAyBX,CAAC,CAACU,aAA3B,CAJJ,EAKE;AACA;AACD;;AACDV,IAAAA,CAAC,CAAC7E,cAAF;AACA6E,IAAAA,CAAC,CAAC5E,eAAF;AACA,SAAK7E,QAAL,CAAc;AAAEkD,MAAAA,cAAc,EAAE,KAAlB;AAAyBG,MAAAA,SAAS,EAAE;AAApC,KAAd;AACD;;AAEDlB,EAAAA,oBAAoB,GAAS;AAC3B,SAAKnC,QAAL,CAAc;AAAEqD,MAAAA,SAAS,EAAE;AAAb,KAAd;AACD;;AAEDjB,EAAAA,kBAAkB,CAAC+F,KAAD,EAAsB;AACtC,QAAM;AAAEV,MAAAA,UAAF;AAAc7B,MAAAA,qBAAd;AAAqCC,MAAAA,QAArC;AAA+CC,MAAAA;AAA/C,QAAyD,KAAKhG,KAApE;AACA,QAAM;AAAEO,MAAAA,cAAF;AAAkBG,MAAAA;AAAlB,QAAgC,KAAKP,KAA3C;AACA,QAAM4H,MAAM,GAAG;AAAEwC,MAAAA,IAAI,EAAElC,KAAR;AAAeA,MAAAA,KAAf;AAAsBmC,MAAAA,IAAI,EAAEnM,EAAE,CAACoM,YAAH,CAAgBC;AAA5C,KAAf;AACA,QAAMC,gBAAgB,GAAGjK,SAAS,CAACkK,GAAV,CAAcvC,KAAd,CAAzB;AACA,QAAM9C,WAAW,GAAG;AAClBG,MAAAA,SAAS,EAAEC,IAAI,CAACC,GAAL,EADO;AAElB0B,MAAAA,OAAO,EAAE3B,IAAI,CAACC,GAAL,EAFS;AAGlBH,MAAAA,eAAe,EAAE,EAHC;AAIlBN,MAAAA,MAAM,EAAE;AACN6B,QAAAA,OAAO,EAAE;AACPY,UAAAA,OAAO,EAAE,EADF;AAEPC,UAAAA,OAAO,EAAE,EAFF;AAGPG,UAAAA,OAAO,EAAE,EAHF;AAIP,WAAC2C,gBAAgB,GAAG,SAAH,GAAe,SAAhC,GAA4C,CAAC5C,MAAD;AAJrC;AADH;AAJU,KAApB;AAaA,QAAMZ,OAAO,GAAG5G,cAAc,CAACC,MAAf,CAAsB+E,WAAtB,CAAhB;AACA,SAAKrF,QAAL,CAAc;AACZK,MAAAA,cAAc,EAAE4G;AADJ,KAAd;AAGA,SAAKlH,4BAAL,CAAkC,IAAlC;AACA,SAAK4G,kBAAL,CAAwBtB,WAAxB;AACAoC,IAAAA,UAAU,CAAC;AAAE4C,MAAAA,IAAI,EAAElC,KAAR;AAAeA,MAAAA,KAAf;AAAsBmC,MAAAA,IAAI,EAAEnM,EAAE,CAACoM,YAAH,CAAgBC;AAA5C,KAAD,CAAV;AACA5E,IAAAA,qBAAqB,CAACI,OAAtB,CAA8BH,QAA9B,EAAwCC,KAAxC,EAA+CqC,KAA/C,EAAsD;AACpD7C,MAAAA,OAAO,EAAE6C,KAD2C;AAEpD3C,MAAAA,SAAS,EAAE,IAAIC,IAAJ,GAAWQ,MAAX,EAFyC;AAGpDmB,MAAAA,OAAO,EAAE,IAAI3B,IAAJ,GAAWQ,MAAX;AAH2C,KAAtD;AAKD;;AAED0E,EAAAA,wBAAwB,CAACrD,OAAD,EAAmBf,KAAnB,EAAyC;AAC/D,QAAM;AAAElG,MAAAA;AAAF,QAAqB,KAAKJ,KAAhC;AACA,QAAMoF,WAAW,GAAG;AAClBC,MAAAA,OAAO,EAAE,EADS;AAElBE,MAAAA,SAAS,EAAEC,IAAI,CAACC,GAAL,EAFO;AAGlB0B,MAAAA,OAAO,EAAE3B,IAAI,CAACC,GAAL,EAHS;AAIlBT,MAAAA,MAAM,EAAE;AAAEqC,QAAAA,OAAF;AAAWf,QAAAA;AAAX;AAJU,KAApB;AAMA,QAAMU,OAAO,GAAG5G,cAAc,CAACC,MAAf,CAAsB+E,WAAtB,CAAhB;AACA,SAAKrF,QAAL,CAAc;AACZK,MAAAA,cAAc,EAAE4G;AADJ,KAAd;AAGD;;AAED5E,EAAAA,eAAe,CAACiF,OAAD,EAAwB;AACrC,SAAKqD,wBAAL,CAA8BrD,OAA9B;AACD;;AAEDhF,EAAAA,cAAc,CAACiE,KAAD,EAAuB;AACnC,SAAKoE,wBAAL,CAA8BjG,SAA9B,EAAyC6B,KAAK,aAAMA,KAAN,IAAgB7B,SAA9D;AACD;;AAEDnC,EAAAA,mBAAmB,CAACe,mBAAD,EAAqC;AACtD,SAAKtD,QAAL,CAAc;AAAEsD,MAAAA;AAAF,KAAd;AACD;;AAED/B,EAAAA,qBAAqB,GAAqB;AACxC,QAAM;AACJrC,MAAAA,yBADI;AAEJE,MAAAA,gCAFI;AAGJD,MAAAA;AAHI,QAIF,KAAKc,KAJT;AAKA,QAAM;AAAES,MAAAA;AAAF,QAAc,KAAKZ,KAAzB;AACA,WAAO,CACL,GAAGY,OADE,EAEL;AACEyH,MAAAA,KAAK,EAAE,cADT;AAEExH,MAAAA,MAAM,EAAE,KAAKgB,uBAFf;AAGEiJ,MAAAA,KAAK,EAAE9M,cAAc,CAAC+M,MAAf,CAAsBC,IAH/B;AAIEC,MAAAA,IAAI,EAAE5L,oBAAoB,GAAGpB,OAAH,GAAa2G,SAJzC;AAKEsG,MAAAA,KAAK,EAAE;AALT,KAFK,EASL;AACE7C,MAAAA,KAAK,EAAE,oBADT;AAEExH,MAAAA,MAAM,EAAE,KAAKc,4BAFf;AAGEmJ,MAAAA,KAAK,EAAE9M,cAAc,CAAC+M,MAAf,CAAsBC,IAH/B;AAIEC,MAAAA,IAAI,EAAE7L,yBAAyB,GAAGnB,OAAH,GAAa2G,SAJ9C;AAKEsG,MAAAA,KAAK,EAAE;AALT,KATK,EAgBL;AACE7C,MAAAA,KAAK,EAAE,4BADT;AAEExH,MAAAA,MAAM,EAAE,KAAKe,mCAFf;AAGEkJ,MAAAA,KAAK,EAAE9M,cAAc,CAAC+M,MAAf,CAAsBC,IAH/B;AAIEC,MAAAA,IAAI,EAAE3L,gCAAgC,GAAGrB,OAAH,GAAa2G,SAJrD;AAKEsG,MAAAA,KAAK,EAAE;AALT,KAhBK,EAuBL;AACE7C,MAAAA,KAAK,EAAE,wBADT;AAEExH,MAAAA,MAAM,EAAE,KAAKiB,eAFf;AAGEgJ,MAAAA,KAAK,EAAE9M,cAAc,CAAC+M,MAAf,CAAsBC,IAAtB,GAA6B,EAHtC;AAIEE,MAAAA,KAAK,EAAE;AAJT,KAvBK,CAAP;AA8BD;;AAED3J,EAAAA,mBAAmB,CAACiE,OAAD,EAAwB;AACzC,QAAIA,OAAO,KAAK,OAAZ,IAAuBA,OAAO,KAAK,KAAvC,EAA8C;AAC5C,WAAK2F,mBAAL;AACD,KAFD,MAEO,IAAI3F,OAAO,CAAClF,MAAR,GAAiB,CAArB,EAAwB;AAC7B;AACA,UAAM;AAAEqD,QAAAA;AAAF,UAAc,KAAK3D,KAAzB;AACA2D,MAAAA,OAAO,CAACyH,OAAR,CAAgB5F,OAAhB,EAAyBY,KAAzB,CAA+BK,KAAK,IAAI;AACtCxH,QAAAA,GAAG,CAACwH,KAAJ,CAAU,2CAAV,EAAuDA,KAAvD;AACD,OAFD;AAGD,KANM,MAMA;AACL;AACA,UAAMlB,WAAW,GAAG;AAClBC,QAAAA,OAAO,EAAE,GADS;AAElBL,QAAAA,MAAM,EAAE,EAFU;AAGlBO,QAAAA,SAAS,EAAEC,IAAI,CAACC,GAAL,EAHO;AAIlB0B,QAAAA,OAAO,EAAE3B,IAAI,CAACC,GAAL;AAJS,OAApB;AAOA,WAAK3F,4BAAL,CAAkC,IAAlC;AAEA,WAAKC,QAAL,CAAcC,KAAK,KAAK;AACtBI,QAAAA,cAAc,EAAEJ,KAAK,CAACI,cAAN,CAAqBC,MAArB,CAA4B+E,WAA5B;AADM,OAAL,CAAnB;AAGD;AACF;;AAED4F,EAAAA,mBAAmB,GAAS;AAC1B,SAAKrI,OAAL,CAAayB,MAAb;AAEA,SAAKrE,QAAL,CAAcC,KAAK,IAAI;AACrB;AACA;AACA,UAAM+C,gBAAgB,GAAG,IAAIC,GAAJ,CACvB,CAAC,GAAGhD,KAAK,CAAC+C,gBAAN,CAAuBmI,IAAvB,EAAJ,EAAmCC,GAAnC,CAAuCf,IAAI,IAAI,CAACA,IAAD,EAAO,CAAC,CAAR,CAA/C,CADuB,CAAzB;AAGA,aAAO;AAAEhK,QAAAA,cAAc,EAAE,EAAlB;AAAsB2C,QAAAA;AAAtB,OAAP;AACD,KAPD;AAQD;;AAgBDqI,EAAAA,UAAU,CAAC/F,OAAD,EAAuD;AAAA,QAArCgG,KAAqC,uEAA7B,IAA6B;AAAA,QAAvBC,OAAuB,uEAAb,KAAa;;AAC/D,QAAI,CAAC,KAAK7I,YAAL,CAAkBoC,OAAvB,EAAgC;AAC9B;AACD;;AACD,SAAKpC,YAAL,CAAkBoC,OAAlB,CAA0B0G,cAA1B,CAAyClG,OAAzC,EAAkDgG,KAAlD,EAAyDC,OAAzD;;AAEA,QAAID,KAAJ,EAAW;AACT,WAAKvL,4BAAL,CAAkC,IAAlC;AACD;AACF;;AAEDuL,EAAAA,KAAK,GAAS;AAAA;;AACZ,mCAAK5I,YAAL,CAAkBoC,OAAlB,kFAA2BwG,KAA3B;AACD;;AAEDrH,EAAAA,kBAAkB,CAChBD,SADgB,EAEhB/D,KAFgB,EAIV;AAAA,QADNwL,cACM,uEADW,IACX;AACN,QAAMN,IAAI,GAAGO,MAAM,CAACP,IAAP,CAAYlM,gBAAZ,CAAb;AACA,QAAM4D,QAAiC,GAAG,EAA1C;AACA,QAAI8I,UAAU,GAAG,KAAjB;;AACA,SAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGT,IAAI,CAAC/K,MAAzB,EAAiCwL,CAAC,IAAI,CAAtC,EAAyC;AACvC,UAAMC,GAAG,GAAGV,IAAI,CAACS,CAAD,CAAhB;AACA,UAAM;AAAE,SAACC,GAAD,GAAOC;AAAT,UAAqB7L,KAA3B;AACA,UAAM;AAAE,SAAC4L,GAAD,GAAOE;AAAT,UAAyB/H,SAA/B;;AACA,UAAI8H,OAAO,KAAKC,WAAhB,EAA6B;AAC3BJ,QAAAA,UAAU,GAAG,IAAb;AACD;;AACD9I,MAAAA,QAAQ,CAACgJ,GAAD,CAAR,GAAgBC,OAAhB;AACD;;AACD,QAAIL,cAAc,IAAI,CAACE,UAAvB,EAAmC;AACjC;AACD;;AACD,QAAM;AAAEK,MAAAA;AAAF,QAAuB,KAAKlM,KAAlC;AACAkM,IAAAA,gBAAgB,CAACnJ,QAAD,CAAhB;AACD;;AAEDgB,EAAAA,gBAAgB,GAAS;AACvB,QAAI,KAAKrB,WAAL,CAAiBsC,OAArB,EAA8B;AAC5B,WAAK9E,QAAL,CAAc;AACZ8C,QAAAA,aAAa,EAAE,KAAKN,WAAL,CAAiBsC,OAAjB,CAAyBwE;AAD5B,OAAd;AAGD;;AACD,QAAI,KAAK5G,YAAL,CAAkBoC,OAAtB,EAA+B;AAC7B,WAAKpC,YAAL,CAAkBoC,OAAlB,CAA0BjB,gBAA1B;AACD;AACF;;AAEDoI,EAAAA,MAAM,GAAiB;AACrB,QAAM;AACJvL,MAAAA,OADI;AAEJwL,MAAAA,eAFI;AAGJrG,MAAAA,QAHI;AAIJsG,MAAAA,iBAJI;AAKJ1E,MAAAA,UALI;AAMJhE,MAAAA,OANI;AAOJqC,MAAAA,KAPI;AAQJF,MAAAA,qBARI;AASJwG,MAAAA,QATI;AAUJC,MAAAA,QAVI;AAWJC,MAAAA;AAXI,QAYF,KAAKxM,KAZT;AAaA,QAAM;AACJgD,MAAAA,aADI;AAEJzC,MAAAA,cAFI;AAGJ0C,MAAAA,uBAHI;AAIJvC,MAAAA,SAJI;AAKJ0C,MAAAA,cALI;AAMJC,MAAAA,OANI;AAOJC,MAAAA,QAPI;AAQJC,MAAAA,SARI;AASJC,MAAAA;AATI,QAUF,KAAKrD,KAVT;AAWA,QAAMsM,kBAAkB,GAAG,KAAKC,UAAL,CAAgBhM,SAAhB,CAA3B;AACA,QAAMiM,cAAc,GAAGC,IAAI,CAACC,KAAL,CAAW7J,aAAa,GAAG,GAA3B,CAAvB;AACA,QAAM8J,cAAc,GAAG,KAAKC,iBAAL,CAAuBnM,OAAvB,CAAvB;AAEA,wBACE;AACE,MAAA,IAAI,EAAC,cADP;AAEE,MAAA,SAAS,EAAE1C,UAAU,CAAC,cAAD,EAAiB,OAAjB,EAA0B,OAA1B,EAAmC;AAAEqO,QAAAA;AAAF,OAAnC;AAFvB,oBAIE;AAAK,MAAA,SAAS,EAAC,cAAf;AAA8B,MAAA,GAAG,EAAE,KAAK7J;AAAxC,oBACE,oBAAC,gBAAD;AACE,MAAA,OAAO,EAAEiB,OADX;AAEE,MAAA,eAAe,EAAE,KAAKlC,qBAAL,EAFnB;AAGE,MAAA,UAAU,EAAEkG,UAHd;AAIE,MAAA,OAAO,EAAE8E;AAJX,OAMGJ,iBANH,CADF,eASE;AACE,MAAA,SAAS,EAAC,uBADZ;AAEE,MAAA,UAAU,EAAEvN,UAAU,CAACkO,cAFzB;AAGE,MAAA,WAAW,EAAE,KAAK7K,eAHpB;AAIE,MAAA,WAAW,EAAE,KAAKC;AAJpB,OAMGgB,cAAc,iBACb,oBAAC,UAAD;AACE,MAAA,QAAQ,EAAE,KAAKpB,qBADjB;AAEE,MAAA,YAAY,EAAE,KAAKC,mBAFrB;AAGE,MAAA,OAAO,EAAE,KAAKC,cAHhB;AAIE,MAAA,cAAc,EAAE,KAAKG,oBAJvB;AAKE,MAAA,SAAS,EAAEkB,SALb;AAME,MAAA,OAAO,EAAE,KAAKf,cANhB;AAOE,MAAA,gBAAgB,EAAEgB,mBAPpB;AAQE,MAAA,QAAQ,EAAEgJ,KAAK,IAAI;AARrB,MAPJ,eAkBE;AACE,MAAA,IAAI,EAAC,cADP;AAEE,MAAA,SAAS,EAAEtO,UAAU,CAAC,yBAAD,EAA4B;AAC/C,6BAAqB+E;AAD0B,OAA5B,CAFvB;AAKE,MAAA,QAAQ,EAAE,KAAKvB,sBALjB;AAME,MAAA,GAAG,EAAE,KAAKmB;AANZ,oBAQE,oBAAC,cAAD;AACE,MAAA,KAAK,EAAEtC,cADT;AAEE,MAAA,UAAU,EAAEoH,UAFd;AAGE,MAAA,QAAQ,EAAE5B,QAHZ;AAIE,MAAA,QAAQ,EAAEwG;AAJZ,MARF,EAcGH,eAdH,CAlBF,CATF,EA4CG,CAAChJ,cAAD,iBACC,oBAAC,YAAD;AACE,MAAA,GAAG,EAAE,KAAKR,YADZ;AAEE,MAAA,OAAO,EAAEe,OAFX;AAGE,MAAA,QAAQ,EAAEoC,QAHZ;AAIE,MAAA,KAAK,EAAEC,KAJT;AAKE,MAAA,QAAQ,EAAE,KAAKzE,mBALjB;AAME,MAAA,SAAS,EAAEoL,cANb;AAOE,MAAA,qBAAqB,EAAE7G;AAPzB,MA7CJ,EAuDG1C,cAAc,iBACb,oBAAC,WAAD;AACE,MAAA,OAAO,EAAEO,OADX;AAEE,MAAA,WAAW,EAAE,KAAKrB,kBAFpB;AAGE,MAAA,OAAO,EAAE,KAAKP,aAHhB;AAIE,MAAA,QAAQ,EAAE,KAAKQ,eAJjB;AAKE,MAAA,OAAO,EAAE,KAAKC,cALhB;AAME,MAAA,IAAI,EAAEa,OAAF,aAAEA,OAAF,cAAEA,OAAF,GAAauB,SANnB;AAOE,MAAA,KAAK,EAAEtB,QAAF,aAAEA,QAAF,cAAEA,QAAF,GAAcsB,SAPrB;AAQE,MAAA,YAAY,EAAE,KAAKnC,mBARrB;AASE,MAAA,QAAQ,EAAE6J,QATZ;AAUE,MAAA,KAAK,EAAEE;AAVT,MAxDJ,CAJF,eA0EE,oBAAC,cAAD;AACE,MAAA,OAAO,EAAEM,cADX;AAEE,MAAA,gBAAgB,EAAE,CAACjO,YAAY,CAACoO,gBAAd;AAFpB,MA1EF,CADF;AAiFD;;AA74BoE;;gBAA1D1N,O,kBACW;AACpB8M,EAAAA,iBAAiB,EAAE,IADC;AAEpBtJ,EAAAA,QAAQ,EAAE,EAFU;AAGpBmJ,EAAAA,gBAAgB,EAAE,MAAYtH,SAHV;AAIpBoB,EAAAA,KAAK,EAAE,IAJa;AAKpBpF,EAAAA,OAAO,EAAE,EALW;AAMpBwL,EAAAA,eAAe,EAAE,IANG;AAOpBE,EAAAA,QAAQ,EAAE,kBAPU;AAQpB5L,EAAAA,SAAS,EAAE,IAAIyC,GAAJ,EARS;AASpBoJ,EAAAA,QAAQ,EAAE,KATU;AAUpBC,EAAAA,KAAK,EAAE;AAVa,C;;gBADXjN,O,kBAcW,G;;AAk4BxB,eAAeA,OAAf","sourcesContent":["/**\n * Console display for use in the Iris environment.\n */\nimport React, {\n DragEvent,\n PureComponent,\n ReactElement,\n ReactNode,\n RefObject,\n} from 'react';\nimport { ContextActions, DropdownAction } from '@deephaven/components';\nimport { vsCheck } from '@deephaven/icons';\nimport classNames from 'classnames';\nimport memoize from 'memoize-one';\nimport throttle from 'lodash.throttle';\nimport type { JSZipObject } from 'jszip';\nimport dh, {\n IdeSession,\n LogItem,\n VariableChanges,\n VariableDefinition,\n} from '@deephaven/jsapi-shim';\nimport Log from '@deephaven/log';\nimport { assertNotNull, Pending, PromiseUtils } from '@deephaven/utils';\nimport ConsoleHistory from './console-history/ConsoleHistory';\nimport { ConsoleHistoryActionItem } from './console-history/ConsoleHistoryTypes';\nimport SHORTCUTS from './ConsoleShortcuts';\nimport LogLevel from './log/LogLevel';\nimport ConsoleInput from './ConsoleInput';\nimport CsvOverlay from './csv/CsvOverlay';\nimport CsvInputBar from './csv/CsvInputBar';\nimport './Console.scss';\nimport ConsoleStatusBar from './ConsoleStatusBar';\nimport {\n CommandHistoryStorage,\n CommandHistoryStorageItem,\n} from './command-history';\n\nconst log = Log.module('Console');\n\ninterface Settings {\n isAutoLaunchPanelsEnabled: boolean;\n isPrintStdOutEnabled: boolean;\n isClosePanelsOnDisconnectEnabled: boolean;\n}\n\nconst DEFAULT_SETTINGS: Settings = {\n isAutoLaunchPanelsEnabled: true,\n isPrintStdOutEnabled: true,\n isClosePanelsOnDisconnectEnabled: true,\n} as const;\n\ninterface ConsoleProps {\n statusBarChildren: ReactNode;\n settings: Partial<Settings>;\n focusCommandHistory: () => void;\n openObject: (object: VariableDefinition) => void;\n closeObject: (object: VariableDefinition) => void;\n session: IdeSession;\n language: string;\n commandHistoryStorage: CommandHistoryStorage;\n onSettingsChange: (settings: Record<string, unknown>) => void;\n scope: string;\n actions: DropdownAction[];\n timeZone: string;\n\n // Children shown at the bottom of the console history\n historyChildren: ReactNode;\n\n // Known object map\n objectMap: Map<string, VariableDefinition>;\n\n disabled: boolean;\n\n /**\n * Function to unzip a zip file. If not provided, zip files will not be accepted\n * (file:File) => Promise<File[]>\n */\n unzip: (file: File) => Promise<JSZipObject[]>;\n}\n\ninterface ConsoleState {\n // Need separate histories as console history has stdout/stderr output\n consoleHistory: ConsoleHistoryActionItem[];\n\n // Height of the viewport of the console input and history\n consoleHeight: number;\n\n isScrollDecorationShown: boolean;\n\n // Location of objects in the console history\n objectHistoryMap: Map<string, number>;\n\n // The object definitions, name/type\n objectMap: Map<string, VariableDefinition>;\n\n showCsvOverlay: boolean;\n csvFile: File | null;\n csvPaste: string | null;\n dragError: string | null;\n csvUploadInProgress: boolean;\n isAutoLaunchPanelsEnabled: boolean;\n isPrintStdOutEnabled: boolean;\n isClosePanelsOnDisconnectEnabled: boolean;\n}\nexport class Console extends PureComponent<ConsoleProps, ConsoleState> {\n static defaultProps = {\n statusBarChildren: null,\n settings: {},\n onSettingsChange: (): void => undefined,\n scope: null,\n actions: [],\n historyChildren: null,\n timeZone: 'America/New_York',\n objectMap: new Map(),\n disabled: false,\n unzip: null,\n };\n\n static LOG_THROTTLE = 500;\n\n /**\n * Check if the provided log level is an error type\n * @param logLevel The LogLevel being checked\n * @returns true if the log level is an error level log\n */\n static isErrorLevel(\n logLevel: typeof LogLevel[keyof typeof LogLevel]\n ): boolean {\n return (\n logLevel === LogLevel.STDERR ||\n logLevel === LogLevel.ERROR ||\n logLevel === LogLevel.FATAL\n );\n }\n\n /**\n * Check if the provided log level is output level\n * @param logLevel The LogLevel being checked\n * @return true if the log level should be output to the console\n */\n static isOutputLevel(logLevel: string): boolean {\n // We want all errors to be output, in addition to STDOUT.\n // That way the user is more likely to see them.\n return logLevel === LogLevel.STDOUT || Console.isErrorLevel(logLevel);\n }\n\n constructor(props: ConsoleProps) {\n super(props);\n\n this.handleCommandResult = this.handleCommandResult.bind(this);\n this.handleCommandStarted = this.handleCommandStarted.bind(this);\n this.handleCommandSubmit = this.handleCommandSubmit.bind(this);\n this.handleClearShortcut = this.handleClearShortcut.bind(this);\n this.handleFocusHistory = this.handleFocusHistory.bind(this);\n this.handleLogMessage = this.handleLogMessage.bind(this);\n this.handleOverflowActions = this.handleOverflowActions.bind(this);\n this.handleScrollPaneScroll = this.handleScrollPaneScroll.bind(this);\n this.handleToggleAutoLaunchPanels = this.handleToggleAutoLaunchPanels.bind(\n this\n );\n this.handleToggleClosePanelsOnDisconnect = this.handleToggleClosePanelsOnDisconnect.bind(\n this\n );\n this.handleTogglePrintStdout = this.handleTogglePrintStdout.bind(this);\n this.handleUploadCsv = this.handleUploadCsv.bind(this);\n this.handleHideCsv = this.handleHideCsv.bind(this);\n this.handleCsvFileCanceled = this.handleCsvFileCanceled.bind(this);\n this.handleCsvFileOpened = this.handleCsvFileOpened.bind(this);\n this.handleCsvPaste = this.handleCsvPaste.bind(this);\n this.handleDragEnter = this.handleDragEnter.bind(this);\n this.handleDragLeave = this.handleDragLeave.bind(this);\n this.handleClearDragError = this.handleClearDragError.bind(this);\n this.handleOpenCsvTable = this.handleOpenCsvTable.bind(this);\n this.handleCsvUpdate = this.handleCsvUpdate.bind(this);\n this.handleCsvError = this.handleCsvError.bind(this);\n this.handleCsvInProgress = this.handleCsvInProgress.bind(this);\n\n this.consolePane = React.createRef();\n this.consoleInput = React.createRef();\n this.consoleHistoryScrollPane = React.createRef();\n this.pending = new Pending();\n this.queuedLogMessages = [];\n\n const { objectMap, settings } = this.props;\n\n this.state = {\n // Need separate histories as console history has stdout/stderr output\n consoleHistory: [],\n\n // Height of the viewport of the console input and history\n consoleHeight: 0,\n\n isScrollDecorationShown: false,\n\n // Location of objects in the console history\n objectHistoryMap: new Map(),\n\n // The object definitions, name/type\n objectMap: new Map(objectMap),\n\n showCsvOverlay: false,\n csvFile: null,\n csvPaste: null,\n dragError: null,\n csvUploadInProgress: false,\n\n ...DEFAULT_SETTINGS,\n ...settings,\n };\n }\n\n componentDidMount(): void {\n this.initConsoleLogging();\n\n const { session } = this.props;\n session.addEventListener(\n dh.IdeSession.EVENT_COMMANDSTARTED,\n this.handleCommandStarted\n );\n\n this.updateDimensions();\n }\n\n componentDidUpdate(prevProps: ConsoleProps, prevState: ConsoleState): void {\n const { props, state } = this;\n this.sendSettingsChange(prevState, state);\n\n if (props.objectMap !== prevProps.objectMap) {\n this.updateObjectMap();\n }\n }\n\n componentWillUnmount(): void {\n const { session } = this.props;\n\n session.removeEventListener(\n dh.IdeSession.EVENT_COMMANDSTARTED,\n this.handleCommandStarted\n );\n\n this.pending.cancel();\n this.processLogMessageQueue.cancel();\n\n this.deinitConsoleLogging();\n }\n\n cancelListener?: () => void;\n\n consolePane: RefObject<HTMLDivElement>;\n\n consoleInput: RefObject<ConsoleInput>;\n\n consoleHistoryScrollPane: RefObject<HTMLDivElement>;\n\n pending: Pending;\n\n queuedLogMessages: ConsoleHistoryActionItem[];\n\n initConsoleLogging(): void {\n const { session } = this.props;\n this.cancelListener = session.onLogMessage(this.handleLogMessage);\n }\n\n deinitConsoleLogging(): void {\n if (this.cancelListener != null) {\n this.cancelListener();\n this.cancelListener = undefined;\n }\n }\n\n handleClearShortcut(event: CustomEvent): void {\n event.preventDefault();\n event.stopPropagation();\n\n this.consoleInput.current?.clear();\n }\n\n handleCommandStarted(event: CustomEvent): void {\n const { code, result } = event.detail;\n const wrappedResult = this.pending.add(result);\n const historyItem = {\n command: code,\n disabledObjects: [],\n startTime: Date.now(),\n cancelResult: () => {\n result.cancel();\n },\n wrappedResult,\n };\n\n const { commandHistoryStorage, language, scope } = this.props;\n const workspaceItemPromise = commandHistoryStorage.addItem(\n language,\n scope,\n code,\n {\n command: code,\n startTime: new Date().toJSON(),\n }\n );\n workspaceItemPromise.catch(err => {\n log.debug('Error adding workspace item', err);\n });\n\n this.setState(\n state => ({\n consoleHistory: state.consoleHistory.concat(historyItem),\n }),\n () => {\n this.scrollConsoleHistoryToBottom(true);\n }\n );\n\n wrappedResult\n .then(resolved => {\n this.handleCommandResult(resolved, historyItem, workspaceItemPromise);\n })\n .catch(error => {\n this.handleCommandError(error, historyItem, workspaceItemPromise);\n });\n }\n\n handleCommandResult(\n result:\n | {\n message: string;\n error?: string;\n changes: VariableChanges;\n }\n | undefined,\n historyItemParam: ConsoleHistoryActionItem,\n workspaceItemPromise: Promise<CommandHistoryStorageItem>\n ): void {\n const historyItem = historyItemParam;\n historyItem.wrappedResult = undefined;\n historyItem.cancelResult = undefined;\n\n if (!result) {\n return;\n }\n\n historyItem.result = result;\n\n this.updateHistory(result, historyItem);\n this.updateKnownObjects(historyItem);\n this.updateWorkspaceHistoryItem(\n { error: result.error },\n workspaceItemPromise\n );\n\n this.closeRemovedItems(result.changes);\n this.openUpdatedItems(result.changes);\n }\n\n handleCommandError(\n error: unknown,\n historyItemParam: ConsoleHistoryActionItem,\n workspaceItemPromise: Promise<CommandHistoryStorageItem>\n ): void {\n const historyItem = historyItemParam;\n historyItem.wrappedResult = undefined;\n historyItem.cancelResult = undefined;\n\n if (PromiseUtils.isCanceled(error)) {\n log.debug('Called handleCommandError on a cancelled promise result');\n return;\n }\n\n this.updateWorkspaceHistoryItem(\n { error: `${error}` },\n workspaceItemPromise\n );\n\n this.setState(state => {\n const history = state.consoleHistory.concat();\n const index = history.lastIndexOf(historyItem);\n historyItem.endTime = Date.now();\n historyItem.result = { error };\n history[index] = { ...historyItem };\n return {\n consoleHistory: history,\n };\n });\n }\n\n handleFocusHistory(event: CustomEvent): void {\n event.preventDefault();\n event.stopPropagation();\n\n const { focusCommandHistory } = this.props;\n focusCommandHistory();\n }\n\n handleLogMessage(message: LogItem): void {\n const { isPrintStdOutEnabled } = this.state;\n if (!isPrintStdOutEnabled) {\n return;\n }\n\n if (Console.isOutputLevel(message.logLevel)) {\n this.queueLogMessage(message.message, message.logLevel);\n }\n }\n\n queueLogMessage(message: string, logLevel: string): void {\n const result: Record<string, string> = {};\n if (Console.isErrorLevel(logLevel)) {\n result.error = message;\n } else {\n result.message = message;\n }\n\n const historyItem = { command: undefined, result };\n\n this.queuedLogMessages.push(historyItem);\n\n this.processLogMessageQueue();\n }\n\n processLogMessageQueue = throttle(() => {\n this.scrollConsoleHistoryToBottom();\n\n this.setState(state => {\n log.debug2(\n 'processLogMessageQueue',\n this.queuedLogMessages.length,\n ' items'\n );\n\n let { consoleHistory } = state;\n consoleHistory = consoleHistory.concat(this.queuedLogMessages);\n this.queuedLogMessages = [];\n\n return { consoleHistory };\n });\n }, Console.LOG_THROTTLE);\n\n openUpdatedItems(changes: VariableChanges): void {\n const { isAutoLaunchPanelsEnabled } = this.state;\n if (!changes || !isAutoLaunchPanelsEnabled) {\n return;\n }\n\n const { openObject } = this.props;\n [...changes.created, ...changes.updated].forEach(object =>\n openObject(object)\n );\n }\n\n closeRemovedItems(changes: VariableChanges): void {\n if (!changes || !changes.removed || changes.removed.length === 0) {\n return;\n }\n\n const { closeObject } = this.props;\n const { removed } = changes;\n removed.forEach(object => closeObject(object));\n }\n\n updateHistory(\n result: { changes: unknown },\n historyItemParam: ConsoleHistoryActionItem\n ): void {\n const historyItem = historyItemParam;\n if (!result || !result.changes || !historyItem) {\n return;\n }\n\n historyItem.endTime = Date.now();\n\n this.scrollConsoleHistoryToBottom();\n\n // Update history to re-render items as necessary\n this.setState(state => {\n const consoleHistory = state.consoleHistory.concat();\n return { consoleHistory };\n });\n }\n\n updateKnownObjects(historyItem: ConsoleHistoryActionItem): void {\n let changes: undefined | VariableChanges;\n if (historyItem.result) {\n changes = historyItem.result.changes;\n }\n if (\n !changes ||\n ((!changes.created || changes.created.length === 0) &&\n (!changes.updated || changes.updated.length === 0) &&\n (!changes.removed || changes.removed.length === 0))\n ) {\n log.debug2('updateKnownObjects no changes');\n return;\n }\n\n this.setState(state => {\n const history = state.consoleHistory.concat();\n const itemIndex = history.lastIndexOf(historyItem);\n if (itemIndex < 0) {\n log.error(`historyItem not found in state.consoleHistory`);\n return null;\n }\n\n const objectHistoryMap = new Map(state.objectHistoryMap);\n const objectMap = new Map(state.objectMap);\n\n const disableOldObject = (\n object: VariableDefinition,\n isRemoved = false\n ) => {\n const { title } = object;\n assertNotNull(title);\n const oldIndex = objectHistoryMap.get(title);\n // oldIndex can be -1 if a object is active but doesn't have a command in consoleHistory\n // this can happen after clearing the console using 'clear' or 'cls' command\n\n if (oldIndex != null && oldIndex >= 0) {\n // disable outdated object variable in the old consoleHistory item\n history[oldIndex].disabledObjects = [\n ...(history[oldIndex].disabledObjects ?? []),\n title,\n ];\n }\n objectHistoryMap.set(title, itemIndex);\n if (isRemoved) {\n objectMap.delete(title);\n } else {\n objectMap.set(title, object);\n }\n };\n\n changes?.updated.forEach(object => disableOldObject(object));\n changes?.removed.forEach(object => disableOldObject(object, true));\n\n // Created objects have to be processed after removed\n // in case the same object name is present in both removed and created\n changes?.created.forEach(object => {\n const { title } = object;\n assertNotNull(title);\n objectHistoryMap.set(title, itemIndex);\n objectMap.set(title, object);\n });\n\n return { objectHistoryMap, objectMap, consoleHistory: history };\n });\n }\n\n updateObjectMap(): void {\n const { objectMap } = this.props;\n this.setState({ objectMap });\n }\n\n /**\n * Updates an existing workspace CommandHistoryItem\n * @param result The result to store with the history item. Could be empty object for success\n * @param workspaceItemPromise The workspace data row promise for the workspace item to be updated\n */\n updateWorkspaceHistoryItem(\n result: { error?: string },\n workspaceItemPromise: Promise<CommandHistoryStorageItem>\n ): void {\n const promise = this.pending.add(workspaceItemPromise);\n\n const endTime = new Date().toJSON();\n promise\n .then(workspaceItem => {\n const updatedItem = {\n ...workspaceItem,\n data: {\n ...workspaceItem.data,\n endTime,\n result,\n },\n };\n\n const { commandHistoryStorage, language } = this.props;\n commandHistoryStorage.updateItem(language, updatedItem).catch(err => {\n log.warn('Error updating command history storage', err);\n });\n })\n .catch(err => {\n log.debug('Error updating workspace history item', err);\n });\n }\n\n scrollConsoleHistoryToBottom(force = false): void {\n const pane = this.consoleHistoryScrollPane.current;\n assertNotNull(pane);\n if (!force && pane.scrollTop < pane.scrollHeight - pane.offsetHeight) {\n return;\n }\n\n window.requestAnimationFrame(() => {\n pane.scrollTop = pane.scrollHeight;\n });\n }\n\n handleScrollPaneScroll(): void {\n const scrollPane = this.consoleHistoryScrollPane.current;\n assertNotNull(scrollPane);\n if (\n scrollPane.scrollTop > 0 &&\n scrollPane.scrollHeight > scrollPane.clientHeight\n ) {\n this.setState({ isScrollDecorationShown: true });\n } else {\n this.setState({ isScrollDecorationShown: false });\n }\n }\n\n handleToggleAutoLaunchPanels(): void {\n this.setState(state => ({\n isAutoLaunchPanelsEnabled: !state.isAutoLaunchPanelsEnabled,\n }));\n }\n\n handleToggleClosePanelsOnDisconnect(): void {\n this.setState(state => ({\n isClosePanelsOnDisconnectEnabled: !state.isClosePanelsOnDisconnectEnabled,\n }));\n }\n\n handleTogglePrintStdout(): void {\n this.setState(state => ({\n isPrintStdOutEnabled: !state.isPrintStdOutEnabled,\n }));\n }\n\n handleUploadCsv(): void {\n this.setState({\n showCsvOverlay: true,\n dragError: null,\n csvUploadInProgress: false,\n });\n }\n\n handleHideCsv(): void {\n this.setState({\n showCsvOverlay: false,\n csvFile: null,\n csvPaste: null,\n dragError: null,\n csvUploadInProgress: false,\n });\n }\n\n handleCsvFileCanceled(): void {\n this.setState({ csvFile: null, csvPaste: null });\n }\n\n handleCsvFileOpened(file: File): void {\n this.setState({ csvFile: file, csvPaste: null });\n }\n\n handleCsvPaste(value: string): void {\n this.setState({ csvFile: null, csvPaste: value });\n }\n\n handleDragEnter(e: DragEvent<HTMLDivElement>): void {\n if (\n !e.dataTransfer ||\n !e.dataTransfer.items ||\n e.dataTransfer.items.length === 0 ||\n e.dataTransfer.items[0].kind === 'string'\n ) {\n return;\n }\n e.preventDefault();\n e.stopPropagation();\n this.setState({ showCsvOverlay: true });\n\n const { items } = e.dataTransfer;\n if (items.length > 1) {\n this.setState({ dragError: CsvOverlay.MULTIPLE_FILE_ERROR });\n return;\n }\n\n const item = items[0];\n if (CsvOverlay.isValidDropItem(item)) {\n this.setState({ dragError: null });\n } else {\n this.setState({ dragError: CsvOverlay.FILE_TYPE_ERROR });\n }\n }\n\n handleDragLeave(e: DragEvent<HTMLDivElement>): void {\n // DragLeave gets fired for every child element, so make sure we're actually leaving the drop zone\n if (\n !e.currentTarget ||\n (e.currentTarget instanceof Element &&\n e.relatedTarget instanceof Element &&\n e.currentTarget.contains(e.relatedTarget))\n ) {\n return;\n }\n e.preventDefault();\n e.stopPropagation();\n this.setState({ showCsvOverlay: false, dragError: null });\n }\n\n handleClearDragError(): void {\n this.setState({ dragError: null });\n }\n\n handleOpenCsvTable(title: string): void {\n const { openObject, commandHistoryStorage, language, scope } = this.props;\n const { consoleHistory, objectMap } = this.state;\n const object = { name: title, title, type: dh.VariableType.TABLE };\n const isExistingObject = objectMap.has(title);\n const historyItem = {\n startTime: Date.now(),\n endTime: Date.now(),\n disabledObjects: [],\n result: {\n changes: {\n created: [],\n updated: [],\n removed: [],\n [isExistingObject ? 'updated' : 'created']: [object],\n },\n },\n };\n const history = consoleHistory.concat(historyItem);\n this.setState({\n consoleHistory: history,\n });\n this.scrollConsoleHistoryToBottom(true);\n this.updateKnownObjects(historyItem);\n openObject({ name: title, title, type: dh.VariableType.TABLE });\n commandHistoryStorage.addItem(language, scope, title, {\n command: title,\n startTime: new Date().toJSON(),\n endTime: new Date().toJSON(),\n });\n }\n\n addConsoleHistoryMessage(message?: string, error?: string): void {\n const { consoleHistory } = this.state;\n const historyItem = {\n command: '',\n startTime: Date.now(),\n endTime: Date.now(),\n result: { message, error },\n };\n const history = consoleHistory.concat(historyItem);\n this.setState({\n consoleHistory: history,\n });\n }\n\n handleCsvUpdate(message: string): void {\n this.addConsoleHistoryMessage(message);\n }\n\n handleCsvError(error: unknown): void {\n this.addConsoleHistoryMessage(undefined, error ? `${error}` : undefined);\n }\n\n handleCsvInProgress(csvUploadInProgress: boolean): void {\n this.setState({ csvUploadInProgress });\n }\n\n handleOverflowActions(): DropdownAction[] {\n const {\n isAutoLaunchPanelsEnabled,\n isClosePanelsOnDisconnectEnabled,\n isPrintStdOutEnabled,\n } = this.state;\n const { actions } = this.props;\n return [\n ...actions,\n {\n title: 'Print Stdout',\n action: this.handleTogglePrintStdout,\n group: ContextActions.groups.high,\n icon: isPrintStdOutEnabled ? vsCheck : undefined,\n order: 10,\n },\n {\n title: 'Auto Launch Panels',\n action: this.handleToggleAutoLaunchPanels,\n group: ContextActions.groups.high,\n icon: isAutoLaunchPanelsEnabled ? vsCheck : undefined,\n order: 20,\n },\n {\n title: 'Close Panels on Disconnect',\n action: this.handleToggleClosePanelsOnDisconnect,\n group: ContextActions.groups.high,\n icon: isClosePanelsOnDisconnectEnabled ? vsCheck : undefined,\n order: 30,\n },\n {\n title: 'Upload Table from File',\n action: this.handleUploadCsv,\n group: ContextActions.groups.high + 10,\n order: 40,\n },\n ];\n }\n\n handleCommandSubmit(command: string): void {\n if (command === 'clear' || command === 'cls') {\n this.clearConsoleHistory();\n } else if (command.length > 0) {\n // Result is handled in this.handleCommandStarted\n const { session } = this.props;\n session.runCode(command).catch(error => {\n log.error('There was an error initiating the command', error);\n });\n } else {\n // Empty command, just pump a blank line out to history\n const historyItem = {\n command: ' ',\n result: {},\n startTime: Date.now(),\n endTime: Date.now(),\n };\n\n this.scrollConsoleHistoryToBottom(true);\n\n this.setState(state => ({\n consoleHistory: state.consoleHistory.concat(historyItem),\n }));\n }\n }\n\n clearConsoleHistory(): void {\n this.pending.cancel();\n\n this.setState(state => {\n // Replace all values with -1 to indicate that table references are still active\n // but don't have corresponding command indexes in consoleHistory\n const objectHistoryMap = new Map(\n [...state.objectHistoryMap.keys()].map(name => [name, -1])\n );\n return { consoleHistory: [], objectHistoryMap };\n });\n }\n\n getObjects = memoize(objectMap => [...objectMap.values()]);\n\n getContextActions = memoize(actions => [\n ...actions,\n {\n action: this.handleClearShortcut,\n shortcut: SHORTCUTS.CONSOLE.CLEAR,\n },\n {\n action: this.handleFocusHistory,\n shortcut: SHORTCUTS.CONSOLE.FOCUS_HISTORY,\n },\n ]);\n\n addCommand(command: string, focus = true, execute = false): void {\n if (!this.consoleInput.current) {\n return;\n }\n this.consoleInput.current.setConsoleText(command, focus, execute);\n\n if (focus) {\n this.scrollConsoleHistoryToBottom(true);\n }\n }\n\n focus(): void {\n this.consoleInput.current?.focus();\n }\n\n sendSettingsChange(\n prevState: ConsoleState,\n state: ConsoleState,\n checkIfChanged = true\n ): void {\n const keys = Object.keys(DEFAULT_SETTINGS) as Array<keyof Settings>;\n const settings: Record<string, unknown> = {};\n let hasChanges = false;\n for (let i = 0; i < keys.length; i += 1) {\n const key = keys[i];\n const { [key]: setting } = state;\n const { [key]: prevSetting } = prevState;\n if (setting !== prevSetting) {\n hasChanges = true;\n }\n settings[key] = setting;\n }\n if (checkIfChanged && !hasChanges) {\n return;\n }\n const { onSettingsChange } = this.props;\n onSettingsChange(settings);\n }\n\n updateDimensions(): void {\n if (this.consolePane.current) {\n this.setState({\n consoleHeight: this.consolePane.current.clientHeight,\n });\n }\n if (this.consoleInput.current) {\n this.consoleInput.current.updateDimensions();\n }\n }\n\n render(): ReactElement {\n const {\n actions,\n historyChildren,\n language,\n statusBarChildren,\n openObject,\n session,\n scope,\n commandHistoryStorage,\n timeZone,\n disabled,\n unzip,\n } = this.props;\n const {\n consoleHeight,\n consoleHistory,\n isScrollDecorationShown,\n objectMap,\n showCsvOverlay,\n csvFile,\n csvPaste,\n dragError,\n csvUploadInProgress,\n } = this.state;\n const consoleMenuObjects = this.getObjects(objectMap);\n const inputMaxHeight = Math.round(consoleHeight * 0.7);\n const contextActions = this.getContextActions(actions);\n\n return (\n <div\n role=\"presentation\"\n className={classNames('iris-console', 'h-100', 'w-100', { disabled })}\n >\n <div className=\"console-pane\" ref={this.consolePane}>\n <ConsoleStatusBar\n session={session}\n overflowActions={this.handleOverflowActions()}\n openObject={openObject}\n objects={consoleMenuObjects}\n >\n {statusBarChildren}\n </ConsoleStatusBar>\n <div\n className=\"console-csv-container\"\n onDragOver={CsvOverlay.handleDragOver}\n onDragEnter={this.handleDragEnter}\n onDragLeave={this.handleDragLeave}\n >\n {showCsvOverlay && (\n <CsvOverlay\n onCancel={this.handleCsvFileCanceled}\n onFileOpened={this.handleCsvFileOpened}\n onPaste={this.handleCsvPaste}\n clearDragError={this.handleClearDragError}\n dragError={dragError}\n onError={this.handleCsvError}\n uploadInProgress={csvUploadInProgress}\n allowZip={unzip != null}\n />\n )}\n <div\n role=\"presentation\"\n className={classNames('scroll-pane no-scroll-x', {\n 'scroll-decoration': isScrollDecorationShown,\n })}\n onScroll={this.handleScrollPaneScroll}\n ref={this.consoleHistoryScrollPane}\n >\n <ConsoleHistory\n items={consoleHistory}\n openObject={openObject}\n language={language}\n disabled={disabled}\n />\n {historyChildren}\n </div>\n </div>\n {!showCsvOverlay && (\n <ConsoleInput\n ref={this.consoleInput}\n session={session}\n language={language}\n scope={scope}\n onSubmit={this.handleCommandSubmit}\n maxHeight={inputMaxHeight}\n commandHistoryStorage={commandHistoryStorage}\n />\n )}\n {showCsvOverlay && (\n <CsvInputBar\n session={session}\n onOpenTable={this.handleOpenCsvTable}\n onClose={this.handleHideCsv}\n onUpdate={this.handleCsvUpdate}\n onError={this.handleCsvError}\n file={csvFile ?? undefined}\n paste={csvPaste ?? undefined}\n onInProgress={this.handleCsvInProgress}\n timeZone={timeZone}\n unzip={unzip}\n />\n )}\n </div>\n <ContextActions\n actions={contextActions}\n ignoreClassNames={[ConsoleInput.INPUT_CLASS_NAME]}\n />\n </div>\n );\n }\n}\n\nexport default Console;\n"],"file":"Console.js"}
1
+ {"version":3,"sources":["../src/Console.tsx"],"names":["React","PureComponent","ContextActions","vsCheck","classNames","memoize","throttle","dh","Log","assertNotNull","Pending","PromiseUtils","ConsoleHistory","SHORTCUTS","LogLevel","ConsoleInput","CsvOverlay","CsvInputBar","ConsoleStatusBar","log","module","DEFAULT_SETTINGS","isAutoLaunchPanelsEnabled","isPrintStdOutEnabled","isClosePanelsOnDisconnectEnabled","Console","isErrorLevel","logLevel","STDERR","ERROR","FATAL","isOutputLevel","STDOUT","constructor","props","scrollConsoleHistoryToBottom","setState","state","debug2","queuedLogMessages","length","consoleHistory","concat","LOG_THROTTLE","objectMap","values","actions","action","handleClearShortcut","shortcut","CONSOLE","CLEAR","handleFocusHistory","FOCUS_HISTORY","handleCommandResult","bind","handleCommandStarted","handleCommandSubmit","handleLogMessage","handleOverflowActions","handleScrollPaneScroll","handleToggleAutoLaunchPanels","handleToggleClosePanelsOnDisconnect","handleTogglePrintStdout","handleUploadCsv","handleHideCsv","handleCsvFileCanceled","handleCsvFileOpened","handleCsvPaste","handleDragEnter","handleDragLeave","handleClearDragError","handleOpenCsvTable","handleCsvUpdate","handleCsvError","handleCsvInProgress","consolePane","createRef","consoleInput","consoleHistoryScrollPane","pending","settings","consoleHeight","isScrollDecorationShown","objectHistoryMap","Map","showCsvOverlay","csvFile","csvPaste","dragError","csvUploadInProgress","componentDidMount","initConsoleLogging","session","addEventListener","IdeSession","EVENT_COMMANDSTARTED","updateDimensions","componentDidUpdate","prevProps","prevState","sendSettingsChange","updateObjectMap","componentWillUnmount","removeEventListener","cancel","processLogMessageQueue","deinitConsoleLogging","cancelListener","onLogMessage","undefined","event","preventDefault","stopPropagation","current","clear","code","result","detail","wrappedResult","add","historyItem","command","disabledObjects","startTime","Date","now","cancelResult","commandHistoryStorage","language","scope","workspaceItemPromise","addItem","toJSON","catch","err","debug","then","resolved","error","handleCommandError","historyItemParam","updateHistory","updateKnownObjects","updateWorkspaceHistoryItem","closeRemovedItems","changes","openUpdatedItems","isCanceled","history","index","lastIndexOf","endTime","focusCommandHistory","message","queueLogMessage","push","openObject","created","updated","forEach","object","removed","closeObject","itemIndex","disableOldObject","isRemoved","title","oldIndex","get","set","delete","promise","workspaceItem","updatedItem","data","updateItem","warn","force","pane","scrollTop","scrollHeight","offsetHeight","window","requestAnimationFrame","scrollPane","clientHeight","file","value","e","dataTransfer","items","kind","MULTIPLE_FILE_ERROR","item","isValidDropItem","FILE_TYPE_ERROR","currentTarget","Element","relatedTarget","contains","name","type","VariableType","TABLE","isExistingObject","has","addConsoleHistoryMessage","group","groups","high","icon","order","clearConsoleHistory","runCode","keys","map","addCommand","focus","execute","setConsoleText","checkIfChanged","Object","hasChanges","i","key","setting","prevSetting","onSettingsChange","render","historyChildren","statusBarChildren","timeZone","disabled","unzip","consoleMenuObjects","getObjects","inputMaxHeight","Math","round","contextActions","getContextActions","handleDragOver","INPUT_CLASS_NAME"],"mappings":"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","sourcesContent":["/**\n * Console display for use in the Iris environment.\n */\nimport React, {\n DragEvent,\n PureComponent,\n ReactElement,\n ReactNode,\n RefObject,\n} from 'react';\nimport { ContextActions, DropdownAction } from '@deephaven/components';\nimport { vsCheck } from '@deephaven/icons';\nimport classNames from 'classnames';\nimport memoize from 'memoize-one';\nimport throttle from 'lodash.throttle';\nimport type { JSZipObject } from 'jszip';\nimport dh, {\n IdeSession,\n LogItem,\n VariableChanges,\n VariableDefinition,\n} from '@deephaven/jsapi-shim';\nimport Log from '@deephaven/log';\nimport { assertNotNull, Pending, PromiseUtils } from '@deephaven/utils';\nimport ConsoleHistory from './console-history/ConsoleHistory';\nimport { ConsoleHistoryActionItem } from './console-history/ConsoleHistoryTypes';\nimport SHORTCUTS from './ConsoleShortcuts';\nimport LogLevel from './log/LogLevel';\nimport ConsoleInput from './ConsoleInput';\nimport CsvOverlay from './csv/CsvOverlay';\nimport CsvInputBar from './csv/CsvInputBar';\nimport './Console.scss';\nimport ConsoleStatusBar from './ConsoleStatusBar';\nimport {\n CommandHistoryStorage,\n CommandHistoryStorageItem,\n} from './command-history';\n\nconst log = Log.module('Console');\n\ninterface Settings {\n isAutoLaunchPanelsEnabled: boolean;\n isPrintStdOutEnabled: boolean;\n isClosePanelsOnDisconnectEnabled: boolean;\n}\n\nconst DEFAULT_SETTINGS: Settings = {\n isAutoLaunchPanelsEnabled: true,\n isPrintStdOutEnabled: true,\n isClosePanelsOnDisconnectEnabled: true,\n} as const;\n\ninterface ConsoleProps {\n statusBarChildren: ReactNode;\n settings: Partial<Settings>;\n focusCommandHistory: () => void;\n openObject: (object: VariableDefinition) => void;\n closeObject: (object: VariableDefinition) => void;\n session: IdeSession;\n language: string;\n commandHistoryStorage: CommandHistoryStorage;\n onSettingsChange: (settings: Record<string, unknown>) => void;\n scope: string;\n actions: DropdownAction[];\n timeZone: string;\n\n // Children shown at the bottom of the console history\n historyChildren: ReactNode;\n\n // Known object map\n objectMap: Map<string, VariableDefinition>;\n\n disabled: boolean;\n\n /**\n * Function to unzip a zip file. If not provided, zip files will not be accepted\n * (file:File) => Promise<File[]>\n */\n unzip: (file: File) => Promise<JSZipObject[]>;\n}\n\ninterface ConsoleState {\n // Need separate histories as console history has stdout/stderr output\n consoleHistory: ConsoleHistoryActionItem[];\n\n // Height of the viewport of the console input and history\n consoleHeight: number;\n\n isScrollDecorationShown: boolean;\n\n // Location of objects in the console history\n objectHistoryMap: Map<string, number>;\n\n // The object definitions, name/type\n objectMap: Map<string, VariableDefinition>;\n\n showCsvOverlay: boolean;\n csvFile: File | null;\n csvPaste: string | null;\n dragError: string | null;\n csvUploadInProgress: boolean;\n isAutoLaunchPanelsEnabled: boolean;\n isPrintStdOutEnabled: boolean;\n isClosePanelsOnDisconnectEnabled: boolean;\n}\nexport class Console extends PureComponent<ConsoleProps, ConsoleState> {\n static defaultProps = {\n statusBarChildren: null,\n settings: {},\n onSettingsChange: (): void => undefined,\n scope: null,\n actions: [],\n historyChildren: null,\n timeZone: 'America/New_York',\n objectMap: new Map(),\n disabled: false,\n unzip: null,\n };\n\n static LOG_THROTTLE = 500;\n\n /**\n * Check if the provided log level is an error type\n * @param logLevel The LogLevel being checked\n * @returns true if the log level is an error level log\n */\n static isErrorLevel(\n logLevel: typeof LogLevel[keyof typeof LogLevel]\n ): boolean {\n return (\n logLevel === LogLevel.STDERR ||\n logLevel === LogLevel.ERROR ||\n logLevel === LogLevel.FATAL\n );\n }\n\n /**\n * Check if the provided log level is output level\n * @param logLevel The LogLevel being checked\n * @returns true if the log level should be output to the console\n */\n static isOutputLevel(logLevel: string): boolean {\n // We want all errors to be output, in addition to STDOUT.\n // That way the user is more likely to see them.\n return logLevel === LogLevel.STDOUT || Console.isErrorLevel(logLevel);\n }\n\n constructor(props: ConsoleProps) {\n super(props);\n\n this.handleCommandResult = this.handleCommandResult.bind(this);\n this.handleCommandStarted = this.handleCommandStarted.bind(this);\n this.handleCommandSubmit = this.handleCommandSubmit.bind(this);\n this.handleClearShortcut = this.handleClearShortcut.bind(this);\n this.handleFocusHistory = this.handleFocusHistory.bind(this);\n this.handleLogMessage = this.handleLogMessage.bind(this);\n this.handleOverflowActions = this.handleOverflowActions.bind(this);\n this.handleScrollPaneScroll = this.handleScrollPaneScroll.bind(this);\n this.handleToggleAutoLaunchPanels = this.handleToggleAutoLaunchPanels.bind(\n this\n );\n this.handleToggleClosePanelsOnDisconnect = this.handleToggleClosePanelsOnDisconnect.bind(\n this\n );\n this.handleTogglePrintStdout = this.handleTogglePrintStdout.bind(this);\n this.handleUploadCsv = this.handleUploadCsv.bind(this);\n this.handleHideCsv = this.handleHideCsv.bind(this);\n this.handleCsvFileCanceled = this.handleCsvFileCanceled.bind(this);\n this.handleCsvFileOpened = this.handleCsvFileOpened.bind(this);\n this.handleCsvPaste = this.handleCsvPaste.bind(this);\n this.handleDragEnter = this.handleDragEnter.bind(this);\n this.handleDragLeave = this.handleDragLeave.bind(this);\n this.handleClearDragError = this.handleClearDragError.bind(this);\n this.handleOpenCsvTable = this.handleOpenCsvTable.bind(this);\n this.handleCsvUpdate = this.handleCsvUpdate.bind(this);\n this.handleCsvError = this.handleCsvError.bind(this);\n this.handleCsvInProgress = this.handleCsvInProgress.bind(this);\n\n this.consolePane = React.createRef();\n this.consoleInput = React.createRef();\n this.consoleHistoryScrollPane = React.createRef();\n this.pending = new Pending();\n this.queuedLogMessages = [];\n\n const { objectMap, settings } = this.props;\n\n this.state = {\n // Need separate histories as console history has stdout/stderr output\n consoleHistory: [],\n\n // Height of the viewport of the console input and history\n consoleHeight: 0,\n\n isScrollDecorationShown: false,\n\n // Location of objects in the console history\n objectHistoryMap: new Map(),\n\n // The object definitions, name/type\n objectMap: new Map(objectMap),\n\n showCsvOverlay: false,\n csvFile: null,\n csvPaste: null,\n dragError: null,\n csvUploadInProgress: false,\n\n ...DEFAULT_SETTINGS,\n ...settings,\n };\n }\n\n componentDidMount(): void {\n this.initConsoleLogging();\n\n const { session } = this.props;\n session.addEventListener(\n dh.IdeSession.EVENT_COMMANDSTARTED,\n this.handleCommandStarted\n );\n\n this.updateDimensions();\n }\n\n componentDidUpdate(prevProps: ConsoleProps, prevState: ConsoleState): void {\n const { props, state } = this;\n this.sendSettingsChange(prevState, state);\n\n if (props.objectMap !== prevProps.objectMap) {\n this.updateObjectMap();\n }\n }\n\n componentWillUnmount(): void {\n const { session } = this.props;\n\n session.removeEventListener(\n dh.IdeSession.EVENT_COMMANDSTARTED,\n this.handleCommandStarted\n );\n\n this.pending.cancel();\n this.processLogMessageQueue.cancel();\n\n this.deinitConsoleLogging();\n }\n\n cancelListener?: () => void;\n\n consolePane: RefObject<HTMLDivElement>;\n\n consoleInput: RefObject<ConsoleInput>;\n\n consoleHistoryScrollPane: RefObject<HTMLDivElement>;\n\n pending: Pending;\n\n queuedLogMessages: ConsoleHistoryActionItem[];\n\n initConsoleLogging(): void {\n const { session } = this.props;\n this.cancelListener = session.onLogMessage(this.handleLogMessage);\n }\n\n deinitConsoleLogging(): void {\n if (this.cancelListener != null) {\n this.cancelListener();\n this.cancelListener = undefined;\n }\n }\n\n handleClearShortcut(event: CustomEvent): void {\n event.preventDefault();\n event.stopPropagation();\n\n this.consoleInput.current?.clear();\n }\n\n handleCommandStarted(event: CustomEvent): void {\n const { code, result } = event.detail;\n const wrappedResult = this.pending.add(result);\n const historyItem = {\n command: code,\n disabledObjects: [],\n startTime: Date.now(),\n cancelResult: () => {\n result.cancel();\n },\n wrappedResult,\n };\n\n const { commandHistoryStorage, language, scope } = this.props;\n const workspaceItemPromise = commandHistoryStorage.addItem(\n language,\n scope,\n code,\n {\n command: code,\n startTime: new Date().toJSON(),\n }\n );\n workspaceItemPromise.catch(err => {\n log.debug('Error adding workspace item', err);\n });\n\n this.setState(\n state => ({\n consoleHistory: state.consoleHistory.concat(historyItem),\n }),\n () => {\n this.scrollConsoleHistoryToBottom(true);\n }\n );\n\n wrappedResult\n .then(resolved => {\n this.handleCommandResult(resolved, historyItem, workspaceItemPromise);\n })\n .catch(error => {\n this.handleCommandError(error, historyItem, workspaceItemPromise);\n });\n }\n\n handleCommandResult(\n result:\n | {\n message: string;\n error?: string;\n changes: VariableChanges;\n }\n | undefined,\n historyItemParam: ConsoleHistoryActionItem,\n workspaceItemPromise: Promise<CommandHistoryStorageItem>\n ): void {\n const historyItem = historyItemParam;\n historyItem.wrappedResult = undefined;\n historyItem.cancelResult = undefined;\n\n if (!result) {\n return;\n }\n\n historyItem.result = result;\n\n this.updateHistory(result, historyItem);\n this.updateKnownObjects(historyItem);\n this.updateWorkspaceHistoryItem(\n { error: result.error },\n workspaceItemPromise\n );\n\n this.closeRemovedItems(result.changes);\n this.openUpdatedItems(result.changes);\n }\n\n handleCommandError(\n error: unknown,\n historyItemParam: ConsoleHistoryActionItem,\n workspaceItemPromise: Promise<CommandHistoryStorageItem>\n ): void {\n const historyItem = historyItemParam;\n historyItem.wrappedResult = undefined;\n historyItem.cancelResult = undefined;\n\n if (PromiseUtils.isCanceled(error)) {\n log.debug('Called handleCommandError on a cancelled promise result');\n return;\n }\n\n this.updateWorkspaceHistoryItem(\n { error: `${error}` },\n workspaceItemPromise\n );\n\n this.setState(state => {\n const history = state.consoleHistory.concat();\n const index = history.lastIndexOf(historyItem);\n historyItem.endTime = Date.now();\n historyItem.result = { error };\n history[index] = { ...historyItem };\n return {\n consoleHistory: history,\n };\n });\n }\n\n handleFocusHistory(event: CustomEvent): void {\n event.preventDefault();\n event.stopPropagation();\n\n const { focusCommandHistory } = this.props;\n focusCommandHistory();\n }\n\n handleLogMessage(message: LogItem): void {\n const { isPrintStdOutEnabled } = this.state;\n if (!isPrintStdOutEnabled) {\n return;\n }\n\n if (Console.isOutputLevel(message.logLevel)) {\n this.queueLogMessage(message.message, message.logLevel);\n }\n }\n\n queueLogMessage(message: string, logLevel: string): void {\n const result: Record<string, string> = {};\n if (Console.isErrorLevel(logLevel)) {\n result.error = message;\n } else {\n result.message = message;\n }\n\n const historyItem = { command: undefined, result };\n\n this.queuedLogMessages.push(historyItem);\n\n this.processLogMessageQueue();\n }\n\n processLogMessageQueue = throttle(() => {\n this.scrollConsoleHistoryToBottom();\n\n this.setState(state => {\n log.debug2(\n 'processLogMessageQueue',\n this.queuedLogMessages.length,\n ' items'\n );\n\n let { consoleHistory } = state;\n consoleHistory = consoleHistory.concat(this.queuedLogMessages);\n this.queuedLogMessages = [];\n\n return { consoleHistory };\n });\n }, Console.LOG_THROTTLE);\n\n openUpdatedItems(changes: VariableChanges): void {\n const { isAutoLaunchPanelsEnabled } = this.state;\n if (!changes || !isAutoLaunchPanelsEnabled) {\n return;\n }\n\n const { openObject } = this.props;\n [...changes.created, ...changes.updated].forEach(object =>\n openObject(object)\n );\n }\n\n closeRemovedItems(changes: VariableChanges): void {\n if (!changes || !changes.removed || changes.removed.length === 0) {\n return;\n }\n\n const { closeObject } = this.props;\n const { removed } = changes;\n removed.forEach(object => closeObject(object));\n }\n\n updateHistory(\n result: { changes: unknown },\n historyItemParam: ConsoleHistoryActionItem\n ): void {\n const historyItem = historyItemParam;\n if (!result || !result.changes || !historyItem) {\n return;\n }\n\n historyItem.endTime = Date.now();\n\n this.scrollConsoleHistoryToBottom();\n\n // Update history to re-render items as necessary\n this.setState(state => {\n const consoleHistory = state.consoleHistory.concat();\n return { consoleHistory };\n });\n }\n\n updateKnownObjects(historyItem: ConsoleHistoryActionItem): void {\n let changes: undefined | VariableChanges;\n if (historyItem.result) {\n changes = historyItem.result.changes;\n }\n if (\n !changes ||\n ((!changes.created || changes.created.length === 0) &&\n (!changes.updated || changes.updated.length === 0) &&\n (!changes.removed || changes.removed.length === 0))\n ) {\n log.debug2('updateKnownObjects no changes');\n return;\n }\n\n this.setState(state => {\n const history = state.consoleHistory.concat();\n const itemIndex = history.lastIndexOf(historyItem);\n if (itemIndex < 0) {\n log.error(`historyItem not found in state.consoleHistory`);\n return null;\n }\n\n const objectHistoryMap = new Map(state.objectHistoryMap);\n const objectMap = new Map(state.objectMap);\n\n const disableOldObject = (\n object: VariableDefinition,\n isRemoved = false\n ) => {\n const { title } = object;\n assertNotNull(title);\n const oldIndex = objectHistoryMap.get(title);\n // oldIndex can be -1 if a object is active but doesn't have a command in consoleHistory\n // this can happen after clearing the console using 'clear' or 'cls' command\n\n if (oldIndex != null && oldIndex >= 0) {\n // disable outdated object variable in the old consoleHistory item\n history[oldIndex].disabledObjects = [\n ...(history[oldIndex].disabledObjects ?? []),\n title,\n ];\n }\n objectHistoryMap.set(title, itemIndex);\n if (isRemoved) {\n objectMap.delete(title);\n } else {\n objectMap.set(title, object);\n }\n };\n\n changes?.updated.forEach(object => disableOldObject(object));\n changes?.removed.forEach(object => disableOldObject(object, true));\n\n // Created objects have to be processed after removed\n // in case the same object name is present in both removed and created\n changes?.created.forEach(object => {\n const { title } = object;\n assertNotNull(title);\n objectHistoryMap.set(title, itemIndex);\n objectMap.set(title, object);\n });\n\n return { objectHistoryMap, objectMap, consoleHistory: history };\n });\n }\n\n updateObjectMap(): void {\n const { objectMap } = this.props;\n this.setState({ objectMap });\n }\n\n /**\n * Updates an existing workspace CommandHistoryItem\n * @param result The result to store with the history item. Could be empty object for success\n * @param workspaceItemPromise The workspace data row promise for the workspace item to be updated\n */\n updateWorkspaceHistoryItem(\n result: { error?: string },\n workspaceItemPromise: Promise<CommandHistoryStorageItem>\n ): void {\n const promise = this.pending.add(workspaceItemPromise);\n\n const endTime = new Date().toJSON();\n promise\n .then(workspaceItem => {\n const updatedItem = {\n ...workspaceItem,\n data: {\n ...workspaceItem.data,\n endTime,\n result,\n },\n };\n\n const { commandHistoryStorage, language } = this.props;\n commandHistoryStorage.updateItem(language, updatedItem).catch(err => {\n log.warn('Error updating command history storage', err);\n });\n })\n .catch(err => {\n log.debug('Error updating workspace history item', err);\n });\n }\n\n scrollConsoleHistoryToBottom(force = false): void {\n const pane = this.consoleHistoryScrollPane.current;\n assertNotNull(pane);\n if (!force && pane.scrollTop < pane.scrollHeight - pane.offsetHeight) {\n return;\n }\n\n window.requestAnimationFrame(() => {\n pane.scrollTop = pane.scrollHeight;\n });\n }\n\n handleScrollPaneScroll(): void {\n const scrollPane = this.consoleHistoryScrollPane.current;\n assertNotNull(scrollPane);\n if (\n scrollPane.scrollTop > 0 &&\n scrollPane.scrollHeight > scrollPane.clientHeight\n ) {\n this.setState({ isScrollDecorationShown: true });\n } else {\n this.setState({ isScrollDecorationShown: false });\n }\n }\n\n handleToggleAutoLaunchPanels(): void {\n this.setState(state => ({\n isAutoLaunchPanelsEnabled: !state.isAutoLaunchPanelsEnabled,\n }));\n }\n\n handleToggleClosePanelsOnDisconnect(): void {\n this.setState(state => ({\n isClosePanelsOnDisconnectEnabled: !state.isClosePanelsOnDisconnectEnabled,\n }));\n }\n\n handleTogglePrintStdout(): void {\n this.setState(state => ({\n isPrintStdOutEnabled: !state.isPrintStdOutEnabled,\n }));\n }\n\n handleUploadCsv(): void {\n this.setState({\n showCsvOverlay: true,\n dragError: null,\n csvUploadInProgress: false,\n });\n }\n\n handleHideCsv(): void {\n this.setState({\n showCsvOverlay: false,\n csvFile: null,\n csvPaste: null,\n dragError: null,\n csvUploadInProgress: false,\n });\n }\n\n handleCsvFileCanceled(): void {\n this.setState({ csvFile: null, csvPaste: null });\n }\n\n handleCsvFileOpened(file: File): void {\n this.setState({ csvFile: file, csvPaste: null });\n }\n\n handleCsvPaste(value: string): void {\n this.setState({ csvFile: null, csvPaste: value });\n }\n\n handleDragEnter(e: DragEvent<HTMLDivElement>): void {\n if (\n !e.dataTransfer ||\n !e.dataTransfer.items ||\n e.dataTransfer.items.length === 0 ||\n e.dataTransfer.items[0].kind === 'string'\n ) {\n return;\n }\n e.preventDefault();\n e.stopPropagation();\n this.setState({ showCsvOverlay: true });\n\n const { items } = e.dataTransfer;\n if (items.length > 1) {\n this.setState({ dragError: CsvOverlay.MULTIPLE_FILE_ERROR });\n return;\n }\n\n const item = items[0];\n if (CsvOverlay.isValidDropItem(item)) {\n this.setState({ dragError: null });\n } else {\n this.setState({ dragError: CsvOverlay.FILE_TYPE_ERROR });\n }\n }\n\n handleDragLeave(e: DragEvent<HTMLDivElement>): void {\n // DragLeave gets fired for every child element, so make sure we're actually leaving the drop zone\n if (\n !e.currentTarget ||\n (e.currentTarget instanceof Element &&\n e.relatedTarget instanceof Element &&\n e.currentTarget.contains(e.relatedTarget))\n ) {\n return;\n }\n e.preventDefault();\n e.stopPropagation();\n this.setState({ showCsvOverlay: false, dragError: null });\n }\n\n handleClearDragError(): void {\n this.setState({ dragError: null });\n }\n\n handleOpenCsvTable(title: string): void {\n const { openObject, commandHistoryStorage, language, scope } = this.props;\n const { consoleHistory, objectMap } = this.state;\n const object = { name: title, title, type: dh.VariableType.TABLE };\n const isExistingObject = objectMap.has(title);\n const historyItem = {\n startTime: Date.now(),\n endTime: Date.now(),\n disabledObjects: [],\n result: {\n changes: {\n created: [],\n updated: [],\n removed: [],\n [isExistingObject ? 'updated' : 'created']: [object],\n },\n },\n };\n const history = consoleHistory.concat(historyItem);\n this.setState({\n consoleHistory: history,\n });\n this.scrollConsoleHistoryToBottom(true);\n this.updateKnownObjects(historyItem);\n openObject({ name: title, title, type: dh.VariableType.TABLE });\n commandHistoryStorage.addItem(language, scope, title, {\n command: title,\n startTime: new Date().toJSON(),\n endTime: new Date().toJSON(),\n });\n }\n\n addConsoleHistoryMessage(message?: string, error?: string): void {\n const { consoleHistory } = this.state;\n const historyItem = {\n command: '',\n startTime: Date.now(),\n endTime: Date.now(),\n result: { message, error },\n };\n const history = consoleHistory.concat(historyItem);\n this.setState({\n consoleHistory: history,\n });\n }\n\n handleCsvUpdate(message: string): void {\n this.addConsoleHistoryMessage(message);\n }\n\n handleCsvError(error: unknown): void {\n this.addConsoleHistoryMessage(undefined, error ? `${error}` : undefined);\n }\n\n handleCsvInProgress(csvUploadInProgress: boolean): void {\n this.setState({ csvUploadInProgress });\n }\n\n handleOverflowActions(): DropdownAction[] {\n const {\n isAutoLaunchPanelsEnabled,\n isClosePanelsOnDisconnectEnabled,\n isPrintStdOutEnabled,\n } = this.state;\n const { actions } = this.props;\n return [\n ...actions,\n {\n title: 'Print Stdout',\n action: this.handleTogglePrintStdout,\n group: ContextActions.groups.high,\n icon: isPrintStdOutEnabled ? vsCheck : undefined,\n order: 10,\n },\n {\n title: 'Auto Launch Panels',\n action: this.handleToggleAutoLaunchPanels,\n group: ContextActions.groups.high,\n icon: isAutoLaunchPanelsEnabled ? vsCheck : undefined,\n order: 20,\n },\n {\n title: 'Close Panels on Disconnect',\n action: this.handleToggleClosePanelsOnDisconnect,\n group: ContextActions.groups.high,\n icon: isClosePanelsOnDisconnectEnabled ? vsCheck : undefined,\n order: 30,\n },\n {\n title: 'Upload Table from File',\n action: this.handleUploadCsv,\n group: ContextActions.groups.high + 10,\n order: 40,\n },\n ];\n }\n\n handleCommandSubmit(command: string): void {\n if (command === 'clear' || command === 'cls') {\n this.clearConsoleHistory();\n } else if (command.length > 0) {\n // Result is handled in this.handleCommandStarted\n const { session } = this.props;\n session.runCode(command).catch(error => {\n log.error('There was an error initiating the command', error);\n });\n } else {\n // Empty command, just pump a blank line out to history\n const historyItem = {\n command: ' ',\n result: {},\n startTime: Date.now(),\n endTime: Date.now(),\n };\n\n this.scrollConsoleHistoryToBottom(true);\n\n this.setState(state => ({\n consoleHistory: state.consoleHistory.concat(historyItem),\n }));\n }\n }\n\n clearConsoleHistory(): void {\n this.pending.cancel();\n\n this.setState(state => {\n // Replace all values with -1 to indicate that table references are still active\n // but don't have corresponding command indexes in consoleHistory\n const objectHistoryMap = new Map(\n [...state.objectHistoryMap.keys()].map(name => [name, -1])\n );\n return { consoleHistory: [], objectHistoryMap };\n });\n }\n\n getObjects = memoize(objectMap => [...objectMap.values()]);\n\n getContextActions = memoize(actions => [\n ...actions,\n {\n action: this.handleClearShortcut,\n shortcut: SHORTCUTS.CONSOLE.CLEAR,\n },\n {\n action: this.handleFocusHistory,\n shortcut: SHORTCUTS.CONSOLE.FOCUS_HISTORY,\n },\n ]);\n\n addCommand(command: string, focus = true, execute = false): void {\n if (!this.consoleInput.current) {\n return;\n }\n this.consoleInput.current.setConsoleText(command, focus, execute);\n\n if (focus) {\n this.scrollConsoleHistoryToBottom(true);\n }\n }\n\n focus(): void {\n this.consoleInput.current?.focus();\n }\n\n sendSettingsChange(\n prevState: ConsoleState,\n state: ConsoleState,\n checkIfChanged = true\n ): void {\n const keys = Object.keys(DEFAULT_SETTINGS) as Array<keyof Settings>;\n const settings: Record<string, unknown> = {};\n let hasChanges = false;\n for (let i = 0; i < keys.length; i += 1) {\n const key = keys[i];\n const { [key]: setting } = state;\n const { [key]: prevSetting } = prevState;\n if (setting !== prevSetting) {\n hasChanges = true;\n }\n settings[key] = setting;\n }\n if (checkIfChanged && !hasChanges) {\n return;\n }\n const { onSettingsChange } = this.props;\n onSettingsChange(settings);\n }\n\n updateDimensions(): void {\n if (this.consolePane.current) {\n this.setState({\n consoleHeight: this.consolePane.current.clientHeight,\n });\n }\n if (this.consoleInput.current) {\n this.consoleInput.current.updateDimensions();\n }\n }\n\n render(): ReactElement {\n const {\n actions,\n historyChildren,\n language,\n statusBarChildren,\n openObject,\n session,\n scope,\n commandHistoryStorage,\n timeZone,\n disabled,\n unzip,\n } = this.props;\n const {\n consoleHeight,\n consoleHistory,\n isScrollDecorationShown,\n objectMap,\n showCsvOverlay,\n csvFile,\n csvPaste,\n dragError,\n csvUploadInProgress,\n } = this.state;\n const consoleMenuObjects = this.getObjects(objectMap);\n const inputMaxHeight = Math.round(consoleHeight * 0.7);\n const contextActions = this.getContextActions(actions);\n\n return (\n <div\n role=\"presentation\"\n className={classNames('iris-console', 'h-100', 'w-100', { disabled })}\n >\n <div className=\"console-pane\" ref={this.consolePane}>\n <ConsoleStatusBar\n session={session}\n overflowActions={this.handleOverflowActions()}\n openObject={openObject}\n objects={consoleMenuObjects}\n >\n {statusBarChildren}\n </ConsoleStatusBar>\n <div\n className=\"console-csv-container\"\n onDragOver={CsvOverlay.handleDragOver}\n onDragEnter={this.handleDragEnter}\n onDragLeave={this.handleDragLeave}\n >\n {showCsvOverlay && (\n <CsvOverlay\n onCancel={this.handleCsvFileCanceled}\n onFileOpened={this.handleCsvFileOpened}\n onPaste={this.handleCsvPaste}\n clearDragError={this.handleClearDragError}\n dragError={dragError}\n onError={this.handleCsvError}\n uploadInProgress={csvUploadInProgress}\n allowZip={unzip != null}\n />\n )}\n <div\n role=\"presentation\"\n className={classNames('scroll-pane no-scroll-x', {\n 'scroll-decoration': isScrollDecorationShown,\n })}\n onScroll={this.handleScrollPaneScroll}\n ref={this.consoleHistoryScrollPane}\n >\n <ConsoleHistory\n items={consoleHistory}\n openObject={openObject}\n language={language}\n disabled={disabled}\n />\n {historyChildren}\n </div>\n </div>\n {!showCsvOverlay && (\n <ConsoleInput\n ref={this.consoleInput}\n session={session}\n language={language}\n scope={scope}\n onSubmit={this.handleCommandSubmit}\n maxHeight={inputMaxHeight}\n commandHistoryStorage={commandHistoryStorage}\n />\n )}\n {showCsvOverlay && (\n <CsvInputBar\n session={session}\n onOpenTable={this.handleOpenCsvTable}\n onClose={this.handleHideCsv}\n onUpdate={this.handleCsvUpdate}\n onError={this.handleCsvError}\n file={csvFile ?? undefined}\n paste={csvPaste ?? undefined}\n onInProgress={this.handleCsvInProgress}\n timeZone={timeZone}\n unzip={unzip}\n />\n )}\n </div>\n <ContextActions\n actions={contextActions}\n ignoreClassNames={[ConsoleInput.INPUT_CLASS_NAME]}\n />\n </div>\n );\n }\n}\n\nexport default Console;\n"],"file":"Console.js"}
@@ -14,7 +14,7 @@ declare class ConsoleUtils {
14
14
  /**
15
15
  * Given the provided text, parse out arguments using shell quoting rules.
16
16
  * @param str The text to parse.
17
- * @return string[] of the arguments. Empty if no arguments found.
17
+ * @returns string[] of the arguments. Empty if no arguments found.
18
18
  */
19
19
  static parseArguments(str: unknown): string[];
20
20
  static formatTimestamp(date: Date): string | null;
@@ -16,7 +16,7 @@ class ConsoleUtils {
16
16
  /**
17
17
  * Given the provided text, parse out arguments using shell quoting rules.
18
18
  * @param str The text to parse.
19
- * @return string[] of the arguments. Empty if no arguments found.
19
+ * @returns string[] of the arguments. Empty if no arguments found.
20
20
  */
21
21
 
22
22
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/common/ConsoleUtils.ts"],"names":["ShellQuote","dh","ConsoleUtils","hasComment","arg","comment","undefined","hasPattern","pattern","hasOp","op","parseArguments","str","String","parse","filter","map","formatTimestamp","date","Date","hours","getHours","padStart","minutes","getMinutes","seconds","getSeconds","milliseconds","getMilliseconds","isTableType","type","VariableType","TABLE","TREETABLE","isWidgetType","FIGURE","OTHERWIDGET","PANDAS","isOpenableType","isFigureType","isPandas"],"mappings":"AAAA,OAAOA,UAAP,MAAwD,aAAxD;AACA,OAAOC,EAAP,MAAsC,uBAAtC;;AAEA,MAAMC,YAAN,CAAmB;AACA,SAAVC,UAAU,CAACC,GAAD,EAA8C;AAC7D,WAAQA,GAAD,CAA6BC,OAA7B,KAAyCC,SAAhD;AACD;;AAEgB,SAAVC,UAAU,CAACH,GAAD,EAA0D;AACzE,WAAQA,GAAD,CAA6BI,OAA7B,KAAyCF,SAAhD;AACD;;AAEW,SAALG,KAAK,CAACL,GAAD,EAAkD;AAC5D,WAAQA,GAAD,CAAiCM,EAAjC,KAAwCJ,SAA/C;AACD;AAED;AACF;AACA;AACA;AACA;;;AACuB,SAAdK,cAAc,CAACC,GAAD,EAAyB;AAC5C,QAAI,CAACA,GAAD,IAAQ,EAAE,OAAOA,GAAP,KAAe,QAAf,IAA2BA,GAAG,YAAYC,MAA5C,CAAZ,EAAiE;AAC/D,aAAO,EAAP;AACD,KAH2C,CAK5C;AACA;;;AACA,WAAOb,UAAU,CAACc,KAAX,CAAiBF,GAAjB,EACJG,MADI,CACGX,GAAG,IAAI,CAAC,KAAKD,UAAL,CAAgBC,GAAhB,CADX,EAEJY,GAFI,CAEAZ,GAAG,IAAI;AACV,UAAI,KAAKG,UAAL,CAAgBH,GAAhB,CAAJ,EAA0B;AACxB,eAAOA,GAAG,CAACI,OAAX;AACD;;AACD,UAAI,KAAKC,KAAL,CAAWL,GAAX,CAAJ,EAAqB;AACnB,eAAOA,GAAG,CAACM,EAAX;AACD;;AACD,uBAAUN,GAAV;AACD,KAVI,CAAP;AAWD;;AAEqB,SAAfa,eAAe,CAACC,IAAD,EAA4B;AAChD,QAAI,CAACA,IAAD,IAAS,EAAEA,IAAI,YAAYC,IAAlB,CAAb,EAAsC;AACpC,aAAO,IAAP;AACD;;AAED,QAAMC,KAAK,GAAG,UAAGF,IAAI,CAACG,QAAL,EAAH,EAAqBC,QAArB,CAA8B,CAA9B,EAAiC,GAAjC,CAAd;AACA,QAAMC,OAAO,GAAG,UAAGL,IAAI,CAACM,UAAL,EAAH,EAAuBF,QAAvB,CAAgC,CAAhC,EAAmC,GAAnC,CAAhB;AACA,QAAMG,OAAO,GAAG,UAAGP,IAAI,CAACQ,UAAL,EAAH,EAAuBJ,QAAvB,CAAgC,CAAhC,EAAmC,GAAnC,CAAhB;AACA,QAAMK,YAAY,GAAG,UAAGT,IAAI,CAACU,eAAL,EAAH,EAA4BN,QAA5B,CAAqC,CAArC,EAAwC,GAAxC,CAArB;AAEA,qBAAUF,KAAV,cAAmBG,OAAnB,cAA8BE,OAA9B,cAAyCE,YAAzC;AACD;;AAEiB,SAAXE,WAAW,CAACC,IAAD,EAAmC;AACnD,WAAOA,IAAI,KAAK7B,EAAE,CAAC8B,YAAH,CAAgBC,KAAzB,IAAkCF,IAAI,KAAK7B,EAAE,CAAC8B,YAAH,CAAgBE,SAAlE;AACD;;AAEkB,SAAZC,YAAY,CAACJ,IAAD,EAAmC;AACpD,WACEA,IAAI,KAAK7B,EAAE,CAAC8B,YAAH,CAAgBI,MAAzB,IACAL,IAAI,KAAK7B,EAAE,CAAC8B,YAAH,CAAgBK,WADzB,IAEAN,IAAI,KAAK7B,EAAE,CAAC8B,YAAH,CAAgBM,MAH3B;AAKD;;AAEoB,SAAdC,cAAc,CAACR,IAAD,EAAmC;AACtD,WAAO5B,YAAY,CAAC2B,WAAb,CAAyBC,IAAzB,KAAkC5B,YAAY,CAACgC,YAAb,CAA0BJ,IAA1B,CAAzC;AACD;;AAEkB,SAAZS,YAAY,CAACT,IAAD,EAAmC;AACpD,WAAOA,IAAI,KAAK7B,EAAE,CAAC8B,YAAH,CAAgBI,MAAhC;AACD;;AAEc,SAARK,QAAQ,CAACV,IAAD,EAAmC;AAChD,WAAOA,IAAI,KAAK7B,EAAE,CAAC8B,YAAH,CAAgBM,MAAhC;AACD;;AAzEgB;;AA4EnB,eAAenC,YAAf","sourcesContent":["import ShellQuote, { ParseEntry, ControlOperator } from 'shell-quote';\nimport dh, { VariableTypeUnion } from '@deephaven/jsapi-shim';\n\nclass ConsoleUtils {\n static hasComment(arg: ParseEntry): arg is { comment: string } {\n return (arg as { comment: string }).comment !== undefined;\n }\n\n static hasPattern(arg: ParseEntry): arg is { op: 'glob'; pattern: string } {\n return (arg as { pattern: string }).pattern !== undefined;\n }\n\n static hasOp(arg: ParseEntry): arg is { op: ControlOperator } {\n return (arg as { op: ControlOperator }).op !== undefined;\n }\n\n /**\n * Given the provided text, parse out arguments using shell quoting rules.\n * @param str The text to parse.\n * @return string[] of the arguments. Empty if no arguments found.\n */\n static parseArguments(str: unknown): string[] {\n if (!str || !(typeof str === 'string' || str instanceof String)) {\n return [];\n }\n\n // Parse can return an object, not just a string. See the `ParseEntry` type def for all types\n // We must map them all to strings. Filter out comments that will not be needed as well.\n return ShellQuote.parse(str as string)\n .filter(arg => !this.hasComment(arg))\n .map(arg => {\n if (this.hasPattern(arg)) {\n return arg.pattern;\n }\n if (this.hasOp(arg)) {\n return arg.op;\n }\n return `${arg}`;\n });\n }\n\n static formatTimestamp(date: Date): string | null {\n if (!date || !(date instanceof Date)) {\n return null;\n }\n\n const hours = `${date.getHours()}`.padStart(2, '0');\n const minutes = `${date.getMinutes()}`.padStart(2, '0');\n const seconds = `${date.getSeconds()}`.padStart(2, '0');\n const milliseconds = `${date.getMilliseconds()}`.padStart(3, '0');\n\n return `${hours}:${minutes}:${seconds}.${milliseconds}`;\n }\n\n static isTableType(type: VariableTypeUnion): boolean {\n return type === dh.VariableType.TABLE || type === dh.VariableType.TREETABLE;\n }\n\n static isWidgetType(type: VariableTypeUnion): boolean {\n return (\n type === dh.VariableType.FIGURE ||\n type === dh.VariableType.OTHERWIDGET ||\n type === dh.VariableType.PANDAS\n );\n }\n\n static isOpenableType(type: VariableTypeUnion): boolean {\n return ConsoleUtils.isTableType(type) || ConsoleUtils.isWidgetType(type);\n }\n\n static isFigureType(type: VariableTypeUnion): boolean {\n return type === dh.VariableType.FIGURE;\n }\n\n static isPandas(type: VariableTypeUnion): boolean {\n return type === dh.VariableType.PANDAS;\n }\n}\n\nexport default ConsoleUtils;\n"],"file":"ConsoleUtils.js"}
1
+ {"version":3,"sources":["../../src/common/ConsoleUtils.ts"],"names":["ShellQuote","dh","ConsoleUtils","hasComment","arg","comment","undefined","hasPattern","pattern","hasOp","op","parseArguments","str","String","parse","filter","map","formatTimestamp","date","Date","hours","getHours","padStart","minutes","getMinutes","seconds","getSeconds","milliseconds","getMilliseconds","isTableType","type","VariableType","TABLE","TREETABLE","isWidgetType","FIGURE","OTHERWIDGET","PANDAS","isOpenableType","isFigureType","isPandas"],"mappings":"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","sourcesContent":["import ShellQuote, { ParseEntry, ControlOperator } from 'shell-quote';\nimport dh, { VariableTypeUnion } from '@deephaven/jsapi-shim';\n\nclass ConsoleUtils {\n static hasComment(arg: ParseEntry): arg is { comment: string } {\n return (arg as { comment: string }).comment !== undefined;\n }\n\n static hasPattern(arg: ParseEntry): arg is { op: 'glob'; pattern: string } {\n return (arg as { pattern: string }).pattern !== undefined;\n }\n\n static hasOp(arg: ParseEntry): arg is { op: ControlOperator } {\n return (arg as { op: ControlOperator }).op !== undefined;\n }\n\n /**\n * Given the provided text, parse out arguments using shell quoting rules.\n * @param str The text to parse.\n * @returns string[] of the arguments. Empty if no arguments found.\n */\n static parseArguments(str: unknown): string[] {\n if (!str || !(typeof str === 'string' || str instanceof String)) {\n return [];\n }\n\n // Parse can return an object, not just a string. See the `ParseEntry` type def for all types\n // We must map them all to strings. Filter out comments that will not be needed as well.\n return ShellQuote.parse(str as string)\n .filter(arg => !this.hasComment(arg))\n .map(arg => {\n if (this.hasPattern(arg)) {\n return arg.pattern;\n }\n if (this.hasOp(arg)) {\n return arg.op;\n }\n return `${arg}`;\n });\n }\n\n static formatTimestamp(date: Date): string | null {\n if (!date || !(date instanceof Date)) {\n return null;\n }\n\n const hours = `${date.getHours()}`.padStart(2, '0');\n const minutes = `${date.getMinutes()}`.padStart(2, '0');\n const seconds = `${date.getSeconds()}`.padStart(2, '0');\n const milliseconds = `${date.getMilliseconds()}`.padStart(3, '0');\n\n return `${hours}:${minutes}:${seconds}.${milliseconds}`;\n }\n\n static isTableType(type: VariableTypeUnion): boolean {\n return type === dh.VariableType.TABLE || type === dh.VariableType.TREETABLE;\n }\n\n static isWidgetType(type: VariableTypeUnion): boolean {\n return (\n type === dh.VariableType.FIGURE ||\n type === dh.VariableType.OTHERWIDGET ||\n type === dh.VariableType.PANDAS\n );\n }\n\n static isOpenableType(type: VariableTypeUnion): boolean {\n return ConsoleUtils.isTableType(type) || ConsoleUtils.isWidgetType(type);\n }\n\n static isFigureType(type: VariableTypeUnion): boolean {\n return type === dh.VariableType.FIGURE;\n }\n\n static isPandas(type: VariableTypeUnion): boolean {\n return type === dh.VariableType.PANDAS;\n }\n}\n\nexport default ConsoleUtils;\n"],"file":"ConsoleUtils.js"}
@@ -76,7 +76,7 @@ declare class MonacoUtils {
76
76
  * Links an editor with a provided session to provide completion items.
77
77
  * @param session The IdeSession to link
78
78
  * @param editor The editor to link the session to
79
- * @return A cleanup function for disposing of the created listeners
79
+ * @returns A cleanup function for disposing of the created listeners
80
80
  */
81
81
  static openDocument(editor: monaco.editor.IStandaloneCodeEditor, session: IdeSession): monaco.IDisposable;
82
82
  static closeDocument(editor: monaco.editor.IStandaloneCodeEditor, session: IdeSession): void;
@@ -240,7 +240,7 @@ class MonacoUtils {
240
240
  * Links an editor with a provided session to provide completion items.
241
241
  * @param session The IdeSession to link
242
242
  * @param editor The editor to link the session to
243
- * @return A cleanup function for disposing of the created listeners
243
+ * @returns A cleanup function for disposing of the created listeners
244
244
  */
245
245
 
246
246
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/monaco/MonacoUtils.ts"],"names":["assertNotNull","monaco","KeyCodeUtils","KeyMod","Log","MonacoTheme","PyLang","GroovyLang","ScalaLang","DbLang","LogLang","log","module","MonacoUtils","init","debug","registerLanguages","removeHashtag","dhDarkRules","token","foreground","string","keyword","delimiter","comment","number","storage","identifier","operator","predefined","substring","dhDarkColors","errorForeground","background","focusBorder","editor","defineTheme","base","inherit","rules","colors","debug2","setTheme","color","languages","languageIds","map","id","getLanguages","filter","includes","forEach","languageParam","language","registerLanguage","register","onLanguage","setLanguageConfiguration","conf","setMonarchTokensProvider","setEOL","eolSequence","EndOfLineSequence","LF","getModel","openDocument","session","model","didOpenDocumentParams","textDocument","uri","languageId","getModeId","version","getVersionId","text","getValue","dispose","onDidChangeModelContent","changedEvent","changes","versionId","contentChanges","i","length","change","range","rangeLength","contentChange","start","line","startLineNumber","character","startColumn","end","endLineNumber","endColumn","push","didChangeDocumentParams","changeDocument","closeDocument","didCloseDocumentParams","registerPasteHandler","onDidPaste","pasteEvent","smartQuotes","invalidChars","editorModel","pastedText","getValueInRange","test","applyEdits","replace","isMacPlatform","platform","window","navigator","startsWith","removeConflictingKeybindings","keybindings","windows","mac","keybinding","removeKeybinding","err","error","_standaloneKeybindingService","_getResolver","_map","get","elem","command","addDynamicKeybinding","undefined","warn","getMonacoKeyCodeFromShortcut","shortcut","keyState","keyValue","isMac","metaKey","CtrlCmd","shiftKey","Shift","altKey","Alt","ctrlKey","WinCtrl","fromString"],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/ban-ts-comment */\n/**\n * Exports a function for initializing monaco with the deephaven theme/config\n */\n// Instead of importing just 'monaco-editor' and importing all languages and features, just import the features and don't import all the languages we don't care about\n// Default list of features here: https://github.com/microsoft/monaco-editor-webpack-plugin\n// Mapping to paths here: https://github.com/microsoft/monaco-editor-webpack-plugin/blob/main/src/features.ts\n// Importing this way rather than using the plugin because I don't want to hook up react-app-rewired for the build\n\nimport { Shortcut } from '@deephaven/components';\nimport { IdeSession } from '@deephaven/jsapi-shim';\nimport { assertNotNull } from '@deephaven/utils';\nimport * as monaco from 'monaco-editor/esm/vs/editor/editor.api.js';\nimport 'monaco-editor/esm/vs/editor/standalone/browser/accessibilityHelp/accessibilityHelp.js';\nimport 'monaco-editor/esm/vs/editor/contrib/anchorSelect/anchorSelect.js';\nimport 'monaco-editor/esm/vs/editor/contrib/bracketMatching/bracketMatching.js';\nimport 'monaco-editor/esm/vs/editor/contrib/caretOperations/caretOperations.js';\nimport 'monaco-editor/esm/vs/editor/contrib/clipboard/clipboard.js';\nimport 'monaco-editor/esm/vs/editor/contrib/codeAction/codeActionContributions.js';\nimport 'monaco-editor/esm/vs/editor/contrib/codelens/codelensController.js';\nimport 'monaco-editor/esm/vs/editor/contrib/colorPicker/colorContributions.js';\nimport 'monaco-editor/esm/vs/editor/contrib/comment/comment.js';\nimport 'monaco-editor/esm/vs/editor/contrib/contextmenu/contextmenu.js';\nimport 'monaco-editor/esm/vs/editor/browser/controller/coreCommands.js';\nimport 'monaco-editor/esm/vs/editor/contrib/cursorUndo/cursorUndo.js';\nimport 'monaco-editor/esm/vs/editor/contrib/dnd/dnd.js';\nimport 'monaco-editor/esm/vs/editor/contrib/documentSymbols/documentSymbols.js';\nimport 'monaco-editor/esm/vs/editor/contrib/find/findController.js';\nimport 'monaco-editor/esm/vs/editor/contrib/folding/folding.js';\nimport 'monaco-editor/esm/vs/editor/contrib/fontZoom/fontZoom.js';\nimport 'monaco-editor/esm/vs/editor/contrib/format/formatActions.js';\nimport 'monaco-editor/esm/vs/editor/contrib/gotoError/gotoError.js';\nimport 'monaco-editor/esm/vs/editor/standalone/browser/quickAccess/standaloneGotoLineQuickAccess.js';\nimport 'monaco-editor/esm/vs/editor/contrib/gotoSymbol/goToCommands.js';\nimport 'monaco-editor/esm/vs/editor/contrib/gotoSymbol/link/goToDefinitionAtPosition.js';\nimport 'monaco-editor/esm/vs/editor/contrib/hover/hover.js';\nimport 'monaco-editor/esm/vs/editor/standalone/browser/iPadShowKeyboard/iPadShowKeyboard.js';\nimport 'monaco-editor/esm/vs/editor/contrib/inPlaceReplace/inPlaceReplace.js';\nimport 'monaco-editor/esm/vs/editor/contrib/indentation/indentation.js';\nimport 'monaco-editor/esm/vs/editor/contrib/inlineCompletions/ghostTextController.js';\nimport 'monaco-editor/esm/vs/editor/contrib/inlayHints/inlayHintsController.js';\nimport 'monaco-editor/esm/vs/editor/standalone/browser/inspectTokens/inspectTokens.js';\nimport 'monaco-editor/esm/vs/editor/contrib/linesOperations/linesOperations.js';\nimport 'monaco-editor/esm/vs/editor/contrib/linkedEditing/linkedEditing.js';\nimport 'monaco-editor/esm/vs/editor/contrib/links/links.js';\nimport 'monaco-editor/esm/vs/editor/contrib/multicursor/multicursor.js';\nimport 'monaco-editor/esm/vs/editor/contrib/parameterHints/parameterHints.js';\nimport 'monaco-editor/esm/vs/editor/standalone/browser/quickAccess/standaloneCommandsQuickAccess.js';\nimport 'monaco-editor/esm/vs/editor/standalone/browser/quickAccess/standaloneHelpQuickAccess.js';\nimport 'monaco-editor/esm/vs/editor/standalone/browser/quickAccess/standaloneGotoSymbolQuickAccess.js';\nimport 'monaco-editor/esm/vs/editor/standalone/browser/referenceSearch/standaloneReferenceSearch.js';\nimport 'monaco-editor/esm/vs/editor/contrib/rename/rename.js';\nimport 'monaco-editor/esm/vs/editor/contrib/smartSelect/smartSelect.js';\nimport 'monaco-editor/esm/vs/editor/contrib/snippet/snippetController2.js';\nimport 'monaco-editor/esm/vs/editor/contrib/suggest/suggestController.js';\nimport 'monaco-editor/esm/vs/editor/standalone/browser/toggleHighContrast/toggleHighContrast.js';\nimport 'monaco-editor/esm/vs/editor/contrib/toggleTabFocusMode/toggleTabFocusMode.js';\nimport 'monaco-editor/esm/vs/editor/contrib/caretOperations/transpose.js';\nimport 'monaco-editor/esm/vs/editor/contrib/unusualLineTerminators/unusualLineTerminators.js';\nimport 'monaco-editor/esm/vs/editor/contrib/viewportSemanticTokens/viewportSemanticTokens.js';\nimport 'monaco-editor/esm/vs/editor/contrib/wordHighlighter/wordHighlighter.js';\nimport 'monaco-editor/esm/vs/editor/contrib/wordOperations/wordOperations.js';\nimport 'monaco-editor/esm/vs/editor/contrib/wordPartOperations/wordPartOperations.js';\nimport 'monaco-editor/esm/vs/basic-languages/typescript/typescript.contribution.js';\n// @ts-ignore\nimport { KeyCodeUtils } from 'monaco-editor/esm/vs/base/common/keyCodes.js';\n// @ts-ignore\nimport { KeyMod } from 'monaco-editor/esm/vs/editor/common/standalone/standaloneBase.js';\nimport Log from '@deephaven/log';\nimport MonacoTheme from './MonacoTheme.module.scss';\nimport PyLang from './lang/python';\nimport GroovyLang from './lang/groovy';\nimport ScalaLang from './lang/scala';\nimport DbLang from './lang/db';\nimport LogLang from './lang/log';\nimport { Language } from './lang/Language';\n\nconst log = Log.module('MonacoUtils');\nclass MonacoUtils {\n static init(): void {\n log.debug('Initializing Monaco...');\n\n const { registerLanguages, removeHashtag } = MonacoUtils;\n\n const dhDarkRules = [\n { token: '', foreground: removeHashtag(MonacoTheme.foreground) },\n { token: 'string', foreground: removeHashtag(MonacoTheme.string) },\n {\n token: 'string.delim',\n foreground: removeHashtag(MonacoTheme['string-delim']),\n },\n { token: 'keyword', foreground: removeHashtag(MonacoTheme.keyword) },\n {\n token: 'identifier.js',\n foreground: removeHashtag(MonacoTheme['identifier-js']),\n },\n {\n token: 'delimiter',\n foreground: removeHashtag(MonacoTheme.delimiter),\n },\n { token: 'comment', foreground: removeHashtag(MonacoTheme.comment) },\n { token: 'number', foreground: removeHashtag(MonacoTheme.number) },\n { token: 'storage', foreground: removeHashtag(MonacoTheme.storage) },\n {\n token: 'identifier',\n foreground: removeHashtag(MonacoTheme.identifier),\n },\n {\n token: 'namespace.identifier',\n foreground: removeHashtag(MonacoTheme['namespace-identifier']),\n },\n { token: 'operator', foreground: removeHashtag(MonacoTheme.operator) },\n {\n token: 'predefined',\n foreground: removeHashtag(MonacoTheme.predefined),\n },\n {\n token: 'error.log',\n foreground: MonacoTheme['log-error'].substring(1),\n },\n {\n token: 'warn.log',\n foreground: removeHashtag(MonacoTheme['log-warn']),\n },\n {\n token: 'info.log',\n foreground: removeHashtag(MonacoTheme['log-info']),\n },\n {\n token: 'stdout.log',\n foreground: removeHashtag(MonacoTheme['log-stdout']),\n },\n {\n token: 'trace.log',\n foreground: removeHashtag(MonacoTheme['log-trace']),\n },\n {\n token: 'debug.log',\n foreground: removeHashtag(MonacoTheme['log-debug']),\n },\n {\n token: 'date.log',\n foreground: removeHashtag(MonacoTheme['log-date']),\n },\n ];\n\n const dhDarkColors = {\n errorForeground: MonacoTheme['error-foreground'],\n 'inputOption.activeBorder': MonacoTheme['input-option-active-border'],\n 'editor.background': MonacoTheme.background,\n 'editor.foreground': MonacoTheme.foreground,\n 'editor.lineHighlightBackground': MonacoTheme['editor-line-highlight-bg'],\n 'editorLineNumber.foreground':\n MonacoTheme['editor-line-number-foreground'],\n 'editor.selectionBackground': MonacoTheme['editor-selection-background'],\n 'editor.findMatchBackground': MonacoTheme['editor-find-match-background'],\n 'editor.findMatchHighlightBackground':\n MonacoTheme['editor-find-match-highlight-background'],\n 'editorSuggestWidget.background':\n MonacoTheme['editor-suggest-widget-background'],\n 'editorSuggestWidget.border': MonacoTheme['editor-suggest-widget-border'],\n 'editorSuggestWidget.foreground':\n MonacoTheme['editor-suggest-widget-foreground'],\n 'editorSuggestWidget.selectedBackground':\n MonacoTheme['editor-suggest-widget-selected-background'],\n 'editorSuggestWidget.highlightForeground':\n MonacoTheme['editor-suggest-widget-highlightForeground'],\n 'list.hoverBackground': MonacoTheme['list-hover-background'],\n 'dropdown.background': MonacoTheme['context-menu-background'],\n 'dropdown.foreground': MonacoTheme['context-menu-foreground'],\n 'menu.selectionBackground': MonacoTheme['menu-selection-background'],\n 'list.focusBackground': MonacoTheme['menu-selection-background'],\n 'editorWidget.background': MonacoTheme['editor-widget-background'],\n 'inputOption.activeBackground':\n MonacoTheme['input-option-active-background'],\n 'inputOption.activeForeground':\n MonacoTheme['input-option-active-foreground'],\n focusBorder: MonacoTheme['focus-border'],\n 'input.background': MonacoTheme['input-background'],\n 'input.foreground': MonacoTheme['input-foreground'],\n 'input.border': MonacoTheme['input-border'],\n };\n\n monaco.editor.defineTheme('dh-dark', {\n base: 'vs-dark',\n inherit: true,\n rules: dhDarkRules,\n colors: dhDarkColors,\n });\n log.debug2('monaco theme: ', MonacoTheme);\n monaco.editor.setTheme('dh-dark');\n\n registerLanguages([DbLang, PyLang, GroovyLang, LogLang, ScalaLang]);\n\n log.debug('Monaco initialized.');\n }\n\n /**\n * Remove the hashtag prefix from a CSS color string.\n * Monaco expects colors to be the value only, no hashtag.\n * @param color The hex color string to remove the hashtag from, eg. '#ffffff'\n */\n static removeHashtag(color: string): string {\n return color.substring(1);\n }\n\n static registerLanguages(languages: Language[]): void {\n // First override the default loader for any language we have a custom definition for\n // https://github.com/Microsoft/monaco-editor/issues/252#issuecomment-482786867\n const languageIds = languages.map(({ id }) => id);\n monaco.languages\n .getLanguages()\n .filter(({ id }) => languageIds.includes(id))\n .forEach(languageParam => {\n const language = languageParam;\n log.debug2('Overriding default language loader:', language.id);\n });\n\n // Then register our language definitions\n languages.forEach(language => {\n MonacoUtils.registerLanguage(language);\n });\n }\n\n static registerLanguage(language: Language): void {\n log.debug2('Registering language: ', language.id);\n monaco.languages.register(language);\n\n monaco.languages.onLanguage(language.id, () => {\n monaco.languages.setLanguageConfiguration(language.id, language.conf);\n monaco.languages.setMonarchTokensProvider(language.id, language.language);\n });\n }\n\n /**\n * Set EOL preference for the editor\n * @param editor The editor to set the EOL for\n * @param eolSequence EOL sequence\n */\n static setEOL(\n editor: monaco.editor.IStandaloneCodeEditor,\n eolSequence = monaco.editor.EndOfLineSequence.LF\n ): void {\n editor.getModel()?.setEOL(eolSequence);\n }\n\n /**\n * Links an editor with a provided session to provide completion items.\n * @param session The IdeSession to link\n * @param editor The editor to link the session to\n * @return A cleanup function for disposing of the created listeners\n */\n static openDocument(\n editor: monaco.editor.IStandaloneCodeEditor,\n session: IdeSession\n ): monaco.IDisposable {\n const model = editor.getModel();\n assertNotNull(model);\n const didOpenDocumentParams = {\n textDocument: {\n uri: `${model.uri}`,\n languageId: model.getModeId(),\n version: model.getVersionId(),\n text: model.getValue(),\n },\n };\n log.debug2('didOpenDocumentParams: ', didOpenDocumentParams);\n\n session.openDocument(didOpenDocumentParams);\n\n const dispose = editor.onDidChangeModelContent(changedEvent => {\n const { changes, versionId } = changedEvent;\n\n const contentChanges = [];\n for (let i = 0; i < changes.length; i += 1) {\n const change = changes[i];\n const { range, rangeLength, text } = change;\n const contentChange = {\n range: {\n start: {\n line: range.startLineNumber - 1,\n character: range.startColumn - 1,\n },\n end: {\n line: range.endLineNumber - 1,\n character: range.endColumn - 1,\n },\n },\n rangeLength,\n text,\n };\n\n contentChanges.push(contentChange);\n }\n\n if (contentChanges.length > 0) {\n const didChangeDocumentParams = {\n textDocument: {\n version: versionId,\n uri: `${model.uri}`,\n },\n contentChanges,\n };\n log.debug2('didChangeDocumentParams', didChangeDocumentParams);\n session.changeDocument(didChangeDocumentParams);\n }\n });\n\n return dispose;\n }\n\n static closeDocument(\n editor: monaco.editor.IStandaloneCodeEditor,\n session: IdeSession\n ): void {\n const model = editor.getModel();\n assertNotNull(model);\n const didCloseDocumentParams = {\n textDocument: {\n uri: `${model.uri}`,\n },\n };\n session.closeDocument(didCloseDocumentParams);\n }\n\n /**\n * Register a paste handle to clean up any garbage code pasted.\n * Most of this comes from copying from Slack, which has a bad habit of injecting their own characters in your code snippets.\n * I've emailed Slack about the issue and they're working on it. I can't reference a ticket number because their ticket system is entirely internally facing.\n * @param editor The editor the register the paste handler for\n */\n static registerPasteHandler(\n editor: monaco.editor.IStandaloneCodeEditor\n ): void {\n editor.onDidPaste(pasteEvent => {\n const smartQuotes = /“|”/g;\n const invalidChars = /\\u200b/g;\n const editorModel = editor.getModel();\n assertNotNull(editorModel);\n const pastedText = editorModel.getValueInRange(pasteEvent.range);\n if (smartQuotes.test(pastedText) || invalidChars.test(pastedText)) {\n editorModel.applyEdits([\n {\n range: pasteEvent.range,\n text: pastedText\n .replace(smartQuotes, '\"')\n .replace(invalidChars, ''),\n },\n ]);\n }\n });\n }\n\n static isMacPlatform(): boolean {\n const { platform } = window.navigator;\n return platform.startsWith('Mac');\n }\n\n /**\n * Remove any keybindings which are used for our own shortcuts.\n * This allows the key events to bubble up so a component higher up can capture them\n * @param editor The editor to remove the keybindings from\n */\n static removeConflictingKeybindings(\n editor: monaco.editor.IStandaloneCodeEditor\n ): void {\n // Multi-mod key events have a specific order\n // E.g. ctrl+alt+UpArrow is not found, but alt+ctrl+UpArrow is found\n // meta is WindowsKey on Windows and cmd on Mac\n // ctrl is ctrl Windows and ctrl on Mac\n // alt is alt on Windows and option on Mac\n const keybindings = [\n {\n windows: 'ctrl+D',\n mac: 'meta+D',\n },\n {\n windows: 'ctrl+H',\n },\n ];\n\n try {\n keybindings.forEach(keybinding => {\n if (\n (MonacoUtils.isMacPlatform() && keybinding.mac === '') ||\n (!MonacoUtils.isMacPlatform() && keybinding.windows === '')\n ) {\n return;\n }\n MonacoUtils.removeKeybinding(\n editor,\n (MonacoUtils.isMacPlatform()\n ? keybinding.mac\n : keybinding.windows) as string\n );\n });\n } catch (err) {\n // This is probably only caused by Monaco changing private methods used here\n log.error(err);\n }\n }\n\n /**\n * Remove a keybinding and allow the events to bubble up\n * If you want the keybinding removed for all editors, add it to removeConflictingKeybindings\n * Monaco still captures the event if you choose to override the keybinding with a no-op function\n *\n * Based on the following comment to remove a keybinding and let the event bubble up\n * https://github.com/microsoft/monaco-editor/issues/287#issuecomment-331447475\n * The issue for an API for this has apparently been open since 2016. Link below\n * https://github.com/microsoft/monaco-editor/issues/102\n * @param editor The editor to remove the keybinding from\n * @param keybinding The key string to remove. E.g. 'ctrl+C' for copy on Windows\n */\n static removeKeybinding(\n editor: monaco.editor.IStandaloneCodeEditor,\n keybinding: string\n ): void {\n /* eslint-disable no-underscore-dangle */\n // It's possible a single keybinding has multiple commands depending on context\n // @ts-ignore\n const keybindings = editor._standaloneKeybindingService\n ._getResolver()\n ._map.get(keybinding);\n\n if (keybindings) {\n keybindings.forEach((elem: { command: unknown }) => {\n log.debug2(\n `Removing Monaco keybinding ${keybinding} for ${elem.command}`\n );\n // @ts-ignore\n editor._standaloneKeybindingService.addDynamicKeybinding(\n `-${elem.command}`,\n null,\n () => undefined\n );\n });\n } else {\n log.warn(`Did not find any keybindings to remove for ${keybinding}`);\n }\n /* eslint-enable no-underscore-dangle */\n }\n\n static getMonacoKeyCodeFromShortcut(shortcut: Shortcut): number {\n const { keyState } = shortcut;\n const { keyValue } = keyState;\n if (keyValue === null) {\n return 0;\n }\n\n const isMac = MonacoUtils.isMacPlatform();\n\n if (isMac) {\n return (\n // eslint-disable-next-line no-bitwise\n (keyState.metaKey && KeyMod.CtrlCmd) |\n (keyState.shiftKey && KeyMod.Shift) |\n (keyState.altKey && KeyMod.Alt) |\n (keyState.ctrlKey && KeyMod.WinCtrl) |\n KeyCodeUtils.fromString(keyValue)\n );\n }\n\n return (\n // eslint-disable-next-line no-bitwise\n (keyState.ctrlKey && KeyMod.CtrlCmd) |\n (keyState.shiftKey && KeyMod.Shift) |\n (keyState.altKey && KeyMod.Alt) |\n (keyState.metaKey && KeyMod.WinCtrl) |\n KeyCodeUtils.fromString(keyValue)\n );\n }\n}\n\nexport default MonacoUtils;\n"],"file":"MonacoUtils.js"}
1
+ {"version":3,"sources":["../../src/monaco/MonacoUtils.ts"],"names":["assertNotNull","monaco","KeyCodeUtils","KeyMod","Log","MonacoTheme","PyLang","GroovyLang","ScalaLang","DbLang","LogLang","log","module","MonacoUtils","init","debug","registerLanguages","removeHashtag","dhDarkRules","token","foreground","string","keyword","delimiter","comment","number","storage","identifier","operator","predefined","substring","dhDarkColors","errorForeground","background","focusBorder","editor","defineTheme","base","inherit","rules","colors","debug2","setTheme","color","languages","languageIds","map","id","getLanguages","filter","includes","forEach","languageParam","language","registerLanguage","register","onLanguage","setLanguageConfiguration","conf","setMonarchTokensProvider","setEOL","eolSequence","EndOfLineSequence","LF","getModel","openDocument","session","model","didOpenDocumentParams","textDocument","uri","languageId","getModeId","version","getVersionId","text","getValue","dispose","onDidChangeModelContent","changedEvent","changes","versionId","contentChanges","i","length","change","range","rangeLength","contentChange","start","line","startLineNumber","character","startColumn","end","endLineNumber","endColumn","push","didChangeDocumentParams","changeDocument","closeDocument","didCloseDocumentParams","registerPasteHandler","onDidPaste","pasteEvent","smartQuotes","invalidChars","editorModel","pastedText","getValueInRange","test","applyEdits","replace","isMacPlatform","platform","window","navigator","startsWith","removeConflictingKeybindings","keybindings","windows","mac","keybinding","removeKeybinding","err","error","_standaloneKeybindingService","_getResolver","_map","get","elem","command","addDynamicKeybinding","undefined","warn","getMonacoKeyCodeFromShortcut","shortcut","keyState","keyValue","isMac","metaKey","CtrlCmd","shiftKey","Shift","altKey","Alt","ctrlKey","WinCtrl","fromString"],"mappings":"AAAA;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAIA,SAASA,aAAT,QAA8B,kBAA9B;AACA,OAAO,KAAKC,MAAZ,MAAwB,2CAAxB;AACA,OAAO,uFAAP;AACA,OAAO,kEAAP;AACA,OAAO,wEAAP;AACA,OAAO,wEAAP;AACA,OAAO,4DAAP;AACA,OAAO,2EAAP;AACA,OAAO,oEAAP;AACA,OAAO,uEAAP;AACA,OAAO,wDAAP;AACA,OAAO,gEAAP;AACA,OAAO,gEAAP;AACA,OAAO,8DAAP;AACA,OAAO,gDAAP;AACA,OAAO,wEAAP;AACA,OAAO,4DAAP;AACA,OAAO,wDAAP;AACA,OAAO,0DAAP;AACA,OAAO,6DAAP;AACA,OAAO,4DAAP;AACA,OAAO,6FAAP;AACA,OAAO,gEAAP;AACA,OAAO,iFAAP;AACA,OAAO,oDAAP;AACA,OAAO,qFAAP;AACA,OAAO,sEAAP;AACA,OAAO,gEAAP;AACA,OAAO,8EAAP;AACA,OAAO,wEAAP;AACA,OAAO,+EAAP;AACA,OAAO,wEAAP;AACA,OAAO,oEAAP;AACA,OAAO,oDAAP;AACA,OAAO,gEAAP;AACA,OAAO,sEAAP;AACA,OAAO,6FAAP;AACA,OAAO,yFAAP;AACA,OAAO,+FAAP;AACA,OAAO,6FAAP;AACA,OAAO,sDAAP;AACA,OAAO,gEAAP;AACA,OAAO,mEAAP;AACA,OAAO,kEAAP;AACA,OAAO,yFAAP;AACA,OAAO,8EAAP;AACA,OAAO,kEAAP;AACA,OAAO,sFAAP;AACA,OAAO,sFAAP;AACA,OAAO,wEAAP;AACA,OAAO,sEAAP;AACA,OAAO,8EAAP;AACA,OAAO,4EAAP,C,CACA;;AACA,SAASC,YAAT,QAA6B,8CAA7B,C,CACA;;AACA,SAASC,MAAT,QAAuB,iEAAvB;AACA,OAAOC,GAAP,MAAgB,gBAAhB;OACOC,W;OACAC,M;OACAC,U;OACAC,S;OACAC,M;OACAC,O;AAGP,IAAMC,GAAG,GAAGP,GAAG,CAACQ,MAAJ,CAAW,aAAX,CAAZ;;AACA,MAAMC,WAAN,CAAkB;AACL,SAAJC,IAAI,GAAS;AAClBH,IAAAA,GAAG,CAACI,KAAJ,CAAU,wBAAV;AAEA,QAAM;AAAEC,MAAAA,iBAAF;AAAqBC,MAAAA;AAArB,QAAuCJ,WAA7C;AAEA,QAAMK,WAAW,GAAG,CAClB;AAAEC,MAAAA,KAAK,EAAE,EAAT;AAAaC,MAAAA,UAAU,EAAEH,aAAa,CAACZ,WAAW,CAACe,UAAb;AAAtC,KADkB,EAElB;AAAED,MAAAA,KAAK,EAAE,QAAT;AAAmBC,MAAAA,UAAU,EAAEH,aAAa,CAACZ,WAAW,CAACgB,MAAb;AAA5C,KAFkB,EAGlB;AACEF,MAAAA,KAAK,EAAE,cADT;AAEEC,MAAAA,UAAU,EAAEH,aAAa,CAACZ,WAAW,CAAC,cAAD,CAAZ;AAF3B,KAHkB,EAOlB;AAAEc,MAAAA,KAAK,EAAE,SAAT;AAAoBC,MAAAA,UAAU,EAAEH,aAAa,CAACZ,WAAW,CAACiB,OAAb;AAA7C,KAPkB,EAQlB;AACEH,MAAAA,KAAK,EAAE,eADT;AAEEC,MAAAA,UAAU,EAAEH,aAAa,CAACZ,WAAW,CAAC,eAAD,CAAZ;AAF3B,KARkB,EAYlB;AACEc,MAAAA,KAAK,EAAE,WADT;AAEEC,MAAAA,UAAU,EAAEH,aAAa,CAACZ,WAAW,CAACkB,SAAb;AAF3B,KAZkB,EAgBlB;AAAEJ,MAAAA,KAAK,EAAE,SAAT;AAAoBC,MAAAA,UAAU,EAAEH,aAAa,CAACZ,WAAW,CAACmB,OAAb;AAA7C,KAhBkB,EAiBlB;AAAEL,MAAAA,KAAK,EAAE,QAAT;AAAmBC,MAAAA,UAAU,EAAEH,aAAa,CAACZ,WAAW,CAACoB,MAAb;AAA5C,KAjBkB,EAkBlB;AAAEN,MAAAA,KAAK,EAAE,SAAT;AAAoBC,MAAAA,UAAU,EAAEH,aAAa,CAACZ,WAAW,CAACqB,OAAb;AAA7C,KAlBkB,EAmBlB;AACEP,MAAAA,KAAK,EAAE,YADT;AAEEC,MAAAA,UAAU,EAAEH,aAAa,CAACZ,WAAW,CAACsB,UAAb;AAF3B,KAnBkB,EAuBlB;AACER,MAAAA,KAAK,EAAE,sBADT;AAEEC,MAAAA,UAAU,EAAEH,aAAa,CAACZ,WAAW,CAAC,sBAAD,CAAZ;AAF3B,KAvBkB,EA2BlB;AAAEc,MAAAA,KAAK,EAAE,UAAT;AAAqBC,MAAAA,UAAU,EAAEH,aAAa,CAACZ,WAAW,CAACuB,QAAb;AAA9C,KA3BkB,EA4BlB;AACET,MAAAA,KAAK,EAAE,YADT;AAEEC,MAAAA,UAAU,EAAEH,aAAa,CAACZ,WAAW,CAACwB,UAAb;AAF3B,KA5BkB,EAgClB;AACEV,MAAAA,KAAK,EAAE,WADT;AAEEC,MAAAA,UAAU,EAAEf,WAAW,CAAC,WAAD,CAAX,CAAyByB,SAAzB,CAAmC,CAAnC;AAFd,KAhCkB,EAoClB;AACEX,MAAAA,KAAK,EAAE,UADT;AAEEC,MAAAA,UAAU,EAAEH,aAAa,CAACZ,WAAW,CAAC,UAAD,CAAZ;AAF3B,KApCkB,EAwClB;AACEc,MAAAA,KAAK,EAAE,UADT;AAEEC,MAAAA,UAAU,EAAEH,aAAa,CAACZ,WAAW,CAAC,UAAD,CAAZ;AAF3B,KAxCkB,EA4ClB;AACEc,MAAAA,KAAK,EAAE,YADT;AAEEC,MAAAA,UAAU,EAAEH,aAAa,CAACZ,WAAW,CAAC,YAAD,CAAZ;AAF3B,KA5CkB,EAgDlB;AACEc,MAAAA,KAAK,EAAE,WADT;AAEEC,MAAAA,UAAU,EAAEH,aAAa,CAACZ,WAAW,CAAC,WAAD,CAAZ;AAF3B,KAhDkB,EAoDlB;AACEc,MAAAA,KAAK,EAAE,WADT;AAEEC,MAAAA,UAAU,EAAEH,aAAa,CAACZ,WAAW,CAAC,WAAD,CAAZ;AAF3B,KApDkB,EAwDlB;AACEc,MAAAA,KAAK,EAAE,UADT;AAEEC,MAAAA,UAAU,EAAEH,aAAa,CAACZ,WAAW,CAAC,UAAD,CAAZ;AAF3B,KAxDkB,CAApB;AA8DA,QAAM0B,YAAY,GAAG;AACnBC,MAAAA,eAAe,EAAE3B,WAAW,CAAC,kBAAD,CADT;AAEnB,kCAA4BA,WAAW,CAAC,4BAAD,CAFpB;AAGnB,2BAAqBA,WAAW,CAAC4B,UAHd;AAInB,2BAAqB5B,WAAW,CAACe,UAJd;AAKnB,wCAAkCf,WAAW,CAAC,0BAAD,CAL1B;AAMnB,qCACEA,WAAW,CAAC,+BAAD,CAPM;AAQnB,oCAA8BA,WAAW,CAAC,6BAAD,CARtB;AASnB,oCAA8BA,WAAW,CAAC,8BAAD,CATtB;AAUnB,6CACEA,WAAW,CAAC,wCAAD,CAXM;AAYnB,wCACEA,WAAW,CAAC,kCAAD,CAbM;AAcnB,oCAA8BA,WAAW,CAAC,8BAAD,CAdtB;AAenB,wCACEA,WAAW,CAAC,kCAAD,CAhBM;AAiBnB,gDACEA,WAAW,CAAC,2CAAD,CAlBM;AAmBnB,iDACEA,WAAW,CAAC,2CAAD,CApBM;AAqBnB,8BAAwBA,WAAW,CAAC,uBAAD,CArBhB;AAsBnB,6BAAuBA,WAAW,CAAC,yBAAD,CAtBf;AAuBnB,6BAAuBA,WAAW,CAAC,yBAAD,CAvBf;AAwBnB,kCAA4BA,WAAW,CAAC,2BAAD,CAxBpB;AAyBnB,8BAAwBA,WAAW,CAAC,2BAAD,CAzBhB;AA0BnB,iCAA2BA,WAAW,CAAC,0BAAD,CA1BnB;AA2BnB,sCACEA,WAAW,CAAC,gCAAD,CA5BM;AA6BnB,sCACEA,WAAW,CAAC,gCAAD,CA9BM;AA+BnB6B,MAAAA,WAAW,EAAE7B,WAAW,CAAC,cAAD,CA/BL;AAgCnB,0BAAoBA,WAAW,CAAC,kBAAD,CAhCZ;AAiCnB,0BAAoBA,WAAW,CAAC,kBAAD,CAjCZ;AAkCnB,sBAAgBA,WAAW,CAAC,cAAD;AAlCR,KAArB;AAqCAJ,IAAAA,MAAM,CAACkC,MAAP,CAAcC,WAAd,CAA0B,SAA1B,EAAqC;AACnCC,MAAAA,IAAI,EAAE,SAD6B;AAEnCC,MAAAA,OAAO,EAAE,IAF0B;AAGnCC,MAAAA,KAAK,EAAErB,WAH4B;AAInCsB,MAAAA,MAAM,EAAET;AAJ2B,KAArC;AAMApB,IAAAA,GAAG,CAAC8B,MAAJ,CAAW,gBAAX,EAA6BpC,WAA7B;AACAJ,IAAAA,MAAM,CAACkC,MAAP,CAAcO,QAAd,CAAuB,SAAvB;AAEA1B,IAAAA,iBAAiB,CAAC,CAACP,MAAD,EAASH,MAAT,EAAiBC,UAAjB,EAA6BG,OAA7B,EAAsCF,SAAtC,CAAD,CAAjB;AAEAG,IAAAA,GAAG,CAACI,KAAJ,CAAU,qBAAV;AACD;AAED;AACF;AACA;AACA;AACA;;;AACsB,SAAbE,aAAa,CAAC0B,KAAD,EAAwB;AAC1C,WAAOA,KAAK,CAACb,SAAN,CAAgB,CAAhB,CAAP;AACD;;AAEuB,SAAjBd,iBAAiB,CAAC4B,SAAD,EAA8B;AACpD;AACA;AACA,QAAMC,WAAW,GAAGD,SAAS,CAACE,GAAV,CAAc;AAAA,UAAC;AAAEC,QAAAA;AAAF,OAAD;AAAA,aAAYA,EAAZ;AAAA,KAAd,CAApB;AACA9C,IAAAA,MAAM,CAAC2C,SAAP,CACGI,YADH,GAEGC,MAFH,CAEU;AAAA,UAAC;AAAEF,QAAAA;AAAF,OAAD;AAAA,aAAYF,WAAW,CAACK,QAAZ,CAAqBH,EAArB,CAAZ;AAAA,KAFV,EAGGI,OAHH,CAGWC,aAAa,IAAI;AACxB,UAAMC,QAAQ,GAAGD,aAAjB;AACAzC,MAAAA,GAAG,CAAC8B,MAAJ,CAAW,qCAAX,EAAkDY,QAAQ,CAACN,EAA3D;AACD,KANH,EAJoD,CAYpD;;AACAH,IAAAA,SAAS,CAACO,OAAV,CAAkBE,QAAQ,IAAI;AAC5BxC,MAAAA,WAAW,CAACyC,gBAAZ,CAA6BD,QAA7B;AACD,KAFD;AAGD;;AAEsB,SAAhBC,gBAAgB,CAACD,QAAD,EAA2B;AAChD1C,IAAAA,GAAG,CAAC8B,MAAJ,CAAW,wBAAX,EAAqCY,QAAQ,CAACN,EAA9C;AACA9C,IAAAA,MAAM,CAAC2C,SAAP,CAAiBW,QAAjB,CAA0BF,QAA1B;AAEApD,IAAAA,MAAM,CAAC2C,SAAP,CAAiBY,UAAjB,CAA4BH,QAAQ,CAACN,EAArC,EAAyC,MAAM;AAC7C9C,MAAAA,MAAM,CAAC2C,SAAP,CAAiBa,wBAAjB,CAA0CJ,QAAQ,CAACN,EAAnD,EAAuDM,QAAQ,CAACK,IAAhE;AACAzD,MAAAA,MAAM,CAAC2C,SAAP,CAAiBe,wBAAjB,CAA0CN,QAAQ,CAACN,EAAnD,EAAuDM,QAAQ,CAACA,QAAhE;AACD,KAHD;AAID;AAED;AACF;AACA;AACA;AACA;;;AACe,SAANO,MAAM,CACXzB,MADW,EAGL;AAAA;;AAAA,QADN0B,WACM,uEADQ5D,MAAM,CAACkC,MAAP,CAAc2B,iBAAd,CAAgCC,EACxC;AACN,wBAAA5B,MAAM,CAAC6B,QAAP,wEAAmBJ,MAAnB,CAA0BC,WAA1B;AACD;AAED;AACF;AACA;AACA;AACA;AACA;;;AACqB,SAAZI,YAAY,CACjB9B,MADiB,EAEjB+B,OAFiB,EAGG;AACpB,QAAMC,KAAK,GAAGhC,MAAM,CAAC6B,QAAP,EAAd;AACAhE,IAAAA,aAAa,CAACmE,KAAD,CAAb;AACA,QAAMC,qBAAqB,GAAG;AAC5BC,MAAAA,YAAY,EAAE;AACZC,QAAAA,GAAG,YAAKH,KAAK,CAACG,GAAX,CADS;AAEZC,QAAAA,UAAU,EAAEJ,KAAK,CAACK,SAAN,EAFA;AAGZC,QAAAA,OAAO,EAAEN,KAAK,CAACO,YAAN,EAHG;AAIZC,QAAAA,IAAI,EAAER,KAAK,CAACS,QAAN;AAJM;AADc,KAA9B;AAQAjE,IAAAA,GAAG,CAAC8B,MAAJ,CAAW,yBAAX,EAAsC2B,qBAAtC;AAEAF,IAAAA,OAAO,CAACD,YAAR,CAAqBG,qBAArB;AAEA,QAAMS,OAAO,GAAG1C,MAAM,CAAC2C,uBAAP,CAA+BC,YAAY,IAAI;AAC7D,UAAM;AAAEC,QAAAA,OAAF;AAAWC,QAAAA;AAAX,UAAyBF,YAA/B;AAEA,UAAMG,cAAc,GAAG,EAAvB;;AACA,WAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGH,OAAO,CAACI,MAA5B,EAAoCD,CAAC,IAAI,CAAzC,EAA4C;AAC1C,YAAME,MAAM,GAAGL,OAAO,CAACG,CAAD,CAAtB;AACA,YAAM;AAAEG,UAAAA,KAAF;AAASC,UAAAA,WAAT;AAAsBZ,UAAAA;AAAtB,YAA+BU,MAArC;AACA,YAAMG,aAAa,GAAG;AACpBF,UAAAA,KAAK,EAAE;AACLG,YAAAA,KAAK,EAAE;AACLC,cAAAA,IAAI,EAAEJ,KAAK,CAACK,eAAN,GAAwB,CADzB;AAELC,cAAAA,SAAS,EAAEN,KAAK,CAACO,WAAN,GAAoB;AAF1B,aADF;AAKLC,YAAAA,GAAG,EAAE;AACHJ,cAAAA,IAAI,EAAEJ,KAAK,CAACS,aAAN,GAAsB,CADzB;AAEHH,cAAAA,SAAS,EAAEN,KAAK,CAACU,SAAN,GAAkB;AAF1B;AALA,WADa;AAWpBT,UAAAA,WAXoB;AAYpBZ,UAAAA;AAZoB,SAAtB;AAeAO,QAAAA,cAAc,CAACe,IAAf,CAAoBT,aAApB;AACD;;AAED,UAAIN,cAAc,CAACE,MAAf,GAAwB,CAA5B,EAA+B;AAC7B,YAAMc,uBAAuB,GAAG;AAC9B7B,UAAAA,YAAY,EAAE;AACZI,YAAAA,OAAO,EAAEQ,SADG;AAEZX,YAAAA,GAAG,YAAKH,KAAK,CAACG,GAAX;AAFS,WADgB;AAK9BY,UAAAA;AAL8B,SAAhC;AAOAvE,QAAAA,GAAG,CAAC8B,MAAJ,CAAW,yBAAX,EAAsCyD,uBAAtC;AACAhC,QAAAA,OAAO,CAACiC,cAAR,CAAuBD,uBAAvB;AACD;AACF,KApCe,CAAhB;AAsCA,WAAOrB,OAAP;AACD;;AAEmB,SAAbuB,aAAa,CAClBjE,MADkB,EAElB+B,OAFkB,EAGZ;AACN,QAAMC,KAAK,GAAGhC,MAAM,CAAC6B,QAAP,EAAd;AACAhE,IAAAA,aAAa,CAACmE,KAAD,CAAb;AACA,QAAMkC,sBAAsB,GAAG;AAC7BhC,MAAAA,YAAY,EAAE;AACZC,QAAAA,GAAG,YAAKH,KAAK,CAACG,GAAX;AADS;AADe,KAA/B;AAKAJ,IAAAA,OAAO,CAACkC,aAAR,CAAsBC,sBAAtB;AACD;AAED;AACF;AACA;AACA;AACA;AACA;;;AAC6B,SAApBC,oBAAoB,CACzBnE,MADyB,EAEnB;AACNA,IAAAA,MAAM,CAACoE,UAAP,CAAkBC,UAAU,IAAI;AAC9B,UAAMC,WAAW,GAAG,MAApB;AACA,UAAMC,YAAY,GAAG,SAArB;AACA,UAAMC,WAAW,GAAGxE,MAAM,CAAC6B,QAAP,EAApB;AACAhE,MAAAA,aAAa,CAAC2G,WAAD,CAAb;AACA,UAAMC,UAAU,GAAGD,WAAW,CAACE,eAAZ,CAA4BL,UAAU,CAAClB,KAAvC,CAAnB;;AACA,UAAImB,WAAW,CAACK,IAAZ,CAAiBF,UAAjB,KAAgCF,YAAY,CAACI,IAAb,CAAkBF,UAAlB,CAApC,EAAmE;AACjED,QAAAA,WAAW,CAACI,UAAZ,CAAuB,CACrB;AACEzB,UAAAA,KAAK,EAAEkB,UAAU,CAAClB,KADpB;AAEEX,UAAAA,IAAI,EAAEiC,UAAU,CACbI,OADG,CACKP,WADL,EACkB,GADlB,EAEHO,OAFG,CAEKN,YAFL,EAEmB,EAFnB;AAFR,SADqB,CAAvB;AAQD;AACF,KAhBD;AAiBD;;AAEmB,SAAbO,aAAa,GAAY;AAC9B,QAAM;AAAEC,MAAAA;AAAF,QAAeC,MAAM,CAACC,SAA5B;AACA,WAAOF,QAAQ,CAACG,UAAT,CAAoB,KAApB,CAAP;AACD;AAED;AACF;AACA;AACA;AACA;;;AACqC,SAA5BC,4BAA4B,CACjCnF,MADiC,EAE3B;AACN;AACA;AACA;AACA;AACA;AACA,QAAMoF,WAAW,GAAG,CAClB;AACEC,MAAAA,OAAO,EAAE,QADX;AAEEC,MAAAA,GAAG,EAAE;AAFP,KADkB,EAKlB;AACED,MAAAA,OAAO,EAAE;AADX,KALkB,CAApB;;AAUA,QAAI;AACFD,MAAAA,WAAW,CAACpE,OAAZ,CAAoBuE,UAAU,IAAI;AAChC,YACG7G,WAAW,CAACoG,aAAZ,MAA+BS,UAAU,CAACD,GAAX,KAAmB,EAAnD,IACC,CAAC5G,WAAW,CAACoG,aAAZ,EAAD,IAAgCS,UAAU,CAACF,OAAX,KAAuB,EAF1D,EAGE;AACA;AACD;;AACD3G,QAAAA,WAAW,CAAC8G,gBAAZ,CACExF,MADF,EAEGtB,WAAW,CAACoG,aAAZ,KACGS,UAAU,CAACD,GADd,GAEGC,UAAU,CAACF,OAJjB;AAMD,OAbD;AAcD,KAfD,CAeE,OAAOI,GAAP,EAAY;AACZ;AACAjH,MAAAA,GAAG,CAACkH,KAAJ,CAAUD,GAAV;AACD;AACF;AAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACyB,SAAhBD,gBAAgB,CACrBxF,MADqB,EAErBuF,UAFqB,EAGf;AACN;AACA;AACA;AACA,QAAMH,WAAW,GAAGpF,MAAM,CAAC2F,4BAAP,CACjBC,YADiB,GAEjBC,IAFiB,CAEZC,GAFY,CAERP,UAFQ,CAApB;;AAIA,QAAIH,WAAJ,EAAiB;AACfA,MAAAA,WAAW,CAACpE,OAAZ,CAAqB+E,IAAD,IAAgC;AAClDvH,QAAAA,GAAG,CAAC8B,MAAJ,sCACgCiF,UADhC,kBACkDQ,IAAI,CAACC,OADvD,GADkD,CAIlD;;AACAhG,QAAAA,MAAM,CAAC2F,4BAAP,CAAoCM,oBAApC,YACMF,IAAI,CAACC,OADX,GAEE,IAFF,EAGE,MAAME,SAHR;AAKD,OAVD;AAWD,KAZD,MAYO;AACL1H,MAAAA,GAAG,CAAC2H,IAAJ,sDAAuDZ,UAAvD;AACD;AACD;;AACD;;AAEkC,SAA5Ba,4BAA4B,CAACC,QAAD,EAA6B;AAC9D,QAAM;AAAEC,MAAAA;AAAF,QAAeD,QAArB;AACA,QAAM;AAAEE,MAAAA;AAAF,QAAeD,QAArB;;AACA,QAAIC,QAAQ,KAAK,IAAjB,EAAuB;AACrB,aAAO,CAAP;AACD;;AAED,QAAMC,KAAK,GAAG9H,WAAW,CAACoG,aAAZ,EAAd;;AAEA,QAAI0B,KAAJ,EAAW;AACT,aACE;AACA,SAACF,QAAQ,CAACG,OAAT,IAAoBzI,MAAM,CAAC0I,OAA5B,KACCJ,QAAQ,CAACK,QAAT,IAAqB3I,MAAM,CAAC4I,KAD7B,KAECN,QAAQ,CAACO,MAAT,IAAmB7I,MAAM,CAAC8I,GAF3B,KAGCR,QAAQ,CAACS,OAAT,IAAoB/I,MAAM,CAACgJ,OAH5B,IAIAjJ,YAAY,CAACkJ,UAAb,CAAwBV,QAAxB;AANF;AAQD;;AAED,WACE;AACA,OAACD,QAAQ,CAACS,OAAT,IAAoB/I,MAAM,CAAC0I,OAA5B,KACCJ,QAAQ,CAACK,QAAT,IAAqB3I,MAAM,CAAC4I,KAD7B,KAECN,QAAQ,CAACO,MAAT,IAAmB7I,MAAM,CAAC8I,GAF3B,KAGCR,QAAQ,CAACG,OAAT,IAAoBzI,MAAM,CAACgJ,OAH5B,IAIAjJ,YAAY,CAACkJ,UAAb,CAAwBV,QAAxB;AANF;AAQD;;AAzYe;;AA4YlB,eAAe7H,WAAf","sourcesContent":["/* eslint-disable @typescript-eslint/ban-ts-comment */\n/**\n * Exports a function for initializing monaco with the deephaven theme/config\n */\n// Instead of importing just 'monaco-editor' and importing all languages and features, just import the features and don't import all the languages we don't care about\n// Default list of features here: https://github.com/microsoft/monaco-editor-webpack-plugin\n// Mapping to paths here: https://github.com/microsoft/monaco-editor-webpack-plugin/blob/main/src/features.ts\n// Importing this way rather than using the plugin because I don't want to hook up react-app-rewired for the build\n\nimport { Shortcut } from '@deephaven/components';\nimport { IdeSession } from '@deephaven/jsapi-shim';\nimport { assertNotNull } from '@deephaven/utils';\nimport * as monaco from 'monaco-editor/esm/vs/editor/editor.api.js';\nimport 'monaco-editor/esm/vs/editor/standalone/browser/accessibilityHelp/accessibilityHelp.js';\nimport 'monaco-editor/esm/vs/editor/contrib/anchorSelect/anchorSelect.js';\nimport 'monaco-editor/esm/vs/editor/contrib/bracketMatching/bracketMatching.js';\nimport 'monaco-editor/esm/vs/editor/contrib/caretOperations/caretOperations.js';\nimport 'monaco-editor/esm/vs/editor/contrib/clipboard/clipboard.js';\nimport 'monaco-editor/esm/vs/editor/contrib/codeAction/codeActionContributions.js';\nimport 'monaco-editor/esm/vs/editor/contrib/codelens/codelensController.js';\nimport 'monaco-editor/esm/vs/editor/contrib/colorPicker/colorContributions.js';\nimport 'monaco-editor/esm/vs/editor/contrib/comment/comment.js';\nimport 'monaco-editor/esm/vs/editor/contrib/contextmenu/contextmenu.js';\nimport 'monaco-editor/esm/vs/editor/browser/controller/coreCommands.js';\nimport 'monaco-editor/esm/vs/editor/contrib/cursorUndo/cursorUndo.js';\nimport 'monaco-editor/esm/vs/editor/contrib/dnd/dnd.js';\nimport 'monaco-editor/esm/vs/editor/contrib/documentSymbols/documentSymbols.js';\nimport 'monaco-editor/esm/vs/editor/contrib/find/findController.js';\nimport 'monaco-editor/esm/vs/editor/contrib/folding/folding.js';\nimport 'monaco-editor/esm/vs/editor/contrib/fontZoom/fontZoom.js';\nimport 'monaco-editor/esm/vs/editor/contrib/format/formatActions.js';\nimport 'monaco-editor/esm/vs/editor/contrib/gotoError/gotoError.js';\nimport 'monaco-editor/esm/vs/editor/standalone/browser/quickAccess/standaloneGotoLineQuickAccess.js';\nimport 'monaco-editor/esm/vs/editor/contrib/gotoSymbol/goToCommands.js';\nimport 'monaco-editor/esm/vs/editor/contrib/gotoSymbol/link/goToDefinitionAtPosition.js';\nimport 'monaco-editor/esm/vs/editor/contrib/hover/hover.js';\nimport 'monaco-editor/esm/vs/editor/standalone/browser/iPadShowKeyboard/iPadShowKeyboard.js';\nimport 'monaco-editor/esm/vs/editor/contrib/inPlaceReplace/inPlaceReplace.js';\nimport 'monaco-editor/esm/vs/editor/contrib/indentation/indentation.js';\nimport 'monaco-editor/esm/vs/editor/contrib/inlineCompletions/ghostTextController.js';\nimport 'monaco-editor/esm/vs/editor/contrib/inlayHints/inlayHintsController.js';\nimport 'monaco-editor/esm/vs/editor/standalone/browser/inspectTokens/inspectTokens.js';\nimport 'monaco-editor/esm/vs/editor/contrib/linesOperations/linesOperations.js';\nimport 'monaco-editor/esm/vs/editor/contrib/linkedEditing/linkedEditing.js';\nimport 'monaco-editor/esm/vs/editor/contrib/links/links.js';\nimport 'monaco-editor/esm/vs/editor/contrib/multicursor/multicursor.js';\nimport 'monaco-editor/esm/vs/editor/contrib/parameterHints/parameterHints.js';\nimport 'monaco-editor/esm/vs/editor/standalone/browser/quickAccess/standaloneCommandsQuickAccess.js';\nimport 'monaco-editor/esm/vs/editor/standalone/browser/quickAccess/standaloneHelpQuickAccess.js';\nimport 'monaco-editor/esm/vs/editor/standalone/browser/quickAccess/standaloneGotoSymbolQuickAccess.js';\nimport 'monaco-editor/esm/vs/editor/standalone/browser/referenceSearch/standaloneReferenceSearch.js';\nimport 'monaco-editor/esm/vs/editor/contrib/rename/rename.js';\nimport 'monaco-editor/esm/vs/editor/contrib/smartSelect/smartSelect.js';\nimport 'monaco-editor/esm/vs/editor/contrib/snippet/snippetController2.js';\nimport 'monaco-editor/esm/vs/editor/contrib/suggest/suggestController.js';\nimport 'monaco-editor/esm/vs/editor/standalone/browser/toggleHighContrast/toggleHighContrast.js';\nimport 'monaco-editor/esm/vs/editor/contrib/toggleTabFocusMode/toggleTabFocusMode.js';\nimport 'monaco-editor/esm/vs/editor/contrib/caretOperations/transpose.js';\nimport 'monaco-editor/esm/vs/editor/contrib/unusualLineTerminators/unusualLineTerminators.js';\nimport 'monaco-editor/esm/vs/editor/contrib/viewportSemanticTokens/viewportSemanticTokens.js';\nimport 'monaco-editor/esm/vs/editor/contrib/wordHighlighter/wordHighlighter.js';\nimport 'monaco-editor/esm/vs/editor/contrib/wordOperations/wordOperations.js';\nimport 'monaco-editor/esm/vs/editor/contrib/wordPartOperations/wordPartOperations.js';\nimport 'monaco-editor/esm/vs/basic-languages/typescript/typescript.contribution.js';\n// @ts-ignore\nimport { KeyCodeUtils } from 'monaco-editor/esm/vs/base/common/keyCodes.js';\n// @ts-ignore\nimport { KeyMod } from 'monaco-editor/esm/vs/editor/common/standalone/standaloneBase.js';\nimport Log from '@deephaven/log';\nimport MonacoTheme from './MonacoTheme.module.scss';\nimport PyLang from './lang/python';\nimport GroovyLang from './lang/groovy';\nimport ScalaLang from './lang/scala';\nimport DbLang from './lang/db';\nimport LogLang from './lang/log';\nimport { Language } from './lang/Language';\n\nconst log = Log.module('MonacoUtils');\nclass MonacoUtils {\n static init(): void {\n log.debug('Initializing Monaco...');\n\n const { registerLanguages, removeHashtag } = MonacoUtils;\n\n const dhDarkRules = [\n { token: '', foreground: removeHashtag(MonacoTheme.foreground) },\n { token: 'string', foreground: removeHashtag(MonacoTheme.string) },\n {\n token: 'string.delim',\n foreground: removeHashtag(MonacoTheme['string-delim']),\n },\n { token: 'keyword', foreground: removeHashtag(MonacoTheme.keyword) },\n {\n token: 'identifier.js',\n foreground: removeHashtag(MonacoTheme['identifier-js']),\n },\n {\n token: 'delimiter',\n foreground: removeHashtag(MonacoTheme.delimiter),\n },\n { token: 'comment', foreground: removeHashtag(MonacoTheme.comment) },\n { token: 'number', foreground: removeHashtag(MonacoTheme.number) },\n { token: 'storage', foreground: removeHashtag(MonacoTheme.storage) },\n {\n token: 'identifier',\n foreground: removeHashtag(MonacoTheme.identifier),\n },\n {\n token: 'namespace.identifier',\n foreground: removeHashtag(MonacoTheme['namespace-identifier']),\n },\n { token: 'operator', foreground: removeHashtag(MonacoTheme.operator) },\n {\n token: 'predefined',\n foreground: removeHashtag(MonacoTheme.predefined),\n },\n {\n token: 'error.log',\n foreground: MonacoTheme['log-error'].substring(1),\n },\n {\n token: 'warn.log',\n foreground: removeHashtag(MonacoTheme['log-warn']),\n },\n {\n token: 'info.log',\n foreground: removeHashtag(MonacoTheme['log-info']),\n },\n {\n token: 'stdout.log',\n foreground: removeHashtag(MonacoTheme['log-stdout']),\n },\n {\n token: 'trace.log',\n foreground: removeHashtag(MonacoTheme['log-trace']),\n },\n {\n token: 'debug.log',\n foreground: removeHashtag(MonacoTheme['log-debug']),\n },\n {\n token: 'date.log',\n foreground: removeHashtag(MonacoTheme['log-date']),\n },\n ];\n\n const dhDarkColors = {\n errorForeground: MonacoTheme['error-foreground'],\n 'inputOption.activeBorder': MonacoTheme['input-option-active-border'],\n 'editor.background': MonacoTheme.background,\n 'editor.foreground': MonacoTheme.foreground,\n 'editor.lineHighlightBackground': MonacoTheme['editor-line-highlight-bg'],\n 'editorLineNumber.foreground':\n MonacoTheme['editor-line-number-foreground'],\n 'editor.selectionBackground': MonacoTheme['editor-selection-background'],\n 'editor.findMatchBackground': MonacoTheme['editor-find-match-background'],\n 'editor.findMatchHighlightBackground':\n MonacoTheme['editor-find-match-highlight-background'],\n 'editorSuggestWidget.background':\n MonacoTheme['editor-suggest-widget-background'],\n 'editorSuggestWidget.border': MonacoTheme['editor-suggest-widget-border'],\n 'editorSuggestWidget.foreground':\n MonacoTheme['editor-suggest-widget-foreground'],\n 'editorSuggestWidget.selectedBackground':\n MonacoTheme['editor-suggest-widget-selected-background'],\n 'editorSuggestWidget.highlightForeground':\n MonacoTheme['editor-suggest-widget-highlightForeground'],\n 'list.hoverBackground': MonacoTheme['list-hover-background'],\n 'dropdown.background': MonacoTheme['context-menu-background'],\n 'dropdown.foreground': MonacoTheme['context-menu-foreground'],\n 'menu.selectionBackground': MonacoTheme['menu-selection-background'],\n 'list.focusBackground': MonacoTheme['menu-selection-background'],\n 'editorWidget.background': MonacoTheme['editor-widget-background'],\n 'inputOption.activeBackground':\n MonacoTheme['input-option-active-background'],\n 'inputOption.activeForeground':\n MonacoTheme['input-option-active-foreground'],\n focusBorder: MonacoTheme['focus-border'],\n 'input.background': MonacoTheme['input-background'],\n 'input.foreground': MonacoTheme['input-foreground'],\n 'input.border': MonacoTheme['input-border'],\n };\n\n monaco.editor.defineTheme('dh-dark', {\n base: 'vs-dark',\n inherit: true,\n rules: dhDarkRules,\n colors: dhDarkColors,\n });\n log.debug2('monaco theme: ', MonacoTheme);\n monaco.editor.setTheme('dh-dark');\n\n registerLanguages([DbLang, PyLang, GroovyLang, LogLang, ScalaLang]);\n\n log.debug('Monaco initialized.');\n }\n\n /**\n * Remove the hashtag prefix from a CSS color string.\n * Monaco expects colors to be the value only, no hashtag.\n * @param color The hex color string to remove the hashtag from, eg. '#ffffff'\n */\n static removeHashtag(color: string): string {\n return color.substring(1);\n }\n\n static registerLanguages(languages: Language[]): void {\n // First override the default loader for any language we have a custom definition for\n // https://github.com/Microsoft/monaco-editor/issues/252#issuecomment-482786867\n const languageIds = languages.map(({ id }) => id);\n monaco.languages\n .getLanguages()\n .filter(({ id }) => languageIds.includes(id))\n .forEach(languageParam => {\n const language = languageParam;\n log.debug2('Overriding default language loader:', language.id);\n });\n\n // Then register our language definitions\n languages.forEach(language => {\n MonacoUtils.registerLanguage(language);\n });\n }\n\n static registerLanguage(language: Language): void {\n log.debug2('Registering language: ', language.id);\n monaco.languages.register(language);\n\n monaco.languages.onLanguage(language.id, () => {\n monaco.languages.setLanguageConfiguration(language.id, language.conf);\n monaco.languages.setMonarchTokensProvider(language.id, language.language);\n });\n }\n\n /**\n * Set EOL preference for the editor\n * @param editor The editor to set the EOL for\n * @param eolSequence EOL sequence\n */\n static setEOL(\n editor: monaco.editor.IStandaloneCodeEditor,\n eolSequence = monaco.editor.EndOfLineSequence.LF\n ): void {\n editor.getModel()?.setEOL(eolSequence);\n }\n\n /**\n * Links an editor with a provided session to provide completion items.\n * @param session The IdeSession to link\n * @param editor The editor to link the session to\n * @returns A cleanup function for disposing of the created listeners\n */\n static openDocument(\n editor: monaco.editor.IStandaloneCodeEditor,\n session: IdeSession\n ): monaco.IDisposable {\n const model = editor.getModel();\n assertNotNull(model);\n const didOpenDocumentParams = {\n textDocument: {\n uri: `${model.uri}`,\n languageId: model.getModeId(),\n version: model.getVersionId(),\n text: model.getValue(),\n },\n };\n log.debug2('didOpenDocumentParams: ', didOpenDocumentParams);\n\n session.openDocument(didOpenDocumentParams);\n\n const dispose = editor.onDidChangeModelContent(changedEvent => {\n const { changes, versionId } = changedEvent;\n\n const contentChanges = [];\n for (let i = 0; i < changes.length; i += 1) {\n const change = changes[i];\n const { range, rangeLength, text } = change;\n const contentChange = {\n range: {\n start: {\n line: range.startLineNumber - 1,\n character: range.startColumn - 1,\n },\n end: {\n line: range.endLineNumber - 1,\n character: range.endColumn - 1,\n },\n },\n rangeLength,\n text,\n };\n\n contentChanges.push(contentChange);\n }\n\n if (contentChanges.length > 0) {\n const didChangeDocumentParams = {\n textDocument: {\n version: versionId,\n uri: `${model.uri}`,\n },\n contentChanges,\n };\n log.debug2('didChangeDocumentParams', didChangeDocumentParams);\n session.changeDocument(didChangeDocumentParams);\n }\n });\n\n return dispose;\n }\n\n static closeDocument(\n editor: monaco.editor.IStandaloneCodeEditor,\n session: IdeSession\n ): void {\n const model = editor.getModel();\n assertNotNull(model);\n const didCloseDocumentParams = {\n textDocument: {\n uri: `${model.uri}`,\n },\n };\n session.closeDocument(didCloseDocumentParams);\n }\n\n /**\n * Register a paste handle to clean up any garbage code pasted.\n * Most of this comes from copying from Slack, which has a bad habit of injecting their own characters in your code snippets.\n * I've emailed Slack about the issue and they're working on it. I can't reference a ticket number because their ticket system is entirely internally facing.\n * @param editor The editor the register the paste handler for\n */\n static registerPasteHandler(\n editor: monaco.editor.IStandaloneCodeEditor\n ): void {\n editor.onDidPaste(pasteEvent => {\n const smartQuotes = /“|”/g;\n const invalidChars = /\\u200b/g;\n const editorModel = editor.getModel();\n assertNotNull(editorModel);\n const pastedText = editorModel.getValueInRange(pasteEvent.range);\n if (smartQuotes.test(pastedText) || invalidChars.test(pastedText)) {\n editorModel.applyEdits([\n {\n range: pasteEvent.range,\n text: pastedText\n .replace(smartQuotes, '\"')\n .replace(invalidChars, ''),\n },\n ]);\n }\n });\n }\n\n static isMacPlatform(): boolean {\n const { platform } = window.navigator;\n return platform.startsWith('Mac');\n }\n\n /**\n * Remove any keybindings which are used for our own shortcuts.\n * This allows the key events to bubble up so a component higher up can capture them\n * @param editor The editor to remove the keybindings from\n */\n static removeConflictingKeybindings(\n editor: monaco.editor.IStandaloneCodeEditor\n ): void {\n // Multi-mod key events have a specific order\n // E.g. ctrl+alt+UpArrow is not found, but alt+ctrl+UpArrow is found\n // meta is WindowsKey on Windows and cmd on Mac\n // ctrl is ctrl Windows and ctrl on Mac\n // alt is alt on Windows and option on Mac\n const keybindings = [\n {\n windows: 'ctrl+D',\n mac: 'meta+D',\n },\n {\n windows: 'ctrl+H',\n },\n ];\n\n try {\n keybindings.forEach(keybinding => {\n if (\n (MonacoUtils.isMacPlatform() && keybinding.mac === '') ||\n (!MonacoUtils.isMacPlatform() && keybinding.windows === '')\n ) {\n return;\n }\n MonacoUtils.removeKeybinding(\n editor,\n (MonacoUtils.isMacPlatform()\n ? keybinding.mac\n : keybinding.windows) as string\n );\n });\n } catch (err) {\n // This is probably only caused by Monaco changing private methods used here\n log.error(err);\n }\n }\n\n /**\n * Remove a keybinding and allow the events to bubble up\n * If you want the keybinding removed for all editors, add it to removeConflictingKeybindings\n * Monaco still captures the event if you choose to override the keybinding with a no-op function\n *\n * Based on the following comment to remove a keybinding and let the event bubble up\n * https://github.com/microsoft/monaco-editor/issues/287#issuecomment-331447475\n * The issue for an API for this has apparently been open since 2016. Link below\n * https://github.com/microsoft/monaco-editor/issues/102\n * @param editor The editor to remove the keybinding from\n * @param keybinding The key string to remove. E.g. 'ctrl+C' for copy on Windows\n */\n static removeKeybinding(\n editor: monaco.editor.IStandaloneCodeEditor,\n keybinding: string\n ): void {\n /* eslint-disable no-underscore-dangle */\n // It's possible a single keybinding has multiple commands depending on context\n // @ts-ignore\n const keybindings = editor._standaloneKeybindingService\n ._getResolver()\n ._map.get(keybinding);\n\n if (keybindings) {\n keybindings.forEach((elem: { command: unknown }) => {\n log.debug2(\n `Removing Monaco keybinding ${keybinding} for ${elem.command}`\n );\n // @ts-ignore\n editor._standaloneKeybindingService.addDynamicKeybinding(\n `-${elem.command}`,\n null,\n () => undefined\n );\n });\n } else {\n log.warn(`Did not find any keybindings to remove for ${keybinding}`);\n }\n /* eslint-enable no-underscore-dangle */\n }\n\n static getMonacoKeyCodeFromShortcut(shortcut: Shortcut): number {\n const { keyState } = shortcut;\n const { keyValue } = keyState;\n if (keyValue === null) {\n return 0;\n }\n\n const isMac = MonacoUtils.isMacPlatform();\n\n if (isMac) {\n return (\n // eslint-disable-next-line no-bitwise\n (keyState.metaKey && KeyMod.CtrlCmd) |\n (keyState.shiftKey && KeyMod.Shift) |\n (keyState.altKey && KeyMod.Alt) |\n (keyState.ctrlKey && KeyMod.WinCtrl) |\n KeyCodeUtils.fromString(keyValue)\n );\n }\n\n return (\n // eslint-disable-next-line no-bitwise\n (keyState.ctrlKey && KeyMod.CtrlCmd) |\n (keyState.shiftKey && KeyMod.Shift) |\n (keyState.altKey && KeyMod.Alt) |\n (keyState.metaKey && KeyMod.WinCtrl) |\n KeyCodeUtils.fromString(keyValue)\n );\n }\n}\n\nexport default MonacoUtils;\n"],"file":"MonacoUtils.js"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@deephaven/console",
3
- "version": "0.15.5",
3
+ "version": "0.15.6-beta.0+743f253",
4
4
  "description": "Deephaven Console",
5
5
  "author": "Deephaven Data Labs LLC",
6
6
  "license": "Apache-2.0",
@@ -30,12 +30,12 @@
30
30
  "start": "cross-env NODE_ENV=development npm run watch"
31
31
  },
32
32
  "dependencies": {
33
- "@deephaven/components": "^0.15.5",
34
- "@deephaven/icons": "^0.15.0",
35
- "@deephaven/jsapi-shim": "^0.15.5",
36
- "@deephaven/log": "^0.15.5",
37
- "@deephaven/storage": "^0.15.5",
38
- "@deephaven/utils": "^0.15.0",
33
+ "@deephaven/components": "^0.15.6-beta.0+743f253",
34
+ "@deephaven/icons": "^0.15.6-beta.0+743f253",
35
+ "@deephaven/jsapi-shim": "^0.15.6-beta.0+743f253",
36
+ "@deephaven/log": "^0.15.6-beta.0+743f253",
37
+ "@deephaven/storage": "^0.15.6-beta.0+743f253",
38
+ "@deephaven/utils": "^0.15.6-beta.0+743f253",
39
39
  "@fortawesome/react-fontawesome": "^0.1.18",
40
40
  "classnames": "^2.3.1",
41
41
  "lodash.debounce": "^4.0.8",
@@ -53,8 +53,8 @@
53
53
  "react-dom": "^17.x"
54
54
  },
55
55
  "devDependencies": {
56
- "@deephaven/mocks": "^0.15.0",
57
- "@deephaven/tsconfig": "^0.15.2"
56
+ "@deephaven/mocks": "^0.15.6-beta.0+743f253",
57
+ "@deephaven/tsconfig": "^0.15.6-beta.0+743f253"
58
58
  },
59
59
  "files": [
60
60
  "dist"
@@ -65,5 +65,5 @@
65
65
  "publishConfig": {
66
66
  "access": "public"
67
67
  },
68
- "gitHead": "0556c0fe73d2cabf66682a955950defd6130bbfa"
68
+ "gitHead": "743f253dd40b4f0dcca921ecf4f578d64202cd53"
69
69
  }