Skip to content

Commit ef71eb2

Browse files
Fixed issue 308 - custom css node and edge styles cant change default value in settings regression
1 parent b5e377d commit ef71eb2

File tree

3 files changed

+41
-17
lines changed

3 files changed

+41
-17
lines changed

src/canvas-extensions/advanced-styles/edge-styles.ts

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,10 @@ import EdgePathfindingDirect from "./edge-pathfinding-methods/pathfinding-direct
88
import EdgePathfindingSquare from "./edge-pathfinding-methods/pathfinding-square"
99
import { BUILTIN_EDGE_STYLE_ATTRIBUTES, StyleAttribute, styleAttributeValidator } from "./style-config"
1010
import CssStylesConfigManager from "src/managers/css-styles-config-manager"
11+
import AdvancedCanvasPlugin from "src/main"
12+
13+
export const GET_EDGE_CSS_STYLES_MANAGER = (plugin: AdvancedCanvasPlugin) =>
14+
new CssStylesConfigManager(plugin, 'advanced-canvas-edge-style', styleAttributeValidator)
1115

1216
const EDGE_PATHFINDING_METHODS: { [key: string]: typeof EdgePathfindingMethod } = {
1317
'direct': EdgePathfindingDirect,
@@ -22,7 +26,7 @@ export default class EdgeStylesExtension extends CanvasExtension {
2226
isEnabled() { return 'edgesStylingFeatureEnabled' as const }
2327

2428
init() {
25-
this.cssStylesManager = new CssStylesConfigManager(this.plugin, 'advanced-canvas-edge-style', styleAttributeValidator)
29+
this.cssStylesManager = GET_EDGE_CSS_STYLES_MANAGER(this.plugin)
2630

2731
this.plugin.registerEvent(this.plugin.app.workspace.on(
2832
'advanced-canvas:popup-menu-created',
@@ -43,7 +47,7 @@ export default class EdgeStylesExtension extends CanvasExtension {
4347
'advanced-canvas:node-added',
4448
(canvas: Canvas, node: CanvasNode) => {
4549
if (canvas.dirty.size > 1 && !canvas.isPasting) return // Skip if multiple nodes are added at once (e.g. on initial load)
46-
50+
4751
this.updateAllEdgesInArea(canvas, node.getBBox())
4852
}
4953
))
@@ -106,7 +110,7 @@ export default class EdgeStylesExtension extends CanvasExtension {
106110
}
107111
})
108112
}
109-
113+
110114
canvas.pushHistory(canvas.getData())
111115
}
112116

@@ -133,7 +137,7 @@ export default class EdgeStylesExtension extends CanvasExtension {
133137
}
134138

135139
const edgeData = edge.getData()
136-
140+
137141
// Reset path to default
138142
if (!edge.bezier) return
139143
edge.center = undefined
@@ -144,20 +148,20 @@ export default class EdgeStylesExtension extends CanvasExtension {
144148
if (pathfindingMethod && pathfindingMethod in EDGE_PATHFINDING_METHODS) {
145149
const fromNodeBBox = edge.from.node.getBBox()
146150
const fromBBoxSidePos = BBoxHelper.getCenterOfBBoxSide(fromNodeBBox, edge.from.side)
147-
const fromPos = edge.from.end === 'none' ?
151+
const fromPos = edge.from.end === 'none' ?
148152
fromBBoxSidePos :
149153
edge.bezier.from
150-
154+
151155
const toNodeBBox = edge.to.node.getBBox()
152156
const toBBoxSidePos = BBoxHelper.getCenterOfBBoxSide(toNodeBBox, edge.to.side)
153-
const toPos = edge.to.end === 'none' ?
157+
const toPos = edge.to.end === 'none' ?
154158
toBBoxSidePos :
155159
edge.bezier.to
156160

157161
const path = new (EDGE_PATHFINDING_METHODS[pathfindingMethod] as any)(
158-
this.plugin,
159-
canvas,
160-
fromNodeBBox, fromPos, fromBBoxSidePos, edge.from.side,
162+
this.plugin,
163+
canvas,
164+
fromNodeBBox, fromPos, fromBBoxSidePos, edge.from.side,
161165
toNodeBBox, toPos, toBBoxSidePos, edge.to.side
162166
).getPath()
163167
if (!path) return
@@ -195,4 +199,4 @@ export default class EdgeStylesExtension extends CanvasExtension {
195199
else // Default triangle
196200
return `0,0 6.5,10.4 -6.5,10.4`
197201
}
198-
}
202+
}

src/canvas-extensions/advanced-styles/node-styles.ts

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,18 @@ import CanvasHelper from "src/utils/canvas-helper"
33
import CanvasExtension from "../canvas-extension"
44
import { BUILTIN_NODE_STYLE_ATTRIBUTES, StyleAttribute, styleAttributeValidator } from "./style-config"
55
import CssStylesConfigManager from "src/managers/css-styles-config-manager"
6+
import AdvancedCanvasPlugin from "src/main"
7+
8+
export const GET_NODE_CSS_STYLES_MANAGER = (plugin: AdvancedCanvasPlugin) =>
9+
new CssStylesConfigManager(plugin, 'advanced-canvas-node-style', styleAttributeValidator)
610

711
export default class NodeStylesExtension extends CanvasExtension {
812
cssStylesManager: CssStylesConfigManager<StyleAttribute>
913

1014
isEnabled() { return 'nodeStylingFeatureEnabled' as const }
1115

1216
init() {
13-
this.cssStylesManager = new CssStylesConfigManager(this.plugin, 'advanced-canvas-node-style', styleAttributeValidator)
17+
this.cssStylesManager = GET_NODE_CSS_STYLES_MANAGER(this.plugin)
1418

1519
this.plugin.registerEvent(this.plugin.app.workspace.on(
1620
'advanced-canvas:popup-menu-created',
@@ -51,7 +55,7 @@ export default class NodeStylesExtension extends CanvasExtension {
5155
}
5256
})
5357
}
54-
58+
5559
canvas.pushHistory(canvas.getData())
5660
}
57-
}
61+
}

src/settings.ts

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,11 @@
11
import { Notice, PluginSettingTab, Setting as SettingEl, TextComponent } from "obsidian"
22
import { BooleanSetting, ButtonSetting, DimensionSetting, DropdownSetting, NumberSetting, Setting, SettingsHeading, StyleAttributesSetting, TextSetting } from "./@types/Settings"
3+
import { GET_EDGE_CSS_STYLES_MANAGER } from "./canvas-extensions/advanced-styles/edge-styles"
4+
import { GET_NODE_CSS_STYLES_MANAGER } from "./canvas-extensions/advanced-styles/node-styles"
35
import { BUILTIN_EDGE_STYLE_ATTRIBUTES, BUILTIN_NODE_STYLE_ATTRIBUTES, StyleAttribute } from "./canvas-extensions/advanced-styles/style-config"
46
import { VARIABLE_BREAKPOINT_CSS_VAR } from "./canvas-extensions/variable-breakpoint-canvas-extension"
57
import AdvancedCanvasPlugin from "./main"
8+
import CssStylesConfigManager from "./managers/css-styles-config-manager"
69

710
const README_URL = 'https://github.com/Developer-Mike/obsidian-advanced-canvas?tab=readme-ov-file'
811

@@ -376,8 +379,11 @@ export const SETTINGS = {
376379
label: 'Default text node style attributes',
377380
type: 'styles',
378381
getParameters(settingsManager) {
379-
return [ ...BUILTIN_NODE_STYLE_ATTRIBUTES, ...settingsManager.getSetting('customNodeStyleAttributes') ]
380-
.filter((setting) => setting.nodeTypes === undefined || setting.nodeTypes?.includes('text'))
382+
return [
383+
...BUILTIN_NODE_STYLE_ATTRIBUTES, /* BUILTINS */
384+
...settingsManager.nodeCssStylesManager.getStyles(), /* CUSTOM CSS STYLES */
385+
...settingsManager.getSetting('customNodeStyleAttributes') /* LEGACY CUSTOM STYLES */
386+
].filter((setting) => setting.nodeTypes === undefined || setting.nodeTypes?.includes('text'))
381387
}
382388
} as StyleAttributesSetting
383389
}
@@ -418,7 +424,11 @@ export const SETTINGS = {
418424
label: 'Default edge style attributes',
419425
type: 'styles',
420426
getParameters(settingsManager) {
421-
return [ ...BUILTIN_EDGE_STYLE_ATTRIBUTES, ...settingsManager.getSetting('customEdgeStyleAttributes') ]
427+
return [
428+
...BUILTIN_EDGE_STYLE_ATTRIBUTES, /* BUILTINS */
429+
...settingsManager.edgeCssStylesManager.getStyles(), /* CUSTOM CSS STYLES */
430+
...settingsManager.getSetting('customEdgeStyleAttributes') /* LEGACY CUSTOM STYLES */
431+
]
422432
}
423433
} as StyleAttributesSetting,
424434
edgeStyleUpdateWhileDragging: {
@@ -642,8 +652,14 @@ export default class SettingsManager {
642652
private settings: AdvancedCanvasPluginSettingsValues
643653
private settingsTab: AdvancedCanvasPluginSettingTab
644654

655+
nodeCssStylesManager: CssStylesConfigManager<StyleAttribute>
656+
edgeCssStylesManager: CssStylesConfigManager<StyleAttribute>
657+
645658
constructor(plugin: AdvancedCanvasPlugin) {
646659
this.plugin = plugin
660+
661+
this.nodeCssStylesManager = GET_NODE_CSS_STYLES_MANAGER(plugin)
662+
this.edgeCssStylesManager = GET_EDGE_CSS_STYLES_MANAGER(plugin)
647663
}
648664

649665
async loadSettings() {

0 commit comments

Comments
 (0)