Skip to content

Commit 1ee732e

Browse files
save file
1 parent 3baae38 commit 1ee732e

File tree

1 file changed

+123
-30
lines changed

1 file changed

+123
-30
lines changed

utils/editors/js-console/html/output-console/output-console.html

Lines changed: 123 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11

22

3-
<output-console>
3+
<output-console v2.0>
44

55
<template shadowrootmode=open>
66

@@ -53,7 +53,7 @@
5353

5454
<script>
5555

56-
(function output_console({mod,dom,node}){
56+
(function output_console({mod,dom,host}){
5757
//console.log('output');
5858
var obj = {
5959
version : 'v2.0',
@@ -85,7 +85,10 @@
8585
var shadow;
8686

8787
var output;
88+
var cur = {};
89+
8890
var iframe;
91+
obj.iframe;
8992

9093

9194

@@ -98,14 +101,15 @@
98101

99102
obj.init = async function(){
100103

101-
libs();
104+
await libs();
102105

103106
}//init
104107

105108

106109
async function libs(){
107110

108111
[inspect] = await ext.load.libs('js/string/inspect.js');
112+
console.log(inspect);
109113

110114
}//libs
111115

@@ -115,7 +119,7 @@
115119

116120
obj.initdom = function(rootnode){
117121

118-
shadow = node.shadowRoot;
122+
shadow = host.shadowRoot;
119123

120124
chk.persist = $.chkbox(shadow,'#console-persist',false);
121125
chk.log = $.chkbox(shadow,'#console-log',false);
@@ -126,6 +130,7 @@
126130

127131

128132
output = $(shadow,'#output');
133+
cur.root = output;
129134

130135

131136
wrap(chk.wrap.checked);
@@ -159,13 +164,15 @@
159164
}//wrap
160165

161166

162-
obj.run = async function(js,params){
167+
obj.run = async function(js,params={}){
163168
console.log('run');
164169
var sandbox = (()=>{
165170

171+
var console = {};
166172
console.log = log;
167173
console.clear = clear;
168174
console.error = error;
175+
console.write = write;
169176

170177

171178
async function run(js){
@@ -198,15 +205,16 @@
198205
console.log(result);
199206
}
200207

201-
console.log = con.log;
202-
console.clear = con.clear;
203-
console.error = con.error;
208+
//console.log = con.log;
209+
//console.clear = con.clear;
210+
//console.error = con.error;
211+
204212

205213

206214
}//run
207215

208216

209-
obj.run.iframe = async function(js,params){
217+
obj.run.iframe = async function(js,params={}){
210218
console.log('run.iframe');
211219
var resolve,promise=new Promise(res=>resolve=res);
212220

@@ -215,6 +223,7 @@
215223
}
216224

217225
iframe = document.createElement('iframe');
226+
obj.iframe = iframe;
218227
iframe.srcdoc = '';
219228
iframe.onload = onload;
220229
root.append(iframe);
@@ -229,6 +238,7 @@
229238
win.console.log = log;
230239
win.console.clear = clear;
231240
win.console.error = error;
241+
win.console.write = write;
232242

233243
if(!chk.persist){
234244
clear();
@@ -258,6 +268,17 @@
258268

259269

260270

271+
obj.set = function(root){
272+
273+
if(root){
274+
cur.root = root;
275+
}else{
276+
cur.root = output;
277+
}
278+
279+
}//set
280+
281+
261282
//:
262283

263284

@@ -270,7 +291,7 @@
270291
con.clear.call(window.console);
271292
}
272293

273-
output.replaceChildren();
294+
cur.root.replaceChildren();
274295

275296
}//clear
276297

@@ -283,29 +304,18 @@
283304
con.log.apply(window.console,arguments);
284305
}
285306

286-
var str = '';
287-
var args = [...arguments];
288-
args = args.map(v=>{
289-
290-
var type = datatype(v);
291-
switch(type){
292-
293-
case 'function' :
294-
case 'asyncfunction' : str = v.toString(); break;
295-
case 'string' : str = v; break;
296-
default : str = inspect(v); break;
297-
298-
}//switch
299-
return str;
300-
301-
});
302-
303-
var txt = args.join(' ');
307+
var txt = build(arguments);
304308
var div = document.createElement('div');
305309
div.textContent = txt;
306-
output.append(div);
310+
cur.root.append(div);
311+
312+
cur.node = div;
313+
314+
if(txt==''){
315+
div.style.height = '16px';
316+
}
307317

308-
output.scrollTop = 999999999;
318+
cur.root.scrollTop = 999999999;
309319

310320
return div;
311321

@@ -328,6 +338,89 @@
328338

329339

330340

341+
obj.node = function(){return node.apply(null,arguments)}
342+
343+
function node(node){
344+
345+
node = create(node);
346+
347+
cur.root.append(node);
348+
349+
return node;
350+
351+
}//node
352+
353+
354+
355+
obj.write = function(){return write.apply(null,arguments)}
356+
357+
function write(){
358+
359+
var txt = build(arguments);
360+
361+
var span = document.createElement('span');
362+
span.textContent = txt;
363+
364+
if(cur.node){
365+
cur.node.append(span);
366+
}else{
367+
cur.root.append(span);
368+
}
369+
return span;
370+
371+
}//write
372+
373+
374+
//:
375+
376+
377+
function build(args){
378+
379+
var str = '';
380+
var args = [...args];
381+
args = args.map(v=>{
382+
383+
var type = datatype(v);
384+
switch(type){
385+
386+
case 'function' :
387+
case 'asyncfunction' : str = v.toString(); break;
388+
case 'string' : str = v; break;
389+
default : str = inspect(v); break;
390+
391+
}//switch
392+
return str;
393+
394+
});
395+
396+
var txt = args.join(' ');
397+
return txt;
398+
399+
}//build
400+
401+
402+
function create(node){
403+
404+
var type = datatype(node);
405+
switch(type){
406+
407+
case 'string' : node = create.string(node); break;
408+
409+
}//switch
410+
return node;
411+
412+
}//create
413+
414+
415+
create.string = function(str){
416+
417+
var node = document.createElement(str);
418+
return node;
419+
420+
}//string
421+
422+
423+
331424

332425

333426
return obj;

0 commit comments

Comments
 (0)