Skip to Content

CSS / JS API

Manage custom CSS and JavaScript plugins.

dmn.css

dmn.css.get(): Promise<string>

Returns current custom CSS code.

const css = await dmn.css.get(); console.log(css);

dmn.css.set(css: string): Promise<void>

Sets custom CSS code.

await dmn.css.set(` .key { background: linear-gradient(45deg, #ff6b6b, #feca57); border-radius: 8px; } `);

dmn.css.onChanged(callback): Unsubscribe

Subscribes to CSS changes.

const unsub = dmn.css.onChanged((css) => { console.log("CSS updated:", css); });

dmn.js

dmn.js.get(): Promise<string>

Returns current JavaScript plugin code.

const js = await dmn.js.get(); console.log(js);

dmn.js.set(js: string): Promise<void>

Sets JavaScript plugin code.

await dmn.js.set(` // @id my-plugin dmn.plugin.defineElement({ name: "My Plugin", template: (state, settings, { html }) => html\`<div>Hello</div>\`, }); `);

dmn.js.onChanged(callback): Unsubscribe

Subscribes to JS changes.

const unsub = dmn.js.onChanged((js) => { console.log("JS updated:", js); });

Example Usage

// CSS editor (main window) if (dmn.window.type === "main") { const cssEditor = document.createElement("textarea"); cssEditor.style.cssText = "width: 100%; height: 200px; font-family: monospace;"; // Load current CSS dmn.css.get().then((css) => { cssEditor.value = css; }); // Watch changes dmn.css.onChanged((css) => { cssEditor.value = css; }); // Save button const saveBtn = document.createElement("button"); saveBtn.textContent = "Save"; saveBtn.onclick = () => { dmn.css.set(cssEditor.value); }; }