@huawei-ide/codearts 0.0.8 → 1.0.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.
Files changed (3) hide show
  1. package/README.md +16 -7
  2. package/index.js +64 -12
  3. package/package.json +1 -1
package/README.md CHANGED
@@ -9,14 +9,14 @@
9
9
  2. 引入 @huawei-ide/codearts
10
10
  `const ide = require('@huawei-ide/codearts');`
11
11
 
12
- 3. 预加载IDE
13
- 其中id参数为挂载节点id,返回Promise:
14
- `ide.preload(id: string).then(() => {});`
12
+ 3. 预加载IDE, 返回Promise:
13
+ `await ide.preload();`
15
14
 
16
15
  4. 展示IDE
17
- `ide.show({width:string,height: string});`
16
+ 其中id参数为挂载节点id, 返回Promise:
17
+ `ide.show(id: string, {width:string,height: string}).then(() => {});`
18
18
 
19
- 5. 打开文件
19
+ 5. 打开文件,默认可编辑
20
20
  参数content为文件内容,类型为string,path是工程内文件的唯一路径,例如'src', 'src/tool', name为带后缀的文件名:
21
21
  ```
22
22
  ide.openFile({
@@ -26,5 +26,14 @@
26
26
  });
27
27
  ```
28
28
 
29
- 6. 销毁IDE
30
- `ide.dispose();`
29
+ 6. 设置文件是否为预览(只读)状态
30
+ `ide.setPreview(preview: boolean)`
31
+
32
+ 7. 获取当前文件最新内容,返回Promise:
33
+ `await ide.getContent();`
34
+
35
+ 8. 设置Token:
36
+ `ide.setToken();`
37
+
38
+ 9. 销毁IDE
39
+ `ide.dispose();`
package/index.js CHANGED
@@ -1,32 +1,60 @@
1
- var iframe = document.createElement('iframe');
1
+ const hcOrigin = 'https://res.hc-cdn.com';
2
+ const iframe = document.createElement('iframe');
2
3
  iframe.id = 'codeartside';
3
- iframe.src = 'https://res.hc-cdn.com/codearts-core-web-static/1.0.14/resources/server/gitcode.html';
4
+ iframe.src = hcOrigin + '/codearts-core-web-static/1.0.16/resources/server/gitcode.html';
4
5
  iframe.width = '1px';
5
6
  iframe.height = '1px';
6
7
  iframe.style.opacity = 0;
7
8
  iframe.style.zIndex = -1;
8
9
 
9
- export function preload(id) {
10
- var targetNode = document.getElementById(id);
11
- targetNode.appendChild(iframe);
10
+ function ideLoading() {
12
11
  return new Promise((resolve) => {
13
- window.addEventListener('message', function(event) {
14
- console.log('-gitcode--receive message---', event.data);
12
+ function handleMessage(event) {
13
+ console.log('-gitcode--receive message---', event.data);
14
+ if (event.origin !== hcOrigin) {
15
+ return;
16
+ }
15
17
  if (event.data === 'ide-loaded') {
16
- console.log('====Message received from iframe:', event.data);
17
18
  resolve();
19
+ window.removeEventListener('message', handleMessage);
20
+ }
21
+ }
22
+ window.addEventListener('message', handleMessage);
23
+ });
24
+ }
25
+
26
+ function ideContent() {
27
+ return new Promise((resolve) => {
28
+ function handleMessage(event) {
29
+ const { type, data } = event.data;
30
+ console.log('-gitcode--receive message---', event.data);
31
+ if (event.origin !== hcOrigin) {
32
+ return;
33
+ }
34
+ if (type === 'ide-content') {
35
+ resolve(data);
36
+ window.removeEventListener('message', handleMessage);
18
37
  }
19
- });
38
+ }
39
+ window.addEventListener('message', handleMessage);
20
40
  });
21
41
  }
22
42
 
43
+ export function preload() {
44
+ document.body.appendChild(iframe);
45
+ return ideLoading();
46
+ }
47
+
23
48
  // style: { width: string, height: string }
24
- export function show(style) {
49
+ export function show(id, style) {
50
+ var targetNode = document.getElementById(id);
51
+ targetNode.appendChild(iframe);
25
52
  const {width, height} = style;
26
53
  iframe.width = width;
27
54
  iframe.height = height;
28
55
  iframe.style.opacity = 1;
29
56
  iframe.style.zIndex = 1;
57
+ return ideLoading();
30
58
  }
31
59
 
32
60
  // file: { content: string, path: string, name: string }
@@ -39,9 +67,33 @@ export function openFile(file) {
39
67
  }
40
68
 
41
69
  export function dispose() {
42
- iframe.parentNode.removeChild(iframe);
70
+ iframe.remove();
71
+ }
72
+
73
+ export function setPreview(preview) {
74
+ const message = {
75
+ type: 'setPreview',
76
+ data: preview
77
+ };
78
+ postMessage(message);
79
+ }
80
+
81
+ export function getContent() {
82
+ const message = {
83
+ type: 'getContent'
84
+ };
85
+ postMessage(message);
86
+ return ideContent();
87
+ }
88
+
89
+ export function setToken(token) {
90
+ const message = {
91
+ type: 'setToken',
92
+ data: token
93
+ };
94
+ postMessage(message);
43
95
  }
44
96
 
45
97
  function postMessage(message) {
46
- iframe.contentWindow.postMessage(message, '*');
98
+ iframe.contentWindow.postMessage(message, hcOrigin);
47
99
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@huawei-ide/codearts",
3
- "version": "0.0.8",
3
+ "version": "1.0.0",
4
4
  "description": "",
5
5
  "main": "index.js",
6
6
  "scripts": {