var bricks = window.bricks || {};
/*
reply on "https://github.com/markedjs/marked"
add following lines before 'bricks.js'
*/
bricks.MdWidget = class extends bricks.JsWidget {
/* options
{
"mdtext":
"md_url":
"method":"GET"
"params":{}
}
*/
constructor(options){
super(options);
if (this.mdtext){
this.md_content = this.mdtext;
this._build1();
} else {
var f = this.build.bind(this);
this.load_event = new Event('loaded');
this.dom_element.style.overFlow='auto';
window.addEventListener('scroll', this.show_scroll.bind(this));
schedule_once(f, 0.01);
}
}
set_content(content){
this.md_content = content;
this._build1();
}
show_scroll(event){
bricks.debug('scrollY=', window.scrollY);
}
async build(){
if (! this.opts.md_url){
return;
}
this._build(this.opts.md_url);
}
async _build(md_url){
var md_content = await (bricks.tget(md_url));
this.md_content = md_content;
this._build1();
this.dispatch('loaded', {'url':md_url});
}
_build1(){
this.dom_element.innerHTML = marked.parse(this.md_content);
/* change links in markdown to a bricks action */
var links = this.dom_element.getElementsByTagName('a');
for (var i=0; i