3
3
* @Author : Yp Z
4
4
* @Date : 2023-08-14 18:01:15
5
5
* @FilePath : /src/index.ts
6
- * @LastEditTime : 2023-10-03 19:17:26
6
+ * @LastEditTime : 2023-11-13 19:48:03
7
7
* @Description :
8
8
*/
9
9
import {
@@ -12,6 +12,8 @@ import {
12
12
getFrontend ,
13
13
openTab ,
14
14
Menu ,
15
+ EventBus ,
16
+ IEventBusMap ,
15
17
IMenuItemOption
16
18
} from "siyuan" ;
17
19
import siyuan from "siyuan" ;
@@ -20,14 +22,25 @@ import "@/index.scss";
20
22
import * as api from "@/api" ;
21
23
22
24
import { Client } from "@siyuan-community/siyuan-sdk" ;
23
- import { CANCELLED } from "dns" ;
24
25
25
26
const client = new Client ( {
26
27
//@ts -ignore
27
28
token : window . siyuan . config . api . token
28
29
} ) ;
29
30
30
31
32
+ interface MyEventBusMap extends IEventBusMap {
33
+ 'run-code-block' : string ;
34
+ 'run-js-code' : string ;
35
+ }
36
+ type MyEventBus = EventBus & {
37
+ on <
38
+ K extends keyof MyEventBusMap ,
39
+ D = MyEventBusMap [ K ] ,
40
+ > ( type : K , listener : ( event : CustomEvent < D > ) => any ) : void ;
41
+ }
42
+
43
+
31
44
const SAVED_CODE = "SavedCode.json" ;
32
45
const CALLABLE = "Callable.json" ;
33
46
@@ -103,6 +116,7 @@ export default class RunJsPlugin extends Plugin {
103
116
SAVE_CODE : { [ key : string ] : IAction [ ] }
104
117
CALLABLE : { [ key : string ] : BlockId }
105
118
} ;
119
+ declare eventBus : MyEventBus ;
106
120
107
121
async onload ( ) {
108
122
this . addIcons ( `<symbol id="iconJS" viewBox="0 0 1024 1024"><path d="M640 128H576v256h64V128zM832 320h-192v64h192V320zM896 896H128v64h768v-64z" p-id="4062"></path><path d="M640 64H128v128h64V128h421.76L832 346.24V960h64V320l-256-256zM256 384H192v349.44q0 42.24-34.56 42.24h-19.84V832h28.16Q256 832 256 736V384z" p-id="4063"></path><path d="M448 384a131.84 131.84 0 0 0-87.04 28.16 94.72 94.72 0 0 0-33.28 77.44 87.68 87.68 0 0 0 34.56 73.6 208.64 208.64 0 0 0 73.6 31.36 256 256 0 0 1 59.52 21.12 45.44 45.44 0 0 1 26.24 41.6c0 33.28-23.68 49.28-71.04 49.28a71.04 71.04 0 0 1-49.28-14.08 88.96 88.96 0 0 1-21.76-52.48H320a120.96 120.96 0 0 0 132.48 128c87.68 0 131.84-38.4 131.84-115.84A89.6 89.6 0 0 0 549.12 576a225.28 225.28 0 0 0-75.52-33.92 391.68 391.68 0 0 1-60.16-22.4 37.76 37.76 0 0 1-23.68-32 35.84 35.84 0 0 1 16-32.64A69.76 69.76 0 0 1 448 448a70.4 70.4 0 0 1 46.72 12.8 72.32 72.32 0 0 1 21.76 40.32H576A113.28 113.28 0 0 0 448 384zM224 256a32 32 0 1 0 32 32 32 32 0 0 0-32-32z" p-id="4064"></path></symbol>` )
@@ -136,6 +150,9 @@ export default class RunJsPlugin extends Plugin {
136
150
this . eventBus . on ( "run-code-block" , ( { detail } ) => {
137
151
this . runCodeBlock ( detail ) ;
138
152
} ) ;
153
+ this . eventBus . on ( "run-js-code" , ( { detail} ) => {
154
+ this . runJsCode ( detail ) ;
155
+ } ) ;
139
156
140
157
await Promise . all ( [ this . loadData ( SAVED_CODE ) , this . loadData ( CALLABLE ) ] ) ;
141
158
this . data [ SAVED_CODE ] = this . data [ SAVED_CODE ] || { } ;
@@ -300,12 +317,20 @@ export default class RunJsPlugin extends Plugin {
300
317
let code = block . content ;
301
318
console . log ( 'Code Block:' , block . id ) ;
302
319
console . log ( code ) ;
320
+ this . runJsCode ( code ) ;
321
+ console . groupEnd ( ) ;
322
+ }
323
+
324
+ /**
325
+ * 运行指定的代码
326
+ * @param code string, 代码字符串
327
+ */
328
+ public async runJsCode ( code : string ) {
303
329
let func = new Function (
304
330
'siyuan' , 'client' , 'api' , 'plugin' , 'thisBlock' ,
305
331
code
306
332
) ;
307
- func ( siyuan , client , api , this , block ) ;
308
- console . groupEnd ( ) ;
333
+ return func ( siyuan , client , api , this , null ) ;
309
334
}
310
335
311
336
private showTopbarMenu ( rect ?: DOMRect ) {
0 commit comments