@opensumi/ide-notebook 3.4.5-next-1730119322.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/README.md +33 -0
- package/lib/browser/index.d.ts +12 -0
- package/lib/browser/index.d.ts.map +1 -0
- package/lib/browser/index.js +49 -0
- package/lib/browser/index.js.map +1 -0
- package/lib/browser/kernel-panel/collapse/collapse-content.d.ts +10 -0
- package/lib/browser/kernel-panel/collapse/collapse-content.d.ts.map +1 -0
- package/lib/browser/kernel-panel/collapse/collapse-content.js +27 -0
- package/lib/browser/kernel-panel/collapse/collapse-content.js.map +1 -0
- package/lib/browser/kernel-panel/collapse/icon.d.ts +7 -0
- package/lib/browser/kernel-panel/collapse/icon.d.ts.map +1 -0
- package/lib/browser/kernel-panel/collapse/icon.js +64 -0
- package/lib/browser/kernel-panel/collapse/icon.js.map +1 -0
- package/lib/browser/kernel-panel/collapse/index.d.ts +5 -0
- package/lib/browser/kernel-panel/collapse/index.d.ts.map +1 -0
- package/lib/browser/kernel-panel/collapse/index.js +66 -0
- package/lib/browser/kernel-panel/collapse/index.js.map +1 -0
- package/lib/browser/kernel-panel/collapse/index.less +95 -0
- package/lib/browser/kernel-panel/collapse/kernel-collapse-content-item.d.ts +9 -0
- package/lib/browser/kernel-panel/collapse/kernel-collapse-content-item.d.ts.map +1 -0
- package/lib/browser/kernel-panel/collapse/kernel-collapse-content-item.js +41 -0
- package/lib/browser/kernel-panel/collapse/kernel-collapse-content-item.js.map +1 -0
- package/lib/browser/kernel-panel/collapse/kernel-collapse-content.d.ts +10 -0
- package/lib/browser/kernel-panel/collapse/kernel-collapse-content.d.ts.map +1 -0
- package/lib/browser/kernel-panel/collapse/kernel-collapse-content.js +4 -0
- package/lib/browser/kernel-panel/collapse/kernel-collapse-content.js.map +1 -0
- package/lib/browser/kernel-panel/collapse/page-collapse-content.d.ts +10 -0
- package/lib/browser/kernel-panel/collapse/page-collapse-content.d.ts.map +1 -0
- package/lib/browser/kernel-panel/collapse/page-collapse-content.js +32 -0
- package/lib/browser/kernel-panel/collapse/page-collapse-content.js.map +1 -0
- package/lib/browser/kernel-panel/index.d.ts +5 -0
- package/lib/browser/kernel-panel/index.d.ts.map +1 -0
- package/lib/browser/kernel-panel/index.js +5 -0
- package/lib/browser/kernel-panel/index.js.map +1 -0
- package/lib/browser/kernel-panel/index.less +20 -0
- package/lib/browser/kernel-panel/kernel-panel-view.d.ts +4 -0
- package/lib/browser/kernel-panel/kernel-panel-view.d.ts.map +1 -0
- package/lib/browser/kernel-panel/kernel-panel-view.js +72 -0
- package/lib/browser/kernel-panel/kernel-panel-view.js.map +1 -0
- package/lib/browser/kernel-panel/kernel.panel.color.tokens.d.ts +2 -0
- package/lib/browser/kernel-panel/kernel.panel.color.tokens.d.ts.map +1 -0
- package/lib/browser/kernel-panel/kernel.panel.color.tokens.js +10 -0
- package/lib/browser/kernel-panel/kernel.panel.color.tokens.js.map +1 -0
- package/lib/browser/kernel-panel/kernel.panel.contribution.d.ts +7 -0
- package/lib/browser/kernel-panel/kernel.panel.contribution.d.ts.map +1 -0
- package/lib/browser/kernel-panel/kernel.panel.contribution.js +32 -0
- package/lib/browser/kernel-panel/kernel.panel.contribution.js.map +1 -0
- package/lib/browser/kernel-panel/kernel.panel.protocol.d.ts +25 -0
- package/lib/browser/kernel-panel/kernel.panel.protocol.d.ts.map +1 -0
- package/lib/browser/kernel-panel/kernel.panel.protocol.js +7 -0
- package/lib/browser/kernel-panel/kernel.panel.protocol.js.map +1 -0
- package/lib/browser/libro/editor/editor-contribution.d.ts +13 -0
- package/lib/browser/libro/editor/editor-contribution.d.ts.map +1 -0
- package/lib/browser/libro/editor/editor-contribution.js +30 -0
- package/lib/browser/libro/editor/editor-contribution.js.map +1 -0
- package/lib/browser/libro/editor/index.less +48 -0
- package/lib/browser/libro/editor/keybind-handler.d.ts +14 -0
- package/lib/browser/libro/editor/keybind-handler.d.ts.map +1 -0
- package/lib/browser/libro/editor/keybind-handler.js +132 -0
- package/lib/browser/libro/editor/keybind-handler.js.map +1 -0
- package/lib/browser/libro/editor/module.d.ts +3 -0
- package/lib/browser/libro/editor/module.d.ts.map +1 -0
- package/lib/browser/libro/editor/module.js +22 -0
- package/lib/browser/libro/editor/module.js.map +1 -0
- package/lib/browser/libro/editor/opensumi-editor.d.ts +251 -0
- package/lib/browser/libro/editor/opensumi-editor.d.ts.map +1 -0
- package/lib/browser/libro/editor/opensumi-editor.js +567 -0
- package/lib/browser/libro/editor/opensumi-editor.js.map +1 -0
- package/lib/browser/libro/index.d.ts +4 -0
- package/lib/browser/libro/index.d.ts.map +1 -0
- package/lib/browser/libro/index.js +4 -0
- package/lib/browser/libro/index.js.map +1 -0
- package/lib/browser/libro/libro-opensumi-content-contribution.d.ts +9 -0
- package/lib/browser/libro/libro-opensumi-content-contribution.d.ts.map +1 -0
- package/lib/browser/libro/libro-opensumi-content-contribution.js +71 -0
- package/lib/browser/libro/libro-opensumi-content-contribution.js.map +1 -0
- package/lib/browser/libro/libro-opensumi-save-content-contribution.d.ts +10 -0
- package/lib/browser/libro/libro-opensumi-save-content-contribution.d.ts.map +1 -0
- package/lib/browser/libro/libro-opensumi-save-content-contribution.js +51 -0
- package/lib/browser/libro/libro-opensumi-save-content-contribution.js.map +1 -0
- package/lib/browser/libro/mana-module.d.ts +3 -0
- package/lib/browser/libro/mana-module.d.ts.map +1 -0
- package/lib/browser/libro/mana-module.js +8 -0
- package/lib/browser/libro/mana-module.js.map +1 -0
- package/lib/browser/libro-keybind-contribution.d.ts +19 -0
- package/lib/browser/libro-keybind-contribution.d.ts.map +1 -0
- package/lib/browser/libro-keybind-contribution.js +142 -0
- package/lib/browser/libro-keybind-contribution.js.map +1 -0
- package/lib/browser/libro-opener.d.ts +12 -0
- package/lib/browser/libro-opener.d.ts.map +1 -0
- package/lib/browser/libro-opener.js +83 -0
- package/lib/browser/libro-opener.js.map +1 -0
- package/lib/browser/libro.color.tokens.d.ts +2 -0
- package/lib/browser/libro.color.tokens.d.ts.map +1 -0
- package/lib/browser/libro.color.tokens.js +9 -0
- package/lib/browser/libro.color.tokens.js.map +1 -0
- package/lib/browser/libro.command.d.ts +6 -0
- package/lib/browser/libro.command.d.ts.map +1 -0
- package/lib/browser/libro.command.js +66 -0
- package/lib/browser/libro.command.js.map +1 -0
- package/lib/browser/libro.contribution.d.ts +29 -0
- package/lib/browser/libro.contribution.d.ts.map +1 -0
- package/lib/browser/libro.contribution.js +140 -0
- package/lib/browser/libro.contribution.js.map +1 -0
- package/lib/browser/libro.module.less +40 -0
- package/lib/browser/libro.protocol.d.ts +3 -0
- package/lib/browser/libro.protocol.d.ts.map +1 -0
- package/lib/browser/libro.protocol.js +3 -0
- package/lib/browser/libro.protocol.js.map +1 -0
- package/lib/browser/libro.service.d.ts +24 -0
- package/lib/browser/libro.service.d.ts.map +1 -0
- package/lib/browser/libro.service.js +68 -0
- package/lib/browser/libro.service.js.map +1 -0
- package/lib/browser/libro.view.d.ts +3 -0
- package/lib/browser/libro.view.d.ts.map +1 -0
- package/lib/browser/libro.view.js +54 -0
- package/lib/browser/libro.view.js.map +1 -0
- package/lib/browser/libro.view.tracker.d.ts +6 -0
- package/lib/browser/libro.view.tracker.d.ts.map +1 -0
- package/lib/browser/libro.view.tracker.js +28 -0
- package/lib/browser/libro.view.tracker.js.map +1 -0
- package/lib/browser/mana/index.d.ts +8 -0
- package/lib/browser/mana/index.d.ts.map +1 -0
- package/lib/browser/mana/index.js +15 -0
- package/lib/browser/mana/index.js.map +1 -0
- package/lib/browser/notebook-document-content-provider.d.ts +22 -0
- package/lib/browser/notebook-document-content-provider.d.ts.map +1 -0
- package/lib/browser/notebook-document-content-provider.js +80 -0
- package/lib/browser/notebook-document-content-provider.js.map +1 -0
- package/lib/browser/notebook.service.d.ts +27 -0
- package/lib/browser/notebook.service.d.ts.map +1 -0
- package/lib/browser/notebook.service.js +186 -0
- package/lib/browser/notebook.service.js.map +1 -0
- package/lib/browser/toc/index.d.ts +4 -0
- package/lib/browser/toc/index.d.ts.map +1 -0
- package/lib/browser/toc/index.js +4 -0
- package/lib/browser/toc/index.js.map +1 -0
- package/lib/browser/toc/toc.contribution.d.ts +6 -0
- package/lib/browser/toc/toc.contribution.d.ts.map +1 -0
- package/lib/browser/toc/toc.contribution.js +25 -0
- package/lib/browser/toc/toc.contribution.js.map +1 -0
- package/lib/browser/toc/toc.module.less +23 -0
- package/lib/browser/toc/toc.panel.color.tokens.d.ts +2 -0
- package/lib/browser/toc/toc.panel.color.tokens.d.ts.map +1 -0
- package/lib/browser/toc/toc.panel.color.tokens.js +6 -0
- package/lib/browser/toc/toc.panel.color.tokens.js.map +1 -0
- package/lib/browser/toc/toc.panel.d.ts +6 -0
- package/lib/browser/toc/toc.panel.d.ts.map +1 -0
- package/lib/browser/toc/toc.panel.js +61 -0
- package/lib/browser/toc/toc.panel.js.map +1 -0
- package/lib/index.d.ts +2 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +2 -0
- package/lib/index.js.map +1 -0
- package/package.json +42 -0
- package/src/browser/index.ts +44 -0
- package/src/browser/kernel-panel/collapse/collapse-content.tsx +46 -0
- package/src/browser/kernel-panel/collapse/icon.tsx +171 -0
- package/src/browser/kernel-panel/collapse/index.less +95 -0
- package/src/browser/kernel-panel/collapse/index.tsx +111 -0
- package/src/browser/kernel-panel/collapse/kernel-collapse-content-item.tsx +77 -0
- package/src/browser/kernel-panel/collapse/kernel-collapse-content.tsx +17 -0
- package/src/browser/kernel-panel/collapse/page-collapse-content.tsx +53 -0
- package/src/browser/kernel-panel/index.less +20 -0
- package/src/browser/kernel-panel/index.ts +4 -0
- package/src/browser/kernel-panel/kernel-panel-view.tsx +104 -0
- package/src/browser/kernel-panel/kernel.panel.color.tokens.ts +39 -0
- package/src/browser/kernel-panel/kernel.panel.contribution.ts +32 -0
- package/src/browser/kernel-panel/kernel.panel.protocol.ts +24 -0
- package/src/browser/libro/editor/editor-contribution.ts +41 -0
- package/src/browser/libro/editor/index.less +48 -0
- package/src/browser/libro/editor/keybind-handler.ts +133 -0
- package/src/browser/libro/editor/module.ts +30 -0
- package/src/browser/libro/editor/opensumi-editor.ts +826 -0
- package/src/browser/libro/index.ts +3 -0
- package/src/browser/libro/libro-opensumi-content-contribution.ts +63 -0
- package/src/browser/libro/libro-opensumi-save-content-contribution.ts +43 -0
- package/src/browser/libro/mana-module.ts +9 -0
- package/src/browser/libro-keybind-contribution.ts +147 -0
- package/src/browser/libro-opener.ts +96 -0
- package/src/browser/libro.color.tokens.ts +32 -0
- package/src/browser/libro.command.ts +63 -0
- package/src/browser/libro.contribution.tsx +189 -0
- package/src/browser/libro.module.less +40 -0
- package/src/browser/libro.protocol.ts +2 -0
- package/src/browser/libro.service.ts +85 -0
- package/src/browser/libro.view.tracker.ts +18 -0
- package/src/browser/libro.view.tsx +62 -0
- package/src/browser/mana/index.ts +20 -0
- package/src/browser/notebook-document-content-provider.ts +100 -0
- package/src/browser/notebook.service.ts +195 -0
- package/src/browser/toc/index.ts +3 -0
- package/src/browser/toc/toc.contribution.ts +24 -0
- package/src/browser/toc/toc.module.less +23 -0
- package/src/browser/toc/toc.panel.color.tokens.ts +11 -0
- package/src/browser/toc/toc.panel.tsx +66 -0
- package/src/index.ts +1 -0
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
|
|
3
|
+
export function FileUnderKernel() {
|
|
4
|
+
return (
|
|
5
|
+
<svg
|
|
6
|
+
width='12px'
|
|
7
|
+
height='12px'
|
|
8
|
+
viewBox='0 0 12 12'
|
|
9
|
+
version='1.1'
|
|
10
|
+
xmlns='http://www.w3.org/2000/svg'
|
|
11
|
+
xmlnsXlink='http://www.w3.org/1999/xlink'
|
|
12
|
+
>
|
|
13
|
+
<title>CPU#1</title>
|
|
14
|
+
<g id='kernel管理面板' stroke='none' strokeWidth='1' fill='none' fillRule='evenodd'>
|
|
15
|
+
<g id='2.0展开' transform='translate(-52.000000, -243.000000)' fill='#000000' fillRule='nonzero'>
|
|
16
|
+
<g id='编组-2' transform='translate(0.000000, 56.000000)'>
|
|
17
|
+
<g id='编组-11' transform='translate(40.000000, 0.000000)'>
|
|
18
|
+
<g id='编组-16备份-3' transform='translate(12.000000, 183.000000)'>
|
|
19
|
+
<g id='CPU#1' transform='translate(0.000000, 4.000000)'>
|
|
20
|
+
<rect id='矩形' opacity='0' x='0' y='0' width='12' height='12'></rect>
|
|
21
|
+
<path
|
|
22
|
+
d='M3.00000391,2.00000391 L9.00000391,2.00000391 C9.66666406,2.00000391 10.0000039,2.33333594 10.0000039,3.00000391 L10.0000039,9.00000391 C10.0000039,9.66666406 9.66666406,10.0000039 9.00000391,10.0000039 L3.00000391,10.0000039 C2.33333594,10.0000039 2.00000391,9.66666406 2.00000391,9.00000391 L2.00000391,3.00000391 C2.00000391,2.33333594 2.33333594,2.00000391 3.00000391,2.00000391 Z'
|
|
23
|
+
id='路径'
|
|
24
|
+
opacity='0.3'
|
|
25
|
+
></path>
|
|
26
|
+
<polygon id='路径' opacity='0.3' points='4.5 4.5 7.5 4.5 7.5 7.5 4.5 7.5'></polygon>
|
|
27
|
+
<path
|
|
28
|
+
d='M9.99999609,3.50000391 L10.4999961,3.50000391 C10.7751965,3.5013362 10.9975833,3.72480226 10.9975833,4.00000391 C10.9975833,4.27520165 10.7751965,4.4986677 10.4999961,4.50000391 L9.99999609,4.50000391 L9.99999609,3.50000391 L9.99999609,3.50000391 Z M9.99999609,5.49999609 L10.4999961,5.49999609 C10.7761445,5.49999609 10.9999961,5.72385548 10.9999961,5.99999609 C10.9999961,6.27614452 10.7761445,6.49999609 10.4999961,6.49999609 L9.99999609,6.49999609 L9.99999609,5.49999609 L9.99999609,5.49999609 Z M9.99999609,7.5 L10.4999961,7.5 C10.7751965,7.5013323 10.9975833,7.72479835 10.9975833,8 C10.9975833,8.27519774 10.7751965,8.4986638 10.4999961,8.5 L9.99999609,8.5 L9.99999609,7.5 L9.99999609,7.5 Z M1.5,3.49999802 L2.00000391,3.49999802 L2.00000391,4.49999802 L1.5,4.49999802 C1.32079125,4.50086759 1.15482306,4.4057587 1.0649673,4.25070236 C0.975111536,4.09564601 0.975111536,3.9043579 1.0649673,3.74930155 C1.15482306,3.5942452 1.32079125,3.49913631 1.5,3.49999802 L1.5,3.49999802 Z M1.49999609,5.49999609 L1.99999609,5.49999609 L1.99999609,6.49999609 L1.49999609,6.49999609 C1.22385547,6.49999609 0.999996094,6.27614453 0.999996094,5.99999609 C0.999996094,5.72385547 1.22385547,5.49999609 1.49999609,5.49999609 L1.49999609,5.49999609 Z M1.5,7.5 L2.00000391,7.5 L2.00000391,8.5 L1.5,8.5 C1.22480353,8.4986638 1.00241671,8.27519774 1.00241671,8 C1.00241671,7.72479835 1.22480353,7.5013323 1.5,7.5 L1.5,7.5 Z'
|
|
29
|
+
id='形状'
|
|
30
|
+
></path>
|
|
31
|
+
</g>
|
|
32
|
+
</g>
|
|
33
|
+
</g>
|
|
34
|
+
</g>
|
|
35
|
+
</g>
|
|
36
|
+
</g>
|
|
37
|
+
</svg>
|
|
38
|
+
);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
export function RunningKernel() {
|
|
42
|
+
return (
|
|
43
|
+
<svg
|
|
44
|
+
width='12px'
|
|
45
|
+
height='12px'
|
|
46
|
+
viewBox='0 0 12 12'
|
|
47
|
+
version='1.1'
|
|
48
|
+
xmlns='http://www.w3.org/2000/svg'
|
|
49
|
+
xmlnsXlink='http://www.w3.org/1999/xlink'
|
|
50
|
+
>
|
|
51
|
+
<title>py</title>
|
|
52
|
+
<g id='kernel管理面板' stroke='none' strokeWidth='1' fill='none' fillRule='evenodd'>
|
|
53
|
+
<g id='2.0展开' transform='translate(-80.000000, -317.000000)' fillRule='nonzero'>
|
|
54
|
+
<g id='编组-2' transform='translate(0.000000, 56.000000)'>
|
|
55
|
+
<g id='编组-11' transform='translate(40.000000, 0.000000)'>
|
|
56
|
+
<g id='编组-10备份' transform='translate(26.000000, 258.000000)'>
|
|
57
|
+
<g id='py' transform='translate(14.000000, 3.000000)'>
|
|
58
|
+
<rect id='矩形' fill='#000000' opacity='0' x='0' y='0' width='12' height='12'></rect>
|
|
59
|
+
<path
|
|
60
|
+
d='M5.75814393,11.7154535 C4.37245332,11.6681765 3.50787713,11.2545027 3.28285045,10.5217092 L3.25916343,10.4389745 L3.25916343,9.0206645 C3.25916343,7.38960802 3.25916343,7.36596952 3.34206799,7.10594602 C3.49603362,6.64499528 3.87502592,6.33769478 4.44351438,6.20768303 L4.57379298,6.18404453 L6.18451028,6.18404453 C7.3333307,6.18404453 7.81891459,6.18404453 7.86628863,6.16040603 C8.19790689,6.08949053 8.39924655,6.03039428 8.60058622,5.87674403 C8.84929992,5.69945528 9.03879607,5.39215479 9.10985713,5.06121579 C9.18091818,4.81301154 9.18091818,4.83665004 9.18091818,3.98566405 L9.18091818,3.19377431 L10.3297386,3.19377431 L10.4363302,3.21741281 C11.0285057,3.39470156 11.478559,3.9502063 11.6562117,4.80119229 C11.7272727,5.13213129 11.7272727,5.15576979 11.7272727,5.99493653 C11.7272727,6.81046477 11.7272727,6.81046477 11.6562117,7.09412677 C11.5851506,7.35415027 11.5259331,7.57871602 11.407498,7.80328176 C11.1824713,8.24059401 10.850853,8.54789451 10.4363302,8.68972551 C10.1876165,8.77246026 10.3889562,8.76064101 8.06762829,8.77246026 L5.97132711,8.77246026 L5.97132711,9.17431475 L8.75455184,9.17431475 L8.75455184,10.604444 C8.73086482,10.6871787 8.7071778,10.8053712 8.64796025,10.9117445 C8.5768992,11.0181177 8.39924655,11.1954065 8.29265497,11.2899605 C7.91366266,11.5381647 7.34517421,11.691815 6.5871896,11.7272727 L5.75814393,11.7272727 L5.75814393,11.7154535 Z M7.67679247,10.8290097 C7.93734968,10.7817327 8.13868935,10.5217092 8.09131531,10.2616857 C8.04394127,10.03712 7.88997565,9.88346974 7.67679247,9.848012 C7.34517421,9.800735 7.06092998,10.0962162 7.10830402,10.415336 C7.15567806,10.6635402 7.35701772,10.8171905 7.59388791,10.8290097 L7.67679247,10.8290097 Z M1.70766368,8.807918 C1.39973243,8.73700251 1.09180119,8.55971376 0.866774506,8.27605176 C0.452251674,7.76782401 0.250912012,6.90501877 0.274599031,5.82946703 C0.29828605,5.16758904 0.381190616,4.65936129 0.606217297,4.24568755 C0.866774506,3.6901828 1.26945383,3.38288231 1.80241176,3.27650906 C1.90900334,3.25287056 1.93269036,3.25287056 3.969774,3.25287056 L6.04238816,3.25287056 C6.06607518,3.25287056 6.06607518,3.22923206 6.06607518,3.05194331 L6.06607518,2.85101606 L3.28285045,2.85101606 L3.28285045,2.11822257 C3.28285045,1.32633283 3.28285045,1.34997133 3.3539115,1.19632108 C3.6026252,0.688093331 4.27770525,0.380792834 5.39099514,0.298058085 C5.47389971,0.298058085 5.67523937,0.274419585 5.87657903,0.274419585 C7.10830402,0.250781086 7.99656723,0.475346833 8.48215112,0.912659079 C8.52952516,0.959936079 8.58874271,1.04267083 8.63611675,1.06630933 C8.7071778,1.14904408 8.79008237,1.32633283 8.83745641,1.46816382 L8.86114343,1.55089857 L8.86114343,3.05194331 C8.86114343,4.43479555 8.86114343,4.55298804 8.83745641,4.63572279 C8.81376939,4.76573454 8.75455184,4.94302329 8.7071778,5.03757729 C8.52952516,5.36851629 8.22159391,5.60490129 7.80707108,5.72309378 C7.54651387,5.79400928 7.65310546,5.79400928 5.88842254,5.80582853 C4.12373962,5.80582853 4.23033121,5.80582853 3.99346102,5.87674403 C3.50787713,6.00675578 3.15257184,6.38497178 3.02229324,6.91683802 C2.95123218,7.16504227 2.95123218,7.14140377 2.95123218,7.99238976 L2.95123218,8.807918 L2.41827425,8.807918 C1.90900334,8.8315565 1.75503772,8.8315565 1.70766368,8.807918 Z M4.64485404,2.10640332 C4.8461937,2.02366857 4.97647231,1.77546432 4.92909827,1.57453707 C4.88172423,1.37360983 4.75144563,1.21995958 4.57379298,1.17268258 C4.28954875,1.08994783 3.98161751,1.25541733 3.93424347,1.57453707 C3.88686943,1.82274132 4.01714804,2.05912632 4.26586174,2.13004182 C4.31323577,2.15368032 4.3487663,2.15368032 4.44351438,2.15368032 C4.56194947,2.15368032 4.58563649,2.15368032 4.64485404,2.10640332 L4.64485404,2.10640332 Z'
|
|
61
|
+
id='形状'
|
|
62
|
+
fill='#FED142'
|
|
63
|
+
></path>
|
|
64
|
+
<path
|
|
65
|
+
d='M1.656,8.856 C1.344,8.784 1.032,8.604 0.804,8.316 C0.384,7.8 0.18,6.924 0.204,5.832 C0.228,5.16 0.312,4.644 0.54,4.224 C0.804,3.66 1.212,3.348 1.752,3.24 C1.86,3.216 1.884,3.216 3.948,3.216 L6.048,3.216 C6.072,3.216 6.072,3.192 6.072,3.012 L6.072,2.808 L3.252,2.808 L3.252,2.064 C3.252,1.26 3.252,1.284 3.324,1.128 C3.576,0.612 4.26,0.3 5.388,0.216 C5.472,0.216 5.676,0.192 5.88,0.192 C7.128,0.168 8.028,0.396 8.52,0.84 C8.568,0.888 8.628,0.972 8.676,0.996 C8.748,1.08 8.832,1.26 8.88,1.404 L8.904,1.488 L8.904,3.012 C8.904,4.416 8.904,4.536 8.88,4.62 C8.856,4.752 8.796,4.932 8.748,5.028 C8.568,5.364 8.256,5.604 7.836,5.724 C7.572,5.796 7.68,5.796 5.892,5.808 C4.104,5.808 4.212,5.808 3.972,5.88 C3.48,6.012 3.12,6.396 2.988,6.936 C2.916,7.188 2.916,7.164 2.916,8.028 L2.916,8.856 L2.376,8.856 C1.86,8.88 1.704,8.88 1.656,8.856 Z M4.632,2.052 C4.836,1.968 4.968,1.716 4.92,1.512 C4.872,1.308 4.74,1.152 4.56,1.104 C4.272,1.02 3.96,1.188 3.912,1.512 C3.864,1.764 3.996,2.004 4.248,2.076 C4.296,2.1 4.332,2.1 4.428,2.1 C4.548,2.1 4.572,2.1 4.632,2.052 L4.632,2.052 Z'
|
|
66
|
+
id='形状'
|
|
67
|
+
fill='#3571A3'
|
|
68
|
+
></path>
|
|
69
|
+
</g>
|
|
70
|
+
</g>
|
|
71
|
+
</g>
|
|
72
|
+
</g>
|
|
73
|
+
</g>
|
|
74
|
+
</g>
|
|
75
|
+
</svg>
|
|
76
|
+
);
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
export function existedLSP() {
|
|
80
|
+
return (
|
|
81
|
+
<svg
|
|
82
|
+
width='12px'
|
|
83
|
+
height='12px'
|
|
84
|
+
viewBox='0 0 12 12'
|
|
85
|
+
version='1.1'
|
|
86
|
+
xmlns='http://www.w3.org/2000/svg'
|
|
87
|
+
xmlnsXlink='http://www.w3.org/1999/xlink'
|
|
88
|
+
>
|
|
89
|
+
<title>robot-fill</title>
|
|
90
|
+
<g id='kernel管理面板' stroke='none' strokeWidth='1' fill='none' fillRule='evenodd' fillOpacity='0.45'>
|
|
91
|
+
<g id='2.0展开' transform='translate(-52.000000, -421.000000)' fill='#000000' fillRule='nonzero'>
|
|
92
|
+
<g id='编组-2' transform='translate(0.000000, 56.000000)'>
|
|
93
|
+
<g id='编组-11' transform='translate(40.000000, 0.000000)'>
|
|
94
|
+
<g id='编组-16备份-5' transform='translate(12.000000, 361.000000)'>
|
|
95
|
+
<g id='robot-fill' transform='translate(0.000000, 4.000000)'>
|
|
96
|
+
<rect id='矩形' opacity='0' x='0' y='0' width='12' height='12'></rect>
|
|
97
|
+
<path
|
|
98
|
+
d='M9.984375,0.75 L2.015625,0.75 C1.80820313,0.75 1.640625,0.917578125 1.640625,1.125 L1.640625,8.859375 C1.640625,9.06679687 1.80820313,9.234375 2.015625,9.234375 L9.984375,9.234375 C10.1917969,9.234375 10.359375,9.06679687 10.359375,8.859375 L10.359375,1.125 C10.359375,0.917578125 10.1917969,0.75 9.984375,0.75 Z M3.515625,3.84375 C3.515625,3.45585937 3.83085937,3.140625 4.21875,3.140625 C4.60664063,3.140625 4.921875,3.45585937 4.921875,3.84375 C4.921875,4.23164063 4.60664063,4.546875 4.21875,4.546875 C3.83085937,4.546875 3.515625,4.23164063 3.515625,3.84375 Z M7.875,6.75 C7.875,6.8015625 7.8328125,6.84375 7.78125,6.84375 L4.21875,6.84375 C4.1671875,6.84375 4.125,6.8015625 4.125,6.75 L4.125,6.046875 C4.125,5.9953125 4.1671875,5.953125 4.21875,5.953125 L7.78125,5.953125 C7.8328125,5.953125 7.875,5.9953125 7.875,6.046875 L7.875,6.75 Z M7.78125,4.546875 C7.39335937,4.546875 7.078125,4.23164063 7.078125,3.84375 C7.078125,3.45585937 7.39335937,3.140625 7.78125,3.140625 C8.16914063,3.140625 8.484375,3.45585937 8.484375,3.84375 C8.484375,4.23164063 8.16914063,4.546875 7.78125,4.546875 Z M9.36328125,10.125 L2.63671875,10.125 C2.475,10.125 2.34375,10.2925781 2.34375,10.5 L2.34375,11.15625 C2.34375,11.2078125 2.3765625,11.25 2.41640625,11.25 L9.58242188,11.25 C9.62226563,11.25 9.65508591,11.2078125 9.65508591,11.15625 L9.65508591,10.5 C9.65625,10.2925781 9.525,10.125 9.36328125,10.125 L9.36328125,10.125 Z'
|
|
99
|
+
id='形状'
|
|
100
|
+
></path>
|
|
101
|
+
</g>
|
|
102
|
+
</g>
|
|
103
|
+
</g>
|
|
104
|
+
</g>
|
|
105
|
+
</g>
|
|
106
|
+
</g>
|
|
107
|
+
</svg>
|
|
108
|
+
);
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
export function OpenedPage() {
|
|
112
|
+
return (
|
|
113
|
+
<svg
|
|
114
|
+
width='12px'
|
|
115
|
+
height='12px'
|
|
116
|
+
viewBox='0 0 12 12'
|
|
117
|
+
version='1.1'
|
|
118
|
+
xmlns='http://www.w3.org/2000/svg'
|
|
119
|
+
xmlnsXlink='http://www.w3.org/1999/xlink'
|
|
120
|
+
>
|
|
121
|
+
<title>广告主流水@2x</title>
|
|
122
|
+
<g id='kernel管理面板' stroke='none' strokeWidth='1' fill='none' fillRule='evenodd' opacity='0.45'>
|
|
123
|
+
<g id='2.0展开' transform='translate(-52.000000, -124.000000)' fill='#000000' fillRule='nonzero'>
|
|
124
|
+
<g id='编组-2' transform='translate(0.000000, 56.000000)'>
|
|
125
|
+
<g id='编组-11' transform='translate(40.000000, 0.000000)'>
|
|
126
|
+
<g id='编组-28' transform='translate(4.000000, 39.000000)'>
|
|
127
|
+
<g id='编组-16' transform='translate(8.000000, 25.000000)'>
|
|
128
|
+
<g id='广告主流水@2x' transform='translate(0.000000, 4.000000)'>
|
|
129
|
+
<rect id='矩形' opacity='0' x='0' y='0' width='12' height='12'></rect>
|
|
130
|
+
<path
|
|
131
|
+
d='M9.21733594,1.33333564 L2.784,1.33333564 C2.35266797,1.33333564 2.00000391,1.68399609 2.00000391,2.11266797 L2.00000391,10.1126719 C2.00000391,10.3573359 2.29133203,10.4866641 2.47332422,10.3226719 L3.03133594,9.82599609 C3.14104553,9.72791931 3.30734886,9.72936573 3.41533594,9.82933594 L4.23400781,10.589332 C4.33144663,10.6806592 4.47935125,10.6917615 4.58933203,10.6160039 L5.83933594,9.76265625 C5.93632187,9.69679836 6.06367813,9.69679836 6.16066406,9.76265625 L7.41399609,10.6173164 C7.52372385,10.6919995 7.67032569,10.6818078 7.76866406,10.5926602 L8.59733203,9.83199609 C8.70467578,9.73198828 8.87067187,9.73198828 8.97999609,9.82932422 L9.52467187,10.3193203 C9.60800658,10.3944788 9.72772048,10.4136655 9.83036936,10.3683149 C9.93301824,10.3229642 9.9994456,10.2215396 10.0000039,10.1093203 L10.0000039,2.11266797 C9.99852973,1.68156402 9.64844222,1.3329652 9.21733594,1.33333564 L9.21733594,1.33333564 Z M2.79998437,3.258 C2.79998437,3.03932813 2.97999609,2.85932813 3.20132812,2.85932813 L5.61199219,2.85932813 C5.832,2.85932813 6.01333594,3.03800391 6.01333594,3.258 C6.01333594,3.47667188 5.83333594,3.65732813 5.61200391,3.65732813 L3.20132812,3.65732813 C2.98060489,3.65697268 2.80145112,3.47871865 2.79998437,3.258 L2.79998437,3.258 Z M6.80199609,4.85132813 C6.80199609,5.07 6.62199609,5.25 6.40066406,5.25 L3.20132812,5.25 C2.98071328,5.25 2.8014584,5.07193813 2.79999609,4.85132813 C2.79999609,4.63265625 2.97999609,4.45265401 3.20132812,4.45265401 L6.40066406,4.45265401 C6.50675183,4.45230135 6.60863526,4.49410529 6.68390008,4.56887123 C6.7591649,4.64363717 6.80164547,4.74524035 6.80199609,4.85132813 L6.80199609,4.85132813 Z'
|
|
132
|
+
id='形状'
|
|
133
|
+
></path>
|
|
134
|
+
</g>
|
|
135
|
+
</g>
|
|
136
|
+
</g>
|
|
137
|
+
</g>
|
|
138
|
+
</g>
|
|
139
|
+
</g>
|
|
140
|
+
</g>
|
|
141
|
+
</svg>
|
|
142
|
+
);
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
export function KernelAndTerminal() {
|
|
146
|
+
return (
|
|
147
|
+
<svg
|
|
148
|
+
width='17px'
|
|
149
|
+
height='16px'
|
|
150
|
+
viewBox='0 0 17 16'
|
|
151
|
+
version='1.1'
|
|
152
|
+
xmlns='http://www.w3.org/2000/svg'
|
|
153
|
+
xmlnsXlink='http://www.w3.org/1999/xlink'
|
|
154
|
+
>
|
|
155
|
+
<title>app store-fill</title>
|
|
156
|
+
<g id='代码片段' stroke='none' strokeWidth='1' fill='none' fillRule='evenodd' fillOpacity='0.35'>
|
|
157
|
+
<g id='1.1搜索' transform='translate(-12.000000, -142.000000)' fill='#000000' fillRule='nonzero'>
|
|
158
|
+
<g id='编组-2' transform='translate(0.000000, 56.000000)'>
|
|
159
|
+
<g id='app-store-fill' transform='translate(12.092308, 86.000427)'>
|
|
160
|
+
<rect id='矩形' opacity='0' x='0' y='0' width='16.0001102' height='16.0001102'></rect>
|
|
161
|
+
<path
|
|
162
|
+
d='M13.500093,2.2500155 L8.75006028,2.2500155 C8.61255933,2.2500155 8.50005856,2.36251628 8.50005856,2.50001722 L8.50005856,7.25004994 C8.50005856,7.38755089 8.61255933,7.50005167 8.75006028,7.50005167 L13.500093,7.50005167 C13.6375939,7.50005167 13.7500947,7.38755089 13.7500947,7.25004994 L13.7500947,2.50001722 C13.7500947,2.36251628 13.6375939,2.2500155 13.500093,2.2500155 Z M13.500093,8.50005856 L8.75006028,8.50005856 C8.61255933,8.50005856 8.50005856,8.61255933 8.50005856,8.75006028 L8.50005856,13.500093 C8.50005856,13.6375939 8.61255933,13.7500947 8.75006028,13.7500947 L13.500093,13.7500947 C13.6375939,13.7500947 13.7500947,13.6375939 13.7500947,13.500093 L13.7500947,8.75006028 C13.7500947,8.61255933 13.6375939,8.50005856 13.500093,8.50005856 Z M7.25004994,2.2500155 L2.50001722,2.2500155 C2.36251628,2.2500155 2.2500155,2.36251628 2.2500155,2.50001722 L2.2500155,7.25004994 C2.2500155,7.38755089 2.36251628,7.50005167 2.50001722,7.50005167 L7.25004994,7.50005167 C7.38755089,7.50005167 7.50005167,7.38755089 7.50005167,7.25004994 L7.50005167,2.50001722 C7.50005167,2.36251628 7.38755089,2.2500155 7.25004994,2.2500155 Z M7.25004994,8.50005856 L2.50001722,8.50005856 C2.36251628,8.50005856 2.2500155,8.61255933 2.2500155,8.75006028 L2.2500155,13.500093 C2.2500155,13.6375939 2.36251628,13.7500947 2.50001722,13.7500947 L7.25004994,13.7500947 C7.38755089,13.7500947 7.50005167,13.6375939 7.50005167,13.500093 L7.50005167,8.75006028 C7.50005167,8.61255933 7.38755089,8.50005856 7.25004994,8.50005856 Z'
|
|
163
|
+
id='形状'
|
|
164
|
+
></path>
|
|
165
|
+
</g>
|
|
166
|
+
</g>
|
|
167
|
+
</g>
|
|
168
|
+
</g>
|
|
169
|
+
</svg>
|
|
170
|
+
);
|
|
171
|
+
}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
.libro-panel-collapse-container {
|
|
2
|
+
width: 100%;
|
|
3
|
+
margin-bottom: 16px;
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
.libro-panel-collapse-header {
|
|
7
|
+
user-select: none; // 双击不选中文本
|
|
8
|
+
color: var(--kernel-panel-collapse-header-label);
|
|
9
|
+
font-size: 12px;
|
|
10
|
+
|
|
11
|
+
.libro-panel-collapse-header-left {
|
|
12
|
+
display: inline-block;
|
|
13
|
+
cursor: pointer;
|
|
14
|
+
|
|
15
|
+
.libro-panel-collapse-header-icon {
|
|
16
|
+
display: inline-block;
|
|
17
|
+
margin-right: 5px;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
.libro-panel-collapse-header-label {
|
|
21
|
+
display: inline-block;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
.libro-panel-collapse-header-close-all {
|
|
26
|
+
// display: inline-block;
|
|
27
|
+
cursor: pointer;
|
|
28
|
+
color: var(--kernel-panel-collapse-header-close-all);
|
|
29
|
+
float: right;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
.libro-panel-collapse-kernel-item-container {
|
|
34
|
+
margin-left: 15px;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
.libro-panel-collapse-content,
|
|
38
|
+
.libro-panel-collapse-kernel-item-container {
|
|
39
|
+
.libro-panel-collapse-item,
|
|
40
|
+
.libro-panel-collapse-kernel-item {
|
|
41
|
+
height: 20px;
|
|
42
|
+
cursor: pointer;
|
|
43
|
+
user-select: none; // 双击不选中文本
|
|
44
|
+
color: var(--kernel-panel-collapse-item);
|
|
45
|
+
font-size: 12px;
|
|
46
|
+
margin: 2px 0;
|
|
47
|
+
padding: 0 10px;
|
|
48
|
+
display: flex;
|
|
49
|
+
|
|
50
|
+
.libro-panel-collapse-item-toggle {
|
|
51
|
+
display: inline-block;
|
|
52
|
+
margin: auto 5px auto 0;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
.libro-panel-collapse-item-icon,
|
|
56
|
+
.libro-panel-collapse-kernel-item-icon {
|
|
57
|
+
display: inline-block;
|
|
58
|
+
margin: auto 5px auto 0;
|
|
59
|
+
|
|
60
|
+
& > :first-child {
|
|
61
|
+
vertical-align: middle;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
.libro-panel-collapse-item-label,
|
|
66
|
+
.libro-panel-collapse-kernel-item-name {
|
|
67
|
+
display: inline-block;
|
|
68
|
+
min-width: 50px;
|
|
69
|
+
white-space: nowrap; /* 避免文本换行 */
|
|
70
|
+
overflow: hidden; /* 隐藏超出div的内容 */
|
|
71
|
+
text-overflow: ellipsis; /* 在文本超出宽度时显示省略号 */
|
|
72
|
+
margin: auto 0;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
.libro-panel-collapse-item-close {
|
|
76
|
+
// display: inline-block;
|
|
77
|
+
display: flex;
|
|
78
|
+
align-items: center;
|
|
79
|
+
justify-content: center;
|
|
80
|
+
margin: auto 0 auto auto;
|
|
81
|
+
width: 16px;
|
|
82
|
+
height: 16px;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
.libro-panel-collapse-item-close:hover {
|
|
86
|
+
background: var(--kernel-panel-collapse-header-close-hover);
|
|
87
|
+
border-radius: 4px;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
.libro-panel-collapse-item:hover {
|
|
92
|
+
background: var(--kernel-panel-collapse-item-hover);
|
|
93
|
+
border-radius: 4px;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import { CaretDownOutlined, CaretRightOutlined } from '@ant-design/icons';
|
|
2
|
+
import { ConfigProvider, Empty, Popconfirm, message, theme } from 'antd';
|
|
3
|
+
import React, { useEffect, useState } from 'react';
|
|
4
|
+
|
|
5
|
+
import { useInjectable } from '@opensumi/ide-core-browser';
|
|
6
|
+
import { IThemeService } from '@opensumi/ide-theme/lib/common';
|
|
7
|
+
|
|
8
|
+
import {
|
|
9
|
+
LibroPanelCollapseItem,
|
|
10
|
+
LibroPanelCollapseItemType,
|
|
11
|
+
LibroPanelCollapseKernelItem,
|
|
12
|
+
Props,
|
|
13
|
+
} from '../kernel.panel.protocol';
|
|
14
|
+
|
|
15
|
+
import './index.less';
|
|
16
|
+
import { LibroKernelCollapseContent } from './kernel-collapse-content';
|
|
17
|
+
import { OpenedTabs } from './page-collapse-content';
|
|
18
|
+
|
|
19
|
+
const getCollapseContentView = (
|
|
20
|
+
type: LibroPanelCollapseItemType,
|
|
21
|
+
items: LibroPanelCollapseItem[] | undefined,
|
|
22
|
+
refresh: () => void,
|
|
23
|
+
) => {
|
|
24
|
+
if (!items) {
|
|
25
|
+
return (
|
|
26
|
+
<Empty image={Empty.PRESENTED_IMAGE_SIMPLE} description='暂无内容' className='kernel-and-terminal-panel-empty' />
|
|
27
|
+
);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
switch (type) {
|
|
31
|
+
case LibroPanelCollapseItemType.PAGE:
|
|
32
|
+
return <OpenedTabs refresh={refresh} />;
|
|
33
|
+
|
|
34
|
+
case LibroPanelCollapseItemType.KERNEL:
|
|
35
|
+
return (
|
|
36
|
+
<LibroKernelCollapseContent type={type} items={items as LibroPanelCollapseKernelItem[]} refresh={refresh} />
|
|
37
|
+
);
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
const getCollapseHeaderLabel = (type: LibroPanelCollapseItemType) => {
|
|
42
|
+
switch (type) {
|
|
43
|
+
case LibroPanelCollapseItemType.PAGE:
|
|
44
|
+
return '已开启的标签页';
|
|
45
|
+
case LibroPanelCollapseItemType.KERNEL:
|
|
46
|
+
return '运行的内核';
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
export const LibroCollapse: React.FC<Props> = (props: Props) => {
|
|
51
|
+
const [open, setOpen] = useState<boolean>(true);
|
|
52
|
+
const themeService = useInjectable<IThemeService>(IThemeService);
|
|
53
|
+
const [themeType, setThemeType] = useState('dark');
|
|
54
|
+
useEffect(() => {
|
|
55
|
+
themeService.getCurrentTheme().then((theme) => {
|
|
56
|
+
setThemeType(theme.type);
|
|
57
|
+
});
|
|
58
|
+
themeService.onThemeChange((e) => {
|
|
59
|
+
setThemeType(e.type);
|
|
60
|
+
});
|
|
61
|
+
}, []);
|
|
62
|
+
return (
|
|
63
|
+
<ConfigProvider
|
|
64
|
+
theme={{
|
|
65
|
+
algorithm: themeType === 'dark' ? theme.darkAlgorithm : theme.defaultAlgorithm,
|
|
66
|
+
}}
|
|
67
|
+
>
|
|
68
|
+
<div className='libro-panel-collapse-container' key={props.type}>
|
|
69
|
+
<div className='libro-panel-collapse-header'>
|
|
70
|
+
<div
|
|
71
|
+
className='libro-panel-collapse-header-left'
|
|
72
|
+
onClick={() => {
|
|
73
|
+
setOpen(!open);
|
|
74
|
+
}}
|
|
75
|
+
>
|
|
76
|
+
<div className='libro-panel-collapse-header-icon'>
|
|
77
|
+
{open ? <CaretDownOutlined /> : <CaretRightOutlined />}
|
|
78
|
+
</div>
|
|
79
|
+
<div className='libro-panel-collapse-header-label'>{getCollapseHeaderLabel(props.type)}</div>
|
|
80
|
+
</div>
|
|
81
|
+
<div className='libro-panel-collapse-header-close-all'>
|
|
82
|
+
<Popconfirm
|
|
83
|
+
title='你确定要关闭全部吗?'
|
|
84
|
+
okText='确定'
|
|
85
|
+
cancelText='取消'
|
|
86
|
+
onConfirm={() => {
|
|
87
|
+
if (props.shutdownAll) {
|
|
88
|
+
props
|
|
89
|
+
.shutdownAll()
|
|
90
|
+
.then(() => {
|
|
91
|
+
props.refresh();
|
|
92
|
+
})
|
|
93
|
+
.catch((e) => {
|
|
94
|
+
message.error(`shutdown all ${props.type}s error`);
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
}}
|
|
98
|
+
>
|
|
99
|
+
关闭全部
|
|
100
|
+
</Popconfirm>
|
|
101
|
+
</div>
|
|
102
|
+
</div>
|
|
103
|
+
{open && (
|
|
104
|
+
<div className='libro-panel-collapse-content'>
|
|
105
|
+
{getCollapseContentView(props.type, props.items, props.refresh)}
|
|
106
|
+
</div>
|
|
107
|
+
)}
|
|
108
|
+
</div>
|
|
109
|
+
</ConfigProvider>
|
|
110
|
+
);
|
|
111
|
+
};
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { CaretDownOutlined, CaretRightOutlined, CloseOutlined } from '@ant-design/icons';
|
|
2
|
+
import React, { useState } from 'react';
|
|
3
|
+
|
|
4
|
+
import { URI, useInjectable } from '@opensumi/ide-core-browser';
|
|
5
|
+
import { WorkbenchEditorService } from '@opensumi/ide-editor';
|
|
6
|
+
import { WorkbenchEditorServiceImpl } from '@opensumi/ide-editor/lib/browser/workbench-editor.service';
|
|
7
|
+
|
|
8
|
+
import { LibroPanelCollapseKernelItem } from '../kernel.panel.protocol';
|
|
9
|
+
|
|
10
|
+
import { FileUnderKernel, RunningKernel } from './icon';
|
|
11
|
+
|
|
12
|
+
interface Props {
|
|
13
|
+
item: LibroPanelCollapseKernelItem;
|
|
14
|
+
refresh: () => void;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export const LibroKernelCollapseContentItem: React.FC<Props> = (props: Props) => {
|
|
18
|
+
const item = props.item;
|
|
19
|
+
const [open, setOpen] = useState<boolean>(true);
|
|
20
|
+
const editorService = useInjectable<WorkbenchEditorServiceImpl>(WorkbenchEditorService);
|
|
21
|
+
|
|
22
|
+
return (
|
|
23
|
+
<>
|
|
24
|
+
<div
|
|
25
|
+
className='libro-panel-collapse-item'
|
|
26
|
+
key={item.id}
|
|
27
|
+
onClick={() => {
|
|
28
|
+
setOpen(!open);
|
|
29
|
+
}}
|
|
30
|
+
>
|
|
31
|
+
<div className='libro-panel-collapse-item-toggle'>{open ? <CaretDownOutlined /> : <CaretRightOutlined />}</div>
|
|
32
|
+
<div className='libro-panel-collapse-item-icon'>
|
|
33
|
+
<RunningKernel></RunningKernel>
|
|
34
|
+
</div>
|
|
35
|
+
<div className='libro-panel-collapse-item-label'>{item.name}</div>
|
|
36
|
+
<div
|
|
37
|
+
className='libro-panel-collapse-item-close'
|
|
38
|
+
onClick={async (e) => {
|
|
39
|
+
if (item.shutdown) {
|
|
40
|
+
item
|
|
41
|
+
.shutdown()
|
|
42
|
+
.then(() => {
|
|
43
|
+
props.refresh();
|
|
44
|
+
})
|
|
45
|
+
.catch((error) => {
|
|
46
|
+
// console.error(error);
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
e.preventDefault();
|
|
50
|
+
e.stopPropagation();
|
|
51
|
+
}}
|
|
52
|
+
>
|
|
53
|
+
<CloseOutlined />
|
|
54
|
+
</div>
|
|
55
|
+
</div>
|
|
56
|
+
{open && (
|
|
57
|
+
<div className='libro-panel-collapse-kernel-item-container'>
|
|
58
|
+
{item.notebooks.map((notebook) => (
|
|
59
|
+
<div
|
|
60
|
+
className='libro-panel-collapse-kernel-item'
|
|
61
|
+
key={notebook.sessionId}
|
|
62
|
+
onClick={() => {
|
|
63
|
+
const uri = new URI(notebook.path);
|
|
64
|
+
editorService.openUris([uri]);
|
|
65
|
+
}}
|
|
66
|
+
>
|
|
67
|
+
<div className='libro-panel-collapse-kernel-item-icon'>
|
|
68
|
+
<FileUnderKernel></FileUnderKernel>
|
|
69
|
+
</div>
|
|
70
|
+
<div className='libro-panel-collapse-kernel-item-name'>{notebook.name}</div>
|
|
71
|
+
</div>
|
|
72
|
+
))}
|
|
73
|
+
</div>
|
|
74
|
+
)}
|
|
75
|
+
</>
|
|
76
|
+
);
|
|
77
|
+
};
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
|
|
3
|
+
import { LibroPanelCollapseItemType, LibroPanelCollapseKernelItem } from '../kernel.panel.protocol';
|
|
4
|
+
|
|
5
|
+
import { LibroKernelCollapseContentItem } from './kernel-collapse-content-item';
|
|
6
|
+
|
|
7
|
+
interface Props {
|
|
8
|
+
type: LibroPanelCollapseItemType;
|
|
9
|
+
items: LibroPanelCollapseKernelItem[];
|
|
10
|
+
refresh: () => void;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export const LibroKernelCollapseContent: React.FC<Props> = (props: Props) => (
|
|
14
|
+
<>
|
|
15
|
+
{props.items.map((item) => <LibroKernelCollapseContentItem item={item} key={item.id} refresh={props.refresh} />)}
|
|
16
|
+
</>
|
|
17
|
+
);
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { CloseOutlined } from '@ant-design/icons';
|
|
2
|
+
import React, { useEffect, useState } from 'react';
|
|
3
|
+
|
|
4
|
+
import { URI, useInjectable } from '@opensumi/ide-core-browser';
|
|
5
|
+
import { IResource, ResourceService, WorkbenchEditorService } from '@opensumi/ide-editor';
|
|
6
|
+
import { WorkbenchEditorServiceImpl } from '@opensumi/ide-editor/lib/browser/workbench-editor.service';
|
|
7
|
+
|
|
8
|
+
export const OpenedTab: React.FC<{ item: URI; refresh: () => void }> = ({ item, refresh }) => {
|
|
9
|
+
const [resource, setResource] = useState<IResource>();
|
|
10
|
+
const resourceService = useInjectable<ResourceService>(ResourceService);
|
|
11
|
+
const editorService = useInjectable<WorkbenchEditorServiceImpl>(WorkbenchEditorService);
|
|
12
|
+
|
|
13
|
+
useEffect(() => {
|
|
14
|
+
resourceService.getResource(item).then((resource) => {
|
|
15
|
+
if (resource !== null) {setResource(resource);}
|
|
16
|
+
});
|
|
17
|
+
}, []);
|
|
18
|
+
|
|
19
|
+
return (
|
|
20
|
+
<div
|
|
21
|
+
title={item.displayName}
|
|
22
|
+
className='libro-panel-collapse-item'
|
|
23
|
+
// onClick={() => {
|
|
24
|
+
// tabs.onChange(item.id);
|
|
25
|
+
// }}
|
|
26
|
+
>
|
|
27
|
+
{resource?.icon && <span className={`libro-panel-collapse-item-icon ${resource.icon}`}></span>}
|
|
28
|
+
<div className='libro-panel-collapse-item-label'>{item.displayName}</div>
|
|
29
|
+
<div
|
|
30
|
+
className='libro-panel-collapse-item-close'
|
|
31
|
+
onClick={(e) => {
|
|
32
|
+
e.stopPropagation();
|
|
33
|
+
editorService.close(item).then(() => {
|
|
34
|
+
refresh();
|
|
35
|
+
});
|
|
36
|
+
}}
|
|
37
|
+
>
|
|
38
|
+
<CloseOutlined />
|
|
39
|
+
</div>
|
|
40
|
+
</div>
|
|
41
|
+
);
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
export const OpenedTabs: React.FC<{ refresh: () => void }> = ({ refresh }) => {
|
|
45
|
+
const editorService = useInjectable<WorkbenchEditorServiceImpl>(WorkbenchEditorService);
|
|
46
|
+
const openedUris = editorService.getAllOpenedUris();
|
|
47
|
+
|
|
48
|
+
return (
|
|
49
|
+
<div>
|
|
50
|
+
{openedUris.map((item) => <OpenedTab item={item} refresh={refresh} key={item.toString()}></OpenedTab>)}
|
|
51
|
+
</div>
|
|
52
|
+
);
|
|
53
|
+
};
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
.mana-app {
|
|
2
|
+
width: 100%;
|
|
3
|
+
height: 100%;
|
|
4
|
+
overflow: hidden;
|
|
5
|
+
}
|
|
6
|
+
.mana-toolbar {
|
|
7
|
+
display: flex;
|
|
8
|
+
}
|
|
9
|
+
.kernel-and-panel {
|
|
10
|
+
height: 100%;
|
|
11
|
+
padding: 0 10px;
|
|
12
|
+
overflow-y: scroll;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
.kernel-and-panel-header {
|
|
16
|
+
height: 35px;
|
|
17
|
+
display: flex;
|
|
18
|
+
align-items: center;
|
|
19
|
+
justify-content: space-between;
|
|
20
|
+
}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import { LibroKernelManager, LibroSessionManager } from '@difizen/libro-kernel';
|
|
2
|
+
import { Container } from '@difizen/mana-app';
|
|
3
|
+
import { useEffect, useState } from 'react';
|
|
4
|
+
import React from 'react';
|
|
5
|
+
|
|
6
|
+
import { useInjectable } from '@opensumi/ide-core-browser';
|
|
7
|
+
import { IThemeService } from '@opensumi/ide-theme/lib/common';
|
|
8
|
+
|
|
9
|
+
import { ManaContainer } from '../mana';
|
|
10
|
+
|
|
11
|
+
import { LibroCollapse } from './collapse';
|
|
12
|
+
import './index.less';
|
|
13
|
+
import { LibroPanelCollapseItemType, LibroPanelCollapseKernelItem } from './kernel.panel.protocol';
|
|
14
|
+
|
|
15
|
+
export const KernelPanel: React.FC = () => {
|
|
16
|
+
const manaContainer = useInjectable<Container>(ManaContainer);
|
|
17
|
+
|
|
18
|
+
const libroKernelManager = manaContainer.get(LibroKernelManager);
|
|
19
|
+
|
|
20
|
+
const libroSessionManager = manaContainer.get(LibroSessionManager);
|
|
21
|
+
|
|
22
|
+
const [refresh, setRefresh] = useState(new Date().toUTCString());
|
|
23
|
+
|
|
24
|
+
const themeService = useInjectable<IThemeService>(IThemeService);
|
|
25
|
+
|
|
26
|
+
const [theme, setTheme] = useState<string>('dark');
|
|
27
|
+
|
|
28
|
+
const [kernelItems, setKernelItems] = useState<LibroPanelCollapseKernelItem[] | undefined>();
|
|
29
|
+
|
|
30
|
+
const handleRefresh = () => {
|
|
31
|
+
setRefresh(new Date().toUTCString());
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
useEffect(() => {
|
|
35
|
+
themeService.getCurrentTheme().then((curTheme) => {
|
|
36
|
+
setTheme(curTheme.type);
|
|
37
|
+
});
|
|
38
|
+
themeService.onThemeChange((curTheme) => {
|
|
39
|
+
setTheme(curTheme.type);
|
|
40
|
+
});
|
|
41
|
+
}, []);
|
|
42
|
+
|
|
43
|
+
useEffect(() => {
|
|
44
|
+
if (!libroSessionManager.running || (libroSessionManager.running && libroSessionManager.running.size === 0)) {
|
|
45
|
+
setKernelItems(undefined);
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
// kernelId -> item
|
|
50
|
+
const items = new Map<string, LibroPanelCollapseKernelItem>();
|
|
51
|
+
|
|
52
|
+
const runningSessions = libroSessionManager.running.values();
|
|
53
|
+
|
|
54
|
+
for (const session of runningSessions) {
|
|
55
|
+
const kernel = session.kernel!;
|
|
56
|
+
if (items.has(kernel.id)) {
|
|
57
|
+
items.get(kernel.id)?.notebooks.push({
|
|
58
|
+
sessionId: session.id,
|
|
59
|
+
name: session.name,
|
|
60
|
+
path: session.path,
|
|
61
|
+
});
|
|
62
|
+
} else {
|
|
63
|
+
items.set(kernel.id, {
|
|
64
|
+
id: kernel.id,
|
|
65
|
+
name: kernel.name,
|
|
66
|
+
shutdown: async () => {
|
|
67
|
+
await libroKernelManager.shutdown(kernel.id);
|
|
68
|
+
await libroSessionManager.refreshRunning();
|
|
69
|
+
},
|
|
70
|
+
notebooks: [{ sessionId: session.id, name: session.name, path: session.path }],
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
setKernelItems(Array.from(items.values()));
|
|
76
|
+
}, [libroKernelManager, libroSessionManager.running]);
|
|
77
|
+
|
|
78
|
+
return (
|
|
79
|
+
<div className='kernel-and-panel' key={refresh}>
|
|
80
|
+
<div className='kernel-and-panel-header'>
|
|
81
|
+
<div className='kernel-and-panel-title'>运行的终端和内核</div>
|
|
82
|
+
<img
|
|
83
|
+
width={16}
|
|
84
|
+
height={16}
|
|
85
|
+
src={
|
|
86
|
+
theme === 'dark'
|
|
87
|
+
? 'https://mdn.alipayobjects.com/huamei_xt20ge/afts/img/A*rY0oTpYcmZsAAAAAAAAAAAAADiuUAQ/original'
|
|
88
|
+
: 'https://mdn.alipayobjects.com/huamei_xt20ge/afts/img/A*VApRSqHz8wQAAAAAAAAAAAAADiuUAQ/original'
|
|
89
|
+
}
|
|
90
|
+
onClick={handleRefresh}
|
|
91
|
+
></img>
|
|
92
|
+
</div>
|
|
93
|
+
<LibroCollapse
|
|
94
|
+
type={LibroPanelCollapseItemType.KERNEL}
|
|
95
|
+
refresh={handleRefresh}
|
|
96
|
+
items={kernelItems}
|
|
97
|
+
shutdownAll={async () => {
|
|
98
|
+
await libroKernelManager.shutdownAll();
|
|
99
|
+
await libroSessionManager.refreshRunning();
|
|
100
|
+
}}
|
|
101
|
+
/>
|
|
102
|
+
</div>
|
|
103
|
+
);
|
|
104
|
+
};
|