Comments (4)
getContainer
is working as intended, it is meant to help distinguish between tabs that are inside a sidebar from tabs in the main area of the window.
Instead of getContainer()
what you actually want to access is leaf.parent
which doesn't appear to be exposed in the API. To find the parent WorkspaceSplit, you need to traverse up the workspace tree and find the closest split.
const chatViewLeaves = workspace.getLeavesOfType(VIEW_TYPE_NOTE_CHAT)
if (chatViewLeaves.length > 0) {
const tabGroup = chatViewLeaves[0].parent;
leaf = workspace.createLeafInParent(tabGroup, 1);
// ...rest of the view creation logic
}
Note: this code will throw errors in your editor, so you'll need to use @ts-ignore
for now
from obsidian-api.
Thank you @liamcain, I tried the suggested snippet, and even though the returned split instance is correct (I double-checked the DOM reference in devtools), the end result is still the same: my custom view is directly attached to the root split without any tab UI. Is it possible that createLeafInParent()
can't create tab leaves and it is hardcoded to create a child of a split
?
I double-checked the workspace.json
structure on disk, and it matches what I see on the UI:
{
"main": {
"id": "db68a861fda8a4a5",
"type": "split",
"children": [
{
"id": "07c59eaad420ce86",
"type": "leaf",
"state": {
"type": "llm-note-chat-view",
"state": {}
}
},
{
"id": "1b2c279856192e00",
"type": "tabs",
"children": [...]
}
]
}
For the record, I also tried workspace.duplicateLeaf(chatViewLeaves[0], "tab")
and it gives the same result.
Edit: nevermind, I made a mistake. duplicateLeaf()
does something different: it creates a tab leaf, but in the wrong split leaf, not the one where chatViewLeaves[0]
is.
from obsidian-api.
@ofalvai Oh, sorry. I think I confused myself when writing that code before. You aren't trying to add a tab to the WorkspaceSplit, you're trying to add a tab to the tab group. In that case, its even simpler. I updated my code snippet above to do what you're after.
from obsidian-api.
Oh, that makes sense, thank you. I was so focused for what to do with the parent reference that I didn't see the problem with the while loop 😵💫
from obsidian-api.
Related Issues (20)
- Bug: MarkdownRenderer.render does not add rendered links to metadataCache HOT 3
- Suggest making the README on GitHub link to the official Obsidian developer docs HOT 1
- Bug: the normalizePath function Unable to completely filter illegal characters HOT 1
- Bug: APIs such as readBinary and readLocalFile cannot read files larger than 150M on the mobile phone.
- Bug: `FileSystemAdapter.getFilePath` return type is incorrect HOT 4
- Bug: requestURL when body is arraybinary or formdata, I try to transform formdata to array put it in body of request, but failed. HOT 6
- Bug: Treating Longtime Users and Plugin Developers with Friendliness HOT 3
- Version 1.5.1 is not published on npmjs HOT 1
- Bug: `generateMarkdown`'s `alias` parameter has no effect for non-markdown files HOT 2
- Request: event for custom views to know if they are visible/hidden HOT 2
- Bug: MarkdownFileInfo.editor field access throws during initialization HOT 5
- Replace `any` with more specific types HOT 1
- Bug: type definition for ColorComponent is missing property with HtmlElement HOT 1
- Bug: Lack of upstream version of mermaid limits the diagram which can be used HOT 1
- Request: built-in React components for modal settings HOT 1
- Bug: this.app.internalPlugins does not exist on type 'App' HOT 1
- Bug: processFrontMatter does not work if callback deletes all keys HOT 1
- Bug: `requestUrl()` and server-sent events HOT 4
- Bug: Link is duplicated in frontmatter cache when the link is in a footnote HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from obsidian-api.