import React from "react"; import { registerClass, makeDerivedClassInfo, ProjectType, PropertyType } from "project-editor/core/object"; import { makeDataPropertyInfo, makeStylePropertyInfo, Widget } from "project-editor/flow/component"; import { IFlowContext } from "project-editor/flow/flow-interfaces"; import { observable, makeObservable } from "mobx"; import { specificGroup } from "project-editor/ui-components/PropertyGrid/groups"; //////////////////////////////////////////////////////////////////////////////// export class MarkdownWidget extends Widget { static classInfo = makeDerivedClassInfo(Widget.classInfo, { enabledInComponentPalette: (projectType: ProjectType) => projectType === ProjectType.DASHBOARD, properties: [ makeDataPropertyInfo("data", { hideInPropertyGrid: true }), { name: "text", type: PropertyType.MultilineText, propertyGridGroup: specificGroup }, makeStylePropertyInfo("style", "Default style") ], defaultValue: { left: 0, top: 0, width: 240, height: 240 }, icon: ( ) }); text: string; override makeEditable() { super.makeEditable(); makeObservable(this, { text: observable }); } override render( flowContext: IFlowContext, width: number, height: number ): React.ReactNode { const showdown = require("showdown"); const converter = new showdown.Converter(); const html = { __html: converter.makeHtml(this.text || "") }; return ( <>
{super.render(flowContext, width, height)} > ); } } registerClass("MarkdownWidget", MarkdownWidget);