@difizen/libro-core
v0.3.0
Published
## Token/API
Downloads
2,754
Readme
libro-core
Token/API
LibroService
LibroService 管理 libro 实例,libro view 创建、活跃 libro view 的监听等能力。
// 组件内引入
const service = useInject(LibroService);
// 属性引入
@inject(LibroService) service:LibroService;
// 事件监听
service.getOrCreateView(options);
service.onActiveChanged(callback);
service.onFocusChanged(callback);
service.onNotebookViewCreated(callback);
扩展点
单元格扩展
使用单元格扩展可以增加自定义的单元格类型,内置的单元格类型也均基于该扩展定义实现。
单元格定义分为 model 和 view 两部分,model 定义单元格的数据结构,view 定义单元格的渲染方式和提供交互能力。每种单元格都需要对创建时接收到的参数返回优先级,按照最高优先级的单元格类型创建单元格。
export interface CellModelContribution {
cellMeta: CellMeta;
canHandle: (options: CellOptions, libroType?: string) => number;
createModel: (options: CellOptions) => MaybePromise<CellModel>;
getDefaultCellOption?: () => CellOptions;
}
export interface CellViewContribution {
canHandle: (options: CellOptions) => number;
view: Newable<CellView>;
}
输出扩展
使用输出扩展可以增加自定义的输出类型,内置的输出类型也均基于该扩展定义实现。在 jupyter 场景下,用户一般不需要增加输出类型的扩展,而仅需要增加 mime 渲染器,mime 渲染器扩展由 output 实现。
export interface OutputContribution {
canHandle: (output: IOutput) => number;
factory: OutputModelFactory;
}
内容加载扩展
用户有时候从自定义存储中读取 notebook 数据,可以通过内容加载扩展来实现,这里要求用户的返回数据符合 notebook 的数据结构。
export interface ContentContribution {
canHandle: (options: Record<string, any>, model: any) => number;
loadContent: (options: Record<string, any>, model: any) => Promise<INotebookContent>;
}
视图插槽
如果希望在编辑器内部增加一些自定义的渲染像,除了可以覆盖内置的渲染器外,还可以通过视图插槽的方式来实现。
内置插槽位置如下:
- container
- content
- list
- right
export interface LibroExtensionSlotContribution {
factory: LibroExtensionSlotFactory;
slot: LibroSlot;
viewOpenOption?: {
order?: string;
reveal?: boolean;
};
}
命令 & 快捷键
文档命令
| 命令 | 快捷键 | 命令模式 | 说明 |
| ------------------ | ----------- | -------- | -------- |
| document:save
| ctrlcmd+s
| | 保存文档 |
| document:setting
| | | 打开配置 |
kernel 命令
| 命令 | 快捷键 | 命令模式 | 说明 |
| ------------------------------ | ------ | -------- | ------------------- |
| notebook:change-kernel
| | | Change Kernel |
| notebook:get-kernel
| | | Get Kernel |
| notebook:interrupt-kernel
| | | Interrupt Kernel |
| notebook:reconnect-to-kernel
| | | Reconnect to Kernel |
| notebook:restart-kernel
| | | Restart Kernel |
| notebook:shutdown-kernel
| | | Shutdown Kernel |
notebook 命令
| 命令 | 快捷键 | 命令模式 | 说明 |
| ------------------------------------------------ | ---------------------- | -------- | ----------------------------------------------- |
| notebook:interrupt
| | | Interrupt |
| notebook:change-cell-to
| | | |
| notebook:change-cell-to-code
| Y
| ✓ | Change to Code Cell Type |
| notebook:change-cell-to-heading-1
| 1
| ✓ | Change to Heading 1 |
| notebook:change-cell-to-heading-2
| 2
| ✓ | Change to Heading 2 |
| notebook:change-cell-to-heading-3
| 3
| ✓ | Change to Heading 3 |
| notebook:change-cell-to-heading-4
| 4
| ✓ | Change to Heading 4 |
| notebook:change-cell-to-heading-5
| 5
| ✓ | Change to Heading 5 |
| notebook:change-cell-to-heading-6
| 6
| ✓ | Change to Heading 6 |
| notebook:change-cell-to-markdown
| M
| ✓ | Change to Markdown Cell Type |
| notebook:change-cell-to-raw
| R
| ✓ | Change to Raw Cell Type |
| notebook:clear-all-cell-outputs
| | | Clear Outputs of All Cells |
| notebook:clear-cell-outputs
| | | Clear Cell Output |
| notebook:close-and-shutdown
| | | Close editor and shut down kernel |
| notebook:collapse-all-headings
| ctrlcmd+shift+left
| | Collapse All Headings |
| notebook:copy-cell
| C
| ✓ | Copy Cells |
| notebook:cut-cell
| X
| ✓ | Cut Cells |
| notebook:delete-cell
| D D
| ✓ | Delete Cells |
| notebook:deselect-all
| | | Deselect All Cells |
| notebook:disable-output-scrolling
| | | Disable Scrolling for Outputs |
| notebook:duplicate-below
| | | Duplicate Cells Below |
| notebook:enable-output-scrolling
| | | Enable Scrolling for Outputs |
| notebook:enter-command-mode
| esc
| | Enter Command Mode |
| notebook:enter-edit-mode
| enter
| | Enter Edit Mode |
| notebook:expand-all-headings
| ctrlcmd+shift+right
| | Expand All Headings |
| notebook:export-to-format
| | | Save and Export Notebook to the given format |
| notebook:extend-marked-cells-above
| shift+up
shift+K
| | Extend Selection Above |
| notebook:extend-marked-cells-below
| shift+down
shift+J
| | Extend Selection Below |
| notebook:extend-marked-cells-bottom
| shift+end
| | Extend Selection to Bottom |
| notebook:extend-marked-cells-top
| shift+home
| | Extend Selection to Top |
| notebook:hide-all-cell
| | | |
| notebook:hide-all-cell-code
| | | Collapse All Code |
| notebook:hide-all-cell-output
| | | Collapse All Outputs |
| notebook:hide-cell-code
| | | Collapse Selected Code |
| notebook:hide-or-show-cell-code
| ctrlcmd+'
| | Hide or show Selected Code |
| notebook:hide-cell-outputs
| | | Collapse Selected Outputs |
| notebook:hide-or-show-outputs
| ctrlcmd+o
| | Hide or show Selected outputs |
| notebook:insert-cell-above
| A
| ✓ | Insert Cell Above |
| notebook:insert-cell-below
| B
| ✓ | Insert Cell Below |
| notebook:insert-heading-above
| shift+A
| ✓ | Insert Heading Above Current Heading |
| notebook:insert-heading-below
| shift+B
| ✓ | Insert Heading Below Current Heading |
| notebook:merge-cell-above
| ctrlcmd+backspace
| ✓ | Merge Cell Above |
| notebook:merge-cell-below
| ctrlcmd+shift+M
| ✓ | Merge Cell Below |
| notebook:merge-cells
| shift+M
| ✓ | Merge Selected Cells |
| notebook:move-cell-down
| ctrlcmd+shift+down
| ✓ | Move Cells Down |
| notebook:move-cell-up
| ctrlcmd+shift+up
| ✓ | Move Cells Up |
| notebook:move-cursor-down
| down
J
| ✓ | Select Cell Below |
| notebook:move-cursor-up
| up
K
| ✓ | Select Cell Up |
| notebook:move-cursor-heading-above-or-collapse
| left
| ✓ | Select Heading Above or Collapse Heading |
| notebook:move-cursor-heading-below-or-expand
| right
| ✓ | Select Heading Below or Collapse Heading |
| notebook:paste-and-replace-cell
| | | Paste Cells and Replace |
| notebook:paste-cell-above
| | | Paste Cells Above |
| notebook:paste-cell-below
| V
| ✓ | Paste Cells Below |
| notebook:redo
| | | Redo |
| notebook:redo-cell-action
| shift+Z
| ✓ | Redo Cell Operation |
| notebook:render-all-markdown
| | | Render All Markdown Cells |
| notebook:replace-selection
| | | Replace Selection in Notebook Cell |
| notebook:restart-and-run-to-selected
| | | Restart and Run up to Selected Cell |
| notebook:restart-clear-output
| | | Restart and Clear Outputs of All Cells |
| notebook:restart-run-all
| | | Restart and Run All Cells |
| notebook:run-all-above
| | | Run All Above Selected Cell |
| notebook:run-all-below
| | | Run All Below Selected Cell |
| notebook:run-all-cells
| | | Run All Cells |
| notebook:run-cell
| ctrlcmd+enter
| | Run Selected Cells and Don't Advance |
| notebook:run-cell-and-insert-below
| alt+enter
| | Run Selected Cells and Insert Below |
| notebook:run-cell-and-select-next
| shift+enter
| | Run Selected Cells and Select Below |
| notebook:run-in-console
| | | Run Selected Text or Current Line in Console |
| notebook:select-all
| ctrlcmd+A
| ✓ | Select All Cells |
| notebook:select-last-run-cell
| | | Select current running or last run cell |
| notebook:set-side-by-side-ratio
| | | Set Side by Side Ratio |
| notebook:show-all-cell
| | | Expand All Cell |
| notebook:show-all-cell-code
| | | Expand All Code |
| notebook:show-all-cell-outputs
| | | Expand All Outputs |
| notebook:show-cell-code
| | | Expand Selected Code |
| notebook:show-cell-outputs
| | | Expand Selected Outputs |
| notebook:split-cell-at-cursor
| ctrlcmd+shift+-
| | Split Cell |
| notebook:toggle-all-cell-line-numbers
| shift+L
| | Show Line Numbers |
| notebook:toggle-autoclosing-brackets
| | | Auto Close Brackets for All Notebook Cell Types |
| notebook:toggle-heading-collapse
| | | Toggle Collapse Notebook Heading |
| notebook:toggle-render-side-by-side-current
| shift+R
| ✓ | Render Side-by-Side |
| notebook:trust
| | | Trust Notebook |
| notebook:undo
| | | Undo |
| notebook:undo-cell-action
| Z
| ✓ | Undo Cell Operation |
| notebook:insert-cell-bottom
| | | |
配置 & 主题
libro 内置了一些配置项和主题设置,用户可以是用 mana 的配置模块和主题模块来消费或变更。
| 配置项 | 说明 | 默认值 |
| ----------------------------------------------- | --------------------------------------- | ------- |
| libro.header.toolbar
| 是否显示 libro 顶部工具栏 | true
|
| libro.cell.top-toolbar
| 是否显示单元格顶部工具栏 | true
|
| libro.cell.side-toolbar
| 是否显示单元格侧边工具栏 | true
|
| libro.command.insert-cell-below
| 没有单元格时是否默认创建单元格 | true
|
| libro.command.enter-edit-mode-when-add-cell
| 增加单元格操作默认进入编辑态 | true
|
| libro.command.collapser-active
| 点击左侧长条是否可以隐藏与显示单元格 | true
|
| libro.command.multiselection-when-shift-click
| 按住 shift 键并点击拖拽区域可以进行多选 | true
|
| libro.right.content.fixed
| libro view 的右边栏是否相对固定 | false
|
| 颜色 | css 变量 | 暗色主题 | 亮色主题 | 高对比主题 | 说明 |
| -------------------------------------------- | -------- | ----------- | ----------- | ---------- | ---- |
| libro.warning.background
| | #A9611466
| #FFFBE6
| | |
| libro.drag.hover.line.color
| | #467DB0
| #BFE0FF
| | |
| libro.background
| | #1F2022
| #FFFFFF
| | |
| libro.popover.background.color
| | #2F3032
| #FFFFFF
| | |
| libro.menu.hover.color
| | #515359
| #EBF6FF
| | |
| libro.dropdown.icon.color
| | #FFFFFF4D
| #00000033
| | |
| libro.input.background
| | #19191B
| #F4F6FB
| | |
| libro.text.default.color
| | #E3E4E6
| #000000
| | |
| libro.text.tertiary.color
| | #BDC0C4
| #B8BABA
| | |
| libro.output.background
| | #292A2D
| #FFFFFF
| | |
| libro.toptoolbar.border.color
| | #FFFFFF1A
| #0000001A
| | |
| libro.toptoolbar.icon.color
| | #BFBFBF
| #7B7B7B
| | |
| libro.toptoolbar.disabled.icon.color
| | #FFFFFF4D
| #00000040
| | |
| libro.toptoolbar.text.color
| | #F5F5F5
| #000000
| | |
| libro.bottom.btn.background.color
| | #FFFFFF0A
| #FFFFFF
| | |
| libro.bottom.btn.border.color
| | #505559
| #000A1A29
| | |
| libro.bottom.btn.icon.color
| | #505559
| #525964D9
| | |
| libro.bottom.btn.text.color
| | #E3E4E6
| #000A1AAD
| | |
| libro.default.btn.background.color
| | #FFFFFF1A
| #FFFFFF
| | |
| libro.default.btn.text.color
| | #E3E4E6
| #000A1AAD
| | |
| libro.primary.btn.background.color
| | #2A97FD
| #1890FF
| | |
| libro.default.btn.border.color
| | #BDC0C4
| #D6D8DA
| | |
| libro.toolbar.menu.label.color
| | #BDC0C4
| #000000A6
| | |
| libro.toolbar.menu.disabled.label.color
| | #878C93
| #00000040
| | |
| libro.toolbar.menu.keybind.color
| | #878C93
| #00000073
| | |
| libro.sidetoolbar.icon.color
| | #BFBFBF
| #6982A9
| | |
| libro.sidetoolbar.border.color
| | #FFFFFF14
| #0000001A
| | |
| libro.close.color
| | #FFFFFF73
| #00000073
| | |
| libro.modal.title.color
| | #EDEEEF
| #000000D9
| | |
| libro.modal.content.color
| | #E3E4E6
| #000A1A
| | |
| libro.btn.primary.background.color
| | #2A97FD
| #1890FF
| | |
| libro.execution.count.color
| | #8694A9
| #6A83AA
| | |
| libro.tip.font.color
| | #D6D8DA
| #00000080
| | |
| libro.execution.tip.success.color
| | #48A918
| #0DC54E
| | |
| libro.link.color
| | #177DDC
| #1890FF
| | |
| libro.error.color
| | #CF4C52
| #ED1345
| | |
| libro.cell.border.color
| | #3B3C42
| #D6DEE6
| | |
| libro.cell.active.border.color
| | #378EDF
| #3490ED
| | |
| libro.cell.active.border.shadow.color
| | #49A2FA40
| #3592EE40
| | |
| libro.cell.header.content
| | #E3E4E6
| #545B66
| | |
| libro.cell.header.title
| | #D6D8DA
| #000A1A
| | |
| libro.code.border.color
| | #353638
| #DCE4EC
| | |
| libro.input.border.color
| | #505559
| #00000026
| | |
| libro.input.background.color
| | #FFFFFF0A
| #FFFFFF
| | |
| libro.input.group.btn.background.color
| | #00000005
| #00000005
| | |
| libro.table.innner.border.color
| | #1AFFFF
| #E5EBF1
| | |
| libro.table.bottom.border.color
| | #424242
| #E2E7EC
| | |
| libro.editor.keyword.color
| | #109B67
| #098658
| | |
| libro.editor.number.color
| | #109B67
| #098658
| | |
| libro.editor.variable.2.color
| | #5DA4EA
| #2060A0
| | |
| libro.editor.punctuation.color
| | #5DA4EA
| #2060A0
| | |
| libro.editor.property.color
| | #5DA4EA
| #2060A0
| | |
| libro.editor.operator.color
| | #E12EE1
| #C700C7
| | |
| libro.editor.meta.color
| | #E12EE1
| #C700C7
| | |
| libro.editor.builtin.color
| | #109B67
| #098658
| | |
| libro.editor.variable.color
| | #E3E4E6
| #212121
| | |
| libro.editor.def.color
| | #187DFF
| #003CFF
| | |
| libro.editor.comment.color
| | #618961
| #406040
| | |
| libro.editor.string.color
| | #FF5B48
| #C03030
| | |
| libro.editor.activeline.color
| | #E5E8F01A
| #E5E8F080
| | |
| libro.editor.selectionMatch.color
| | #99FF7780
| #DDE6FF
| | |
| libro.editor.selection.color
| | #B4CEFF
| #B4CEFF
| | |
| libro.editor.gutter.number.color
| | #A8EABF
| #A4AECB
| | |
| libro.editor.line.color
| | #565C6D
| #A4AECB
| | |
| libro.editor.cursor.color
| | #FFFFFF
| #000000
| | |
| libro.editor.indent.marker.bg.color
| | #42444D
| #D6DBEB
| | |
| libro.editor.indent.marker.active.bg.color
| | #788491
| #9f9f9f
| | |