@usecapsule/core-components 3.4.0-dev.1 → 3.4.1-dev.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (65) hide show
  1. package/dist/capsule/capsule.esm.js +1 -1
  2. package/dist/capsule/capsule.esm.js.map +1 -1
  3. package/dist/capsule/index.esm.js +1 -1
  4. package/dist/capsule/index.esm.js.map +1 -1
  5. package/dist/capsule/p-286db996.js +2 -0
  6. package/dist/capsule/p-286db996.js.map +1 -0
  7. package/dist/capsule/p-c33942ad.entry.js +2 -0
  8. package/dist/capsule/p-c33942ad.entry.js.map +1 -0
  9. package/dist/capsule/p-d4ea4244.entry.js +20 -0
  10. package/dist/capsule/p-d4ea4244.entry.js.map +1 -0
  11. package/dist/cjs/capsule.cjs.js +1 -1
  12. package/dist/cjs/cpsl-alert_34.cjs.entry.js +44 -3
  13. package/dist/cjs/cpsl-alert_34.cjs.entry.js.map +1 -1
  14. package/dist/cjs/cpsl-identicon.cjs.entry.js +76 -30
  15. package/dist/cjs/cpsl-identicon.cjs.entry.js.map +1 -1
  16. package/dist/cjs/index.cjs.js +2 -0
  17. package/dist/cjs/index.cjs.js.map +1 -1
  18. package/dist/cjs/loader.cjs.js +1 -1
  19. package/dist/cjs/prand-a35ea6b2.js +209 -0
  20. package/dist/cjs/prand-a35ea6b2.js.map +1 -0
  21. package/dist/collection/assets/icons/cosmos.svg +12 -0
  22. package/dist/collection/assets/icons/ethereum.svg +4 -0
  23. package/dist/collection/assets/icons/index.js +4 -1
  24. package/dist/collection/assets/icons/index.js.map +1 -1
  25. package/dist/collection/assets/icons/solana.svg +19 -0
  26. package/dist/collection/components/cpsl-alert/cpsl-alert.js +1 -1
  27. package/dist/collection/components/cpsl-auth-modal/cpsl-auth-modal.css +2 -1
  28. package/dist/collection/components/cpsl-button/cpsl-button.css +1 -1
  29. package/dist/collection/components/cpsl-icon/cpsl-icon.js +1 -1
  30. package/dist/collection/components/cpsl-identicon/cpsl-identicon.css +17 -10
  31. package/dist/collection/components/cpsl-identicon/cpsl-identicon.js +101 -36
  32. package/dist/collection/components/cpsl-identicon/cpsl-identicon.js.map +1 -1
  33. package/dist/collection/components/cpsl-identicon/cpsl-identicon.stories.js +1 -1
  34. package/dist/collection/components/cpsl-identicon/cpsl-identicon.stories.js.map +1 -1
  35. package/dist/collection/components/cpsl-input/cpsl-input.js +1 -1
  36. package/dist/collection/components/cpsl-slide-button/cpsl-slide-button.js +2 -2
  37. package/dist/collection/components/cpsl-tile-button/cpsl-tile-button.js +1 -1
  38. package/dist/collection/index.js +1 -0
  39. package/dist/collection/index.js.map +1 -1
  40. package/dist/collection/lib/prando.js +187 -0
  41. package/dist/collection/lib/prando.js.map +1 -0
  42. package/dist/collection/utils/prand.js +16 -0
  43. package/dist/collection/utils/prand.js.map +1 -0
  44. package/dist/esm/capsule.js +1 -1
  45. package/dist/esm/cpsl-alert_34.entry.js +44 -3
  46. package/dist/esm/cpsl-alert_34.entry.js.map +1 -1
  47. package/dist/esm/cpsl-identicon.entry.js +76 -30
  48. package/dist/esm/cpsl-identicon.entry.js.map +1 -1
  49. package/dist/esm/index.js +1 -0
  50. package/dist/esm/index.js.map +1 -1
  51. package/dist/esm/loader.js +1 -1
  52. package/dist/esm/prand-c8323494.js +205 -0
  53. package/dist/esm/prand-c8323494.js.map +1 -0
  54. package/dist/types/assets/icons/index.d.ts +3 -0
  55. package/dist/types/components/cpsl-identicon/cpsl-identicon.d.ts +5 -4
  56. package/dist/types/components.d.ts +8 -6
  57. package/dist/types/index.d.ts +1 -0
  58. package/dist/types/lib/prando.d.ts +92 -0
  59. package/dist/types/utils/prand.d.ts +3 -0
  60. package/package.json +1 -2
  61. package/dist/capsule/p-5d62e610.entry.js +0 -2
  62. package/dist/capsule/p-5d62e610.entry.js.map +0 -1
  63. package/dist/capsule/p-afbb1e6f.entry.js +0 -20
  64. package/dist/capsule/p-afbb1e6f.entry.js.map +0 -1
  65. /package/dist/types/Users/{norwood/capsule-repos → taylorbosch/Documents/GitHub/Capsule}/web-sdk/packages/core-components/.stencil/scripts/buildAssets.d.ts +0 -0
@@ -0,0 +1,205 @@
1
+ /*
2
+ * This file contains code from prando, which is licensed under the MIT License:
3
+ *
4
+ * Copyright (c) 2016 Zeh Fernando
5
+ *
6
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
7
+ * of this software and associated documentation files (the "Software"), to deal
8
+ * in the Software without restriction, including without limitation the rights
9
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10
+ * copies of the Software, and to permit persons to whom the Software is
11
+ * furnished to do so, subject to the following conditions:
12
+ *
13
+ * The above copyright notice and this permission notice shall be included in all
14
+ * copies or substantial portions of the Software.
15
+ *
16
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22
+ * SOFTWARE.
23
+ */
24
+ class Prando {
25
+ // ================================================================================================================
26
+ // CONSTRUCTOR ----------------------------------------------------------------------------------------------------
27
+ /**
28
+ * Generate a new Prando pseudo-random number generator.
29
+ *
30
+ * @param seed - A number or string seed that determines which pseudo-random number sequence will be created. Defaults to a random seed based on `Math.random()`.
31
+ */
32
+ constructor(seed) {
33
+ this._value = NaN;
34
+ if (typeof seed === 'string') {
35
+ // String seed
36
+ this._seed = this.hashCode(seed);
37
+ }
38
+ else if (typeof seed === 'number') {
39
+ // Numeric seed
40
+ this._seed = this.getSafeSeed(seed);
41
+ }
42
+ else {
43
+ // Pseudo-random seed
44
+ this._seed = this.getSafeSeed(Prando.MIN + Math.floor((Prando.MAX - Prando.MIN) * Math.random()));
45
+ }
46
+ this.reset();
47
+ }
48
+ // ================================================================================================================
49
+ // PUBLIC INTERFACE -----------------------------------------------------------------------------------------------
50
+ /**
51
+ * Generates a pseudo-random number between a lower (inclusive) and a higher (exclusive) bounds.
52
+ *
53
+ * @param min - The minimum number that can be randomly generated.
54
+ * @param pseudoMax - The maximum number that can be randomly generated (exclusive).
55
+ * @return The generated pseudo-random number.
56
+ */
57
+ next(min = 0, pseudoMax = 1) {
58
+ this.recalculate();
59
+ return this.map(this._value, Prando.MIN, Prando.MAX, min, pseudoMax);
60
+ }
61
+ /**
62
+ * Generates a pseudo-random integer number in a range (inclusive).
63
+ *
64
+ * @param min - The minimum number that can be randomly generated.
65
+ * @param max - The maximum number that can be randomly generated.
66
+ * @return The generated pseudo-random number.
67
+ */
68
+ nextInt(min = 10, max = 100) {
69
+ this.recalculate();
70
+ return Math.floor(this.map(this._value, Prando.MIN, Prando.MAX, min, max + 1));
71
+ }
72
+ /**
73
+ * Generates a pseudo-random string sequence of a particular length from a specific character range.
74
+ *
75
+ * Note: keep in mind that creating a random string sequence does not guarantee uniqueness; there is always a
76
+ * 1 in (char_length^string_length) chance of collision. For real unique string ids, always check for
77
+ * pre-existing ids, or employ a robust GUID/UUID generator.
78
+ *
79
+ * @param length - Length of the string to be generated.
80
+ * @param chars - Characters that are used when creating the random string. Defaults to all alphanumeric chars (A-Z, a-z, 0-9).
81
+ * @return The generated string sequence.
82
+ */
83
+ nextString(length = 16, chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789') {
84
+ let str = '';
85
+ while (str.length < length) {
86
+ str += this.nextChar(chars);
87
+ }
88
+ return str;
89
+ }
90
+ /**
91
+ * Generates a pseudo-random string of 1 character specific character range.
92
+ *
93
+ * @param chars - Characters that are used when creating the random string. Defaults to all alphanumeric chars (A-Z, a-z, 0-9).
94
+ * @return The generated character.
95
+ */
96
+ nextChar(chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789') {
97
+ return chars.substr(this.nextInt(0, chars.length - 1), 1);
98
+ }
99
+ /**
100
+ * Picks a pseudo-random item from an array. The array is left unmodified.
101
+ *
102
+ * Note: keep in mind that while the returned item will be random enough, picking one item from the array at a time
103
+ * does not guarantee nor imply that a sequence of random non-repeating items will be picked. If you want to
104
+ * *pick items in a random order* from an array, instead of *pick one random item from an array*, it's best to
105
+ * apply a *shuffle* transformation to the array instead, then read it linearly.
106
+ *
107
+ * @param array - Array of any type containing one or more candidates for random picking.
108
+ * @return An item from the array.
109
+ */
110
+ nextArrayItem(array) {
111
+ return array[this.nextInt(0, array.length - 1)];
112
+ }
113
+ /**
114
+ * Generates a pseudo-random boolean.
115
+ *
116
+ * @return A value of true or false.
117
+ */
118
+ nextBoolean() {
119
+ this.recalculate();
120
+ return this._value > 0.5;
121
+ }
122
+ /**
123
+ * Skips ahead in the sequence of numbers that are being generated. This is equivalent to
124
+ * calling next() a specified number of times, but faster since it doesn't need to map the
125
+ * new random numbers to a range and return it.
126
+ *
127
+ * @param iterations - The number of items to skip ahead.
128
+ */
129
+ skip(iterations = 1) {
130
+ while (iterations-- > 0) {
131
+ this.recalculate();
132
+ }
133
+ }
134
+ /**
135
+ * Reset the pseudo-random number sequence back to its starting seed. Further calls to next()
136
+ * will then produce the same sequence of numbers it had produced before. This is equivalent to
137
+ * creating a new Prando instance with the same seed as another Prando instance.
138
+ *
139
+ * Example:
140
+ * let rng = new Prando(12345678);
141
+ * console.log(rng.next()); // 0.6177754114889017
142
+ * console.log(rng.next()); // 0.5784605181725837
143
+ * rng.reset();
144
+ * console.log(rng.next()); // 0.6177754114889017 again
145
+ * console.log(rng.next()); // 0.5784605181725837 again
146
+ */
147
+ reset() {
148
+ this._value = this._seed;
149
+ }
150
+ // ================================================================================================================
151
+ // PRIVATE INTERFACE ----------------------------------------------------------------------------------------------
152
+ recalculate() {
153
+ this._value = this.xorshift(this._value);
154
+ }
155
+ xorshift(value) {
156
+ // Xorshift*32
157
+ // Based on George Marsaglia's work: http://www.jstatsoft.org/v08/i14/paper
158
+ value ^= value << 13;
159
+ value ^= value >> 17;
160
+ value ^= value << 5;
161
+ return value;
162
+ }
163
+ map(val, minFrom, maxFrom, minTo, maxTo) {
164
+ return ((val - minFrom) / (maxFrom - minFrom)) * (maxTo - minTo) + minTo;
165
+ }
166
+ hashCode(str) {
167
+ let hash = 0;
168
+ if (str) {
169
+ const l = str.length;
170
+ for (let i = 0; i < l; i++) {
171
+ hash = (hash << 5) - hash + str.charCodeAt(i);
172
+ hash |= 0;
173
+ hash = this.xorshift(hash);
174
+ }
175
+ }
176
+ return this.getSafeSeed(hash);
177
+ }
178
+ getSafeSeed(seed) {
179
+ if (seed === 0)
180
+ return 1;
181
+ return seed;
182
+ }
183
+ }
184
+ Prando.MIN = -2147483648; // Int32 min
185
+ Prando.MAX = 2147483647; // Int32 max
186
+ const Prando$1 = Prando;
187
+
188
+ const COLORS = ['red', 'orange', 'yellow', 'green', 'blue', 'purple'];
189
+ const GRADIENTS = {
190
+ red: ['#FF4270', '#FF7C7C'],
191
+ orange: ['#F45532', '#FF9B63'],
192
+ yellow: ['#FFA756', '#FBFF47'],
193
+ green: ['#0CAE60', '#7BFFD0'],
194
+ blue: ['#476FFF', '#47C8FF'],
195
+ purple: ['#9747FF', '#DA47FF'],
196
+ };
197
+ function getPseudoRandomBackground(seed) {
198
+ const rng = new Prando$1(seed);
199
+ const [start, stop] = GRADIENTS[COLORS[rng.nextInt(0, COLORS.length - 1)]];
200
+ return `linear-gradient(136deg, ${start} 6.86%, ${stop} 93.78%)`;
201
+ }
202
+
203
+ export { COLORS as C, Prando$1 as P, getPseudoRandomBackground as g };
204
+
205
+ //# sourceMappingURL=prand-c8323494.js.map
@@ -0,0 +1 @@
1
+ {"file":"prand-c8323494.js","mappings":"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","names":["Prando"],"sources":["src/lib/prando.ts","src/utils/prand.ts"],"sourcesContent":["/*\n * This file contains code from prando, which is licensed under the MIT License:\n *\n * Copyright (c) 2016 Zeh Fernando\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\n\nexport default class Prando {\n private static readonly MIN: number = -2147483648; // Int32 min\n private static readonly MAX: number = 2147483647; // Int32 max\n\n private _seed: number;\n private _value = NaN;\n\n // ================================================================================================================\n // CONSTRUCTOR ----------------------------------------------------------------------------------------------------\n\n /**\n * Generate a new Prando pseudo-random number generator.\n *\n * @param seed - A number or string seed that determines which pseudo-random number sequence will be created. Defaults to a random seed based on `Math.random()`.\n */\n constructor(seed?: number | string) {\n if (typeof seed === 'string') {\n // String seed\n this._seed = this.hashCode(seed);\n } else if (typeof seed === 'number') {\n // Numeric seed\n this._seed = this.getSafeSeed(seed);\n } else {\n // Pseudo-random seed\n this._seed = this.getSafeSeed(Prando.MIN + Math.floor((Prando.MAX - Prando.MIN) * Math.random()));\n }\n this.reset();\n }\n\n // ================================================================================================================\n // PUBLIC INTERFACE -----------------------------------------------------------------------------------------------\n\n /**\n * Generates a pseudo-random number between a lower (inclusive) and a higher (exclusive) bounds.\n *\n * @param min - The minimum number that can be randomly generated.\n * @param pseudoMax - The maximum number that can be randomly generated (exclusive).\n * @return The generated pseudo-random number.\n */\n public next(min = 0, pseudoMax = 1): number {\n this.recalculate();\n return this.map(this._value, Prando.MIN, Prando.MAX, min, pseudoMax);\n }\n\n /**\n * Generates a pseudo-random integer number in a range (inclusive).\n *\n * @param min - The minimum number that can be randomly generated.\n * @param max - The maximum number that can be randomly generated.\n * @return The generated pseudo-random number.\n */\n public nextInt(min = 10, max = 100): number {\n this.recalculate();\n return Math.floor(this.map(this._value, Prando.MIN, Prando.MAX, min, max + 1));\n }\n\n /**\n * Generates a pseudo-random string sequence of a particular length from a specific character range.\n *\n * Note: keep in mind that creating a random string sequence does not guarantee uniqueness; there is always a\n * 1 in (char_length^string_length) chance of collision. For real unique string ids, always check for\n * pre-existing ids, or employ a robust GUID/UUID generator.\n *\n * @param length - Length of the string to be generated.\n * @param chars - Characters that are used when creating the random string. Defaults to all alphanumeric chars (A-Z, a-z, 0-9).\n * @return The generated string sequence.\n */\n public nextString(length = 16, chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'): string {\n let str = '';\n while (str.length < length) {\n str += this.nextChar(chars);\n }\n return str;\n }\n\n /**\n * Generates a pseudo-random string of 1 character specific character range.\n *\n * @param chars - Characters that are used when creating the random string. Defaults to all alphanumeric chars (A-Z, a-z, 0-9).\n * @return The generated character.\n */\n public nextChar(chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'): string {\n return chars.substr(this.nextInt(0, chars.length - 1), 1);\n }\n\n /**\n * Picks a pseudo-random item from an array. The array is left unmodified.\n *\n * Note: keep in mind that while the returned item will be random enough, picking one item from the array at a time\n * does not guarantee nor imply that a sequence of random non-repeating items will be picked. If you want to\n * *pick items in a random order* from an array, instead of *pick one random item from an array*, it's best to\n * apply a *shuffle* transformation to the array instead, then read it linearly.\n *\n * @param array - Array of any type containing one or more candidates for random picking.\n * @return An item from the array.\n */\n public nextArrayItem<T>(array: T[]): T {\n return array[this.nextInt(0, array.length - 1)];\n }\n\n /**\n * Generates a pseudo-random boolean.\n *\n * @return A value of true or false.\n */\n public nextBoolean(): boolean {\n this.recalculate();\n return this._value > 0.5;\n }\n\n /**\n * Skips ahead in the sequence of numbers that are being generated. This is equivalent to\n * calling next() a specified number of times, but faster since it doesn't need to map the\n * new random numbers to a range and return it.\n *\n * @param iterations - The number of items to skip ahead.\n */\n public skip(iterations = 1): void {\n while (iterations-- > 0) {\n this.recalculate();\n }\n }\n\n /**\n * Reset the pseudo-random number sequence back to its starting seed. Further calls to next()\n * will then produce the same sequence of numbers it had produced before. This is equivalent to\n * creating a new Prando instance with the same seed as another Prando instance.\n *\n * Example:\n * let rng = new Prando(12345678);\n * console.log(rng.next()); // 0.6177754114889017\n * console.log(rng.next()); // 0.5784605181725837\n * rng.reset();\n * console.log(rng.next()); // 0.6177754114889017 again\n * console.log(rng.next()); // 0.5784605181725837 again\n */\n public reset(): void {\n this._value = this._seed;\n }\n\n // ================================================================================================================\n // PRIVATE INTERFACE ----------------------------------------------------------------------------------------------\n\n private recalculate(): void {\n this._value = this.xorshift(this._value);\n }\n\n private xorshift(value: number): number {\n // Xorshift*32\n // Based on George Marsaglia's work: http://www.jstatsoft.org/v08/i14/paper\n value ^= value << 13;\n value ^= value >> 17;\n value ^= value << 5;\n return value;\n }\n\n private map(val: number, minFrom: number, maxFrom: number, minTo: number, maxTo: number): number {\n return ((val - minFrom) / (maxFrom - minFrom)) * (maxTo - minTo) + minTo;\n }\n\n private hashCode(str: string): number {\n let hash = 0;\n if (str) {\n const l = str.length;\n for (let i = 0; i < l; i++) {\n hash = (hash << 5) - hash + str.charCodeAt(i);\n hash |= 0;\n hash = this.xorshift(hash);\n }\n }\n return this.getSafeSeed(hash);\n }\n\n private getSafeSeed(seed: number): number {\n if (seed === 0) return 1;\n return seed;\n }\n}\n","import Prando from '../lib/prando';\n\nexport type Color = 'red' | 'orange' | 'yellow' | 'green' | 'blue' | 'purple';\n\nexport const COLORS: Color[] = ['red', 'orange', 'yellow', 'green', 'blue', 'purple'];\n\nconst GRADIENTS = {\n red: ['#FF4270', '#FF7C7C'],\n orange: ['#F45532', '#FF9B63'],\n yellow: ['#FFA756', '#FBFF47'],\n green: ['#0CAE60', '#7BFFD0'],\n blue: ['#476FFF', '#47C8FF'],\n purple: ['#9747FF', '#DA47FF'],\n};\n\nexport function getPseudoRandomBackground(seed: string): string {\n const rng = new Prando(seed);\n\n const [start, stop] = GRADIENTS[COLORS[rng.nextInt(0, COLORS.length - 1)]];\n\n return `linear-gradient(136deg, ${start} 6.86%, ${stop} 93.78%)`;\n}\n"],"version":3}
@@ -22,6 +22,7 @@ export declare const Icons: {
22
22
  clubhouseBrand: string;
23
23
  clubhouse: string;
24
24
  copy: string;
25
+ cosmos: string;
25
26
  creditCard: string;
26
27
  cube: string;
27
28
  decentBrand: string;
@@ -34,6 +35,7 @@ export declare const Icons: {
34
35
  dribbbleBrand: string;
35
36
  dribbble: string;
36
37
  earth: string;
38
+ ethereum: string;
37
39
  eyeOff: string;
38
40
  eye: string;
39
41
  facebookBrand: string;
@@ -97,6 +99,7 @@ export declare const Icons: {
97
99
  signal: string;
98
100
  snapchatBrand: string;
99
101
  snapchat: string;
102
+ solana: string;
100
103
  stars: string;
101
104
  stripeBrand: string;
102
105
  telegramBrand: string;
@@ -1,9 +1,10 @@
1
1
  export declare class CpslIdenticon {
2
- hash: string;
2
+ hash?: string | undefined;
3
3
  /**
4
- * The size of the identicon.
5
- * Default is: 40.
4
+ * The CSS width and height of the identicon.
5
+ * Default is: 40px.
6
6
  */
7
- size: number;
7
+ size: string;
8
+ variant: 'default' | 'avatar';
8
9
  render(): any;
9
10
  }
@@ -389,11 +389,12 @@ export namespace Components {
389
389
  "icons": (IconType | string)[];
390
390
  }
391
391
  interface CpslIdenticon {
392
- "hash": string;
392
+ "hash"?: string | undefined;
393
393
  /**
394
- * The size of the identicon. Default is: 40.
394
+ * The CSS width and height of the identicon. Default is: 40px.
395
395
  */
396
- "size": number;
396
+ "size": string;
397
+ "variant": 'default' | 'avatar';
397
398
  }
398
399
  interface CpslInfoBox {
399
400
  }
@@ -1852,11 +1853,12 @@ declare namespace LocalJSX {
1852
1853
  "icons"?: (IconType | string)[];
1853
1854
  }
1854
1855
  interface CpslIdenticon {
1855
- "hash"?: string;
1856
+ "hash"?: string | undefined;
1856
1857
  /**
1857
- * The size of the identicon. Default is: 40.
1858
+ * The CSS width and height of the identicon. Default is: 40px.
1858
1859
  */
1859
- "size"?: number;
1860
+ "size"?: string;
1861
+ "variant"?: 'default' | 'avatar';
1860
1862
  }
1861
1863
  interface CpslInfoBox {
1862
1864
  }
@@ -1,3 +1,4 @@
1
1
  export * from './components';
2
2
  export { generateTheme } from './utils/theme/generateTheme';
3
3
  export type { Theme, BorderRadius, IconType } from './interface';
4
+ export { getPseudoRandomBackground } from './utils/prand';
@@ -0,0 +1,92 @@
1
+ export default class Prando {
2
+ private static readonly MIN;
3
+ private static readonly MAX;
4
+ private _seed;
5
+ private _value;
6
+ /**
7
+ * Generate a new Prando pseudo-random number generator.
8
+ *
9
+ * @param seed - A number or string seed that determines which pseudo-random number sequence will be created. Defaults to a random seed based on `Math.random()`.
10
+ */
11
+ constructor(seed?: number | string);
12
+ /**
13
+ * Generates a pseudo-random number between a lower (inclusive) and a higher (exclusive) bounds.
14
+ *
15
+ * @param min - The minimum number that can be randomly generated.
16
+ * @param pseudoMax - The maximum number that can be randomly generated (exclusive).
17
+ * @return The generated pseudo-random number.
18
+ */
19
+ next(min?: number, pseudoMax?: number): number;
20
+ /**
21
+ * Generates a pseudo-random integer number in a range (inclusive).
22
+ *
23
+ * @param min - The minimum number that can be randomly generated.
24
+ * @param max - The maximum number that can be randomly generated.
25
+ * @return The generated pseudo-random number.
26
+ */
27
+ nextInt(min?: number, max?: number): number;
28
+ /**
29
+ * Generates a pseudo-random string sequence of a particular length from a specific character range.
30
+ *
31
+ * Note: keep in mind that creating a random string sequence does not guarantee uniqueness; there is always a
32
+ * 1 in (char_length^string_length) chance of collision. For real unique string ids, always check for
33
+ * pre-existing ids, or employ a robust GUID/UUID generator.
34
+ *
35
+ * @param length - Length of the string to be generated.
36
+ * @param chars - Characters that are used when creating the random string. Defaults to all alphanumeric chars (A-Z, a-z, 0-9).
37
+ * @return The generated string sequence.
38
+ */
39
+ nextString(length?: number, chars?: string): string;
40
+ /**
41
+ * Generates a pseudo-random string of 1 character specific character range.
42
+ *
43
+ * @param chars - Characters that are used when creating the random string. Defaults to all alphanumeric chars (A-Z, a-z, 0-9).
44
+ * @return The generated character.
45
+ */
46
+ nextChar(chars?: string): string;
47
+ /**
48
+ * Picks a pseudo-random item from an array. The array is left unmodified.
49
+ *
50
+ * Note: keep in mind that while the returned item will be random enough, picking one item from the array at a time
51
+ * does not guarantee nor imply that a sequence of random non-repeating items will be picked. If you want to
52
+ * *pick items in a random order* from an array, instead of *pick one random item from an array*, it's best to
53
+ * apply a *shuffle* transformation to the array instead, then read it linearly.
54
+ *
55
+ * @param array - Array of any type containing one or more candidates for random picking.
56
+ * @return An item from the array.
57
+ */
58
+ nextArrayItem<T>(array: T[]): T;
59
+ /**
60
+ * Generates a pseudo-random boolean.
61
+ *
62
+ * @return A value of true or false.
63
+ */
64
+ nextBoolean(): boolean;
65
+ /**
66
+ * Skips ahead in the sequence of numbers that are being generated. This is equivalent to
67
+ * calling next() a specified number of times, but faster since it doesn't need to map the
68
+ * new random numbers to a range and return it.
69
+ *
70
+ * @param iterations - The number of items to skip ahead.
71
+ */
72
+ skip(iterations?: number): void;
73
+ /**
74
+ * Reset the pseudo-random number sequence back to its starting seed. Further calls to next()
75
+ * will then produce the same sequence of numbers it had produced before. This is equivalent to
76
+ * creating a new Prando instance with the same seed as another Prando instance.
77
+ *
78
+ * Example:
79
+ * let rng = new Prando(12345678);
80
+ * console.log(rng.next()); // 0.6177754114889017
81
+ * console.log(rng.next()); // 0.5784605181725837
82
+ * rng.reset();
83
+ * console.log(rng.next()); // 0.6177754114889017 again
84
+ * console.log(rng.next()); // 0.5784605181725837 again
85
+ */
86
+ reset(): void;
87
+ private recalculate;
88
+ private xorshift;
89
+ private map;
90
+ private hashCode;
91
+ private getSafeSeed;
92
+ }
@@ -0,0 +1,3 @@
1
+ export type Color = 'red' | 'orange' | 'yellow' | 'green' | 'blue' | 'purple';
2
+ export declare const COLORS: Color[];
3
+ export declare function getPseudoRandomBackground(seed: string): string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@usecapsule/core-components",
3
- "version": "3.4.0-dev.1",
3
+ "version": "3.4.1-dev.1",
4
4
  "description": "Capsule Core Components",
5
5
  "main": "dist/index.cjs.js",
6
6
  "module": "dist/index.js",
@@ -32,7 +32,6 @@
32
32
  "color2k": "^2.0.3",
33
33
  "gsap": "^3.12.5",
34
34
  "imask": "7.6.1",
35
- "lottie-web": "^5.12.2",
36
35
  "qrcode-with-logos": "1.1.1"
37
36
  },
38
37
  "devDependencies": {
@@ -1,2 +0,0 @@
1
- import{r as t,h as e,H as o}from"./p-fa6b7678.js";const r=":host{--identicon-background-red:linear-gradient(136deg, #FF4270 6.86%, #FF7C7C 93.78%);--identicon-background-orange:linear-gradient(136deg, #F45532 6.86%, #FF9B63 93.78%);--identicon-background-yellow:linear-gradient(136deg, #FFA756 6.86%, #FBFF47 93.78%);--identicon-background-green:linear-gradient(136deg, #0CAE60 6.86%, #7BFFD0 93.78%);--identicon-background-blue:linear-gradient(136deg, #476FFF 6.86%, #47C8FF 93.78%);--identicon-background-purple:linear-gradient(136deg, #9747FF 6.86%, #DA47FF 93.78%);display:block;width:62px;height:62px;aspect-ratio:1;border-radius:6px;position:relative;border:1px solid var(--cpsl-color-background-8)}:host>svg{fill:rgba(255, 255, 255, 0.6);position:absolute;width:35%}:host>svg.rotate90{transform:rotate(0.25turn)}:host>svg.rotate180{transform:rotate(0.5turn)}:host>svg.rotate270{transform:rotate(0.75turn)}:host>svg:nth-child(1){right:50%;bottom:50%}:host>svg:nth-child(2){left:50%;bottom:50%}:host>svg:nth-child(3){right:50%;top:50%}:host>svg:nth-child(4){left:50%;top:50%}:host(.red){background:var(--identicon-background-red)}:host(.orange){background:var(--identicon-background-orange)}:host(.green){background:var(--identicon-background-green)}:host(.yellow){background:var(--identicon-background-yellow)}:host(.blue){background:var(--identicon-background-blue)}:host(.purple){background:var(--identicon-background-purple)}";const n=r;const d=t=>e("svg",{class:{rotate90:t===1,rotate180:t===2,rotate270:t===3},viewBox:"0 0 12 12",xmlns:"http://www.w3.org/2000/svg"},e("g",{"clip-path":"url(#clip0_674_66)"},e("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M12 24C18.6274 24 24 18.6274 24 12C24 5.37258 18.6274 0 12 0C5.37258 0 0 5.37258 0 12C0 18.6274 5.37258 24 12 24ZM12 21C16.9706 21 21 16.9706 21 12C21 7.02944 16.9706 3 12 3C7.02944 3 3 7.02944 3 12C3 16.9706 7.02944 21 12 21Z"})),e("defs",null,e("clipPath",{id:"clip0_674_66"},e("rect",{width:"12",height:"12"}))));const i=t=>e("svg",{class:{rotate90:t===1,rotate180:t===2,rotate270:t===3},viewBox:"0 0 12 12",xmlns:"http://www.w3.org/2000/svg"},e("g",{"clip-path":"url(#clip0_674_255)"},e("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M12 24C18.6274 24 24 18.6274 24 12C24 5.37258 18.6274 0 12 0C5.37258 0 0 5.37258 0 12C0 18.6274 5.37258 24 12 24ZM12 21C16.9706 21 21 16.9706 21 12C21 7.02944 16.9706 3 12 3C7.02944 3 3 7.02944 3 12C3 16.9706 7.02944 21 12 21Z"}),e("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M12 18C15.3137 18 18 15.3137 18 12C18 8.68629 15.3137 6 12 6C8.68629 6 6 8.68629 6 12C6 15.3137 8.68629 18 12 18ZM12 15C13.6569 15 15 13.6569 15 12C15 10.3431 13.6569 9 12 9C10.3431 9 9 10.3431 9 12C9 13.6569 10.3431 15 12 15Z"})),e("defs",null,e("clipPath",{id:"clip0_674_255"},e("rect",{width:"12",height:"12"}))));const a=class{constructor(e){t(this,e);this.hash=undefined;this.size=40}render(){const[t,r]=l(this.hash);const n=(t>>2&1)!==0;const a=(t>>3&1)!==0;const c=(t>>4&1)!==0;const s=(t>>5&1)!==0;const g=t>>6&3;const u=t>>7&3;const h=t>>8&3;const p=t>>9&3;const[b,v]=[[n,a,c,s],[g,u,h,p]];return e(o,{key:"39bcae00e3fd58ff94639fbb43c77fd942899e51",class:{red:r==="red",orange:r==="orange",yellow:r==="yellow",green:r==="green",blue:r==="blue",purple:r==="purple"}},b.map(((t,e)=>t?i(v[e]):d(v[e]))))}};const c=["red","orange","yellow","green","blue","purple"];function l(t){const e=t.charCodeAt(0)<<24|t.charCodeAt(1)<<16|t.charCodeAt(2)<<8|t.charCodeAt(3);const o=c[Math.abs(e%6)];return[e,o]}a.style=n;export{a as cpsl_identicon};
2
- //# sourceMappingURL=p-5d62e610.entry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["cpslIdenticonCss","CpslIdenticonStyle0","SingleArc","rotation","h","class","rotate90","rotate180","rotate270","viewBox","xmlns","d","id","width","height","DoubleArc","CpslIdenticon","render","code","color","stringToBinaryAndColor","this","hash","shapeA","shapeB","shapeC","shapeD","rotationA","rotationB","rotationC","rotationD","shapes","rotations","Host","key","red","orange","yellow","green","blue","purple","map","isDouble","index","COLORS","charCodeAt","Math","abs"],"sources":["src/components/cpsl-identicon/cpsl-identicon.scss?tag=cpsl-identicon&encapsulation=shadow","src/components/cpsl-identicon/cpsl-identicon.tsx"],"sourcesContent":[":host {\n --identicon-background-red: linear-gradient(136deg, #FF4270 6.86%, #FF7C7C 93.78%);\n --identicon-background-orange: linear-gradient(136deg, #F45532 6.86%, #FF9B63 93.78%);\n --identicon-background-yellow: linear-gradient(136deg, #FFA756 6.86%, #FBFF47 93.78%);\n --identicon-background-green: linear-gradient(136deg, #0CAE60 6.86%, #7BFFD0 93.78%);\n --identicon-background-blue: linear-gradient(136deg, #476FFF 6.86%, #47C8FF 93.78%);\n --identicon-background-purple: linear-gradient(136deg, #9747FF 6.86%, #DA47FF 93.78%);\n\n display: block;\n width: 62px;\n height: 62px;\n aspect-ratio: 1;\n border-radius: 6px;\n position: relative;\n border: 1px solid var(--cpsl-color-background-8);\n\n & > svg {\n fill: rgba(255, 255, 255, 0.6);\n position: absolute;\n width: 35%;\n }\n\n & > svg.rotate90 {\n transform: rotate(.25turn);\n }\n\n & > svg.rotate180 {\n transform: rotate(.5turn);\n }\n\n & > svg.rotate270 {\n transform: rotate(.75turn);\n }\n\n & > svg:nth-child(1) {\n right: 50%;\n bottom: 50%;\n }\n\n & > svg:nth-child(2) {\n left: 50%;\n bottom: 50%;\n }\n\n & > svg:nth-child(3) {\n right: 50%;\n top: 50%;\n }\n\n & > svg:nth-child(4) {\n left: 50%;\n top: 50%;\n }\n}\n\n:host(.red) {\n background: var(--identicon-background-red);\n}\n\n:host(.orange) {\n background: var(--identicon-background-orange);\n}\n\n:host(.green) {\n background: var(--identicon-background-green);\n}\n\n:host(.yellow) {\n background: var(--identicon-background-yellow);\n}\n\n:host(.blue) {\n background: var(--identicon-background-blue);\n}\n\n:host(.purple) {\n background: var(--identicon-background-purple);\n}\n","import { Component, Host, Prop, h } from '@stencil/core';\n\nconst SingleArc = (rotation: number) => (\n <svg\n class={{\n rotate90: rotation === 1,\n rotate180: rotation === 2,\n rotate270: rotation === 3,\n }}\n viewBox=\"0 0 12 12\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <g clip-path=\"url(#clip0_674_66)\">\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M12 24C18.6274 24 24 18.6274 24 12C24 5.37258 18.6274 0 12 0C5.37258 0 0 5.37258 0 12C0 18.6274 5.37258 24 12 24ZM12 21C16.9706 21 21 16.9706 21 12C21 7.02944 16.9706 3 12 3C7.02944 3 3 7.02944 3 12C3 16.9706 7.02944 21 12 21Z\"\n />\n </g>\n <defs>\n <clipPath id=\"clip0_674_66\">\n <rect width=\"12\" height=\"12\" />\n </clipPath>\n </defs>\n </svg>\n);\n\nconst DoubleArc = (rotation: number) => (\n <svg\n class={{\n rotate90: rotation === 1,\n rotate180: rotation === 2,\n rotate270: rotation === 3,\n }}\n viewBox=\"0 0 12 12\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <g clip-path=\"url(#clip0_674_255)\">\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M12 24C18.6274 24 24 18.6274 24 12C24 5.37258 18.6274 0 12 0C5.37258 0 0 5.37258 0 12C0 18.6274 5.37258 24 12 24ZM12 21C16.9706 21 21 16.9706 21 12C21 7.02944 16.9706 3 12 3C7.02944 3 3 7.02944 3 12C3 16.9706 7.02944 21 12 21Z\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M12 18C15.3137 18 18 15.3137 18 12C18 8.68629 15.3137 6 12 6C8.68629 6 6 8.68629 6 12C6 15.3137 8.68629 18 12 18ZM12 15C13.6569 15 15 13.6569 15 12C15 10.3431 13.6569 9 12 9C10.3431 9 9 10.3431 9 12C9 13.6569 10.3431 15 12 15Z\"\n />\n </g>\n <defs>\n <clipPath id=\"clip0_674_255\">\n <rect width=\"12\" height=\"12\" />\n </clipPath>\n </defs>\n </svg>\n);\n\n@Component({\n tag: 'cpsl-identicon',\n styleUrl: 'cpsl-identicon.scss',\n shadow: true,\n})\nexport class CpslIdenticon {\n @Prop() hash: string;\n\n /**\n * The size of the identicon.\n * Default is: 40.\n */\n @Prop() size: number = 40;\n\n render() {\n const [code, color] = stringToBinaryAndColor(this.hash);\n const shapeA = ((code >> 2) & 1) !== 0;\n const shapeB = ((code >> 3) & 1) !== 0;\n const shapeC = ((code >> 4) & 1) !== 0;\n const shapeD = ((code >> 5) & 1) !== 0;\n const rotationA = (code >> 6) & 3;\n const rotationB = (code >> 7) & 3;\n const rotationC = (code >> 8) & 3;\n const rotationD = (code >> 9) & 3;\n\n const [shapes, rotations] = [\n [shapeA, shapeB, shapeC, shapeD],\n [rotationA, rotationB, rotationC, rotationD],\n ];\n\n return (\n <Host\n class={{\n red: color === 'red',\n orange: color === 'orange',\n yellow: color === 'yellow',\n green: color === 'green',\n blue: color === 'blue',\n purple: color === 'purple',\n }}\n >\n {shapes.map((isDouble, index) => {\n return isDouble ? DoubleArc(rotations[index]) : SingleArc(rotations[index]);\n })}\n </Host>\n );\n }\n}\n\ntype Color = 'red' | 'orange' | 'yellow' | 'green' | 'blue' | 'purple';\n\nconst COLORS: Color[] = ['red', 'orange', 'yellow', 'green', 'blue', 'purple'];\n\nfunction stringToBinaryAndColor(hash: string): [number, Color] {\n const code = (hash.charCodeAt(0) << 24) | (hash.charCodeAt(1) << 16) | (hash.charCodeAt(2) << 8) | hash.charCodeAt(3);\n\n const color = COLORS[Math.abs(code % 6)];\n\n return [code, color];\n}\n"],"mappings":"kDAAA,MAAMA,EAAmB,k2CACzB,MAAAC,EAAeD,ECCf,MAAME,EAAaC,GACjBC,EAAA,OACEC,MAAO,CACLC,SAAUH,IAAa,EACvBI,UAAWJ,IAAa,EACxBK,UAAWL,IAAa,GAE1BM,QAAQ,YACRC,MAAM,8BAENN,EAAA,iBAAa,sBACXA,EAAA,oBACY,UAAS,YACT,UACVO,EAAE,wOAGNP,EAAA,YACEA,EAAA,YAAUQ,GAAG,gBACXR,EAAA,QAAMS,MAAM,KAAKC,OAAO,UAMhC,MAAMC,EAAaZ,GACjBC,EAAA,OACEC,MAAO,CACLC,SAAUH,IAAa,EACvBI,UAAWJ,IAAa,EACxBK,UAAWL,IAAa,GAE1BM,QAAQ,YACRC,MAAM,8BAENN,EAAA,iBAAa,uBACXA,EAAA,oBACY,UAAS,YACT,UACVO,EAAE,uOAEJP,EAAA,oBACY,UAAS,YACT,UACVO,EAAE,wOAGNP,EAAA,YACEA,EAAA,YAAUQ,GAAG,iBACXR,EAAA,QAAMS,MAAM,KAAKC,OAAO,U,MAWnBE,EAAa,M,uDAOD,E,CAEvB,MAAAC,GACE,MAAOC,EAAMC,GAASC,EAAuBC,KAAKC,MAClD,MAAMC,GAAWL,GAAQ,EAAK,KAAO,EACrC,MAAMM,GAAWN,GAAQ,EAAK,KAAO,EACrC,MAAMO,GAAWP,GAAQ,EAAK,KAAO,EACrC,MAAMQ,GAAWR,GAAQ,EAAK,KAAO,EACrC,MAAMS,EAAaT,GAAQ,EAAK,EAChC,MAAMU,EAAaV,GAAQ,EAAK,EAChC,MAAMW,EAAaX,GAAQ,EAAK,EAChC,MAAMY,EAAaZ,GAAQ,EAAK,EAEhC,MAAOa,EAAQC,GAAa,CAC1B,CAACT,EAAQC,EAAQC,EAAQC,GACzB,CAACC,EAAWC,EAAWC,EAAWC,IAGpC,OACE1B,EAAC6B,EAAI,CAAAC,IAAA,2CACH7B,MAAO,CACL8B,IAAKhB,IAAU,MACfiB,OAAQjB,IAAU,SAClBkB,OAAQlB,IAAU,SAClBmB,MAAOnB,IAAU,QACjBoB,KAAMpB,IAAU,OAChBqB,OAAQrB,IAAU,WAGnBY,EAAOU,KAAI,CAACC,EAAUC,IACdD,EAAW3B,EAAUiB,EAAUW,IAAUzC,EAAU8B,EAAUW,M,GAS9E,MAAMC,EAAkB,CAAC,MAAO,SAAU,SAAU,QAAS,OAAQ,UAErE,SAASxB,EAAuBE,GAC9B,MAAMJ,EAAQI,EAAKuB,WAAW,IAAM,GAAOvB,EAAKuB,WAAW,IAAM,GAAOvB,EAAKuB,WAAW,IAAM,EAAKvB,EAAKuB,WAAW,GAEnH,MAAM1B,EAAQyB,EAAOE,KAAKC,IAAI7B,EAAO,IAErC,MAAO,CAACA,EAAMC,EAChB,C","ignoreList":[]}