mirror of
https://gh.wpcy.net/https://github.com/discourse/discourse.git
synced 2026-05-04 15:13:41 +08:00
Bumps the lint group with 4 updates in the / directory: [@discourse/lint-configs](https://github.com/discourse/lint-configs), [ember-template-lint](https://github.com/ember-template-lint/ember-template-lint), [eslint](https://github.com/eslint/eslint) and [stylelint](https://github.com/stylelint/stylelint). Updates `@discourse/lint-configs` from 2.22.0 to 2.28.0 - [Commits](https://github.com/discourse/lint-configs/commits) Updates `ember-template-lint` from 7.7.0 to 7.9.1 - [Release notes](https://github.com/ember-template-lint/ember-template-lint/releases) - [Changelog](https://github.com/ember-template-lint/ember-template-lint/blob/master/CHANGELOG.md) - [Commits](https://github.com/ember-template-lint/ember-template-lint/commits) Updates `eslint` from 9.27.0 to 9.32.0 - [Release notes](https://github.com/eslint/eslint/releases) - [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md) - [Commits](https://github.com/eslint/eslint/compare/v9.27.0...v9.32.0) Updates `stylelint` from 16.19.1 to 16.22.0 - [Release notes](https://github.com/stylelint/stylelint/releases) - [Changelog](https://github.com/stylelint/stylelint/blob/main/CHANGELOG.md) - [Commits](https://github.com/stylelint/stylelint/compare/16.19.1...16.22.0) --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Discourse CI <ci@ci.invalid> Co-authored-by: Jarek Radosz <jarek@cvx.dev>
67 lines
1.8 KiB
JavaScript
67 lines
1.8 KiB
JavaScript
import $ from "jquery";
|
|
import { escape } from "pretty-text/sanitizer";
|
|
import discourseDebounce from "discourse/lib/debounce";
|
|
import loadScript from "discourse/lib/load-script";
|
|
import { withPluginApi } from "discourse/lib/plugin-api";
|
|
|
|
export default {
|
|
name: "discourse-graphviz",
|
|
|
|
renderGraphs($containers) {
|
|
$containers.each((_, container) => {
|
|
const $container = $(container);
|
|
|
|
// if the container content has not yet been replaced
|
|
// do nothing
|
|
if (!$container.find("svg").length) {
|
|
this.renderGraph($container);
|
|
}
|
|
});
|
|
},
|
|
|
|
renderGraph($container) {
|
|
const graphDefinition = $container.text().trim();
|
|
const engine = $container.attr("data-engine");
|
|
|
|
const $spinner = $("<div class='spinner tiny'></div>");
|
|
$container.html($spinner);
|
|
|
|
loadScript("/plugins/discourse-graphviz/javascripts/viz-3.0.1.js").then(
|
|
() => {
|
|
$container.removeClass("is-loading");
|
|
|
|
try {
|
|
/* global vizRenderStringSync */
|
|
const svgChart = vizRenderStringSync(graphDefinition, {
|
|
format: "svg",
|
|
engine,
|
|
});
|
|
$container.html(svgChart);
|
|
} catch (e) {
|
|
const $error = $(
|
|
`<div class='graph-error'>${escape(e.message)}</div>`
|
|
);
|
|
$container.html($error);
|
|
}
|
|
}
|
|
);
|
|
},
|
|
|
|
initialize(container) {
|
|
const siteSettings = container.lookup("service:site-settings");
|
|
|
|
if (siteSettings.discourse_graphviz_enabled) {
|
|
withPluginApi((api) => {
|
|
api.decorateCooked(
|
|
($elem) => {
|
|
const $graphviz = $elem.find(".graphviz");
|
|
if ($graphviz.length) {
|
|
discourseDebounce(this, this.renderGraphs, $graphviz, 200);
|
|
}
|
|
},
|
|
{ id: "graphviz" }
|
|
);
|
|
});
|
|
}
|
|
},
|
|
};
|