2019-02-25 18:04:49 +07:00
|
|
|
const createCard = require('../create-card');
|
|
|
|
|
|
|
|
module.exports = createCard({
|
2018-05-15 16:27:34 +01:00
|
|
|
name: 'code',
|
|
|
|
type: 'dom',
|
|
|
|
render(opts) {
|
|
|
|
let payload = opts.payload;
|
|
|
|
let dom = opts.env.dom;
|
|
|
|
|
|
|
|
if (!payload.code) {
|
|
|
|
return '';
|
|
|
|
}
|
|
|
|
|
|
|
|
let pre = dom.createElement('pre');
|
|
|
|
let code = dom.createElement('code');
|
|
|
|
|
|
|
|
if (payload.language) {
|
|
|
|
code.setAttribute('class', `language-${payload.language}`);
|
|
|
|
}
|
|
|
|
|
|
|
|
code.appendChild(dom.createTextNode(payload.code));
|
|
|
|
pre.appendChild(code);
|
|
|
|
|
2019-05-01 17:10:24 +02:00
|
|
|
if (payload.caption) {
|
|
|
|
let figure = dom.createElement('figure');
|
|
|
|
figure.setAttribute('class', 'kg-card kg-code-card');
|
|
|
|
figure.appendChild(pre);
|
|
|
|
|
|
|
|
let figcaption = dom.createElement('figcaption');
|
|
|
|
figcaption.appendChild(dom.createRawHTMLSection(payload.caption));
|
|
|
|
figure.appendChild(figcaption);
|
|
|
|
|
|
|
|
return figure;
|
|
|
|
} else {
|
|
|
|
return pre;
|
|
|
|
}
|
2019-10-03 10:44:05 +01:00
|
|
|
},
|
|
|
|
|
|
|
|
absoluteToRelative(urlUtils, payload, options) {
|
|
|
|
payload.caption = payload.caption && urlUtils.htmlAbsoluteToRelative(payload.caption, options);
|
|
|
|
return payload;
|
|
|
|
},
|
|
|
|
|
|
|
|
relativeToAbsolute(urlUtils, payload, options) {
|
|
|
|
payload.caption = payload.caption && urlUtils.htmlRelativeToAbsolute(payload.caption, options);
|
|
|
|
return payload;
|
2018-05-15 16:27:34 +01:00
|
|
|
}
|
2019-02-25 18:04:49 +07:00
|
|
|
});
|