diff --git a/README.md b/README.md
index 50ab993..9c8b522 100644
--- a/README.md
+++ b/README.md
@@ -1,13 +1,13 @@
-

+
-

+
-
go from data to knowledge
+
Analyze data any time, anywhere
-# [ElixirNote](https://ciusji.gitbook.io/elixirnote/)
+# ElixirNote
[](https://github.com/jupyterlab/jupyterlab/actions?query=branch%3Amaster+workflow%3A%22Linux+Tests%22)
[](https://github.com/jupyterlab/jupyterlab/actions?query=branch%3Amaster+workflow%3A%22Windows+Tests%22)
@@ -18,7 +18,7 @@
[ElixirNote](https://github.com/ElixirNote/elixirnote/tags) is a next-generation web-based user interface for
Project Jupyter. The Commercial product such as [Hex](https://hex.tech/), [Deepnote](https://deepnote.com/) ... are also good choices.
-
+
Read the current ElixirNote documentation on [ElixirNote Docs](https://ciusji.gitbook.io/elixirnote/).
@@ -54,15 +54,15 @@ Read the current ElixirNote documentation on [ElixirNote Docs](https://ciusji.gi
- [Command Palette](https://ciusji.gitbook.io/elixirnote/guides/command-palette)
- [File & Output Format](https://ciusji.gitbook.io/elixirnote/guides/file-and-output-formats)
- [Extensions](https://ciusji.gitbook.io/elixirnote/guides/extensions)
-- [Elixir Server](https://ciusji.gitbook.io/elixirnote/guides/elixirnote-server)
+- [Built-in Services](https://ciusji.gitbook.io/elixirnote/guides/built-in-services)
- [Elixir Hub](https://ciusji.gitbook.io/elixirnote/guides/elixirnote-hub)
- [Realtime Collaboration](https://ciusji.gitbook.io/elixirnote/guides/real-time-collaboration)
- [APIs](https://ciusji.gitbook.io/elixirnote/guides/apis)
-- [FAQ](https://ciusji.gitbook.io/elixirnote/appendix/faq)
+- [FAQs](https://ciusji.gitbook.io/elixirnote/appendix/faqs)
## Getting Help
-We encourage you to ask questions on the [Discourse forum](https://github.com/orgs/ElixirNote/discussions). A question answered there can become a useful resource for others.
+We encourage you to ask questions on the [discussion forum](https://github.com/orgs/ElixirNote/discussions). A question answered there can become a useful resource for others.
## Bug Report
@@ -84,3 +84,6 @@ ElixirNote follows the Jupyter [Community Guides](https://jupyter.readthedocs.io
ElixirNote uses a shared copyright model that enables all contributors to maintain the
copyright on their contributions. All code is licensed under the terms of the revised [BSD license](https://github.com/ElixirNote/elixirnote/blob/main/LICENSE).
+
+
+
diff --git a/docs/assets/elixir-ecosystem-v2.svg b/docs/assets/elixir-ecosystem-v2.svg
new file mode 100644
index 0000000..4dda97e
--- /dev/null
+++ b/docs/assets/elixir-ecosystem-v2.svg
@@ -0,0 +1,111 @@
+
+
diff --git a/docs/assets/elixir-ecosystem.svg b/docs/assets/elixir-ecosystem.svg
new file mode 100644
index 0000000..1c79e06
--- /dev/null
+++ b/docs/assets/elixir-ecosystem.svg
@@ -0,0 +1,122 @@
+
+
diff --git a/docs/assets/elixirnote-intro.svg b/docs/assets/elixirnote-intro.svg
new file mode 100644
index 0000000..0da304b
--- /dev/null
+++ b/docs/assets/elixirnote-intro.svg
@@ -0,0 +1,44 @@
+
+
diff --git a/docs/assets/elixirnote2.svg b/docs/assets/elixirnote2.svg
new file mode 100644
index 0000000..6edffce
--- /dev/null
+++ b/docs/assets/elixirnote2.svg
@@ -0,0 +1,10 @@
+
+
diff --git a/docs/assets/guinsoolab-badge.png b/docs/assets/guinsoolab-badge.png
new file mode 100644
index 0000000..4822269
Binary files /dev/null and b/docs/assets/guinsoolab-badge.png differ
diff --git a/docs/assets/overview-1.png b/docs/assets/overview-1.png
new file mode 100644
index 0000000..b5b461a
Binary files /dev/null and b/docs/assets/overview-1.png differ
diff --git a/docs/assets/overview-2.png b/docs/assets/overview-2.png
new file mode 100644
index 0000000..480a153
Binary files /dev/null and b/docs/assets/overview-2.png differ
diff --git a/docs/assets/overview-3.png b/docs/assets/overview-3.png
new file mode 100644
index 0000000..ee37864
Binary files /dev/null and b/docs/assets/overview-3.png differ
diff --git a/docs/assets/overview-4.png b/docs/assets/overview-4.png
new file mode 100644
index 0000000..212e9c1
Binary files /dev/null and b/docs/assets/overview-4.png differ
diff --git a/packages/application-extension/style/base.css b/packages/application-extension/style/base.css
index cd9117f..06541ea 100644
--- a/packages/application-extension/style/base.css
+++ b/packages/application-extension/style/base.css
@@ -24,3 +24,37 @@
border: none;
align-items: center;
}
+
+.ͼ1 .cm-ySelectionCaretDot {
+ position: absolute;
+ top: -0.2em;
+ left: -0.2em;
+ width: 0;
+ height: 0;
+ background-color: inherit;
+ transition: transform 0.3s ease-in-out;
+ box-sizing: border-box;
+}
+
+.ͼ1 .cm-ySelectionInfo {
+ position: absolute;
+ top: -1.05em;
+ left: -1px;
+ font-size: 0.75em;
+ font-family: serif;
+ font-style: normal;
+ font-weight: normal;
+ line-height: normal;
+ user-select: none;
+ color: white;
+ padding-left: 4px;
+ padding-top: 2px;
+ padding-right: 4px;
+ padding-bottom: 2px;
+ z-index: 101;
+ transition: opacity 0.3s ease-in-out;
+ background-color: inherit;
+ opacity: 1;
+ transition-delay: 0s;
+ white-space: nowrap;
+}
diff --git a/packages/application/src/shell.ts b/packages/application/src/shell.ts
index 214f48f..b9c17a5 100644
--- a/packages/application/src/shell.ts
+++ b/packages/application/src/shell.ts
@@ -2137,11 +2137,24 @@ namespace Private {
const tip = document.createElement('div');
tip.className = 'jp-title-ext';
- const tipImg = document.createElement('div');
- tipImg.className = 'jp-title-ext-tip-img';
- tipImg.innerHTML = cloudIcon.svgstr;
-
- tip.appendChild(tipImg);
+ const titleExtElement = document.getElementById(
+ 'jp-title-panel-title-ext'
+ );
+ if (titleExtElement != null) {
+ const titleAttr = titleExtElement.title;
+ const tipImg = document.createElement('div');
+ tipImg.className = 'jp-title-ext-tip-img';
+ tipImg.innerHTML = cloudIcon.svgstr;
+
+ if (titleAttr != null) {
+ const saveTip = document.createElement('span');
+ saveTip.className = 'jp-title-ext-tip';
+ saveTip.innerText = titleAttr.split('\n')[2];
+
+ tip.appendChild(tipImg);
+ tip.appendChild(saveTip);
+ }
+ }
this.node.appendChild(tip);
this.tip = tip;
diff --git a/packages/application/style/core.css b/packages/application/style/core.css
index 59296f6..0699de3 100644
--- a/packages/application/style/core.css
+++ b/packages/application/style/core.css
@@ -69,7 +69,7 @@ body {
padding-left: calc(
var(--jp-private-sidebar-tab-width) + var(--jp-border-width)
);
- border-bottom: var(--jp-border-width) solid var(--jp-border-color0);
+ border-bottom: var(--jp-border-width) solid var(--jp-border-color2);
/* Adjust min-height so open menus show up in the right place */
min-height: calc(
diff --git a/packages/cell-toolbar/src/celltoolbartracker.ts b/packages/cell-toolbar/src/celltoolbartracker.ts
index 18b29b1..9806f20 100644
--- a/packages/cell-toolbar/src/celltoolbartracker.ts
+++ b/packages/cell-toolbar/src/celltoolbartracker.ts
@@ -337,6 +337,10 @@ const defaultToolbarItems: ToolbarRegistry.IWidget[] = [
command: 'notebook:run-cell',
name: 'run-cell'
},
+ {
+ command: 'notebook:interrupt-kernel',
+ name: 'interrupt'
+ },
{
command: 'notebook:duplicate-below',
name: 'duplicate-cell'
diff --git a/packages/collaboration/src/menu.ts b/packages/collaboration/src/menu.ts
index 8f19f19..e5930d3 100644
--- a/packages/collaboration/src/menu.ts
+++ b/packages/collaboration/src/menu.ts
@@ -114,7 +114,7 @@ export class RendererUserMenu extends MenuBar.Renderer {
return h.div(
{
className:
- 'lm-MenuBar-itemIcon p-MenuBar-itemIcon jp-MenuBar-CommonLabel',
+ 'lm-MenuBar-itemIcon p-MenuBar-itemIcon jp-MenuBar-CommonLabel-Active',
onclick: async event => {
let results: { token: string }[];
const isRunningUnderJupyterhub =
@@ -237,7 +237,7 @@ export class RendererUserMenu extends MenuBar.Renderer {
}
}
},
- 'Preview'
+ 'Publish'
);
}
}
diff --git a/packages/collaboration/style/menu.css b/packages/collaboration/style/menu.css
index 66d2504..841a508 100644
--- a/packages/collaboration/style/menu.css
+++ b/packages/collaboration/style/menu.css
@@ -19,7 +19,7 @@
width: 28px;
height: 28px;
text-align: center;
- border-radius: 4px;
+ border-radius: 50%;
margin: 0 16px;
}
@@ -32,6 +32,15 @@
margin: 0 4px;
}
+.jp-MenuBar-CommonLabel-Active {
+ height: 28px;
+ width: 70px;
+ text-align: center;
+ border-radius: 2px;
+ border: 1px solid var(--jp-brand-color1);
+ margin: 0 4px;
+}
+
.jp-MenuBar-imageIcon img {
width: 28px;
border-radius: 100%;
diff --git a/packages/completer/src/widget.ts b/packages/completer/src/widget.ts
index 21fd8f4..25f777b 100644
--- a/packages/completer/src/widget.ts
+++ b/packages/completer/src/widget.ts
@@ -4,7 +4,7 @@
import { defaultSanitizer } from '@jupyterlab/apputils';
import { CodeEditor } from '@jupyterlab/codeeditor';
import { renderText } from '@jupyterlab/rendermime';
-import { HoverBox, LabIcon } from '@jupyterlab/ui-components';
+import { codeCheckIcon, HoverBox, LabIcon } from '@jupyterlab/ui-components';
import { IIterator, IterableOrArrayLike, toArray } from '@lumino/algorithm';
import { JSONExt, JSONObject } from '@lumino/coreutils';
import { IDisposable } from '@lumino/disposable';
@@ -324,6 +324,17 @@ export class Completer extends Widget {
ul.appendChild(li);
}
node.appendChild(ul);
+
+ // Add elixir-lsp logo & tip
+ let logoDiv = document.createElement('div');
+ logoDiv.className = 'jp-Completer-footer';
+ logoDiv.innerHTML = codeCheckIcon.svgstr;
+ let logoTip = document.createElement('span');
+ logoTip.innerText = 'Powered by ElixirLsp';
+ logoTip.className = 'jp-Completer-footer-tip';
+ logoDiv.appendChild(logoTip);
+ node.appendChild(logoDiv);
+
return node;
}
diff --git a/packages/completer/style/base.css b/packages/completer/style/base.css
index 2bac9a6..60a5945 100644
--- a/packages/completer/style/base.css
+++ b/packages/completer/style/base.css
@@ -15,6 +15,7 @@
box-shadow: var(--jp-elevation-z6);
background: var(--jp-layout-color1);
color: var(--jp-content-font-color1);
+
/*border: var(--jp-border-width) solid var(--jp-border-color1);*/
padding: 4px;
display: flex;
@@ -41,8 +42,20 @@
white-space: pre-wrap;
}
+.jp-Completer-footer {
+ position: absolute;
+ bottom: 4px;
+ padding-left: 12px;
+}
+
+.jp-Completer-footer-tip {
+ color: #bcbcbc;
+ font-size: 10px;
+ margin-left: 4px;
+}
+
.jp-Completer-list {
- margin: 0;
+ margin: 0 0 24px;
padding: 0;
list-style-type: none;
overflow-y: scroll;
@@ -127,8 +140,10 @@
}
.jp-Completer-item.jp-mod-active {
- background: var(--jp-brand-color1);
- color: white;
+ color: var(--jp-brand-color1);
+ font-weight: bold;
+
+ /*color: white;*/
}
.jp-Completer-item .jp-Completer-match mark {
@@ -142,43 +157,43 @@
}
.jp-Completer-type[data-color-index='1'] {
- background: #1f77b4;
+ color: #1f77b4;
}
.jp-Completer-type[data-color-index='2'] {
- background: #ff7f0e;
+ color: #ff7f0e;
}
.jp-Completer-type[data-color-index='3'] {
- background: #2ca02c;
+ color: #2ca02c;
}
.jp-Completer-type[data-color-index='4'] {
- background: #d62728;
+ color: #d62728;
}
.jp-Completer-type[data-color-index='5'] {
- background: #9467bd;
+ color: #9467bd;
}
.jp-Completer-type[data-color-index='6'] {
- background: #8c564b;
+ color: #8c564b;
}
.jp-Completer-type[data-color-index='7'] {
- background: #e377c2;
+ color: #e377c2;
}
.jp-Completer-type[data-color-index='8'] {
- background: #7f7f7f;
+ color: #7f7f7f;
}
.jp-Completer-type[data-color-index='9'] {
- background: #bcbd22;
+ color: #bcbd22;
}
.jp-Completer-type[data-color-index='10'] {
- background: #17becf;
+ color: #17becf;
}
.jp-Completer-loading-bar-container {
diff --git a/packages/extensionmanager/style/base.css b/packages/extensionmanager/style/base.css
index 27e2cbd..65ae9bd 100644
--- a/packages/extensionmanager/style/base.css
+++ b/packages/extensionmanager/style/base.css
@@ -37,7 +37,6 @@
.jp-extensionmanager-listview-wrapper {
margin: 0;
padding: 0;
- padding-bottom: 8px;
display: flex;
flex-direction: column;
flex: 0 0 auto;
@@ -59,7 +58,6 @@
justify-content: space-between;
flex: 0 0 auto;
margin: 0;
- padding-bottom: 8px;
font-weight: 600;
text-transform: uppercase;
border-bottom: var(--jp-border-width) solid var(--jp-border-color2);
@@ -321,14 +319,14 @@
.jp-extensionmanager-disclaimer-disable {
background-color: var(--jp-brand-color1) !important;
color: white !important;
- border: 0;
+ border: 2px;
background-image: none !important;
}
.jp-extensionmanager-disclaimer-enable {
- background-color: var(--jp-error-color1) !important;
+ background-color: var(--jp-brand-color1) !important;
color: white !important;
- border: 0;
+ border: 2px;
background-image: none !important;
}
diff --git a/packages/filebrowser/style/base.css b/packages/filebrowser/style/base.css
index 469db34..c7c2773 100644
--- a/packages/filebrowser/style/base.css
+++ b/packages/filebrowser/style/base.css
@@ -70,6 +70,7 @@
flex: 0 0 auto;
padding-left: 0;
padding-right: 2px;
+ height: var(--jp-private-filebrowser-button-height);
}
.jp-FileBrowser-toolbar > .jp-Toolbar-item .jp-ToolbarButtonComponent {
diff --git a/packages/logconsole-extension/style/base.css b/packages/logconsole-extension/style/base.css
index 1faaab8..9c45c92 100644
--- a/packages/logconsole-extension/style/base.css
+++ b/packages/logconsole-extension/style/base.css
@@ -60,6 +60,8 @@
}
/* Copied from the notebook cell type dropdown styling */
-.jp-LogConsole-toolbarLogLevelDropdown span {
- top: 5px !important;
+.jp-LogConsole-toolbarLogLevelDropdown span svg {
+ display: flex;
+ align-items: center;
+ padding: 8px;
}
diff --git a/packages/notebook-extension/schema/panel.json b/packages/notebook-extension/schema/panel.json
index 722b5ee..e8cec4d 100644
--- a/packages/notebook-extension/schema/panel.json
+++ b/packages/notebook-extension/schema/panel.json
@@ -3,17 +3,10 @@
"description": "Notebook Panel settings.",
"jupyter.lab.toolbars": {
"Notebook": [
- {
- "name": "insert",
- "command": "notebook:insert-cell-below",
- "icon": "ui-components:add",
- "rank": 20
- },
+ { "name": "executionProgress", "rank": 22 },
{ "name": "spacer", "type": "spacer", "rank": 100 },
- { "name": "cellType", "rank": 200 },
- { "name": "kernelName", "rank": 1000 },
- { "name": "kernelStatus", "rank": 1001 },
- { "name": "executionProgress", "rank": 1002 }
+ { "name": "run", "command": "notebook:run-all-cells", "rank": 130 },
+ { "name": "restart", "command": "kernelmenu:restart", "rank": 132 }
]
},
"jupyter.lab.transform": true,
diff --git a/packages/notebook/style/base.css b/packages/notebook/style/base.css
index 900e129..4af0885 100644
--- a/packages/notebook/style/base.css
+++ b/packages/notebook/style/base.css
@@ -39,7 +39,7 @@
}
.jp-Notebook {
- padding: 10px 100px;
+ padding: 10px 8% 10px 5%;
outline: none;
overflow: auto;
background: var(--jp-layout-color0);
diff --git a/packages/notebook/style/executionindicator.css b/packages/notebook/style/executionindicator.css
index 888a5e8..3804c43 100644
--- a/packages/notebook/style/executionindicator.css
+++ b/packages/notebook/style/executionindicator.css
@@ -15,39 +15,73 @@
.jp-Notebook-ExecutionIndicator {
position: relative;
- display: inline-block;
- height: 100%;
+
+ /*height: 100%;*/
+ z-index: 9997;
+ width: 55vw;
+ display: flex;
+ border: var(--jp-border-width) solid #e0e0e0;
+ border-radius: 2px;
+ padding: 4px 16px;
+ align-items: center;
+}
+
+.jp-Notebook-ExecutionIndicator[data-status='unknown'] {
+ position: relative;
+
+ /*height: 100%;*/
z-index: 9997;
+ width: 55vw;
+ display: flex;
+ border: var(--jp-border-width) solid #e0e0e0;
+ border-radius: 2px;
+ padding: 4px 16px;
+ align-items: center;
+}
+
+.jp-Notebook-ExecutionIndicator div {
+ display: flex;
+}
+
+.jp-Notebook-ExecutionIndicator[data-status='unknown'] div .jp-icon3 {
+ fill: var(--jp-brand-color0);
+}
+
+.jp-Notebook-ExecutionIndicator[data-status='idle'] svg circle {
+ stroke: var(--jp-success-color1);
}
.jp-Notebook-ExecutionIndicator-tooltip {
- visibility: hidden;
+ /*visibility: hidden;*/
height: auto;
width: fit-content;
width: -moz-fit-content;
- background-color: var(--jp-layout-color2);
+
+ /*background-color: var(--jp-layout-color2);*/
color: var(--jp-ui-font-color1);
text-align: justify;
- border-radius: 6px;
+
+ /*border-radius: 6px;*/
padding: 0 5px;
position: fixed;
- display: table;
+
+ /*display: table;*/
}
.jp-Notebook-ExecutionIndicator-tooltip.up {
- transform: translateX(-50%) translateY(-100%) translateY(-32px);
+ /*transform: translateX(-50%) translateY(-100%) translateY(-32px);*/
}
.jp-Notebook-ExecutionIndicator-tooltip.down {
- transform: translateX(calc(-100% + 16px)) translateY(5px);
+ /*transform: translateX(calc(-100% + 16px)) translateY(5px);*/
}
.jp-Notebook-ExecutionIndicator-tooltip.hidden {
- display: none;
+ /*display: none;*/
}
.jp-Notebook-ExecutionIndicator:hover .jp-Notebook-ExecutionIndicator-tooltip {
- visibility: visible;
+ /*visibility: visible;*/
}
.jp-Notebook-ExecutionIndicator span {
@@ -56,6 +90,8 @@
color: var(--jp-ui-font-color1);
line-height: 24px;
display: block;
+ padding-left: 16px;
+ float: right;
}
.jp-Notebook-ExecutionIndicator-progress-bar {
diff --git a/packages/notebook/style/toolbar.css b/packages/notebook/style/toolbar.css
index f82eb6a..aa4321a 100644
--- a/packages/notebook/style/toolbar.css
+++ b/packages/notebook/style/toolbar.css
@@ -9,7 +9,7 @@
:root {
--jp-notebook-toolbar-padding: 2px 5px 2px 2px;
- --jp-private-toolbar-height: 44px;
+ --jp-private-toolbar-height: 54px;
}
/*-----------------------------------------------------------------------------
diff --git a/packages/outputarea/style/base.css b/packages/outputarea/style/base.css
index ec5ec54..4ff8c6f 100644
--- a/packages/outputarea/style/base.css
+++ b/packages/outputarea/style/base.css
@@ -23,7 +23,7 @@
.jp-OutputPrompt {
display: table-cell;
vertical-align: top;
- color: var(--jp-cell-outprompt-font-color);
+ color: var(--jp-success-color1);
font-family: var(--jp-cell-prompt-font-family);
padding: 4px 0;
margin-bottom: var(--jp-code-padding);
diff --git a/packages/rendermime/style/base.css b/packages/rendermime/style/base.css
index ee75f35..3eac99c 100644
--- a/packages/rendermime/style/base.css
+++ b/packages/rendermime/style/base.css
@@ -393,10 +393,11 @@
.jp-RenderedHTMLCommon pre,
.jp-RenderedHTMLCommon code {
border: 0;
- background-color: var(--jp-layout-color0);
+
+ /*background-color: var(--jp-layout-color0);*/
color: var(--jp-content-font-color1);
font-family: var(--jp-code-font-family);
- font-size: inherit;
+ font-size: 13px;
line-height: var(--jp-code-line-height);
padding: 0;
white-space: pre-wrap;
diff --git a/packages/statusbar-extension/src/index.ts b/packages/statusbar-extension/src/index.ts
index 7e54577..d7731c7 100644
--- a/packages/statusbar-extension/src/index.ts
+++ b/packages/statusbar-extension/src/index.ts
@@ -35,7 +35,7 @@ const statusBar: JupyterFrontEndPlugin = {
const trans = translator.load('jupyterlab');
const statusBar = new StatusBar();
statusBar.id = 'jp-main-statusbar';
- app.shell.add(statusBar, 'bottom');
+ // app.shell.add(statusBar, 'bottom');
// If available, connect to the shell's layout modified signal.
if (labShell) {
diff --git a/packages/statusbar/src/style/statusbar.ts b/packages/statusbar/src/style/statusbar.ts
index 1743061..f6ca052 100644
--- a/packages/statusbar/src/style/statusbar.ts
+++ b/packages/statusbar/src/style/statusbar.ts
@@ -14,7 +14,7 @@ const itemPadding = {
const interactiveHover = {
$nest: {
'&:hover': {
- backgroundColor: vars.hoverColor
+ // backgroundColor: vars.hoverColor
}
}
};
diff --git a/packages/ui-components/style/icons/lsp/code-check.svg b/packages/ui-components/style/icons/lsp/code-check.svg
index c469d86..6c2a514 100644
--- a/packages/ui-components/style/icons/lsp/code-check.svg
+++ b/packages/ui-components/style/icons/lsp/code-check.svg
@@ -1,5 +1,16 @@
-