UNPKG

@pnp/spfx-controls-react

Version:

Reusable React controls for SharePoint Framework solutions

193 lines • 9.5 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.useFluentEmojis = void 0; var tslib_1 = require("tslib"); /* eslint-disable @typescript-eslint/no-explicit-any */ var react_1 = tslib_1.__importDefault(require("react")); var lodash_1 = require("lodash"); var sp_lodash_subset_1 = require("@microsoft/sp-lodash-subset"); var fluentEmojis_json_1 = tslib_1.__importDefault(require("../data/fluentEmojis.json")); var useFluentEmojis = function () { var base64FromSVGUrl = react_1.default.useCallback(function (url) { return tslib_1.__awaiter(void 0, void 0, void 0, function () { var svg, svg64, b64Start, image64; return tslib_1.__generator(this, function (_a) { switch (_a.label) { case 0: return [4 /*yield*/, fetch(url).then(function (response) { return response.text(); })]; case 1: svg = _a.sent(); svg64 = btoa(svg); b64Start = "data:image/svg+xml;base64,"; image64 = b64Start + svg64; return [2 /*return*/, image64]; } }); }); }, []); var getEmojis = react_1.default.useCallback(function () { return tslib_1.__awaiter(void 0, void 0, void 0, function () { var newEmojiList, _a, _b, _c, _i, emoji, emojiInfo, _d, styles, skintones, _e, _f, _g, _h, _j, _k; var _l, _m, _o, _p, _q, _r, _s, _t, _u, _v; return tslib_1.__generator(this, function (_w) { switch (_w.label) { case 0: newEmojiList = []; _a = fluentEmojis_json_1.default; _b = []; for (_c in _a) _b.push(_c); _i = 0; _w.label = 1; case 1: if (!(_i < _b.length)) return [3 /*break*/, 24]; _c = _b[_i]; if (!(_c in _a)) return [3 /*break*/, 23]; emoji = _c; if (!Object.prototype.hasOwnProperty.call(fluentEmojis_json_1.default, emoji)) return [3 /*break*/, 23]; emojiInfo = fluentEmojis_json_1.default[emoji]; _d = emojiInfo || {}, styles = _d.styles, skintones = _d.skintones; if (!styles) return [3 /*break*/, 5]; _f = (_e = newEmojiList).push; _g = [tslib_1.__assign({}, emojiInfo)]; _l = {}; _m = {}; return [4 /*yield*/, base64FromSVGUrl(styles.Color)]; case 2: _m.Color = _w.sent(), _m["3D"] = styles["3D"]; return [4 /*yield*/, base64FromSVGUrl(styles.Flat)]; case 3: _m.Flat = _w.sent(); return [4 /*yield*/, base64FromSVGUrl(styles.HighContrast)]; case 4: _f.apply(_e, [tslib_1.__assign.apply(void 0, _g.concat([(_l.styles = (_m.HighContrast = _w.sent(), _m), _l)]))]); _w.label = 5; case 5: if (!skintones) return [3 /*break*/, 23]; _j = (_h = newEmojiList).push; _k = [tslib_1.__assign({}, emojiInfo)]; _o = {}; _p = {}; _q = {}; return [4 /*yield*/, base64FromSVGUrl(skintones.Dark.Color)]; case 6: _q.Color = _w.sent(), _q["3D"] = skintones.Dark["3D"]; return [4 /*yield*/, base64FromSVGUrl(skintones.Dark.Flat)]; case 7: _q.Flat = _w.sent(); return [4 /*yield*/, base64FromSVGUrl(skintones.Dark.HighContrast)]; case 8: _p.Dark = (_q.HighContrast = _w.sent(), _q); _r = {}; return [4 /*yield*/, base64FromSVGUrl(skintones.Default.Color)]; case 9: _r.Color = _w.sent(), _r["3D"] = skintones.Default["3D"]; return [4 /*yield*/, base64FromSVGUrl(skintones.Default.Flat)]; case 10: _r.Flat = _w.sent(); return [4 /*yield*/, base64FromSVGUrl(skintones.Default.HighContrast)]; case 11: _p.Default = (_r.HighContrast = _w.sent(), _r); _s = {}; return [4 /*yield*/, base64FromSVGUrl(skintones.Light.Color)]; case 12: _s.Color = _w.sent(), _s["3D"] = skintones.Light["3D"]; return [4 /*yield*/, base64FromSVGUrl(skintones.Light.Flat)]; case 13: _s.Flat = _w.sent(); return [4 /*yield*/, base64FromSVGUrl(skintones.Light.HighContrast)]; case 14: _p.Light = (_s.HighContrast = _w.sent(), _s); _t = {}; return [4 /*yield*/, base64FromSVGUrl(skintones.Medium.Color)]; case 15: _t.Color = _w.sent(), _t["3D"] = skintones.Medium["3D"], _t.Flat = skintones.Medium.Flat; return [4 /*yield*/, base64FromSVGUrl(skintones.Medium.HighContrast)]; case 16: _p.Medium = (_t.HighContrast = _w.sent(), _t); _u = {}; return [4 /*yield*/, base64FromSVGUrl(skintones.MediumDark.Color)]; case 17: _u.Color = _w.sent(), _u["3D"] = skintones.MediumDark["3D"]; return [4 /*yield*/, base64FromSVGUrl(skintones.MediumDark.Flat)]; case 18: _u.Flat = _w.sent(); return [4 /*yield*/, base64FromSVGUrl(skintones.MediumDark.HighContrast)]; case 19: _p.MediumDark = (_u.HighContrast = _w.sent(), _u); _v = {}; return [4 /*yield*/, base64FromSVGUrl(skintones.MediumLight.Color)]; case 20: _v.Color = _w.sent(), _v["3D"] = skintones.MediumLight["3D"]; return [4 /*yield*/, base64FromSVGUrl(skintones.MediumLight.Flat)]; case 21: _v.Flat = _w.sent(); return [4 /*yield*/, base64FromSVGUrl(skintones.MediumLight.HighContrast)]; case 22: _j.apply(_h, [tslib_1.__assign.apply(void 0, _k.concat([(_o.skintones = (_p.MediumLight = (_v.HighContrast = _w.sent(), _v), _p), _o)]))]); _w.label = 23; case 23: _i++; return [3 /*break*/, 1]; case 24: return [2 /*return*/, newEmojiList]; } }); }); }, []); var getFluentEmojis = react_1.default.useCallback(function () { var _a; return (_a = Object.values(fluentEmojis_json_1.default)) !== null && _a !== void 0 ? _a : undefined; }, []); var getFluentEmojisByGroup = react_1.default.useCallback(function () { var fluentEmojisByGroup = (0, sp_lodash_subset_1.groupBy)(fluentEmojis_json_1.default, "group"); return fluentEmojisByGroup !== null && fluentEmojisByGroup !== void 0 ? fluentEmojisByGroup : undefined; }, []); var getFluentEmojiByglyph = react_1.default.useCallback(function (glyph) { var fluentEmoji = (0, lodash_1.find)(Object.values(fluentEmojis_json_1.default), function (o) { return o.glyph === glyph; }); return fluentEmoji !== null && fluentEmoji !== void 0 ? fluentEmoji : undefined; }, []); var getFluentEmojiByName = react_1.default.useCallback(function (name) { var _a; var fluentEmoji = (_a = (0, lodash_1.find)(Object.values(fluentEmojis_json_1.default), function (o) { return o.cldr.toLowerCase() === name.toLowerCase(); })) !== null && _a !== void 0 ? _a : {}; return fluentEmoji !== null && fluentEmoji !== void 0 ? fluentEmoji : {}; }, []); var getFluentEmoji = react_1.default.useCallback(function (glyph) { var mapDefaultEmoji = new Map(); mapDefaultEmoji.set("like", "Thumbs up"); mapDefaultEmoji.set("heart", "Red heart"); mapDefaultEmoji.set("laugh", "Grinning face"); mapDefaultEmoji.set("surprised", "Face with open mouth"); var mapValue = mapDefaultEmoji.get(glyph); if (mapValue) { return getFluentEmojiByName(mapValue); } else { return getFluentEmojiByglyph(glyph); } }, []); return { getEmojis: getEmojis, getFluentEmojis: getFluentEmojis, getFluentEmojisByGroup: getFluentEmojisByGroup, getFluentEmojiByglyph: getFluentEmojiByglyph, getFluentEmojiByName: getFluentEmojiByName, getFluentEmoji: getFluentEmoji, }; }; exports.useFluentEmojis = useFluentEmojis; //# sourceMappingURL=useFluentEmojis.js.map