* A bunch of shorthand to put together common parts of an HTML page.
*/
-const { lazy } = require('@squeep/lazy');
+const { lazy } = require('@squeep/lazy-property');
/**
* Some fields may have values outside normal dates, handle them here.
/**
* Why is rendering a Date as a string this complicated?
- * @param {Date|Number} date
+ * We handle the infinities because pg-promise might provide those in
+ * lieu of a Date object from timestamp fields.
+ * @param {Date|Number|String} date
* @param {String=} pInf
* @param {String=} nInf
* @param {String=} otherwise
return nInf;
default:
if (!date
+ || Number.isNaN(date.valueOf())
|| (!(date instanceof Date) && !isDatableType)) {
return otherwise;
}
};
+/**
+ * Return array of strings prefixed with tabs.
+ * @param {Number} indent
+ * @param {String[]} list
+ */
+const indented = (indent, list) => {
+ const spacer = '\t'.repeat(indent);
+ return list.map((l) => `${spacer}${l}`);
+};
+
+
/**
* Render the preamble <head> for an HTML page.
* @param {Number} pagePathLevel number of paths below root this page is
htmlHeader,
htmlFooter,
htmlMessages,
+ indented,
renderNavLink,
LI,
UL,