UNPKG

profile-pane

Version:

A SolidOS compatible pane to display a personal profile page

67 lines 2.97 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.presentProfile = void 0; exports.pronounsAsText = pronounsAsText; var solid_ui_1 = require("solid-ui"); var solid_logic_1 = require("solid-logic"); var validate_color_1 = require("validate-color"); function pronounsAsText(subject) { var pronouns = solid_logic_1.store.anyJS(subject, solid_ui_1.ns.solid('preferredSubjectPronoun')) || ''; if (pronouns) { var them = solid_logic_1.store.anyJS(subject, solid_ui_1.ns.solid('preferredObjectPronoun')); if (them) { pronouns += '/' + them; var their = solid_logic_1.store.anyJS(subject, solid_ui_1.ns.solid('preferredRelativePronoun')); if (their) { pronouns += '/' + their; } } pronouns = ' (' + pronouns + ') '; } return pronouns || ''; } var presentProfile = function (subject, store) { var name = solid_ui_1.utils.label(subject); var imageSrc = solid_ui_1.widgets.findImage(subject); var role = store.anyValue(subject, solid_ui_1.ns.vcard("role")); var orgName = store.anyValue(subject, solid_ui_1.ns.vcard("organization-name")); // @@ Search whole store var address = store.any(subject, solid_ui_1.ns.vcard("hasAddress")); var countryName = address != null ? store.anyValue(address, solid_ui_1.ns.vcard("country-name")) : null; var locality = address != null ? store.anyValue(address, solid_ui_1.ns.vcard("locality")) : null; var _a = getColors(subject, store), backgroundColor = _a.backgroundColor, highlightColor = _a.highlightColor; var pronouns = pronounsAsText(subject); return { name: name, imageSrc: imageSrc, introduction: formatIntroduction(role, orgName), location: formatLocation(countryName, locality), backgroundColor: backgroundColor, pronouns: pronouns, highlightColor: highlightColor, }; }; exports.presentProfile = presentProfile; function formatLocation(countryName, locality) { return countryName && locality ? "".concat(locality, ", ").concat(countryName) : countryName || locality || null; } function formatIntroduction(role, orgName) { return role && orgName ? "".concat(role, " at ").concat(orgName) : orgName || role || null; } function getColors(subject, store) { var backgroundColor = store.anyValue(subject, solid_ui_1.ns.solid("profileBackgroundColor"), null, subject.doc()); var highlightColor = store.anyValue(subject, solid_ui_1.ns.solid("profileHighlightColor"), null, subject.doc()); return { backgroundColor: validColorOrDefault(backgroundColor, "#eee"), highlightColor: validColorOrDefault(highlightColor, "#090"), }; } function validColorOrDefault(color, fallback) { return color && (0, validate_color_1.validateHTMLColorHex)(color) ? color : fallback; } //# sourceMappingURL=presenter.js.map