hswidget
Version:
Helpful Scripts UI widgets
120 lines • 9.14 kB
JavaScript
;
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.makeHtml = exports.EditDate = exports.EditLabel = void 0;
const hsutil_1 = require("hsutil");
const log = new hsutil_1.Log('EditLabel');
const mithril_1 = __importDefault(require("mithril"));
const Popup_1 = require("./Popup");
const Widget_1 = require("./Widget");
class EditLabel extends Widget_1.Widget {
onupdate(node) {
const dom = node.dom;
if (dom && node.state.editable && document.activeElement !== node.dom) {
dom.value = node.children || '';
dom.focus();
dom.select();
}
}
oninit(node) {
node.state.editable = false;
node.state.blur = (e) => {
node.state.editable = false;
node.attrs.update(e.target.value);
};
node.state.makeEditable = () => {
node.state.editable = true;
};
node.state.blurIfReturn = (key) => {
key.which === 13 ? key.target.blur() : '';
};
}
view(node) {
const children = node.children.join(',');
const html = makeHtml('' + children);
const content = children ? mithril_1.default.trust(html) : node.attrs.placeholder ?? 'click to enter';
const spanAttrs = this.attrs(node.attrs, { onclick: node.state.makeEditable });
const inputAttrs = this.attrs(node.attrs, { onblur: node.state.blur, onkeyup: node.state.blurIfReturn });
const def = children ? '' : '.default';
return node.state.editable ?
mithril_1.default(`input.hsedit_label`, inputAttrs, '')
: mithril_1.default(`span.hsedit_label${def}`, Popup_1.Popup.arm(node.attrs.popup, spanAttrs), content);
}
}
exports.EditLabel = EditLabel;
class EditDate extends EditLabel {
oninit(node) {
super.oninit(node);
node.state.update = node.attrs.update;
node.attrs.update = (newValue) => {
if (newValue) {
const date = new Date(newValue);
const result = isNaN(date.getTime()) ? 'invalid date' : date.toDateString().slice(4);
node.state.update(result);
}
else {
node.state.update(undefined);
}
};
}
view(node) {
let content = node.children;
if (!content || content === '') {
content = new Date().toDateString();
content = content.slice(4);
}
return super.view(node);
}
}
exports.EditDate = EditDate;
let convert;
function makeHtml(content) {
async function loadShowdown() {
try {
log.info(`loading showdown...`);
const showdown = await Promise.resolve().then(() => __importStar(require('showdown')));
log.info(`showdown loaded, creating converter...`);
const converter = new showdown.Converter({
tables: true,
ghCompatibleHeaderId: true,
smartIndentationFix: true,
takslists: true,
strikethrough: true
});
convert = converter.makeHtml.bind(converter);
}
catch (e) {
log.warn(`converting '${content}': ${e}`);
}
}
if (convert) {
return convert(content);
}
else {
loadShowdown();
return content;
}
}
exports.makeHtml = makeHtml;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRWRpdExhYmVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL0VkaXRMYWJlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBcUNBLG1DQUFzQztBQUFFLE1BQU0sR0FBRyxHQUFHLElBQUksWUFBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBQ3pFLHNEQUF1QztBQUN2QyxtQ0FBdUM7QUFDdkMscUNBQTREO0FBVTVELE1BQWEsU0FBVSxTQUFRLGVBQU07SUFLakMsUUFBUSxDQUFDLElBQXFDO1FBQzFDLE1BQU0sR0FBRyxHQUFPLElBQUksQ0FBQyxHQUFHLENBQUM7UUFDekIsSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLElBQUksUUFBUSxDQUFDLGFBQWEsS0FBUyxJQUFLLENBQUMsR0FBRyxFQUFFO1lBQ3hFLEdBQUcsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFFBQVEsSUFBSSxFQUFFLENBQUM7WUFDaEMsR0FBRyxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ1osR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDO1NBQ2hCO0lBQ0wsQ0FBQztJQUVELE1BQU0sQ0FBQyxJQUFnQztRQUNuQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7UUFDNUIsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFLLEVBQUUsRUFBRTtZQUN4QixJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7WUFDNUIsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN0QyxDQUFDLENBQUE7UUFDRCxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksR0FBRyxHQUFHLEVBQUU7WUFDM0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1FB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