-
Notifications
You must be signed in to change notification settings - Fork 1
feat: introduce monaco editor #1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Conversation
Deploying ipe-plugin-registry with
|
| Latest commit: |
49796b2
|
| Status: | ✅ Deploy successful! |
| Preview URL: | https://413a3c53.plugin-registry.pages.dev |
| Branch Preview URL: | https://dragon-fish-monaco.plugin-registry.pages.dev |
审阅者指南此 PR 通过创建一个专用包,引入了一个新的 Monaco 编辑器插件,用于 InPageEdit。该插件会监听 quick-edit/wiki-page 事件,按需加载 modern-monaco 库,将配置好的编辑器注入到模态框中,并将其模型与底层 textarea 同步。 Monaco 编辑器在 quick-edit/wiki-page 事件中注入的序列图sequenceDiagram
participant InPageEdit
participant PluginMonaco
participant Modal
participant MonacoEditor
participant Textarea
InPageEdit->>PluginMonaco: Emit quick-edit/wiki-page event
PluginMonaco->>PluginMonaco: onQuickEditWikiPage(payload)
PluginMonaco->>MonacoEditor: import modern-monaco & init
PluginMonaco->>Modal: Find textarea and wrapper
PluginMonaco->>MonacoEditor: Create editor in wrapper
PluginMonaco->>MonacoEditor: Set editor model (from wikiPage)
MonacoEditor->>Textarea: On model change, update textarea value
Textarea->>Modal: Dispatch input/change events
PluginMonaco 及相关类型的类图classDiagram
class BasePlugin {
<<abstract>>
ctx: InPageEdit
}
class PluginMonaco {
ctx: InPageEdit
+constructor(ctx: InPageEdit)
+start()
+onQuickEditWikiPage(payload)
+guessLangByTitle(input)
+createWorkspace(wikiPage: IWikiPage)
+createModel(monaco, wikiPage)
}
class InPageEdit {
+on(event, handler)
+set(key, value)
wikiTitle: WikiTitleService
}
class IWikiPage {
title: string
contentmodel: string
revisions: Revision[]
}
class Revision {
content: string
}
class WikiTitleService {
+newTitle(input): WikiTitle
}
class WikiTitle {
+getNamespaceId()
+getMainText()
}
BasePlugin <|-- PluginMonaco
PluginMonaco o-- InPageEdit
PluginMonaco o-- IWikiPage
InPageEdit o-- WikiTitleService
WikiTitleService o-- WikiTitle
IWikiPage o-- Revision
文件级更改
提示和命令与 Sourcery 互动
自定义您的体验访问您的 仪表板 以:
获取帮助Original review guide in EnglishReviewer's GuideThis PR introduces a new Monaco editor plugin for InPageEdit by creating a dedicated package that hooks into the quick-edit/wiki-page event, lazily loads the modern-monaco library, injects a configured editor into the modal, and synchronizes its model with the underlying textarea. Sequence diagram for Monaco editor injection on quick-edit/wiki-page eventsequenceDiagram
participant InPageEdit
participant PluginMonaco
participant Modal
participant MonacoEditor
participant Textarea
InPageEdit->>PluginMonaco: Emit quick-edit/wiki-page event
PluginMonaco->>PluginMonaco: onQuickEditWikiPage(payload)
PluginMonaco->>MonacoEditor: import modern-monaco & init
PluginMonaco->>Modal: Find textarea and wrapper
PluginMonaco->>MonacoEditor: Create editor in wrapper
PluginMonaco->>MonacoEditor: Set editor model (from wikiPage)
MonacoEditor->>Textarea: On model change, update textarea value
Textarea->>Modal: Dispatch input/change events
Class diagram for PluginMonaco and related typesclassDiagram
class BasePlugin {
<<abstract>>
ctx: InPageEdit
}
class PluginMonaco {
ctx: InPageEdit
+constructor(ctx: InPageEdit)
+start()
+onQuickEditWikiPage(payload)
+guessLangByTitle(input)
+createWorkspace(wikiPage: IWikiPage)
+createModel(monaco, wikiPage)
}
class InPageEdit {
+on(event, handler)
+set(key, value)
wikiTitle: WikiTitleService
}
class IWikiPage {
title: string
contentmodel: string
revisions: Revision[]
}
class Revision {
content: string
}
class WikiTitleService {
+newTitle(input): WikiTitle
}
class WikiTitle {
+getNamespaceId()
+getMainText()
}
BasePlugin <|-- PluginMonaco
PluginMonaco o-- InPageEdit
PluginMonaco o-- IWikiPage
InPageEdit o-- WikiTitleService
WikiTitleService o-- WikiTitle
IWikiPage o-- Revision
File-Level Changes
Tips and commandsInteracting with Sourcery
Customizing Your ExperienceAccess your dashboard to:
Getting Help
|
|
这个插件需要添加LSP支持吗? |
Sourcery 总结
为 InPageEdit 引入一个新的 Monaco 编辑器插件,该插件在快速编辑维基模态框中嵌入了一个由 Monaco 提供支持的代码编辑器,并将其打包为一个 ESM 库。
新功能:
构建:
Original summary in English
Summary by Sourcery
Introduce a new Monaco Editor plugin for InPageEdit that embeds a monaco-powered code editor in the quick-edit wiki modal and packages it as an ESM library.
New Features:
Build: