UNPKG

hswidget

Version:
120 lines 9.14 kB
"use strict"; 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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