@replyke/ui-core-react-js 6.0.0-beta.4 → 6.0.0-beta.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/components/UserAvatar.js +2 -2
- package/dist/cjs/components/UserAvatar.js.map +1 -1
- package/dist/cjs/helpers/getUserAvatar.d.ts +1 -0
- package/dist/cjs/helpers/getUserAvatar.js +119 -0
- package/dist/cjs/helpers/getUserAvatar.js.map +1 -0
- package/dist/esm/components/UserAvatar.js +2 -2
- package/dist/esm/components/UserAvatar.js.map +1 -1
- package/dist/esm/helpers/getUserAvatar.d.ts +1 -0
- package/dist/esm/helpers/getUserAvatar.js +115 -0
- package/dist/esm/helpers/getUserAvatar.js.map +1 -0
- package/package.json +2 -2
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
4
4
|
const reset_styles_1 = require("../constants/reset-styles");
|
|
5
|
+
const getUserAvatar_1 = require("../helpers/getUserAvatar");
|
|
5
6
|
function UserAvatar({ user, size = 32, borderRadius, }) {
|
|
6
7
|
if (!user)
|
|
7
8
|
return null;
|
|
@@ -14,8 +15,7 @@ function UserAvatar({ user, size = 32, borderRadius, }) {
|
|
|
14
15
|
borderColor: "#E6E6E6",
|
|
15
16
|
display: "inline-block",
|
|
16
17
|
flexShrink: 0,
|
|
17
|
-
}, children: (0, jsx_runtime_1.jsx)("img", { src: user.avatar ??
|
|
18
|
-
`https://api.dicebear.com/9.x/thumbs/svg?seed=${user.id}`, alt: user.name || user.id, style: {
|
|
18
|
+
}, children: (0, jsx_runtime_1.jsx)("img", { src: user.avatar ?? (0, getUserAvatar_1.getUserAvatar)(user.id), alt: user.name || user.id, style: {
|
|
19
19
|
...reset_styles_1.resetImg,
|
|
20
20
|
width: "100%",
|
|
21
21
|
height: "100%",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UserAvatar.js","sourceRoot":"","sources":["../../../src/components/UserAvatar.tsx"],"names":[],"mappings":";;;AAAA,4DAAqD;
|
|
1
|
+
{"version":3,"file":"UserAvatar.js","sourceRoot":"","sources":["../../../src/components/UserAvatar.tsx"],"names":[],"mappings":";;;AAAA,4DAAqD;AACrD,4DAAyD;AASzD,SAAS,UAAU,CAAC,EAClB,IAAI,EACJ,IAAI,GAAG,EAAE,EACT,YAAY,GAKb;IACC,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IACvB,OAAO,CACL,gCACE,KAAK,EAAE;YACL,QAAQ,EAAE,QAAQ;YAClB,KAAK,EAAE,IAAI;YACX,MAAM,EAAE,IAAI;YACZ,YAAY,EAAE,YAAY,IAAI,IAAI;YAClC,WAAW,EAAE,CAAC;YACd,WAAW,EAAE,SAAS;YACtB,OAAO,EAAE,cAAc;YACvB,UAAU,EAAE,CAAC;SACd,YAED,gCACE,GAAG,EAAE,IAAI,CAAC,MAAM,IAAI,IAAA,6BAAa,EAAC,IAAI,CAAC,EAAG,CAAC,EAC3C,GAAG,EAAE,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,EAAE,EACzB,KAAK,EAAE;gBACL,GAAG,uBAAQ;gBACX,KAAK,EAAE,MAAM;gBACb,MAAM,EAAE,MAAM;gBACd,SAAS,EAAE,OAAO;aACnB,GACD,GACE,CACP,CAAC;AACJ,CAAC;AAED,kBAAe,UAAU,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const getUserAvatar: (id: string) => string;
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getUserAvatar = void 0;
|
|
4
|
+
// Improved hash function for better distribution across color palettes
|
|
5
|
+
const hashCode = (str) => {
|
|
6
|
+
let hash = 0;
|
|
7
|
+
if (str.length === 0)
|
|
8
|
+
return hash;
|
|
9
|
+
// Use a larger prime number for better distribution
|
|
10
|
+
for (let i = 0; i < str.length; i++) {
|
|
11
|
+
const char = str.charCodeAt(i);
|
|
12
|
+
hash = (hash << 5) - hash + char;
|
|
13
|
+
hash = hash & hash; // Convert to 32-bit integer
|
|
14
|
+
}
|
|
15
|
+
// Additional mixing to spread similar strings apart
|
|
16
|
+
hash = hash ^ (hash >>> 16);
|
|
17
|
+
hash = hash * 0x85ebca6b;
|
|
18
|
+
hash = hash ^ (hash >>> 13);
|
|
19
|
+
hash = hash * 0xc2b2ae35;
|
|
20
|
+
hash = hash ^ (hash >>> 16);
|
|
21
|
+
return Math.abs(hash);
|
|
22
|
+
};
|
|
23
|
+
// Generate deterministic "random" values from seed
|
|
24
|
+
const seededRandom = (seed, index = 0) => {
|
|
25
|
+
const value = hashCode(seed + index);
|
|
26
|
+
return (value % 1000) / 1000; // Return value between 0 and 1
|
|
27
|
+
};
|
|
28
|
+
// 12 diverse color palettes covering the full spectrum for maximum distinction
|
|
29
|
+
const colorPalettes = [
|
|
30
|
+
// Red family
|
|
31
|
+
{ bg: "#e74c3c", shapes: ["#f39c12", "#2ecc71", "#ecf0f1"] },
|
|
32
|
+
// Orange family
|
|
33
|
+
{ bg: "#f39c12", shapes: ["#e74c3c", "#27ae60", "#34495e"] },
|
|
34
|
+
// Yellow family
|
|
35
|
+
{ bg: "#f1c40f", shapes: ["#8e44ad", "#16a085", "#2c3e50"] },
|
|
36
|
+
// Green family
|
|
37
|
+
{ bg: "#27ae60", shapes: ["#3498db", "#e74c3c", "#ecf0f1"] },
|
|
38
|
+
// Teal family
|
|
39
|
+
{ bg: "#16a085", shapes: ["#f39c12", "#9b59b6", "#34495e"] },
|
|
40
|
+
// Blue family
|
|
41
|
+
{ bg: "#3498db", shapes: ["#e67e22", "#27ae60", "#2c3e50"] },
|
|
42
|
+
// Purple family
|
|
43
|
+
{ bg: "#9b59b6", shapes: ["#f1c40f", "#16a085", "#ecf0f1"] },
|
|
44
|
+
// Pink family
|
|
45
|
+
{ bg: "#e91e63", shapes: ["#00bcd4", "#4caf50", "#424242"] },
|
|
46
|
+
// Brown family
|
|
47
|
+
{ bg: "#8d6e63", shapes: ["#ff9800", "#009688", "#f5f5f5"] },
|
|
48
|
+
// Gray family
|
|
49
|
+
{ bg: "#607d8b", shapes: ["#ff5722", "#8bc34a", "#ffffff"] },
|
|
50
|
+
// Bright neon family
|
|
51
|
+
{ bg: "#00e676", shapes: ["#ff1744", "#2979ff", "#37474f"] },
|
|
52
|
+
// Dark rich family
|
|
53
|
+
{ bg: "#263238", shapes: ["#ff6f00", "#e91e63", "#00acc1"] },
|
|
54
|
+
];
|
|
55
|
+
// Generate geometric patterns
|
|
56
|
+
const generatePattern = (seed, type) => {
|
|
57
|
+
const r1 = seededRandom(seed, type * 10);
|
|
58
|
+
const r2 = seededRandom(seed, type * 10 + 1);
|
|
59
|
+
const r3 = seededRandom(seed, type * 10 + 2);
|
|
60
|
+
const r4 = seededRandom(seed, type * 10 + 3);
|
|
61
|
+
const size = 30 + r1 * 40; // Size between 30-70
|
|
62
|
+
const x = r2 * 80; // Position 0-80 (leaving margin)
|
|
63
|
+
const y = r3 * 80; // Position 0-80 (leaving margin)
|
|
64
|
+
switch (type % 4) {
|
|
65
|
+
case 0: // Circle
|
|
66
|
+
return `<circle cx="${x + 20}" cy="${y + 20}" r="${size / 2}" fill-opacity="0.8"/>`;
|
|
67
|
+
case 1: // Rectangle
|
|
68
|
+
return `<rect x="${x + 10}" y="${y + 10}" width="${size}" height="${size * 0.6}" fill-opacity="0.7" rx="5"/>`;
|
|
69
|
+
case 2: // Triangle
|
|
70
|
+
const points = `${x + 20},${y + 10} ${x + 20 + size / 2},${y + 10 + size} ${x + 20 - size / 2},${y + 10 + size}`;
|
|
71
|
+
return `<polygon points="${points}" fill-opacity="0.6"/>`;
|
|
72
|
+
case 3: // Diamond
|
|
73
|
+
const diamond = `${x + 20},${y} ${x + 20 + size / 2},${y + 20} ${x + 20},${y + 40} ${x + 20 - size / 2},${y + 20}`;
|
|
74
|
+
return `<polygon points="${diamond}" fill-opacity="0.7"/>`;
|
|
75
|
+
default:
|
|
76
|
+
return "";
|
|
77
|
+
}
|
|
78
|
+
};
|
|
79
|
+
const getUserAvatar = (id) => {
|
|
80
|
+
if (!id)
|
|
81
|
+
return ("data:image/svg+xml;base64," +
|
|
82
|
+
btoa('<svg xmlns="http://www.w3.org/2000/svg" width="100" height="100"><rect width="100" height="100" fill="#ddd"/></svg>'));
|
|
83
|
+
// Select color palette with maximum distribution
|
|
84
|
+
// Use string length and multiple character properties for unique distribution
|
|
85
|
+
const stringLength = id.length;
|
|
86
|
+
const firstChar = id.charCodeAt(0) || 0;
|
|
87
|
+
const lastChar = id.charCodeAt(id.length - 1) || 0;
|
|
88
|
+
const middleChar = id.charCodeAt(Math.floor(id.length / 2)) || 0;
|
|
89
|
+
// Combine multiple string properties for unique mapping
|
|
90
|
+
const distributionValue = hashCode(id) +
|
|
91
|
+
stringLength * 47 +
|
|
92
|
+
firstChar * 73 +
|
|
93
|
+
lastChar * 101 +
|
|
94
|
+
middleChar * 137;
|
|
95
|
+
const paletteIndex = Math.abs(distributionValue) % colorPalettes.length;
|
|
96
|
+
const palette = colorPalettes[paletteIndex];
|
|
97
|
+
// Generate 3-4 geometric shapes with different colors
|
|
98
|
+
const numShapes = 3 + (hashCode(id + "count") % 2); // 3 or 4 shapes
|
|
99
|
+
const shapes = [];
|
|
100
|
+
for (let i = 0; i < numShapes; i++) {
|
|
101
|
+
const colorIndex = hashCode(id + "color" + i) % palette.shapes.length;
|
|
102
|
+
const shapeColor = palette.shapes[colorIndex];
|
|
103
|
+
const pattern = generatePattern(id + "shape" + i, i);
|
|
104
|
+
if (pattern) {
|
|
105
|
+
shapes.push(`<g fill="${shapeColor}">${pattern}</g>`);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
// Create SVG
|
|
109
|
+
const svg = `
|
|
110
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="100" height="100" viewBox="0 0 100 100">
|
|
111
|
+
<rect width="100" height="100" fill="${palette.bg}"/>
|
|
112
|
+
${shapes.join("")}
|
|
113
|
+
</svg>
|
|
114
|
+
`.trim();
|
|
115
|
+
// Return as data URL
|
|
116
|
+
return "data:image/svg+xml;base64," + btoa(svg);
|
|
117
|
+
};
|
|
118
|
+
exports.getUserAvatar = getUserAvatar;
|
|
119
|
+
//# sourceMappingURL=getUserAvatar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getUserAvatar.js","sourceRoot":"","sources":["../../../src/helpers/getUserAvatar.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import { resetImg } from "../constants/reset-styles";
|
|
3
|
+
import { getUserAvatar } from "../helpers/getUserAvatar";
|
|
3
4
|
function UserAvatar({ user, size = 32, borderRadius, }) {
|
|
4
5
|
if (!user)
|
|
5
6
|
return null;
|
|
@@ -12,8 +13,7 @@ function UserAvatar({ user, size = 32, borderRadius, }) {
|
|
|
12
13
|
borderColor: "#E6E6E6",
|
|
13
14
|
display: "inline-block",
|
|
14
15
|
flexShrink: 0,
|
|
15
|
-
}, children: _jsx("img", { src: user.avatar ??
|
|
16
|
-
`https://api.dicebear.com/9.x/thumbs/svg?seed=${user.id}`, alt: user.name || user.id, style: {
|
|
16
|
+
}, children: _jsx("img", { src: user.avatar ?? getUserAvatar(user.id), alt: user.name || user.id, style: {
|
|
17
17
|
...resetImg,
|
|
18
18
|
width: "100%",
|
|
19
19
|
height: "100%",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UserAvatar.js","sourceRoot":"","sources":["../../../src/components/UserAvatar.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"UserAvatar.js","sourceRoot":"","sources":["../../../src/components/UserAvatar.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AASzD,SAAS,UAAU,CAAC,EAClB,IAAI,EACJ,IAAI,GAAG,EAAE,EACT,YAAY,GAKb;IACC,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IACvB,OAAO,CACL,cACE,KAAK,EAAE;YACL,QAAQ,EAAE,QAAQ;YAClB,KAAK,EAAE,IAAI;YACX,MAAM,EAAE,IAAI;YACZ,YAAY,EAAE,YAAY,IAAI,IAAI;YAClC,WAAW,EAAE,CAAC;YACd,WAAW,EAAE,SAAS;YACtB,OAAO,EAAE,cAAc;YACvB,UAAU,EAAE,CAAC;SACd,YAED,cACE,GAAG,EAAE,IAAI,CAAC,MAAM,IAAI,aAAa,CAAC,IAAI,CAAC,EAAG,CAAC,EAC3C,GAAG,EAAE,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,EAAE,EACzB,KAAK,EAAE;gBACL,GAAG,QAAQ;gBACX,KAAK,EAAE,MAAM;gBACb,MAAM,EAAE,MAAM;gBACd,SAAS,EAAE,OAAO;aACnB,GACD,GACE,CACP,CAAC;AACJ,CAAC;AAED,eAAe,UAAU,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const getUserAvatar: (id: string) => string;
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
// Improved hash function for better distribution across color palettes
|
|
2
|
+
const hashCode = (str) => {
|
|
3
|
+
let hash = 0;
|
|
4
|
+
if (str.length === 0)
|
|
5
|
+
return hash;
|
|
6
|
+
// Use a larger prime number for better distribution
|
|
7
|
+
for (let i = 0; i < str.length; i++) {
|
|
8
|
+
const char = str.charCodeAt(i);
|
|
9
|
+
hash = (hash << 5) - hash + char;
|
|
10
|
+
hash = hash & hash; // Convert to 32-bit integer
|
|
11
|
+
}
|
|
12
|
+
// Additional mixing to spread similar strings apart
|
|
13
|
+
hash = hash ^ (hash >>> 16);
|
|
14
|
+
hash = hash * 0x85ebca6b;
|
|
15
|
+
hash = hash ^ (hash >>> 13);
|
|
16
|
+
hash = hash * 0xc2b2ae35;
|
|
17
|
+
hash = hash ^ (hash >>> 16);
|
|
18
|
+
return Math.abs(hash);
|
|
19
|
+
};
|
|
20
|
+
// Generate deterministic "random" values from seed
|
|
21
|
+
const seededRandom = (seed, index = 0) => {
|
|
22
|
+
const value = hashCode(seed + index);
|
|
23
|
+
return (value % 1000) / 1000; // Return value between 0 and 1
|
|
24
|
+
};
|
|
25
|
+
// 12 diverse color palettes covering the full spectrum for maximum distinction
|
|
26
|
+
const colorPalettes = [
|
|
27
|
+
// Red family
|
|
28
|
+
{ bg: "#e74c3c", shapes: ["#f39c12", "#2ecc71", "#ecf0f1"] },
|
|
29
|
+
// Orange family
|
|
30
|
+
{ bg: "#f39c12", shapes: ["#e74c3c", "#27ae60", "#34495e"] },
|
|
31
|
+
// Yellow family
|
|
32
|
+
{ bg: "#f1c40f", shapes: ["#8e44ad", "#16a085", "#2c3e50"] },
|
|
33
|
+
// Green family
|
|
34
|
+
{ bg: "#27ae60", shapes: ["#3498db", "#e74c3c", "#ecf0f1"] },
|
|
35
|
+
// Teal family
|
|
36
|
+
{ bg: "#16a085", shapes: ["#f39c12", "#9b59b6", "#34495e"] },
|
|
37
|
+
// Blue family
|
|
38
|
+
{ bg: "#3498db", shapes: ["#e67e22", "#27ae60", "#2c3e50"] },
|
|
39
|
+
// Purple family
|
|
40
|
+
{ bg: "#9b59b6", shapes: ["#f1c40f", "#16a085", "#ecf0f1"] },
|
|
41
|
+
// Pink family
|
|
42
|
+
{ bg: "#e91e63", shapes: ["#00bcd4", "#4caf50", "#424242"] },
|
|
43
|
+
// Brown family
|
|
44
|
+
{ bg: "#8d6e63", shapes: ["#ff9800", "#009688", "#f5f5f5"] },
|
|
45
|
+
// Gray family
|
|
46
|
+
{ bg: "#607d8b", shapes: ["#ff5722", "#8bc34a", "#ffffff"] },
|
|
47
|
+
// Bright neon family
|
|
48
|
+
{ bg: "#00e676", shapes: ["#ff1744", "#2979ff", "#37474f"] },
|
|
49
|
+
// Dark rich family
|
|
50
|
+
{ bg: "#263238", shapes: ["#ff6f00", "#e91e63", "#00acc1"] },
|
|
51
|
+
];
|
|
52
|
+
// Generate geometric patterns
|
|
53
|
+
const generatePattern = (seed, type) => {
|
|
54
|
+
const r1 = seededRandom(seed, type * 10);
|
|
55
|
+
const r2 = seededRandom(seed, type * 10 + 1);
|
|
56
|
+
const r3 = seededRandom(seed, type * 10 + 2);
|
|
57
|
+
const r4 = seededRandom(seed, type * 10 + 3);
|
|
58
|
+
const size = 30 + r1 * 40; // Size between 30-70
|
|
59
|
+
const x = r2 * 80; // Position 0-80 (leaving margin)
|
|
60
|
+
const y = r3 * 80; // Position 0-80 (leaving margin)
|
|
61
|
+
switch (type % 4) {
|
|
62
|
+
case 0: // Circle
|
|
63
|
+
return `<circle cx="${x + 20}" cy="${y + 20}" r="${size / 2}" fill-opacity="0.8"/>`;
|
|
64
|
+
case 1: // Rectangle
|
|
65
|
+
return `<rect x="${x + 10}" y="${y + 10}" width="${size}" height="${size * 0.6}" fill-opacity="0.7" rx="5"/>`;
|
|
66
|
+
case 2: // Triangle
|
|
67
|
+
const points = `${x + 20},${y + 10} ${x + 20 + size / 2},${y + 10 + size} ${x + 20 - size / 2},${y + 10 + size}`;
|
|
68
|
+
return `<polygon points="${points}" fill-opacity="0.6"/>`;
|
|
69
|
+
case 3: // Diamond
|
|
70
|
+
const diamond = `${x + 20},${y} ${x + 20 + size / 2},${y + 20} ${x + 20},${y + 40} ${x + 20 - size / 2},${y + 20}`;
|
|
71
|
+
return `<polygon points="${diamond}" fill-opacity="0.7"/>`;
|
|
72
|
+
default:
|
|
73
|
+
return "";
|
|
74
|
+
}
|
|
75
|
+
};
|
|
76
|
+
export const getUserAvatar = (id) => {
|
|
77
|
+
if (!id)
|
|
78
|
+
return ("data:image/svg+xml;base64," +
|
|
79
|
+
btoa('<svg xmlns="http://www.w3.org/2000/svg" width="100" height="100"><rect width="100" height="100" fill="#ddd"/></svg>'));
|
|
80
|
+
// Select color palette with maximum distribution
|
|
81
|
+
// Use string length and multiple character properties for unique distribution
|
|
82
|
+
const stringLength = id.length;
|
|
83
|
+
const firstChar = id.charCodeAt(0) || 0;
|
|
84
|
+
const lastChar = id.charCodeAt(id.length - 1) || 0;
|
|
85
|
+
const middleChar = id.charCodeAt(Math.floor(id.length / 2)) || 0;
|
|
86
|
+
// Combine multiple string properties for unique mapping
|
|
87
|
+
const distributionValue = hashCode(id) +
|
|
88
|
+
stringLength * 47 +
|
|
89
|
+
firstChar * 73 +
|
|
90
|
+
lastChar * 101 +
|
|
91
|
+
middleChar * 137;
|
|
92
|
+
const paletteIndex = Math.abs(distributionValue) % colorPalettes.length;
|
|
93
|
+
const palette = colorPalettes[paletteIndex];
|
|
94
|
+
// Generate 3-4 geometric shapes with different colors
|
|
95
|
+
const numShapes = 3 + (hashCode(id + "count") % 2); // 3 or 4 shapes
|
|
96
|
+
const shapes = [];
|
|
97
|
+
for (let i = 0; i < numShapes; i++) {
|
|
98
|
+
const colorIndex = hashCode(id + "color" + i) % palette.shapes.length;
|
|
99
|
+
const shapeColor = palette.shapes[colorIndex];
|
|
100
|
+
const pattern = generatePattern(id + "shape" + i, i);
|
|
101
|
+
if (pattern) {
|
|
102
|
+
shapes.push(`<g fill="${shapeColor}">${pattern}</g>`);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
// Create SVG
|
|
106
|
+
const svg = `
|
|
107
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="100" height="100" viewBox="0 0 100 100">
|
|
108
|
+
<rect width="100" height="100" fill="${palette.bg}"/>
|
|
109
|
+
${shapes.join("")}
|
|
110
|
+
</svg>
|
|
111
|
+
`.trim();
|
|
112
|
+
// Return as data URL
|
|
113
|
+
return "data:image/svg+xml;base64," + btoa(svg);
|
|
114
|
+
};
|
|
115
|
+
//# sourceMappingURL=getUserAvatar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getUserAvatar.js","sourceRoot":"","sources":["../../../src/helpers/getUserAvatar.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@replyke/ui-core-react-js",
|
|
3
|
-
"version": "6.0.0-beta.
|
|
3
|
+
"version": "6.0.0-beta.6",
|
|
4
4
|
"private": false,
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"author": "Replyke, maintained by Yanay Tsabary",
|
|
@@ -46,7 +46,7 @@
|
|
|
46
46
|
},
|
|
47
47
|
"devDependencies": {
|
|
48
48
|
"moment": "^2.30.1",
|
|
49
|
-
"@replyke/core": "6.0.0-beta.
|
|
49
|
+
"@replyke/core": "6.0.0-beta.6"
|
|
50
50
|
},
|
|
51
51
|
"peerDependencies": {
|
|
52
52
|
"@replyke/core": ">=5",
|