feat(编辑能力): 完善继承样式编辑与受限提示,优化编辑入口和工具栏布局
build.yaml / build (push) Successful in 37s

This commit is contained in:
xiaoqidun committed 2026-09-16 13:27:05 +08:00
1 parent 237487b53c
commit 0034e0edbd
11 files changed
+234 -52

No files matched your search

+19 -5
View File
@@ -44,6 +44,7 @@ type editorObjectOrigin struct {
page *editorSourcePage
node *editorXML
object GraphicObject
reason string
}
// editorSourcePage 保存页面原文、解析快照及可定位的直接对象。
@@ -292,15 +293,25 @@ func (e *Editor) loadSourcePage(index int) error {
}
}
source.data, source.root, source.nodes = data, root, nodes
source.original = page
for _, layer := range page.Content.Layer {
for _, object := range layer.Objects {
for i := range page.Content.Layer {
layer := &page.Content.Layer[i]
for j, object := range layer.Objects {
id := editorObjectID(object)
if node := nodes[id]; node != nil {
e.source.origins[id] = &editorObjectOrigin{page: source, node: node, object: object}
origin := &editorObjectOrigin{page: source, node: node, object: object}
e.source.origins[id] = origin
if editorXMLSupported(node) {
resolved, err := e.resolveEditorStyle(object, layer.DrawParam)
if err != nil {
origin.reason = err.Error()
} else {
layer.Objects[j] = resolved
}
}
}
}
}
source.original = page
e.pages[index] = copyEditorPage(*page)
return nil
}
@@ -332,9 +343,12 @@ func (e *Editor) ObjectCapabilities(page int, id string) (ObjectCapabilities, er
}
return all, nil
}
if layer.DrawParam != "" || !editorXMLSupported(node) {
if !editorXMLSupported(node) {
return ObjectCapabilities{Reason: "object uses unsupported editing features"}, nil
}
if origin := e.objectOrigin(id); origin.reason != "" {
return ObjectCapabilities{Reason: origin.reason}, nil
}
for _, attr := range node.parent.attrs {
if attr.Name.Space == "xmlns" || attr.Name.Space == "" && attr.Name.Local == "xmlns" {
continue