@node-red/editor-client 2.1.4 → 2.1.5

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.
@@ -59,6 +59,8 @@
59
59
  "hideOtherFlows": "他のフローを非表示",
60
60
  "showAllFlows": "全てのフローを表示",
61
61
  "hideAllFlows": "全てのフローを非表示",
62
+ "hiddenFlows": "__count__ 個の非表示のフロー一覧",
63
+ "hiddenFlows_plural": "__count__ 個の非表示のフロー一覧",
62
64
  "showLastHiddenFlow": "最後に非表示にしたフローを表示",
63
65
  "listFlows": "フロー一覧",
64
66
  "listSubflows": "サブフロー一覧",
@@ -669,7 +671,8 @@
669
671
  "unusedConfigNodes": "未使用の設定ノード",
670
672
  "invalidNodes": "不正なノード",
671
673
  "uknownNodes": "未知のノード",
672
- "unusedSubflows": "未使用のサブフロー"
674
+ "unusedSubflows": "未使用のサブフロー",
675
+ "hiddenFlows": "非表示のフロー"
673
676
  }
674
677
  },
675
678
  "help": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@node-red/editor-client",
3
- "version": "2.1.4",
3
+ "version": "2.1.5",
4
4
  "license": "Apache-2.0",
5
5
  "repository": {
6
6
  "type": "git",
package/public/red/about CHANGED
@@ -1,3 +1,37 @@
1
+ #### 2.1.5: Maintenance Release
2
+
3
+ Runtime
4
+
5
+ - Handle reporting error location when stack is truncated (#3346) @knolleary
6
+ - Initialize passport when only adminAuth.tokens is set (#3343) @knolleary
7
+ - Add log logging (#3342) @knolleary
8
+
9
+ Editor
10
+
11
+ - Fix copy buttons on the debug window (another method) (#3331) @kazuhitoyokoi
12
+ - Add Japanese translations for hidden flow (#3302) @kazuhitoyokoi
13
+ - Improve jsonata legacy mode detection regex (#3345) @knolleary
14
+ - Fix generating flow name with incrementing number (#3347) @knolleary
15
+ - resume focus after import/export dialog close (#3337) @HiroyasuNishiyama
16
+ - Fix findPreviousVisibleTab action (#3321) @knolleary
17
+ - Fix storing hidden tab state when not hidden via action (#3312) @knolleary
18
+ - Avoid adding empty env properties to tabs/groups (#3311) @knolleary
19
+ - Fix hide icon in tour guide (#3301) @kazuhitoyokoi
20
+
21
+ Nodes
22
+
23
+ - File: Update file node examples according to node name change (#3335) @HiroyasuNishiyama
24
+ - Filter (RBE): Fix for filter node narrrowbandEq mode start condition failure (#3339) @dceejay
25
+ - Function: Prevent function scrollbar from obscuring expand button (#3348) @knolleary
26
+ - Function: load extralibs when expanding monaco. fixes #3319 (#3334) @Steve-Mcl
27
+ - Function: Update Function to use correct api to access env vars (#3310) @knolleary
28
+ - HTTP Request: Fix basic auth with empty username or password (#3325) @hardillb
29
+ - Inject: Fix incorrect clearing of blank payload property in Inject node (#3322) @knolleary
30
+ - Link Call: add link call example (#3336) @HiroyasuNishiyama
31
+ - WebSocket: Only setup ws client heartbeat once it is connected (#3344) @knolleary
32
+ - Update Japanese translations in node help (#3332) @kazuhitoyokoi
33
+
34
+
1
35
  #### 2.1.4: Maintenance Release
2
36
 
3
37
  Runtime
package/public/red/red.js CHANGED
@@ -12557,7 +12557,7 @@ RED.tabs = (function() {
12557
12557
 
12558
12558
  function findPreviousVisibleTab(li) {
12559
12559
  if (!li) {
12560
- li = ul.find("li.active").parent();
12560
+ li = ul.find("li.active");
12561
12561
  }
12562
12562
  var previous = li.prev();
12563
12563
  while(previous.length > 0 && previous.hasClass("hide-tab")) {
@@ -12567,9 +12567,9 @@ RED.tabs = (function() {
12567
12567
  }
12568
12568
  function findNextVisibleTab(li) {
12569
12569
  if (!li) {
12570
- li = ul.find("li.active").parent();
12570
+ li = ul.find("li.active");
12571
12571
  }
12572
- var next = ul.find("li.active").next();
12572
+ var next = li.next();
12573
12573
  while(next.length > 0 && next.hasClass("hide-tab")) {
12574
12574
  next = next.next();
12575
12575
  }
@@ -18229,7 +18229,7 @@ RED.workspaces = (function() {
18229
18229
  var tabId = RED.nodes.id();
18230
18230
  do {
18231
18231
  workspaceIndex += 1;
18232
- } while ($("#red-ui-workspace-tabs a[title='"+RED._('workspace.defaultName',{number:workspaceIndex})+"']").size() !== 0);
18232
+ } while ($("#red-ui-workspace-tabs li[flowname='"+RED._('workspace.defaultName',{number:workspaceIndex})+"']").size() !== 0);
18233
18233
 
18234
18234
  ws = {
18235
18235
  type: "tab",
@@ -18242,12 +18242,15 @@ RED.workspaces = (function() {
18242
18242
  };
18243
18243
  RED.nodes.addWorkspace(ws,targetIndex);
18244
18244
  workspace_tabs.addTab(ws,targetIndex);
18245
+
18245
18246
  workspace_tabs.activateTab(tabId);
18246
18247
  if (!skipHistoryEntry) {
18247
18248
  RED.history.push({t:'add',workspaces:[ws],dirty:RED.nodes.dirty()});
18248
18249
  RED.nodes.dirty(true);
18249
18250
  }
18250
18251
  }
18252
+ $("#red-ui-tab-"+(ws.id.replace(".","-"))).attr("flowname",ws.label)
18253
+
18251
18254
  RED.view.focus();
18252
18255
  return ws;
18253
18256
  }
@@ -18371,10 +18374,20 @@ RED.workspaces = (function() {
18371
18374
  },
18372
18375
  onhide: function(tab) {
18373
18376
  hideStack.push(tab.id);
18377
+
18378
+ var hiddenTabs = JSON.parse(RED.settings.getLocal("hiddenTabs")||"{}");
18379
+ hiddenTabs[tab.id] = true;
18380
+ RED.settings.setLocal("hiddenTabs",JSON.stringify(hiddenTabs));
18381
+
18374
18382
  RED.events.emit("workspace:hide",{workspace: tab.id})
18375
18383
  },
18376
18384
  onshow: function(tab) {
18377
18385
  removeFromHideStack(tab.id);
18386
+
18387
+ var hiddenTabs = JSON.parse(RED.settings.getLocal("hiddenTabs")||"{}");
18388
+ delete hiddenTabs[tab.id];
18389
+ RED.settings.setLocal("hiddenTabs",JSON.stringify(hiddenTabs));
18390
+
18378
18391
  RED.events.emit("workspace:show",{workspace: tab.id})
18379
18392
  },
18380
18393
  minimumActiveTabWidth: 150,
@@ -18705,9 +18718,6 @@ RED.workspaces = (function() {
18705
18718
  }
18706
18719
  if (workspace_tabs.contains(id)) {
18707
18720
  workspace_tabs.hideTab(id);
18708
- var hiddenTabs = JSON.parse(RED.settings.getLocal("hiddenTabs")||"{}");
18709
- hiddenTabs[id] = true;
18710
- RED.settings.setLocal("hiddenTabs",JSON.stringify(hiddenTabs));
18711
18721
  }
18712
18722
  },
18713
18723
  isHidden: function(id) {
@@ -18735,14 +18745,11 @@ RED.workspaces = (function() {
18735
18745
  }
18736
18746
  workspace_tabs.activateTab(id);
18737
18747
  }
18738
- var hiddenTabs = JSON.parse(RED.settings.getLocal("hiddenTabs")||"{}");
18739
- delete hiddenTabs[id];
18740
- RED.settings.setLocal("hiddenTabs",JSON.stringify(hiddenTabs));
18741
18748
  },
18742
18749
  refresh: function() {
18743
18750
  RED.nodes.eachWorkspace(function(ws) {
18744
18751
  workspace_tabs.renameTab(ws.id,ws.label);
18745
-
18752
+ $("#red-ui-tab-"+(ws.id.replace(".","-"))).attr("flowname",ws.label)
18746
18753
  })
18747
18754
  RED.nodes.eachSubflow(function(sf) {
18748
18755
  if (workspace_tabs.contains(sf.id)) {
@@ -32529,7 +32536,9 @@ RED.editor = (function() {
32529
32536
  }
32530
32537
  });
32531
32538
  }
32532
- if (!isSameObj(old_env, new_env)) {
32539
+ if (!old_env && new_env.length === 0) {
32540
+ delete node.env;
32541
+ } else if (!isSameObj(old_env, new_env)) {
32533
32542
  editState.changes.env = node.env;
32534
32543
  if (new_env.length === 0) {
32535
32544
  delete node.env;
@@ -34354,7 +34363,7 @@ RED.editor = (function() {
34354
34363
  var currentExpression = expressionEditor.getValue();
34355
34364
  var expr;
34356
34365
  var usesContext = false;
34357
- var legacyMode = /(^|[^a-zA-Z0-9_'"])msg([^a-zA-Z0-9_'"]|$)/.test(currentExpression);
34366
+ var legacyMode = /(^|[^a-zA-Z0-9_'".])msg([^a-zA-Z0-9_'"]|$)/.test(currentExpression);
34358
34367
  $(".red-ui-editor-type-expression-legacy").toggle(legacyMode);
34359
34368
  try {
34360
34369
  expr = jsonata(currentExpression);
@@ -34643,7 +34652,8 @@ RED.editor = (function() {
34643
34652
  clearTimeout: true,
34644
34653
  setInterval: true,
34645
34654
  clearInterval: true
34646
- }
34655
+ },
34656
+ extraLibs: options.extraLibs
34647
34657
  });
34648
34658
  if (options.cursor) {
34649
34659
  expressionEditor.gotoLine(options.cursor.row+1,options.cursor.column,false);
@@ -37662,6 +37672,7 @@ RED.clipboard = (function() {
37662
37672
  text: RED._("common.label.cancel"),
37663
37673
  click: function() {
37664
37674
  $( this ).dialog( "close" );
37675
+ RED.view.focus();
37665
37676
  }
37666
37677
  },
37667
37678
  { // red-ui-clipboard-dialog-download
@@ -37672,6 +37683,7 @@ RED.clipboard = (function() {
37672
37683
  var data = $("#red-ui-clipboard-dialog-export-text").val();
37673
37684
  downloadData("flows.json", data);
37674
37685
  $( this ).dialog( "close" );
37686
+ RED.view.focus();
37675
37687
  }
37676
37688
  },
37677
37689
  { // red-ui-clipboard-dialog-export
@@ -37686,6 +37698,7 @@ RED.clipboard = (function() {
37686
37698
  $( this ).dialog( "close" );
37687
37699
  copyText(flowData);
37688
37700
  RED.notify(RED._("clipboard.nodesExported"),{id:"clipboard"});
37701
+ RED.view.focus();
37689
37702
  } else {
37690
37703
  var flowToExport = $("#red-ui-clipboard-dialog-export-text").val();
37691
37704
  var selectedPath = activeLibraries[activeTab].getSelected();
@@ -37701,6 +37714,7 @@ RED.clipboard = (function() {
37701
37714
  contentType: "application/json; charset=utf-8"
37702
37715
  }).done(function() {
37703
37716
  $(dialog).dialog( "close" );
37717
+ RED.view.focus();
37704
37718
  RED.notify(RED._("library.exportedToLibrary"),"success");
37705
37719
  }).fail(function(xhr,textStatus,err) {
37706
37720
  if (xhr.status === 401) {
@@ -37762,6 +37776,7 @@ RED.clipboard = (function() {
37762
37776
  }
37763
37777
  }
37764
37778
  $( this ).dialog( "close" );
37779
+ RED.view.focus();
37765
37780
  }
37766
37781
  },
37767
37782
  { // red-ui-clipboard-dialog-import-conflict
@@ -37794,6 +37809,7 @@ RED.clipboard = (function() {
37794
37809
  // console.table(pendingImportConfig.importNodes.map(function(n) { return {id:n.id,type:n.type,result:importMap[n.id]}}))
37795
37810
  RED.view.importNodes(newNodes, pendingImportConfig.importOptions);
37796
37811
  $( this ).dialog( "close" );
37812
+ RED.view.focus();
37797
37813
  }
37798
37814
  }
37799
37815
  ],
@@ -38531,28 +38547,25 @@ RED.clipboard = (function() {
38531
38547
  if (truncated) {
38532
38548
  msg += "_truncated";
38533
38549
  }
38534
- $("#red-ui-clipboard-hidden").val(value).focus().select();
38535
- var result = document.execCommand("copy");
38536
- if (result && element) {
38537
- var popover = RED.popover.create({
38538
- target: element,
38539
- direction: 'left',
38540
- size: 'small',
38541
- content: RED._(msg)
38542
- });
38543
- setTimeout(function() {
38544
- popover.close();
38545
- },1000);
38546
- popover.open();
38547
- }
38548
- $("#red-ui-clipboard-hidden").val("");
38549
- if (currentFocus) {
38550
- $(currentFocus).focus();
38551
- }
38552
- return result;
38550
+ navigator.clipboard.writeText(value).then(function () {
38551
+ if (element) {
38552
+ var popover = RED.popover.create({
38553
+ target: element,
38554
+ direction: 'left',
38555
+ size: 'small',
38556
+ content: RED._(msg)
38557
+ });
38558
+ setTimeout(function() {
38559
+ popover.close();
38560
+ },1000);
38561
+ popover.open();
38562
+ }
38563
+ if (currentFocus) {
38564
+ $(currentFocus).focus();
38565
+ }
38566
+ }).catch(err => { console.error("Failed to copy:",err) });
38553
38567
  }
38554
38568
 
38555
-
38556
38569
  function importNodes(nodesStr,addFlow) {
38557
38570
  var newNodes = nodesStr;
38558
38571
  if (typeof nodesStr === 'string') {
@@ -38827,8 +38840,6 @@ RED.clipboard = (function() {
38827
38840
  init: function() {
38828
38841
  setupDialogs();
38829
38842
 
38830
- $('<textarea type="text" id="red-ui-clipboard-hidden" tabIndex="-1">').appendTo("#red-ui-editor");
38831
-
38832
38843
  RED.actions.add("core:show-export-dialog",showExportNodes);
38833
38844
  RED.actions.add("core:show-import-dialog",showImportNodes);
38834
38845